diff --git a/Adapt/Adapt.cpp b/Adapt/Adapt.cpp
deleted file mode 100644
index bf7224fec9d6783a1a32fc2fe662b05113e57f7c..0000000000000000000000000000000000000000
--- a/Adapt/Adapt.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-// $Id: Adapt.cpp,v 1.7 2001-04-26 17:58:00 remacle Exp $
-
-#include "Gmsh.h"
-#include "Adapt.h"
-#include "nrutil.h"
-
-#define TOL     1.e-08
-#define MAXDEG  999
-
-static int     NN ;
-static double  MINH , *ERR , *HH , *PP , E0, DIM ;
-
-/* ------------------------------------------------------------------------ */
-/*  f XXX                                                                   */
-/* ------------------------------------------------------------------------ */
-
-/* h-type version 1 : minimize the number of elements while keeping a
-   given global error */
-
-double fH1 (double l){
-  int i;
-  double val1 = 0.0, val2 = 0.0;
-
-  for(i = 1 ; i <= NN ; i++){
-    val1 += pow(2.*l*DSQR(ERR[i])*PP[i]/DIM, DIM/(2.*PP[i]+DIM));
-    val2 += DSQR(ERR[i]) * pow(2.*l*DSQR(ERR[i])*PP[i]/DIM, -2.*PP[i]/(2.*PP[i]+DIM));
-  }
-
-  return( -(val1 + l * (val2 - DSQR(E0))) );
-}
-
-/* h-type version 2 : minimize the error while keeping a given number
-   of elements */
-
-double fH2 (double l){
-  int i;
-  double val1 = 0.0, val2 = 0.0, qi;
-
-  for(i = 1 ; i <= NN ; i++){
-    qi = pow(DIM*l/(2.*PP[i]*DSQR(ERR[i])), -DIM/(DIM+2.*PP[i]));
-    val1 += DSQR(ERR[i]) * pow(qi, -2.*PP[i]/DIM);
-    val2 += qi;
-  }
-
-  return( -(val1 + l * (val2 - E0)) );
-}
-
-/* p-type : minimize error by modifying the interpolation order vector */
-
-double fP1 (double l){
-  int i;
-  double val1 = 0.0, val2 = 0.0, qi, e;
-
-  for(i = 1 ; i <= NN ; i++){
-    e = ERR[i];
-    if(e == 0.0) e=1.e-12;
-    qi = - log(2.*l*log(HH[i]/MINH)*DSQR(e)) / log(HH[i]/MINH);
-    val1 -= 0.5 * qi;
-    val2 += pow(HH[i]/MINH, qi) * DSQR(e);
-  }
-
-  return( -(val1 + l * (val2 - DSQR(E0))) );
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  A d a p t                                                               */
-/* ------------------------------------------------------------------------ */
-
-double min1d (int method, double (*funct)(double), double *xmin){
-  double xx, fx, fb, fa, bx, ax;
-  double brent(double ax, double bx, double cx,
-              double (*f)(double), double tol, double *xmin);
-  void mnbrak(double *ax, double *bx, double *cx, double *fa, double *fb,
-                double *fc, double (*func)(double));
-
-  switch(method){
-  case ADAPT_H1: 
-  case ADAPT_P1: ax=1.e-12; xx=1.e2; break;
-  default:       ax=1.e-15; xx=1.e-12; break;
-  }    
-  mnbrak(&ax,&xx,&bx,&fa,&fx,&fb,funct);
-
-  return( brent(ax,xx,bx,funct,TOL,xmin) );
-}
-
-/* Adapt return the constraint (N0 ou e0) for the optimzed problem */
-
-double AdaptMesh (int N,        /* Number of elements */
-                  int method,   /* ADAPT_H1, ADAPT_H2, ADAPT_P1 or ADAPT_P2 */
-                  int dim,      /* 2 or 3 */
-                  double *err,  /* elementary errors */
-                  double *h,    /* elementary mesh sizes */
-                  double *p,    /* elementary exponents */
-                  double e0     /* prescribed error or number of elements */){
-  int i;
-  double contr=0.0, pivrai, lambda, minf, qi, ri, pi, obj, obj2, minri, maxri;
-  double errmin, errmax;
-
-  h[N+1] = 1.0;
-  p[N+1] = 1.0;
-
-  NN  = N;
-  ERR = err;
-  HH  = h;
-  PP  = p;
-  E0  = e0;
-  DIM = (double)dim;
-  
-  for(i = 1 ; i <= N ; i++){
-    if(i == 1) 
-      errmin = errmax = err[i];
-    else{
-      errmin = DMIN(errmin, err[i]);
-      errmax = DMAX(errmax, err[i]);
-    }
-  }
-
-  switch (method) {
-
-  case ADAPT_H1 :
-    minf = min1d (method, fH1, &lambda);
-    obj = 0.0;
-    for(i = 1 ; i <= N ; i++){
-      qi = pow(2.*lambda*DSQR(err[i])*p[i]/DIM, DIM/(2.*p[i]+DIM));
-      ri = pow(qi,1./DIM);
-      if(i==1) minri = maxri = ri;
-      if(err[i] == 0.0) ri = .5;
-      minri = DMIN(minri, ri);
-      maxri = DMAX(maxri, ri);
-      obj += DSQR(err[i]) * pow(ri, -2.*p[i]) ; 
-      h[i] = sqrt(2.) * h[i]/ri;
-      p[i] = ri;
-    }
-    contr = fabs(minf);
-
-    printf("H-Refinement 1, Error %g=>%g, Objective %g, Reduction Factor %g->%g",
-        e0, sqrt(obj), -minf, minri, maxri);
-    break;
-
-  case ADAPT_H2 :
-    minf = min1d (method, fH2, &lambda);
-    obj = 0.0;
-    for(i = 1 ; i <= N ; i++){
-      qi = pow((DIM*lambda)/(2.*DSQR(err[i])*p[i]), -DIM/(DIM+2.*p[i]));
-      ri = pow(qi, 1./DIM);
-      if(i == 1) minri = maxri = ri;
-      minri = DMIN(minri, ri);
-      maxri = DMAX(maxri, ri);
-      obj += pow(ri,DIM) ; 
-      h[i] = h[i]/ri;
-      p[i] = p[i];
-    }
-    contr = sqrt(fabs(minf));
-
-    printf( "H-Refinement 2, Elements %g=>%g, Objective %g, Reduction Factor %g->%g",
-        e0, obj, 100. * sqrt(fabs(minf)), minri, maxri);
-    break;
-
-  case ADAPT_P1 :
-    MINH = h[1];
-    for(i = 1 ; i <= N ; i++) MINH =DMIN(h[i], MINH);
-    MINH /= 2.;
-
-    minf = min1d (method, fP1, &lambda);
-    obj = obj2 = 0.0;
-    for(i = 1 ; i <= N ; i++){
-      qi = -log(2.*lambda*DSQR(err[i])*log(h[i]/MINH)) / log(h[i]/MINH);
-      pi = p[i] - .5 * qi;
-      pivrai = DMIN(DMAX(1., (double)(int)(pi+.99)), MAXDEG);
-      obj2 += pow(h[i]/MINH, 2.*(p[i]-pivrai)) * DSQR(err[i]);
-      obj += DSQR(err[i]) * pow(h[i]/MINH, qi); 
-      h[i] = h[i];
-      p[i] = pi;
-    }
-    contr = fabs(minf);
-
-    printf("P-Refinement, Error %g=%g=>%g, Objective %g",
-        e0, sqrt(obj), sqrt(obj2), minf);
-    break;
-
-  case ADAPT_P2 :
-    minf = min1d (method, fH1, &lambda);
-    break;
-
-  default :
-    printf("Unknown Adaption Method");
-  }
-
-  return(contr) ;
-}
diff --git a/Adapt/Adapt.h b/Adapt/Adapt.h
deleted file mode 100644
index d4885075d44088c640e7d4d589ed26e919aaa702..0000000000000000000000000000000000000000
--- a/Adapt/Adapt.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef _ADAPT_H_
-#define _ADAPT_H_
-
-#define ADAPT_P1 1
-#define ADAPT_P2 2
-#define ADAPT_H1 3
-#define ADAPT_H2 4
-
-double AdaptMesh (int N,        /* Number of elements */
-                  int method,   /* ADAPT_H1, ADAPT_H2, ADAPT_P1 or ADAPT_P2 */
-                  int dim,      /* 2 or 3 */
-                  double *err,  /* elementary errors */
-                  double *h,    /* elementary mesh sizes */
-                  double *p,    /* elementary exponents */
-                  double e0     /* prescribed error or number of elements */);
-
-#endif
diff --git a/Adapt/Makefile b/Adapt/Makefile
deleted file mode 100644
index 122567ca5bb993b1ce0d861c219bf9151830d5f2..0000000000000000000000000000000000000000
--- a/Adapt/Makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-# $Id: Makefile,v 1.21 2001-08-11 23:32:15 geuzaine Exp $
-#
-# Makefile for "libAdapt.a"
-#
-
-.IGNORE:
-
-CC        = c++
-AR        = ar ruvs
-RM        = rm
-RANLIB    = ranlib
-
-LIB       = ../lib/libAdapt.a
-INCLUDE   = -I../Common -I../DataStr
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS   = -f
-CFLAGS    = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) 
-
-SRC = Adapt.cpp \
-      mnbrak.cpp \
-      brent.cpp \
-      nrutil.cpp \
-      dsvdcmp.cpp \
-      newt.cpp \
-      fmin.cpp \
-      fdjac.cpp \
-      lnsrch.cpp \
-      lubksb.cpp \
-      ludcmp.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ)
-	$(AR) $(LIB) $(OBJ)
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o 
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Adapt.o: Adapt.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Adapt.h nrutil.h \
- ../Common/Numeric.h
-mnbrak.o: mnbrak.cpp nrutil.h ../Common/Numeric.h
-brent.o: brent.cpp nrutil.h ../Common/Numeric.h
-nrutil.o: nrutil.cpp
-dsvdcmp.o: dsvdcmp.cpp nrutil.h ../Common/Numeric.h
-newt.o: newt.cpp nrutil.h ../Common/Numeric.h
-fmin.o: fmin.cpp nrutil.h ../Common/Numeric.h
-fdjac.o: fdjac.cpp nrutil.h ../Common/Numeric.h
-lnsrch.o: lnsrch.cpp nrutil.h ../Common/Numeric.h
-lubksb.o: lubksb.cpp
-ludcmp.o: ludcmp.cpp nrutil.h ../Common/Numeric.h
diff --git a/Adapt/brent.cpp b/Adapt/brent.cpp
deleted file mode 100644
index 706d32781079a58085f47aa224e23000fe1eae3d..0000000000000000000000000000000000000000
--- a/Adapt/brent.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// $Id: brent.cpp,v 1.4 2001-01-08 08:05:39 geuzaine Exp $
-
-
-#include <math.h>
-#define NRANSI
-#include "nrutil.h"
-#define ITMAX 100
-#define CGOLD 0.3819660
-#define ZEPS 1.0e-10
-#define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
-
-double 
-brent (double ax, double bx, double cx, double (*f) (double), double tol,
-       double *xmin)
-{
-  int iter;
-  double a, b, d=0.0, etemp, fu, fv, fw, fx, p, q, r, tol1, tol2, u, v, w,
-    x, xm;
-  double e = 0.0;
-
-  a = (ax < cx ? ax : cx);
-  b = (ax > cx ? ax : cx);
-  x = w = v = bx;
-  fw = fv = fx = (*f) (x);
-  for (iter = 1; iter <= ITMAX; iter++)
-    {
-      xm = 0.5 * (a + b);
-      tol2 = 2.0 * (tol1 = tol * fabs (x) + ZEPS);
-      if (fabs (x - xm) <= (tol2 - 0.5 * (b - a)))
-        {
-          *xmin = x;
-          return fx;
-        }
-      if (fabs (e) > tol1)
-        {
-          r = (x - w) * (fx - fv);
-          q = (x - v) * (fx - fw);
-          p = (x - v) * q - (x - w) * r;
-          q = 2.0 * (q - r);
-          if (q > 0.0)
-            p = -p;
-          q = fabs (q);
-          etemp = e;
-          e = d;
-          if (fabs (p) >= fabs (0.5 * q * etemp) || p <= q * (a - x) || p >= q * (b - x))
-            d = CGOLD * (e = (x >= xm ? a - x : b - x));
-          else
-            {
-              d = p / q;
-              u = x + d;
-              if (u - a < tol2 || b - u < tol2)
-                d = SIGN (tol1, xm - x);
-            }
-        }
-      else
-        {
-          d = CGOLD * (e = (x >= xm ? a - x : b - x));
-        }
-      u = (fabs (d) >= tol1 ? x + d : x + SIGN (tol1, d));
-      fu = (*f) (u);
-      if (fu <= fx)
-        {
-          if (u >= x)
-            a = x;
-          else
-            b = x;
-          SHFT (v, w, x, u)
-            SHFT (fv, fw, fx, fu)
-        }
-      else
-        {
-          if (u < x)
-            a = u;
-          else
-            b = u;
-          if (fu <= fw || w == x)
-            {
-              v = w;
-              w = u;
-              fv = fw;
-              fw = fu;
-            }
-          else if (fu <= fv || v == x || v == w)
-            {
-              v = u;
-              fv = fu;
-            }
-        }
-    }
-  nrerror ("Too many iterations in brent");
-  *xmin = x;
-  return fx;
-}
-#undef ITMAX
-#undef CGOLD
-#undef ZEPS
-#undef SHFT
-#undef NRANSI
-/* (C) Copr. 1986-92 Numerical Recipes Software J!0. */
diff --git a/Adapt/dsvdcmp.cpp b/Adapt/dsvdcmp.cpp
deleted file mode 100644
index d143484240e1132eef4259f6a4a8360b8bd018d9..0000000000000000000000000000000000000000
--- a/Adapt/dsvdcmp.cpp
+++ /dev/null
@@ -1,240 +0,0 @@
-// $Id: dsvdcmp.cpp,v 1.4 2001-01-08 08:05:39 geuzaine Exp $
-#include <math.h>
-
-#include "nrutil.h"
-
-double dpythag(double a, double b)
-{
-  double absa,absb;
-  absa=fabs(a);
-  absb=fabs(b);
-  if (absa > absb) return absa*sqrt(1.0+SQR(absb/absa));
-  else return (absb == 0.0 ? 0.0 : absb*sqrt(1.0+SQR(absa/absb)));
-}
-
-void dsvdcmp(double **a, int m, int n, double w[], double **v)
-{
-  double dpythag(double a, double b);
-  int flag,i,its,j,jj,k,l,nm;
-  double anorm,c,f,g,h,s,scale,x,y,z,*rv1;
-
-  rv1=dvector(1,n);
-  g=scale=anorm=0.0;
-  for (i=1;i<=n;i++) {
-    l=i+1;
-    rv1[i]=scale*g;
-    g=s=scale=0.0;
-    if (i <= m) {
-      for (k=i;k<=m;k++) scale += fabs(a[k][i]);
-      if (scale) {
-        for (k=i;k<=m;k++) {
-          a[k][i] /= scale;
-          s += a[k][i]*a[k][i];
-        }
-        f=a[i][i];
-        g = -SIGN(sqrt(s),f);
-        h=f*g-s;
-        a[i][i]=f-g;
-        for (j=l;j<=n;j++) {
-          for (s=0.0,k=i;k<=m;k++) s += a[k][i]*a[k][j];
-          f=s/h;
-          for (k=i;k<=m;k++) a[k][j] += f*a[k][i];
-        }
-        for (k=i;k<=m;k++) a[k][i] *= scale;
-      }
-    }
-    w[i]=scale *g;
-    g=s=scale=0.0;
-    if (i <= m && i != n) {
-      for (k=l;k<=n;k++) scale += fabs(a[i][k]);
-      if (scale) {
-        for (k=l;k<=n;k++) {
-          a[i][k] /= scale;
-          s += a[i][k]*a[i][k];
-        }
-        f=a[i][l];
-        g = -SIGN(sqrt(s),f);
-        h=f*g-s;
-        a[i][l]=f-g;
-        for (k=l;k<=n;k++) rv1[k]=a[i][k]/h;
-        for (j=l;j<=m;j++) {
-          for (s=0.0,k=l;k<=n;k++) s += a[j][k]*a[i][k];
-          for (k=l;k<=n;k++) a[j][k] += s*rv1[k];
-        }
-        for (k=l;k<=n;k++) a[i][k] *= scale;
-      }
-    }
-    anorm=DMAX(anorm,(fabs(w[i])+fabs(rv1[i])));
-  }
-  for (i=n;i>=1;i--) {
-    if (i < n) {
-      if (g) {
-        for (j=l;j<=n;j++) v[j][i]=(a[i][j]/a[i][l])/g;
-        for (j=l;j<=n;j++) {
-          for (s=0.0,k=l;k<=n;k++) s += a[i][k]*v[k][j];
-          for (k=l;k<=n;k++) v[k][j] += s*v[k][i];
-        }
-      }
-      for (j=l;j<=n;j++) v[i][j]=v[j][i]=0.0;
-    }
-    v[i][i]=1.0;
-    g=rv1[i];
-    l=i;
-  }
-  for (i=IMIN(m,n);i>=1;i--) {
-    l=i+1;
-    g=w[i];
-    for (j=l;j<=n;j++) a[i][j]=0.0;
-    if (g) {
-      g=1.0/g;
-      for (j=l;j<=n;j++) {
-        for (s=0.0,k=l;k<=m;k++) s += a[k][i]*a[k][j];
-        f=(s/a[i][i])*g;
-        for (k=i;k<=m;k++) a[k][j] += f*a[k][i];
-      }
-      for (j=i;j<=m;j++) a[j][i] *= g;
-    } else for (j=i;j<=m;j++) a[j][i]=0.0;
-    ++a[i][i];
-  }
-  for (k=n;k>=1;k--) {
-    for (its=1;its<=30;its++) {
-      flag=1;
-      for (l=k;l>=1;l--) {
-        nm=l-1;
-        if ((double)(fabs(rv1[l])+anorm) == anorm) {
-          flag=0;
-          break;
-        }
-        if ((double)(fabs(w[nm])+anorm) == anorm) break;
-      }
-      if (flag) {
-        c=0.0;
-        s=1.0;
-        for (i=l;i<=k;i++) {
-          f=s*rv1[i];
-          rv1[i]=c*rv1[i];
-          if ((double)(fabs(f)+anorm) == anorm) break;
-          g=w[i];
-          h=dpythag(f,g);
-          w[i]=h;
-          h=1.0/h;
-          c=g*h;
-          s = -f*h;
-          for (j=1;j<=m;j++) {
-            y=a[j][nm];
-            z=a[j][i];
-            a[j][nm]=y*c+z*s;
-            a[j][i]=z*c-y*s;
-          }
-        }
-      }
-      z=w[k];
-      if (l == k) {
-        if (z < 0.0) {
-          w[k] = -z;
-          for (j=1;j<=n;j++) v[j][k] = -v[j][k];
-        }
-        break;
-      }
-      if (its == 30) nrerror("no convergence in 30 dsvdcmp iterations");
-      x=w[l];
-      nm=k-1;
-      y=w[nm];
-      g=rv1[nm];
-      h=rv1[k];
-      f=((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y);
-      g=dpythag(f,1.0);
-      f=((x-z)*(x+z)+h*((y/(f+SIGN(g,f)))-h))/x;
-      c=s=1.0;
-      for (j=l;j<=nm;j++) {
-        i=j+1;
-        g=rv1[i];
-        y=w[i];
-        h=s*g;
-        g=c*g;
-        z=dpythag(f,h);
-        rv1[j]=z;
-        c=f/z;
-        s=h/z;
-        f=x*c+g*s;
-        g = g*c-x*s;
-        h=y*s;
-        y *= c;
-        for (jj=1;jj<=n;jj++) {
-          x=v[jj][j];
-          z=v[jj][i];
-          v[jj][j]=x*c+z*s;
-          v[jj][i]=z*c-x*s;
-        }
-        z=dpythag(f,h);
-        w[j]=z;
-        if (z) {
-          z=1.0/z;
-          c=f*z;
-          s=h*z;
-        }
-        f=c*g+s*y;
-        x=c*y-s*g;
-        for (jj=1;jj<=m;jj++) {
-          y=a[jj][j];
-          z=a[jj][i];
-          a[jj][j]=y*c+z*s;
-          a[jj][i]=z*c-y*s;
-        }
-      }
-      rv1[l]=0.0;
-      rv1[k]=f;
-      w[k]=x;
-    }
-  }
-  free_dvector(rv1,1,n);
-}
-
-
-/* cf. Numerical Recipes in C, p. 62 */
-
-#define PREC   1.e-16
-
-void invert_singular_matrix(double **M, int n, double **I){
-  double  **V, **T, *W;
-  int     i, j, k; 
-
-  V = dmatrix(1,n,1,n);
-  T = dmatrix(1,n,1,n);
-  W = dvector(1,n);
-
-  dsvdcmp(M, n, n, W, V);
-
-  for(i=1 ; i<=n ; i++){
-    for(j=1 ; j<=n ; j++){
-      I[i][j] = 0.0 ;
-      T[i][j] = 0.0 ;
-    }
-  }
-
-  for(i=1 ; i<=n ; i++){
-    for(j=1 ; j<=n ; j++){
-      if(fabs(W[i]) > PREC){
-        T[i][j] += M[j][i] / W[i] ;
-      }
-      /*
-      else{
-        T[i][j] += 0.0 ;
-      }
-      */
-    }
-  }
-  for(i=1 ; i<=n ; i++){
-    for(j=1 ; j<=n ; j++){
-      for(k=1 ; k<=n ; k++){
-        I[i][j] += V[i][k] * T[k][j] ;
-      }
-    }
-  }
-
-  free_dmatrix(V,1,n,1,n);
-  free_dmatrix(T,1,n,1,n);
-  free_dvector(W,1,n);
-}
-
-#undef PREC 
diff --git a/Adapt/fdjac.cpp b/Adapt/fdjac.cpp
deleted file mode 100644
index 7a02e764987ec196c4b3f5426701a7e874c56571..0000000000000000000000000000000000000000
--- a/Adapt/fdjac.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// $Id: fdjac.cpp,v 1.4 2001-01-08 08:05:39 geuzaine Exp $
-#include <math.h>
-#define NRANSI
-#include "nrutil.h"
-#define EPS 1.0e-4
-
-void 
-fdjac (int n, float x[], float fvec[], float **df,
-       void (*vecfunc) (int, float[], float[]))
-{
-  int i, j;
-  float h, temp, *f;
-
-  f = vector (1, n);
-  for (j = 1; j <= n; j++)
-    {
-      temp = x[j];
-      h = EPS * fabs (temp);
-      if (h == 0.0)
-        h = EPS;
-      x[j] = temp + h;
-      h = x[j] - temp;
-      (*vecfunc) (n, x, f);
-      x[j] = temp;
-      for (i = 1; i <= n; i++)
-        df[i][j] = (f[i] - fvec[i]) / h;
-    }
-  free_vector (f, 1, n);
-}
-#undef EPS
-#undef NRANSI
diff --git a/Adapt/fmin.cpp b/Adapt/fmin.cpp
deleted file mode 100644
index a81d482a0829034d223bc56a7702730c087c2e4e..0000000000000000000000000000000000000000
--- a/Adapt/fmin.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// $Id: fmin.cpp,v 1.3 2001-01-08 08:05:40 geuzaine Exp $
-#define NRANSI
-#include "nrutil.h"
-
-extern int nn;
-extern float *fvec;
-extern void (*nrfuncv) (int n, float v[], float f[]);
-
-float 
-fmin (float x[])
-{
-  int i;
-  float sum;
-
-  (*nrfuncv) (nn, x, fvec);
-  for (sum = 0.0, i = 1; i <= nn; i++)
-    sum += SQR (fvec[i]);
-  return 0.5 * sum;
-}
-#undef NRANSI
diff --git a/Adapt/lnsrch.cpp b/Adapt/lnsrch.cpp
deleted file mode 100644
index e45de2cdf0023706491657e6c9ffe64312815c43..0000000000000000000000000000000000000000
--- a/Adapt/lnsrch.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-// $Id: lnsrch.cpp,v 1.4 2001-01-08 08:05:40 geuzaine Exp $
-#include <math.h>
-#define NRANSI
-#include "nrutil.h"
-#define ALF 1.0e-4
-#define TOLX 1.0e-7
-
-void 
-lnsrch (int n, float xold[], float fold, float g[], float p[], float x[],
-        float *f, float stpmax, int *check, float (*func) (float[]))
-{
-  int i;
-  float a, alam, alam2, alamin, b, disc, f2, fold2, rhs1, rhs2, slope,
-    sum, temp, test, tmplam;
-
-  *check = 0;
-  for (sum = 0.0, i = 1; i <= n; i++)
-    sum += p[i] * p[i];
-  sum = sqrt (sum);
-  if (sum > stpmax)
-    for (i = 1; i <= n; i++)
-      p[i] *= stpmax / sum;
-  for (slope = 0.0, i = 1; i <= n; i++)
-    slope += g[i] * p[i];
-  test = 0.0;
-  for (i = 1; i <= n; i++)
-    {
-      temp = fabs (p[i]) / FMAX (fabs (xold[i]), 1.0);
-      if (temp > test)
-        test = temp;
-    }
-  alamin = TOLX / test;
-  alam = 1.0;
-  for (;;)
-    {
-      for (i = 1; i <= n; i++)
-        x[i] = xold[i] + alam * p[i];
-      *f = (*func) (x);
-      if (alam < alamin)
-        {
-          for (i = 1; i <= n; i++)
-            x[i] = xold[i];
-          *check = 1;
-          return;
-        }
-      else if (*f <= fold + ALF * alam * slope)
-        return;
-      else
-        {
-          if (alam == 1.0)
-            tmplam = -slope / (2.0 * (*f - fold - slope));
-          else
-            {
-              rhs1 = *f - fold - alam * slope;
-              rhs2 = f2 - fold2 - alam2 * slope;
-              a = (rhs1 / (alam * alam) - rhs2 / (alam2 * alam2)) / (alam - alam2);
-              b = (-alam2 * rhs1 / (alam * alam) + alam * rhs2 / (alam2 * alam2)) / (alam - alam2);
-              if (a == 0.0)
-                tmplam = -slope / (2.0 * b);
-              else
-                {
-                  disc = b * b - 3.0 * a * slope;
-                  if (disc < 0.0)
-                    nrerror ("Roundoff problem in lnsrch.");
-                  else
-                    tmplam = (-b + sqrt (disc)) / (3.0 * a);
-                }
-              if (tmplam > 0.5 * alam)
-                tmplam = 0.5 * alam;
-            }
-        }
-      alam2 = alam;
-      f2 = *f;
-      fold2 = fold;
-      alam = FMAX (tmplam, 0.1 * alam);
-    }
-}
-#undef ALF
-#undef TOLX
-#undef NRANSI
diff --git a/Adapt/lubksb.cpp b/Adapt/lubksb.cpp
deleted file mode 100644
index 65d5dce895e4caf582bb38f675550fc280d7be60..0000000000000000000000000000000000000000
--- a/Adapt/lubksb.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// $Id: lubksb.cpp,v 1.4 2001-01-08 08:05:40 geuzaine Exp $
-void 
-lubksb (float **a, int n, int *indx, float b[])
-{
-  int i, ii = 0, ip, j;
-  float sum;
-
-  for (i = 1; i <= n; i++)
-    {
-      ip = indx[i];
-      sum = b[ip];
-      b[ip] = b[i];
-      if (ii)
-        for (j = ii; j <= i - 1; j++)
-          sum -= a[i][j] * b[j];
-      else if (sum)
-        ii = i;
-      b[i] = sum;
-    }
-  for (i = n; i >= 1; i--)
-    {
-      sum = b[i];
-      for (j = i + 1; j <= n; j++)
-        sum -= a[i][j] * b[j];
-      b[i] = sum / a[i][i];
-    }
-}
diff --git a/Adapt/ludcmp.cpp b/Adapt/ludcmp.cpp
deleted file mode 100644
index c8a00772375dbc2fe1dee875351e367a8851b694..0000000000000000000000000000000000000000
--- a/Adapt/ludcmp.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// $Id: ludcmp.cpp,v 1.4 2001-01-08 08:05:40 geuzaine Exp $
-#include <math.h>
-#define NRANSI
-#include "nrutil.h"
-#define TINY 1.0e-20;
-
-void 
-ludcmp (float **a, int n, int *indx, float *d)
-{
-  int i, imax, j, k;
-  float big, dum, sum, temp;
-  float *vv;
-
-  vv = vector (1, n);
-  *d = 1.0;
-  for (i = 1; i <= n; i++)
-    {
-      big = 0.0;
-      for (j = 1; j <= n; j++)
-        if ((temp = fabs (a[i][j])) > big)
-          big = temp;
-      if (big == 0.0)
-        nrerror ("Singular matrix in routine ludcmp");
-      vv[i] = 1.0 / big;
-    }
-  for (j = 1; j <= n; j++)
-    {
-      for (i = 1; i < j; i++)
-        {
-          sum = a[i][j];
-          for (k = 1; k < i; k++)
-            sum -= a[i][k] * a[k][j];
-          a[i][j] = sum;
-        }
-      big = 0.0;
-      for (i = j; i <= n; i++)
-        {
-          sum = a[i][j];
-          for (k = 1; k < j; k++)
-            sum -= a[i][k] * a[k][j];
-          a[i][j] = sum;
-          if ((dum = vv[i] * fabs (sum)) >= big)
-            {
-              big = dum;
-              imax = i;
-            }
-        }
-      if (j != imax)
-        {
-          for (k = 1; k <= n; k++)
-            {
-              dum = a[imax][k];
-              a[imax][k] = a[j][k];
-              a[j][k] = dum;
-            }
-          *d = -(*d);
-          vv[imax] = vv[j];
-        }
-      indx[j] = imax;
-      if (a[j][j] == 0.0)
-        a[j][j] = TINY;
-      if (j != n)
-        {
-          dum = 1.0 / (a[j][j]);
-          for (i = j + 1; i <= n; i++)
-            a[i][j] *= dum;
-        }
-    }
-  free_vector (vv, 1, n);
-}
-#undef TINY
-#undef NRANSI
diff --git a/Adapt/mnbrak.cpp b/Adapt/mnbrak.cpp
deleted file mode 100644
index 5c3edaf06310c8aa45cb06b0b449f24d1049e0d0..0000000000000000000000000000000000000000
--- a/Adapt/mnbrak.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// $Id: mnbrak.cpp,v 1.4 2001-01-08 08:05:40 geuzaine Exp $
-#include <math.h>
-#define NRANSI
-#include "nrutil.h"
-#define GOLD 1.618034
-#define GLIMIT 100.0
-#define TINY 1.0e-20
-#define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
-
-void 
-mnbrak (double *ax, double *bx, double *cx, double *fa, double *fb, double *fc,
-        double (*func) (double))
-{
-  double ulim, u, r, q, fu, dum;
-
-  *fa = (*func) (*ax);
-  *fb = (*func) (*bx);
-  if (*fb > *fa)
-    {
-      SHFT (dum, *ax, *bx, dum)
-        SHFT (dum, *fb, *fa, dum)
-    }
-  *cx = (*bx) + GOLD * (*bx - *ax);
-  *fc = (*func) (*cx);
-  while (*fb > *fc)
-    {
-      r = (*bx - *ax) * (*fb - *fc);
-      q = (*bx - *cx) * (*fb - *fa);
-      u = (*bx) - ((*bx - *cx) * q - (*bx - *ax) * r) /
-        (2.0 * SIGN (FMAX (fabs (q - r), TINY), q - r));
-      ulim = (*bx) + GLIMIT * (*cx - *bx);
-      if ((*bx - u) * (u - *cx) > 0.0)
-        {
-          fu = (*func) (u);
-          if (fu < *fc)
-            {
-              *ax = (*bx);
-              *bx = u;
-              *fa = (*fb);
-              *fb = fu;
-              return;
-            }
-          else if (fu > *fb)
-            {
-              *cx = u;
-              *fc = fu;
-              return;
-            }
-          u = (*cx) + GOLD * (*cx - *bx);
-          fu = (*func) (u);
-        }
-      else if ((*cx - u) * (u - ulim) > 0.0)
-        {
-          fu = (*func) (u);
-          if (fu < *fc)
-            {
-              SHFT (*bx, *cx, u, *cx + GOLD * (*cx - *bx))
-                SHFT (*fb, *fc, fu, (*func) (u))
-            }
-        }
-      else if ((u - ulim) * (ulim - *cx) >= 0.0)
-        {
-          u = ulim;
-          fu = (*func) (u);
-        }
-      else
-        {
-          u = (*cx) + GOLD * (*cx - *bx);
-          fu = (*func) (u);
-        }
-      SHFT (*ax, *bx, *cx, u)
-        SHFT (*fa, *fb, *fc, fu)
-    }
-}
-#undef GOLD
-#undef GLIMIT
-#undef TINY
-#undef SHFT
-#undef NRANSI
diff --git a/Adapt/newt.cpp b/Adapt/newt.cpp
deleted file mode 100644
index f01cb9aed6cc40f82b23287dc7c3a19b63d2a5a3..0000000000000000000000000000000000000000
--- a/Adapt/newt.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// $Id: newt.cpp,v 1.4 2001-01-08 08:05:40 geuzaine Exp $
-#include <math.h>
-#define NRANSI
-#include "nrutil.h"
-#define MAXITS 200
-#define TOLF 1.0e-4
-#define TOLMIN 1.0e-6
-#define TOLX 1.0e-7
-#define STPMX 100.0
-
-int nn;
-float *fvec;
-void (*nrfuncv) (int n, float v[], float f[]);
-#define FREERETURN {free_vector(fvec,1,n);free_vector(xold,1,n);\
-        free_vector(p,1,n);free_vector(g,1,n);free_matrix(fjac,1,n,1,n);\
-        free_ivector(indx,1,n);return;}
-
-void 
-newt (float x[], int n, int *check,
-      void (*vecfunc) (int, float[], float[]))
-{
-  void fdjac (int n, float x[], float fvec[], float **df,
-              void (*vecfunc) (int, float[], float[]));
-  float fmin (float x[]);
-  void lnsrch (int n, float xold[], float fold, float g[], float p[], float x[],
-               float *f, float stpmax, int *check, float (*func) (float[]));
-  void lubksb (float **a, int n, int *indx, float b[]);
-  void ludcmp (float **a, int n, int *indx, float *d);
-  int i, its, j, *indx;
-  float d, den, f, fold, stpmax, sum, temp, test, **fjac, *g, *p, *xold;
-
-  indx = ivector (1, n);
-  fjac = matrix (1, n, 1, n);
-  g = vector (1, n);
-  p = vector (1, n);
-  xold = vector (1, n);
-  fvec = vector (1, n);
-  nn = n;
-  nrfuncv = vecfunc;
-  f = fmin (x);
-  test = 0.0;
-  for (i = 1; i <= n; i++)
-    if (fabs (fvec[i]) > test)
-      test = fabs (fvec[i]);
-  if (test < 0.01 * TOLF)
-    FREERETURN
-      for (sum = 0.0, i = 1; i <= n; i++)
-      sum += SQR (x[i]);
-  stpmax = STPMX * FMAX (sqrt (sum), (float) n);
-  for (its = 1; its <= MAXITS; its++)
-    {
-      fdjac (n, x, fvec, fjac, vecfunc);
-      for (i = 1; i <= n; i++)
-        {
-          for (sum = 0.0, j = 1; j <= n; j++)
-            sum += fjac[j][i] * fvec[j];
-          g[i] = sum;
-        }
-      for (i = 1; i <= n; i++)
-        xold[i] = x[i];
-      fold = f;
-      for (i = 1; i <= n; i++)
-        p[i] = -fvec[i];
-      ludcmp (fjac, n, indx, &d);
-      lubksb (fjac, n, indx, p);
-      lnsrch (n, xold, fold, g, p, x, &f, stpmax, check, fmin);
-      test = 0.0;
-      for (i = 1; i <= n; i++)
-        if (fabs (fvec[i]) > test)
-          test = fabs (fvec[i]);
-      if (test < TOLF)
-        {
-          *check = 0;
-          FREERETURN
-        }
-      if (*check)
-        {
-          test = 0.0;
-          den = FMAX (f, 0.5 * n);
-          for (i = 1; i <= n; i++)
-            {
-              temp = fabs (g[i]) * FMAX (fabs (x[i]), 1.0) / den;
-              if (temp > test)
-                test = temp;
-            }
-          *check = (test < TOLMIN ? 1 : 0);
-          FREERETURN
-        }
-      test = 0.0;
-      for (i = 1; i <= n; i++)
-        {
-          temp = (fabs (x[i] - xold[i])) / FMAX (fabs (x[i]), 1.0);
-          if (temp > test)
-            test = temp;
-        }
-      if (test < TOLX)
-        FREERETURN
-        }
-        nrerror ("MAXITS exceeded in newt");
-    }
-#undef MAXITS
-#undef TOLF
-#undef TOLMIN
-#undef TOLX
-#undef STPMX
-#undef FREERETURN
-#undef NRANSI
diff --git a/Adapt/nrutil.cpp b/Adapt/nrutil.cpp
deleted file mode 100644
index c4140f61126fbd2af0ee1484eb64e5c06921009f..0000000000000000000000000000000000000000
--- a/Adapt/nrutil.cpp
+++ /dev/null
@@ -1,291 +0,0 @@
-// $Id: nrutil.cpp,v 1.4 2001-01-08 08:05:40 geuzaine Exp $
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <malloc.h>
-
-
-#define NR_END 1
-#define FREE_ARG char*
-
-void nrerror(char error_text[])
-/* Numerical Recipes standard error handler */
-{
-        fprintf(stderr,"Numerical Recipes run-time error...\n");
-        fprintf(stderr,"%s\n",error_text);
-        fprintf(stderr,"...now exiting to system...\n");
-        exit(1);
-}
-
-float *vector(long nl, long nh)
-/* allocate a float vector with subscript range v[nl..nh] */
-{
-        float *v;
-
-        v=(float *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(float)));
-        if (!v) nrerror("allocation failure in vector()");
-        return v-nl+NR_END;
-}
-
-int *ivector(long nl, long nh)
-/* allocate an int vector with subscript range v[nl..nh] */
-{
-        int *v;
-
-        v=(int *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(int)));
-        if (!v) nrerror("allocation failure in ivector()");
-        return v-nl+NR_END;
-}
-
-unsigned char *cvector(long nl, long nh)
-/* allocate an unsigned char vector with subscript range v[nl..nh] */
-{
-        unsigned char *v;
-
-        v=(unsigned char *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(unsigned char)));
-        if (!v) nrerror("allocation failure in cvector()");
-        return v-nl+NR_END;
-}
-
-unsigned long *lvector(long nl, long nh)
-/* allocate an unsigned long vector with subscript range v[nl..nh] */
-{
-        unsigned long *v;
-
-        v=(unsigned long *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(long)));
-        if (!v) nrerror("allocation failure in lvector()");
-        return v-nl+NR_END;
-}
-
-double *dvector(long nl, long nh)
-/* allocate a double vector with subscript range v[nl..nh] */
-{
-        double *v;
-
-        v=(double *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(double)));
-        if (!v) nrerror("allocation failure in dvector()");
-        return v-nl+NR_END;
-}
-
-float **matrix(long nrl, long nrh, long ncl, long nch)
-/* allocate a float matrix with subscript range m[nrl..nrh][ncl..nch] */
-{
-        long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
-        float **m;
-
-        /* allocate pointers to rows */
-        m=(float **) malloc((size_t)((nrow+NR_END)*sizeof(float*)));
-        if (!m) nrerror("allocation failure 1 in matrix()");
-        m += NR_END;
-        m -= nrl;
-
-        /* allocate rows and set pointers to them */
-        m[nrl]=(float *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(float)));
-        if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
-        m[nrl] += NR_END;
-        m[nrl] -= ncl;
-
-        for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
-
-        /* return pointer to array of pointers to rows */
-        return m;
-}
-
-double **dmatrix(long nrl, long nrh, long ncl, long nch)
-/* allocate a double matrix with subscript range m[nrl..nrh][ncl..nch] */
-{
-        long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
-        double **m;
-
-        /* allocate pointers to rows */
-        m=(double **) malloc((size_t)((nrow+NR_END)*sizeof(double*)));
-        if (!m) nrerror("allocation failure 1 in matrix()");
-        m += NR_END;
-        m -= nrl;
-
-        /* allocate rows and set pointers to them */
-        m[nrl]=(double *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(double)));
-        if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
-        m[nrl] += NR_END;
-        m[nrl] -= ncl;
-
-        for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
-
-        /* return pointer to array of pointers to rows */
-        return m;
-}
-
-int **imatrix(long nrl, long nrh, long ncl, long nch)
-/* allocate a int matrix with subscript range m[nrl..nrh][ncl..nch] */
-{
-        long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
-        int **m;
-
-        /* allocate pointers to rows */
-        m=(int **) malloc((size_t)((nrow+NR_END)*sizeof(int*)));
-        if (!m) nrerror("allocation failure 1 in matrix()");
-        m += NR_END;
-        m -= nrl;
-
-
-        /* allocate rows and set pointers to them */
-        m[nrl]=(int *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(int)));
-        if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
-        m[nrl] += NR_END;
-        m[nrl] -= ncl;
-
-        for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
-
-        /* return pointer to array of pointers to rows */
-        return m;
-}
-
-float **submatrix(float **a, long oldrl, long oldrh, long oldcl, long oldch,
-        long newrl, long newcl)
-/* point a submatrix [newrl..][newcl..] to a[oldrl..oldrh][oldcl..oldch] */
-{
-        long i,j,nrow=oldrh-oldrl+1,ncol=oldcl-newcl;
-        float **m;
-
-        /* allocate array of pointers to rows */
-        m=(float **) malloc((size_t) ((nrow+NR_END)*sizeof(float*)));
-        if (!m) nrerror("allocation failure in submatrix()");
-        m += NR_END;
-        m -= newrl;
-
-        /* set pointers to rows */
-        for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+ncol;
-
-        /* return pointer to array of pointers to rows */
-        return m;
-}
-
-float **convert_matrix(float *a, long nrl, long nrh, long ncl, long nch)
-/* allocate a float matrix m[nrl..nrh][ncl..nch] that points to the matrix
-declared in the standard C manner as a[nrow][ncol], where nrow=nrh-nrl+1
-and ncol=nch-ncl+1. The routine should be called with the address
-&a[0][0] as the first argument. */
-{
-        long i,j,nrow=nrh-nrl+1,ncol=nch-ncl+1;
-        float **m;
-
-        /* allocate pointers to rows */
-        m=(float **) malloc((size_t) ((nrow+NR_END)*sizeof(float*)));
-        if (!m) nrerror("allocation failure in convert_matrix()");
-        m += NR_END;
-        m -= nrl;
-
-        /* set pointers to rows */
-        m[nrl]=a-ncl;
-        for(i=1,j=nrl+1;i<nrow;i++,j++) m[j]=m[j-1]+ncol;
-        /* return pointer to array of pointers to rows */
-        return m;
-}
-
-float ***f3tensor(long nrl, long nrh, long ncl, long nch, long ndl, long ndh)
-/* allocate a float 3tensor with range t[nrl..nrh][ncl..nch][ndl..ndh] */
-{
-        long i,j,nrow=nrh-nrl+1,ncol=nch-ncl+1,ndep=ndh-ndl+1;
-        float ***t;
-
-        /* allocate pointers to pointers to rows */
-        t=(float ***) malloc((size_t)((nrow+NR_END)*sizeof(float**)));
-        if (!t) nrerror("allocation failure 1 in f3tensor()");
-        t += NR_END;
-        t -= nrl;
-
-        /* allocate pointers to rows and set pointers to them */
-        t[nrl]=(float **) malloc((size_t)((nrow*ncol+NR_END)*sizeof(float*)));
-        if (!t[nrl]) nrerror("allocation failure 2 in f3tensor()");
-        t[nrl] += NR_END;
-        t[nrl] -= ncl;
-
-        /* allocate rows and set pointers to them */
-        t[nrl][ncl]=(float *) malloc((size_t)((nrow*ncol*ndep+NR_END)*sizeof(float)));
-        if (!t[nrl][ncl]) nrerror("allocation failure 3 in f3tensor()");
-        t[nrl][ncl] += NR_END;
-        t[nrl][ncl] -= ndl;
-
-        for(j=ncl+1;j<=nch;j++) t[nrl][j]=t[nrl][j-1]+ndep;
-        for(i=nrl+1;i<=nrh;i++) {
-                t[i]=t[i-1]+ncol;
-                t[i][ncl]=t[i-1][ncl]+ncol*ndep;
-                for(j=ncl+1;j<=nch;j++) t[i][j]=t[i][j-1]+ndep;
-        }
-
-        /* return pointer to array of pointers to rows */
-        return t;
-}
-
-void free_vector(float *v, long nl, long nh)
-/* free a float vector allocated with vector() */
-{
-        free((FREE_ARG) (v+nl-NR_END));
-}
-
-void free_ivector(int *v, long nl, long nh)
-/* free an int vector allocated with ivector() */
-{
-        free((FREE_ARG) (v+nl-NR_END));
-}
-
-void free_cvector(unsigned char *v, long nl, long nh)
-/* free an unsigned char vector allocated with cvector() */
-{
-        free((FREE_ARG) (v+nl-NR_END));
-}
-
-void free_lvector(unsigned long *v, long nl, long nh)
-/* free an unsigned long vector allocated with lvector() */
-{
-        free((FREE_ARG) (v+nl-NR_END));
-}
-
-void free_dvector(double *v, long nl, long nh)
-/* free a double vector allocated with dvector() */
-{
-        free((FREE_ARG) (v+nl-NR_END));
-}
-
-void free_matrix(float **m, long nrl, long nrh, long ncl, long nch)
-/* free a float matrix allocated by matrix() */
-{
-        free((FREE_ARG) (m[nrl]+ncl-NR_END));
-        free((FREE_ARG) (m+nrl-NR_END));
-}
-
-void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch)
-/* free a double matrix allocated by dmatrix() */
-{
-        free((FREE_ARG) (m[nrl]+ncl-NR_END));
-        free((FREE_ARG) (m+nrl-NR_END));
-}
-
-void free_imatrix(int **m, long nrl, long nrh, long ncl, long nch)
-/* free an int matrix allocated by imatrix() */
-{
-        free((FREE_ARG) (m[nrl]+ncl-NR_END));
-        free((FREE_ARG) (m+nrl-NR_END));
-}
-
-void free_submatrix(float **b, long nrl, long nrh, long ncl, long nch)
-/* free a submatrix allocated by submatrix() */
-{
-        free((FREE_ARG) (b+nrl-NR_END));
-}
-
-void free_convert_matrix(float **b, long nrl, long nrh, long ncl, long nch)
-/* free a matrix allocated by convert_matrix() */
-{
-        free((FREE_ARG) (b+nrl-NR_END));
-}
-
-void free_f3tensor(float ***t, long nrl, long nrh, long ncl, long nch,
-        long ndl, long ndh)
-/* free a float f3tensor allocated by f3tensor() */
-{
-        free((FREE_ARG) (t[nrl][ncl]+ndl-NR_END));
-        free((FREE_ARG) (t[nrl]+ncl-NR_END));
-        free((FREE_ARG) (t+nrl-NR_END));
-}
-
diff --git a/Adapt/nrutil.h b/Adapt/nrutil.h
deleted file mode 100644
index 191fc3528e8f13540eedf4f2cb2c706ec1262d69..0000000000000000000000000000000000000000
--- a/Adapt/nrutil.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _NR_UTILS_H_
-#define _NR_UTILS_H_
-
-#include "Numeric.h"
-
-#define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a))
-
-void nrerror (char error_text[]);
-float *vector (long nl, long nh);
-int *ivector (long nl, long nh);
-unsigned char *cvector (long nl, long nh);
-unsigned long *lvector (long nl, long nh);
-double *dvector (long nl, long nh);
-float **matrix (long nrl, long nrh, long ncl, long nch);
-double **dmatrix (long nrl, long nrh, long ncl, long nch);
-int **imatrix (long nrl, long nrh, long ncl, long nch);
-float **submatrix (float **a, long oldrl, long oldrh, long oldcl, long oldch,
-                   long newrl, long newcl);
-float **convert_matrix (float *a, long nrl, long nrh, long ncl, long nch);
-float ***f3tensor (long nrl, long nrh, long ncl, long nch, long ndl, long ndh);
-void free_vector (float *v, long nl, long nh);
-void free_ivector (int *v, long nl, long nh);
-void free_cvector (unsigned char *v, long nl, long nh);
-void free_lvector (unsigned long *v, long nl, long nh);
-void free_dvector (double *v, long nl, long nh);
-void free_matrix (float **m, long nrl, long nrh, long ncl, long nch);
-void free_dmatrix (double **m, long nrl, long nrh, long ncl, long nch);
-void free_imatrix (int **m, long nrl, long nrh, long ncl, long nch);
-void free_submatrix (float **b, long nrl, long nrh, long ncl, long nch);
-void free_convert_matrix (float **b, long nrl, long nrh, long ncl, long nch);
-void free_f3tensor (float ***t, long nrl, long nrh, long ncl, long nch,
-                    long ndl, long ndh);
-
-
-#endif /* _NR_UTILS_H_ */
diff --git a/Box/Main.cpp b/Box/Main.cpp
deleted file mode 100644
index 99ad8a4ec4eed7e1d3573a9896fb3a0849a3998c..0000000000000000000000000000000000000000
--- a/Box/Main.cpp
+++ /dev/null
@@ -1,270 +0,0 @@
-// $Id: Main.cpp,v 1.10 2001-08-11 23:28:31 geuzaine Exp $
-
-#include <signal.h>
-#include "ParUtil.h"
-
-#include <signal.h>
-#if !defined(WIN32) || defined(__CYGWIN__)
-#include <sys/resource.h>
-#endif
-
-#include "PluginManager.h"
-#include "Gmsh.h"
-#include "GmshVersion.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Views.h"
-#include "Parser.h"
-#include "Context.h"
-#include "Options.h"
-#include "OpenFile.h"
-#include "GetOptions.h"
-#include "MinMax.h"
-#include "Static.h"
-
-/* dummy defs for link purposes */
-
-void AddViewInUI(int, char *, int){}
-void draw_polygon_2d (double, double, double, int, double *, double *, double *){}
-void set_r(int, double){}
-void Draw(void){}
-void DrawUI(void){}
-void Replot(void){}
-void CreateOutputFile(char *, int){}
-
-/* ------------------------------------------------------------------------ */
-/*  I n f o                                                                 */
-/* ------------------------------------------------------------------------ */
-
-void Info (int level, char *arg0){
-  switch(level){
-  case 0 :
-    if(ParUtil::Instance()->master())
-      {
-	fprintf(stderr, "%s\n", gmsh_progname);
-	fprintf(stderr, "%s\n", gmsh_copyright);
-	Print_Usage(arg0);
-      }
-    ParUtil::Instance()->Exit();
-  case 1:
-    if(ParUtil::Instance()->master())
-      fprintf(stderr, "%.2f\n", GMSH_VERSION);
-    ParUtil::Instance()->Exit();
-  case 2:
-    if(ParUtil::Instance()->master())
-      {
-	fprintf(stderr, "%s%.2f\n", gmsh_version, GMSH_VERSION);
-	fprintf(stderr, "%s\n", gmsh_os);
-	fprintf(stderr, "%s\n", gmsh_date);
-	fprintf(stderr, "%s\n", gmsh_host);
-	fprintf(stderr, "%s\n", gmsh_packager);
-	fprintf(stderr, "%s\n", gmsh_url);
-	fprintf(stderr, "%s\n", gmsh_email);
-      }
-    ParUtil::Instance()->Exit();
-  default :
-    break;
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  m a i n                                                                 */
-/* ------------------------------------------------------------------------ */
-
-int main(int argc, char *argv[]){
-  int     i, nbf;
-
-  ParUtil::Instance()->init(argc,argv);
-
-  if(argc < 2) Info(0,argv[0]);
-
-  Init_Options(0);
-
-  Get_Options(argc, argv, &nbf);
-
-  M.Vertices = NULL ;
-  M.VertexEdges = NULL ;
-  M.Simplexes = NULL ;
-  M.Points = NULL ;
-  M.Curves = NULL ;
-  M.SurfaceLoops = NULL ;
-  M.EdgeLoops = NULL ;
-  M.Surfaces = NULL ;
-  M.Volumes = NULL ;
-  M.PhysicalGroups = NULL ;
-  M.Metric = NULL ;
-
-  signal(SIGINT,  Signal);
-  signal(SIGSEGV, Signal);
-  signal(SIGFPE,  Signal);
-
-  if(CTX.default_plugins)
-    GMSH_PluginManager::Instance()->RegisterDefaultPlugins();
-
-  OpenProblem(CTX.filename);
-  if(yyerrorstate)
-    ParUtil::Instance()->Abort();
-  else{
-    for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
-    if(TheBgmFileName){
-      MergeProblem(TheBgmFileName);
-      if(List_Nbr(Post_ViewList))
-        BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
-      else
-        fprintf(stderr, ERROR_STR "Invalid background mesh (no view)\n"); exit(1);
-    }
-    if(CTX.batch > 0){
-      mai3d(THEM, CTX.batch);
-      Print_Mesh(THEM,CTX.output_filename,CTX.mesh.format);
-    }
-    else
-      Print_Geo(THEM, CTX.output_filename);
-    if(CTX.mesh.histogram)
-      Print_Histogram(THEM->Histogram[0]);
-    ParUtil::Instance()->Barrier(__LINE__,__FILE__);
-    ParUtil::Instance()->Exit();
-    return 1;
-  }
-  ParUtil::Instance()->Barrier(__LINE__,__FILE__);
-  ParUtil::Instance()->Exit();
-  return 1;
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  S i g n a l                                                             */
-/* ------------------------------------------------------------------------ */
-
-
-void Signal (int sig_num){
-
-  switch (sig_num){
-  case SIGSEGV : Msg(FATAL, "Segmentation violation (invalid memory reference)"); break;
-  case SIGFPE  : Msg(FATAL, "Floating point exception (division by zero?)"); break;
-  case SIGINT  : Msg(FATAL, "Interrupt (generated from terminal special char)"); break;
-  default      : Msg(FATAL, "Unknown signal"); break;
-  }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  M s g                                                                   */
-/* ------------------------------------------------------------------------ */
-
-void Msg(int level, char *fmt, ...){
-
-  va_list  args;
-  int      abort=0;
-  int      nb, nbvis;
-
-  va_start (args, fmt);
-
-  switch(level){
-
-  case DIRECT :
-    if(ParUtil::Instance()->master()) 
-     vfprintf(stdout, fmt, args); fprintf(stdout, "\n");
-    break;
-
-  case FATAL :
-  case FATAL1 :
-  case FATAL2 :
-  case FATAL3 :
-    fprintf(stderr,"On processor %d : ",ParUtil::Instance()->rank());
-    fprintf(stderr, FATAL_STR);
-    vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-    abort = 1 ;
-    break ;
-
-  case GERROR :
-  case GERROR1 :
-  case GERROR2 :
-  case GERROR3 :
-    fprintf(stderr,"On processor %d : ",ParUtil::Instance()->rank());
-    fprintf(stderr, ERROR_STR);
-    vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-    abort = 1 ;
-    break ;
-
-  case WARNING :
-  case WARNING1 :
-  case WARNING2 :
-  case WARNING3 :
-    fprintf(stderr,"On processor %d : ",ParUtil::Instance()->rank());
-    fprintf(stderr, WARNING_STR);
-    vfprintf(stderr, fmt,args); fprintf(stderr, "\n");
-    break;
-
-  case PARSER_ERROR :
-    if(ParUtil::Instance()->master())
-      {
-	fprintf(stderr, PARSER_ERROR_STR); 
-	vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-      }
-    break ;
-
-  case PARSER_INFO :
-    if(CTX.verbosity == 5 && ParUtil::Instance()->master()){
-      fprintf(stderr, PARSER_INFO_STR);
-      vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-    }
-    break ;
-
-  case DEBUG    :		     	  
-  case DEBUG1   : 
-  case DEBUG2   :		     	  
-  case DEBUG3   : 
-    if(ParUtil::Instance()->master() && CTX.verbosity > 2){
-      fprintf(stderr, DEBUG_STR);
-      vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-    }
-    break;
-
-  default :
-    if(ParUtil::Instance()->master() && CTX.verbosity > 0){
-      fprintf(stderr, INFO_STR);
-      vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-    }
-    break;
-  }
-
-  va_end (args);
-
-  if(abort) exit(1);
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  C p u                                                                   */
-/* ------------------------------------------------------------------------ */
-
-void GetResources(long *s, long *us, long *mem){
-#if !defined(WIN32) || defined(__CYGWIN__)
-  static struct rusage r;
-
-  getrusage(RUSAGE_SELF,&r);
-  *s   = (long)r.ru_utime.tv_sec ;
-  *us  = (long)r.ru_utime.tv_usec ;
-  *mem = (long)r.ru_maxrss ;
-#else
-  *s = *us = *mem = 0;
-#endif
-
-}
-
-double Cpu(void){
-  long s, us, mem;
-  GetResources(&s, &us, &mem);
-  return (double)s + (double)us/1.e6 ;
-}
-
-/* ------------------------------------------------------------------------ */
-/*  P r o g r e s s                                                         */
-/* ------------------------------------------------------------------------ */
-
-void Progress(int i){
-}
-
-void   AddALineInTheEditGeometryForm (char* line){
-};
diff --git a/Box/Makefile b/Box/Makefile
deleted file mode 100644
index 6560ce116bf5bbb6757171f06ad52d7b4acd44d3..0000000000000000000000000000000000000000
--- a/Box/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-# $Id: Makefile,v 1.10 2001-08-12 13:08:20 geuzaine Exp $
-#
-# Makefile for "libBox.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RM       = rm
-RANLIB   = ranlib
-LIB      = ../lib/libBox.a
-INCLUDE  = -I../Common -I../DataStr -I../Geo\
-           -I../Graphics -I../Mesh -I../Parser -I../Motif -I../Fltk -I../Plugin -I../Parallel
-
-C_FLAGS       = -g
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) 
-
-SRC = Main.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Main.o: Main.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshVersion.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Common/Views.h ../Common/ColorTable.h \
- ../Parser/Parser.h ../Common/Context.h ../Parser/OpenFile.h \
- ../Common/GetOptions.h ../Geo/MinMax.h ../Common/Static.h
diff --git a/Common/Bitmaps.h b/Common/Bitmaps.h
deleted file mode 100644
index bb72a03dfbc78ad300c72b68c147113e52fa7be3..0000000000000000000000000000000000000000
--- a/Common/Bitmaps.h
+++ /dev/null
@@ -1,162 +0,0 @@
-#ifndef _BITMAPS_H_
-#define _BITMAPS_H_
-
-// 'Gmsh' (Unix) icon
-
-#define g1_width 66
-#define g1_height 29
-static char g1_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x30,0x00,0xfc,0x00,0x08,0x00,0x00,0x00,0x18,0x18,0x00,0xfc,
- 0x00,0x0c,0x00,0x04,0x00,0x3c,0x08,0x06,0xfc,0xc0,0x0f,0x04,0x8f,0x01,0x3e,
- 0x04,0x0f,0xfc,0x30,0x0e,0x8e,0xcf,0x03,0x7b,0x84,0x0f,0xfc,0x18,0x0e,0xcf,
- 0xe7,0x83,0x70,0x42,0x0f,0xfc,0x1c,0x8e,0x2f,0x97,0x43,0x70,0x22,0x0e,0xfd,
- 0x1e,0xcd,0x1e,0x8f,0x23,0x21,0x17,0x8e,0xfc,0xfe,0x68,0x8e,0x87,0x97,0x31,
- 0x0f,0x4e,0xfc,0x7e,0x38,0x87,0x83,0x8f,0x1b,0x07,0x2e,0xfc,0x1c,0x1c,0x83,
- 0x01,0x03,0x07,0x02,0x1e,0xfc,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x0c,0xfc,
- 0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x00,0xfc,0x80,0x03,0x00,0x00,0x00,0x8c,
- 0x01,0x00,0xfc,0xc0,0x03,0x00,0x00,0x00,0x8c,0x99,0x26,0xfd,0xe0,0x01,0x00,
- 0x00,0x00,0x54,0xa5,0x29,0xfd,0xf0,0x01,0x00,0x00,0x00,0x54,0xbd,0x28,0xfd,
- 0xf0,0x00,0x00,0x00,0x00,0x24,0x85,0x28,0xfd,0x78,0x00,0x00,0x00,0x00,0x24,
- 0xa5,0x28,0xfd,0x30,0x00,0x00,0x00,0x00,0x24,0x99,0xc8,0xfd,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc};
-
-// 'Gmsh Menu' (Unix) icon
-
-#define g2_width 66
-#define g2_height 29
-static char g2_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x30,0x00,0xfc,0x00,0x08,0x00,0x00,0x00,0x18,0x18,0x00,0xfc,
- 0x00,0x0c,0x00,0x04,0x00,0x3c,0x08,0x06,0xfc,0xc0,0x0f,0x04,0x8f,0x01,0x3e,
- 0x04,0x0f,0xfc,0x30,0x0e,0x8e,0xcf,0x03,0x7b,0x84,0x0f,0xfc,0x18,0x0e,0xcf,
- 0xe7,0x83,0x70,0x42,0x0f,0xfc,0x1c,0x8e,0x2f,0x97,0x43,0x70,0x22,0x0e,0xfd,
- 0x1e,0xcd,0x1e,0x8f,0x23,0x21,0x17,0x8e,0xfc,0xfe,0x68,0x8e,0x87,0x97,0x31,
- 0x0f,0x4e,0xfc,0x7e,0x38,0x87,0x83,0x8f,0x1b,0x07,0x2e,0xfc,0x1c,0x1c,0x83,
- 0x01,0x03,0x07,0x02,0x1e,0xfc,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x0c,0xfc,
- 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xe0,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x78,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc};
-
-// 'Gmsh command' (Unix Motif) icon
-
-#ifdef _XMOTIF
-
-#define g3_width 66
-#define g3_height 29
-static char g3_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x30,0x00,0xfc,0x00,0x08,0x00,0x00,0x00,0x18,0x18,0x00,0xfc,
- 0x00,0x0c,0x00,0x04,0x00,0x3c,0x08,0x06,0xfc,0xc0,0x0f,0x04,0x8f,0x01,0x3e,
- 0x04,0x0f,0xfc,0x30,0x0e,0x8e,0xcf,0x03,0x7b,0x84,0x0f,0xfc,0x18,0x0e,0xcf,
- 0xe7,0x83,0x70,0x42,0x0f,0xfc,0x1c,0x8e,0x2f,0x97,0x43,0x70,0x22,0x0e,0xfd,
- 0x1e,0xcd,0x1e,0x8f,0x23,0x21,0x17,0x8e,0xfc,0xfe,0x68,0x8e,0x87,0x97,0x31,
- 0x0f,0x4e,0xfc,0x7e,0x38,0x87,0x83,0x8f,0x1b,0x07,0x2e,0xfc,0x1c,0x1c,0x83,
- 0x01,0x03,0x07,0x02,0x1e,0xfc,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x0c,0xfc,
- 0x00,0x07,0xe0,0x01,0x00,0x00,0x00,0x00,0xfd,0x80,0x03,0x10,0x02,0x00,0x00,
- 0x00,0x00,0xfd,0xc0,0x03,0x10,0x70,0x6e,0x6e,0x4e,0x63,0xfd,0xe0,0x01,0x10,
- 0x88,0x92,0x92,0xd0,0x94,0xfd,0xf0,0x01,0x10,0x88,0x92,0x92,0x5c,0x14,0xfd,
- 0xf0,0x00,0x10,0x88,0x92,0x92,0x52,0x14,0xfd,0x78,0x00,0x10,0x8a,0x92,0x92,
- 0x52,0x94,0xfd,0x30,0x00,0xe0,0x71,0x92,0x92,0x6c,0x64,0xfd,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc};
-
-#endif
-
-// 'About Gmsh' bitmap
-
-#define about_width 49
-#define about_height 111
-static char about_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,
- 0x00,0x00,0x08,0x00,0x00,0xfe,0x00,0x00,0x00,0x10,0x00,0x00,0xfe,0x00,0x00,
- 0x00,0x20,0x00,0x00,0xfe,0x00,0x00,0x00,0x40,0x00,0x00,0xfe,0x00,0x00,0x00,
- 0xc0,0x00,0x00,0xfe,0x00,0x00,0x00,0xc0,0x01,0x00,0xfe,0x00,0x00,0x00,0xc0,
- 0x01,0x00,0xfe,0x00,0x00,0x00,0xff,0x03,0x00,0xfe,0x00,0x00,0xf0,0xff,0x03,
- 0x00,0xfe,0x00,0x00,0xf0,0xff,0x03,0x00,0xfe,0x70,0x00,0xf0,0xff,0x03,0x00,
- 0xfe,0xfc,0x03,0xe0,0xff,0x00,0x00,0xfe,0xf8,0x0f,0xc0,0x01,0x00,0x00,0xfe,
- 0xf0,0x3f,0xc0,0x00,0x00,0x00,0xfe,0xe0,0x7f,0x00,0x01,0x00,0x00,0xfe,0x80,
- 0xff,0x00,0x01,0x00,0x00,0xfe,0x00,0xfe,0x01,0x02,0x00,0x00,0xfe,0x00,0xf8,
- 0x03,0x0c,0x00,0x00,0xfe,0x00,0xf0,0x07,0x08,0x00,0x00,0xfe,0x00,0xc0,0x0f,
- 0x10,0x00,0x00,0xfe,0x00,0x00,0x1f,0x70,0x00,0x00,0xfe,0x00,0x00,0x7c,0xf8,
- 0x00,0x00,0xfe,0x00,0x00,0xf0,0xff,0x00,0x00,0xfe,0x00,0x00,0xc0,0xff,0x01,
- 0x00,0xfe,0x00,0x00,0x00,0xfe,0x01,0x00,0xfe,0x00,0x00,0x00,0xf8,0x00,0x00,
- 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,
- 0x00,0xe0,0x03,0x00,0x00,0xfe,0x00,0x00,0xf0,0x0f,0x00,0x00,0xfe,0x00,0x80,
- 0xf8,0x1f,0x00,0x00,0xfe,0x00,0x00,0xff,0x21,0x00,0x00,0xfe,0x00,0x00,0xff,
- 0x40,0x00,0x00,0xfe,0x00,0x00,0x7e,0x80,0x00,0x00,0xfe,0x00,0x00,0x3c,0x80,
- 0x00,0x00,0xfe,0x00,0x00,0x38,0xc0,0x01,0x00,0xfe,0x00,0x00,0x20,0xf0,0x01,
- 0x00,0xfe,0x00,0x00,0x40,0xf8,0x01,0x00,0xfe,0x00,0x00,0x80,0xf8,0x01,0x00,
- 0xfe,0x00,0x00,0x00,0xf1,0x00,0x00,0xfe,0x00,0x00,0x00,0x04,0x00,0x00,0xfe,
- 0x00,0x00,0x00,0x08,0x00,0x00,0xfe,0x00,0x00,0x00,0x08,0x00,0x00,0xfe,0x00,
- 0x00,0x00,0x10,0x00,0x00,0xfe,0x00,0x00,0x00,0x30,0x00,0x00,0xfe,0x00,0x00,
- 0x00,0x70,0x00,0x00,0xfe,0x00,0x00,0x00,0x70,0x00,0x00,0xfe,0x00,0x00,0x00,
- 0xf8,0x00,0x00,0xfe,0x00,0x00,0xc0,0xff,0x01,0x00,0xfe,0x00,0x00,0xf0,0xff,
- 0x01,0x00,0xfe,0x00,0x00,0xf0,0xff,0x01,0x00,0xfe,0x00,0x00,0xf0,0xff,0x00,
- 0x00,0xfe,0x00,0x00,0xe0,0x1f,0x00,0x00,0xfe,0x00,0x00,0xc0,0x01,0x00,0x00,
- 0xfe,0x00,0x00,0xc0,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0x00,0x00,0x00,0xfe,
- 0x00,0x00,0x00,0x01,0x00,0x00,0xfe,0x00,0x00,0x00,0x02,0x00,0x00,0xfe,0x00,
- 0x00,0x00,0x04,0x00,0x00,0xfe,0x00,0x00,0x38,0x08,0x00,0x00,0xfe,0x00,0x00,
- 0xf8,0x18,0x00,0x00,0xfe,0x00,0x00,0xf8,0x3f,0x00,0x00,0xfe,0x00,0x00,0xf8,
- 0x7f,0x00,0x00,0xfe,0x00,0x00,0xf0,0xff,0x00,0x00,0xfe,0x00,0x00,0xf0,0xff,
- 0x00,0x00,0xfe,0x00,0x00,0x60,0xfc,0x01,0x00,0xfe,0x00,0x00,0x40,0xf0,0x01,
- 0x00,0xfe,0x00,0x00,0x80,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0x00,0x00,0x00,
- 0xfe,0x00,0x00,0x00,0x01,0x00,0x00,0xfe,0x00,0x00,0x00,0x02,0x00,0x00,0xfe,
- 0x00,0x00,0x0c,0x06,0x00,0x00,0xfe,0x00,0x00,0x3c,0x04,0x00,0x00,0xfe,0x00,
- 0x00,0xf8,0x08,0x00,0x00,0xfe,0x00,0x00,0xf8,0x1f,0x00,0x00,0xfe,0x00,0x00,
- 0xf0,0x3f,0x00,0x00,0xfe,0x00,0x00,0xe0,0x7f,0x00,0x00,0xfe,0x00,0x00,0xc0,
- 0xff,0x00,0x00,0xfe,0x00,0x00,0x00,0xff,0x00,0x00,0xfe,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0xfe,0x00,0x00,0x00,0x0c,0x00,0x00,0xfe,0x00,0x00,0x00,0x10,0x00,
- 0x00,0xfe,0x00,0x00,0x00,0x10,0x00,0x00,0xfe,0x00,0x00,0x00,0x20,0x00,0x00,
- 0xfe,0x00,0x00,0x00,0x60,0x00,0x00,0xfe,0x00,0x00,0x00,0xcf,0x00,0x00,0xfe,
- 0x00,0x00,0xde,0xbf,0x01,0x00,0xfe,0x00,0x00,0xfe,0xff,0x03,0x00,0xfe,0x00,
- 0x00,0xfe,0x1f,0x0f,0x00,0xfe,0x00,0x00,0xf8,0x07,0x1e,0x00,0xfe,0x00,0x00,
- 0xf0,0x03,0x7e,0x00,0xfe,0x00,0x00,0xd0,0x07,0xfc,0x00,0xfe,0x00,0x00,0x10,
- 0x08,0xf8,0x03,0xfe,0x00,0x00,0x10,0x18,0xf0,0x07,0xfe,0x00,0x00,0x10,0x30,
- 0xe0,0x0f,0xfe,0x00,0x00,0x10,0x30,0xc0,0x1f,0xfe,0x00,0x00,0x10,0x70,0x80,
- 0x3f,0xfe,0x00,0x00,0x20,0xf8,0x00,0x7f,0xfe,0x00,0x00,0x60,0xfc,0x00,0xfe,
- 0xfe,0x00,0x00,0xc0,0xff,0x01,0xfc,0xfe,0x00,0x00,0xc0,0xff,0x01,0x78,0xfe,
- 0x00,0x00,0x80,0xff,0x01,0x00,0xfe,0x00,0x00,0x00,0xff,0x01,0x00,0xfe,0x00,
- 0x00,0x00,0xfc,0x01,0x00,0xfe,0x00,0x00,0x00,0xf8,0x00,0x00,0xfe,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfe};
-
-// 'Abort' bitmap
-
-#define abort_width 13
-#define abort_height 13
-static char abort_bits[] = {
- 0x00,0xe0,0x40,0xe0,0x40,0xe0,0x50,0xe1,0x48,0xe2,0x44,0xe4,0x44,0xe4,0x44,
- 0xe4,0x04,0xe4,0x04,0xe4,0x08,0xe2,0xf0,0xe1,0x00,0xe0};
-
-// 'Play button' bitmap
-
-#define start_width 9
-#define start_height 13
-static char start_bits[] = {
- 0x00,0xfe,0x06,0xfe,0x0a,0xfe,0x12,0xfe,0x22,0xfe,0x42,0xfe,0x82,0xfe,0x42,
- 0xfe,0x22,0xfe,0x12,0xfe,0x0a,0xfe,0x06,0xfe,0x00,0xfe};
-
-// 'Pause button' bitmap
-
-#define stop_width 9
-#define stop_height 13
-static char stop_bits[] = {
- 0x00,0xfe,0xee,0xfe,0xaa,0xfe,0xaa,0xfe,0xaa,0xfe,0xaa,0xfe,0xaa,0xfe,0xaa,
- 0xfe,0xaa,0xfe,0xaa,0xfe,0xaa,0xfe,0xee,0xfe,0x00,0xfe};
-
-#endif
diff --git a/Common/ColorTable.cpp b/Common/ColorTable.cpp
deleted file mode 100644
index 061b7953cb6238366facf75fb644b20a6305d72f..0000000000000000000000000000000000000000
--- a/Common/ColorTable.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-// $Id: ColorTable.cpp,v 1.3 2001-02-12 17:38:02 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "ColorTable.h"
-#include "Context.h"
-
-extern Context_T CTX ;
-
-void ColorTable_InitParam(int number, ColorTable *ct, 
-                          int rgb_flag, int alpha_flag){
-
-  ct->ipar[COLORTABLE_NUMBER] = number;
-
-  if(rgb_flag) {
-    ct->ipar[COLORTABLE_INVERT]   = 0;
-    ct->ipar[COLORTABLE_SWAP]     = 0;
-    ct->ipar[COLORTABLE_ROTATE]   = 0;
-
-    ct->fpar[COLORTABLE_CURVE]    = 0.0;
-    ct->fpar[COLORTABLE_BIAS]     = 0.0;
-    ct->fpar[COLORTABLE_BETA]     = 0.0;
-  }
-  if(alpha_flag) {
-    ct->fpar[COLORTABLE_ALPHAPOW] = 2.;
-    ct->fpar[COLORTABLE_ALPHAVAL] = 255.;
-  }
-
-}
-
-void ColorTable_Recompute(ColorTable *ct, int rgb_flag, int alpha_flag){
-  float curve, bias;
-  double gamma;
-  int i,r,g,b,a,rotate;
-  float s,t;
-  
-  ct->ipar[COLORTABLE_CHANGED] = 1 ;
-
-  bias   = ct->fpar[COLORTABLE_BIAS];
-  curve  = ct->fpar[COLORTABLE_CURVE];
-  rotate = ct->ipar[COLORTABLE_ROTATE];
-
-  for (i=0 ; i<ct->size ; i++) {
-    
-    if(i+rotate<0)
-      s = (float) (i+rotate+ct->size) / (float) (ct->size-1);
-    else if(i+rotate>ct->size-1)
-      s = (float) (i+rotate-ct->size) / (float) (ct->size-1);
-    else
-      s = (float) (i+rotate) / (float) (ct->size-1);
-
-    if(ct->ipar[COLORTABLE_SWAP]) s = 1.0 - s;
-    
-    if (rgb_flag) {
-
-      switch(ct->ipar[COLORTABLE_NUMBER]){
-      case 1 : /* vis5d */
-        t = (curve+1.4) * (s - (1.+bias)/2.);
-        r = (int)( 128.0 + 127.0 * atan( 7.0*t ) / 1.57  );
-        g = (int)( 128.0 + 127.0 * (2 * exp(-7*t*t) - 1) );
-        b = (int)( 128.0 + 127.0 * atan( -7.0*t ) / 1.57 );
-        break;
-      case 2: /* samcef */
-        if (s-bias<=0.00){ 
-          r = 0 ; g = 0 ; b = 255 ;
-        }
-        else if(s-bias<=0.40){
-          r = 0 ; g = (int)((s-bias)*637.5) ; b = (int)(255.-(s-bias)*637.5) ;
-        }
-        else if(s-bias<=0.60){ 
-          r = (int)(1275.*(s-bias-0.4)) ; g = 255 ; b = 0 ;
-        }
-        else if(s-bias<=1.00){ 
-          r = 255 ; g = (int)(255.-637.5*(s-bias-0.6)) ; b = 0 ;
-        }
-        else {
-          r = 255 ; g = 0 ; b = 0 ;
-        }
-        break;
-      case 3: /* rainbow */
-        if (s-bias<=0.00) {
-          r = 0 ; g = 0 ; b = 255 ; 
-        }
-        else if(s-bias<=0.25+curve){ 
-          r = 0 ; g = (int)((s-bias)*(255./(0.25+curve))) ; b = 255 ; 
-        }
-        else if(s-bias<=0.50) { 
-          r = 0 ; g = 255 ; b = (int)(255.-(255./(0.25-curve))*(s-bias-0.25-curve)); 
-        }
-        else if(s-bias<=0.75-curve){ 
-          r = (int)((s-bias-0.5)*(255./(0.25-curve))); g = 255 ; b = 0 ; 
-        }
-        else if(s-bias<=1.00) { 
-          r = 255; g = (int)(255.-(255./(0.25+curve))*(s-bias-0.75+curve)) ; b = 0 ;
-        }
-        else { 
-          r = 255 ; g = 0 ; b = 0 ; 
-        }
-        break;
-      case 4: /* blue-yellow-white */
-#define myfct(a,b,c,d) ((a)+\
-                        (b)*(s-bias)+\
-                        (c)*(s-bias)*(s-bias)+\
-                        (d)*(s-bias)*(s-bias)*(s-bias))
-#define clamp(x) x = (x)<0?0:((x)>255?255:(x))
-        r = (int)(255. * myfct(-0.0506169, 2.81633, -1.87033, 0.0524573) ); 
-        g = (int)(255. * myfct(0.0485868,  -1.26109, 6.3074, -4.12498)   );
-        b = (int)(255. * myfct(0.364662,   1.50814, -7.36756, 6.51847 )  );     
-        clamp(r); clamp(g); clamp(b);
-#undef myfct
-#undef clamp
-        break;
-      case 5: /* grayscale */
-        if      (s-bias<=0.00){ r = g = b = 0 ; }
-        else if (s-bias<=1.00){ r = g = b = (int)(255*(s-bias)); }
-        else                  { r = g = b = 255 ; }
-        break;
-      case 6: /* monochrome */
-        r = g = b = 0 ;
-        break;
-      default: /* grayscale without white */
-        if      (s-bias<=0.00){ r = g = b = 0 ; }
-        else if (s-bias<=1.00){ r = g = b = (int)(220*(s-bias)); }
-        else                  { r = g = b = 220 ; }
-        break;
-      }
-
-      if(ct->fpar[COLORTABLE_BETA]){
-        if(ct->fpar[COLORTABLE_BETA] > 0.0)
-          gamma = 1. - ct->fpar[COLORTABLE_BETA];
-        else
-          gamma = 1./(1.001 + ct->fpar[COLORTABLE_BETA]);
-        r = (int)( 255. * pow((double)r/255.,gamma) );
-        g = (int)( 255. * pow((double)g/255.,gamma) );
-        b = (int)( 255. * pow((double)b/255.,gamma) );
-      }
-
-      if(ct->ipar[COLORTABLE_INVERT]){
-        r = 255-r ;
-        g = 255-g ;
-        b = 255-b ;
-      }
-
-    }
-    else {
-      r = UNPACK_RED(   ct->table[i] );
-      g = UNPACK_GREEN( ct->table[i] );
-      b = UNPACK_BLUE(  ct->table[i] );
-    }
-    
-    if (alpha_flag) {
-      if (ct->fpar[COLORTABLE_ALPHAVAL]<0) {
-        a = (int)( 255.0 * pow( s, ct->fpar[COLORTABLE_ALPHAPOW] ) );
-      }
-      else {
-        a = (int)( ct->fpar[COLORTABLE_ALPHAVAL] );
-      }
-    }
-    else {
-      a = UNPACK_ALPHA( ct->table[i] );
-    }
-    
-    ct->table[i] = PACK_COLOR( r, g, b, a );
-  }
-  
-}
-
-static ColorTable clip;
-
-void ColorTable_Copy(ColorTable *ct){
-  clip.size = ct->size;
-  memcpy(clip.table, ct->table, ct->size * sizeof(unsigned int));
-  memcpy(clip.ipar,  ct->ipar,  COLORTABLE_NBMAX_PARAM * sizeof(int));
-  memcpy(clip.fpar,  ct->fpar,  COLORTABLE_NBMAX_PARAM * sizeof(float));
-}
-
-void ColorTable_Paste(ColorTable *ct){
-  ct->size = clip.size;
-  memcpy(ct->table, clip.table, clip.size * sizeof(unsigned int));
-  memcpy(ct->ipar,  clip.ipar,  COLORTABLE_NBMAX_PARAM * sizeof(int));
-  memcpy(ct->fpar,  clip.fpar,  COLORTABLE_NBMAX_PARAM * sizeof(float));
-}
-
-
-void ColorTable_Print(ColorTable *ct, FILE *fp){
-  int i, r, g, b, a;  
-  char tmp1[1024],tmp2[1024];
-
-  strcpy(tmp1, "");
-  for (i=0;i<ct->size;i++) {
-    r = UNPACK_RED( ct->table[i] );
-    g = UNPACK_GREEN( ct->table[i] );
-    b = UNPACK_BLUE( ct->table[i] );
-    a = UNPACK_ALPHA( ct->table[i] );
-    if(i && !(i%4)){
-      if(fp) fprintf(fp, "%s\n", tmp1); else Msg(DIRECT, tmp1);
-      strcpy(tmp1, "");
-    }
-    sprintf(tmp2, "{%d, %d, %d, %d}", r, g, b, a);
-    strcat(tmp1, tmp2);
-    if(i!=ct->size-1) strcat(tmp1, ", ");
-  }
-  if(fp) fprintf(fp, "%s\n", tmp1); else Msg(DIRECT, tmp1);
-
-}
-
-
diff --git a/Common/ColorTable.h b/Common/ColorTable.h
deleted file mode 100644
index ac8f2cb77af03616eb0f4b8739e887122a3f1198..0000000000000000000000000000000000000000
--- a/Common/ColorTable.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef _COLORTABLE_H_
-#define _COLORTABLE_H_
-
-#define COLORTABLE_NBMAX_PARAM 10
-#define COLORTABLE_NBMAX_COLOR 255
-
-typedef struct{
-  unsigned int table[COLORTABLE_NBMAX_COLOR];
-  int size;
-  int ipar[COLORTABLE_NBMAX_PARAM];
-  float fpar[COLORTABLE_NBMAX_PARAM];
-}ColorTable;
-
-
-/* COLORTABLE_MODE */
-
-#define COLORTABLE_RGB  1
-#define COLORTABLE_HSV  2
-
-
-/* integrer parameters indices */
-
-#define COLORTABLE_NUMBER    0  /* predefined curve index */
-#define COLORTABLE_CHANGED   1  /* did the colortable change ? */
-#define COLORTABLE_INVERT    2  /* invert (rbg<->255-rgb) */
-#define COLORTABLE_SWAP      3  /* swap (min<->max) */
-#define COLORTABLE_ROTATE    4  /* rotate */
-#define COLORTABLE_MODE      5  /* mode (rgb, hsv) */
-
-/* float parameters indices */
-
-#define COLORTABLE_CURVE     0  /* curvature */
-#define COLORTABLE_BIAS      1  /* offset */
-#define COLORTABLE_ALPHAPOW  2  /* alpha channel power */
-#define COLORTABLE_ALPHAVAL  3  /* alpha channel value */
-#define COLORTABLE_BETA      4  /* beta coeff for brighten */
-
-void ColorTable_InitParam (int number, ColorTable * ct, int rgb_flag, int alpha_flag);
-void ColorTable_Recompute (ColorTable * ct, int rgb_flag, int alpha_flag);
-void ColorTable_Copy(ColorTable *ct);
-void ColorTable_Paste(ColorTable *ct);
-void ColorTable_Print(ColorTable *ct, FILE *fp) ;
-
-#endif
diff --git a/Common/Colors.h b/Common/Colors.h
deleted file mode 100644
index 50266ba6bdb66973a0613e23554e170113597f0f..0000000000000000000000000000000000000000
--- a/Common/Colors.h
+++ /dev/null
@@ -1,671 +0,0 @@
-#ifndef _COLORS_H_
-#define _COLORS_H_
-
-#include "Context.h"
-
-StringX4Int ColorString[] = {
-  { "Snow"                     ,  255, 250, 250, 255 } , 
-  { "GhostWhite"               ,  248, 248, 255, 255 } , 
-  { "WhiteSmoke"               ,  245, 245, 245, 255 } , 
-  { "Gainsboro"                ,  220, 220, 220, 255 } , 
-  { "FloralWhite"              ,  255, 250, 240, 255 } , 
-  { "OldLace"                  ,  253, 245, 230, 255 } , 
-  { "Linen"                    ,  250, 240, 230, 255 } , 
-  { "AntiqueWhite"             ,  250, 235, 215, 255 } , 
-  { "PapayaWhip"               ,  255, 239, 213, 255 } , 
-  { "BlanchedAlmond"           ,  255, 235, 205, 255 } , 
-  { "Bisque"                   ,  255, 228, 196, 255 } , 
-  { "PeachPuff"                ,  255, 218, 185, 255 } , 
-  { "NavajoWhite"              ,  255, 222, 173, 255 } , 
-  { "Moccasin"                 ,  255, 228, 181, 255 } , 
-  { "Cornsilk"                 ,  255, 248, 220, 255 } , 
-  { "Ivory"                    ,  255, 255, 240, 255 } , 
-  { "LemonChiffon"             ,  255, 250, 205, 255 } , 
-  { "Seashell"                 ,  255, 245, 238, 255 } , 
-  { "Honeydew"                 ,  240, 255, 240, 255 } , 
-  { "MintCream"                ,  245, 255, 250, 255 } , 
-  { "Azure"                    ,  240, 255, 255, 255 } , 
-  { "AliceBlue"                ,  240, 248, 255, 255 } , 
-  { "Lavender"                 ,  230, 230, 250, 255 } , 
-  { "LavenderBlush"            ,  255, 240, 245, 255 } , 
-  { "MistyRose"                ,  255, 228, 225, 255 } , 
-  { "White"                    ,  255, 255, 255, 255 } , 
-  { "Black"                    ,    0,   0,   0, 255 } , 
-  { "DarkSlateGray"            ,   47,  79,  79, 255 } , 
-  { "DarkSlateGrey"            ,   47,  79,  79, 255 } , 
-  { "DimGray"                  ,  105, 105, 105, 255 } , 
-  { "DimGrey"                  ,  105, 105, 105, 255 } , 
-  { "SlateGray"                ,  112, 128, 144, 255 } , 
-  { "SlateGrey"                ,  112, 128, 144, 255 } , 
-  { "LightSlateGray"           ,  119, 136, 153, 255 } , 
-  { "LightSlateGrey"           ,  119, 136, 153, 255 } , 
-  { "Gray"                     ,  190, 190, 190, 255 } , 
-  { "Grey"                     ,  190, 190, 190, 255 } , 
-  { "LightGrey"                ,  211, 211, 211, 255 } , 
-  { "LightGray"                ,  211, 211, 211, 255 } , 
-  { "MidnightBlue"             ,   25,  25, 112, 255 } , 
-  { "Navy"                     ,    0,   0, 128, 255 } , 
-  { "NavyBlue"                 ,    0,   0, 128, 255 } , 
-  { "CornflowerBlue"           ,  100, 149, 237, 255 } , 
-  { "DarkSlateBlue"            ,   72,  61, 139, 255 } , 
-  { "SlateBlue"                ,  106,  90, 205, 255 } , 
-  { "MediumSlateBlue"          ,  123, 104, 238, 255 } , 
-  { "LightSlateBlue"           ,  132, 112, 255, 255 } , 
-  { "MediumBlue"               ,    0,   0, 205, 255 } , 
-  { "RoyalBlue"                ,   65, 105, 225, 255 } , 
-  { "Blue"                     ,    0,   0, 255, 255 } , 
-  { "DodgerBlue"               ,   30, 144, 255, 255 } , 
-  { "DeepSkyBlue"              ,    0, 191, 255, 255 } , 
-  { "SkyBlue"                  ,  135, 206, 235, 255 } , 
-  { "LightSkyBlue"             ,  135, 206, 250, 255 } , 
-  { "SteelBlue"                ,   70, 130, 180, 255 } , 
-  { "LightSteelBlue"           ,  176, 196, 222, 255 } , 
-  { "LightBlue"                ,  173, 216, 230, 255 } , 
-  { "PowderBlue"               ,  176, 224, 230, 255 } , 
-  { "PaleTurquoise"            ,  175, 238, 238, 255 } , 
-  { "DarkTurquoise"            ,    0, 206, 209, 255 } , 
-  { "MediumTurquoise"          ,   72, 209, 204, 255 } , 
-  { "Turquoise"                ,   64, 224, 208, 255 } , 
-  { "Cyan"                     ,    0, 255, 255, 255 } , 
-  { "LightCyan"                ,  224, 255, 255, 255 } , 
-  { "CadetBlue"                ,   95, 158, 160, 255 } , 
-  { "MediumAquamarine"         ,  102, 205, 170, 255 } , 
-  { "Aquamarine"               ,  127, 255, 212, 255 } , 
-  { "DarkGreen"                ,    0, 100,   0, 255 } , 
-  { "DarkOliveGreen"           ,   85, 107,  47, 255 } , 
-  { "DarkSeaGreen"             ,  143, 188, 143, 255 } , 
-  { "SeaGreen"                 ,   46, 139,  87, 255 } , 
-  { "MediumSeaGreen"           ,   60, 179, 113, 255 } , 
-  { "LightSeaGreen"            ,   32, 178, 170, 255 } , 
-  { "PaleGreen"                ,  152, 251, 152, 255 } , 
-  { "SpringGreen"              ,    0, 255, 127, 255 } , 
-  { "LawnGreen"                ,  124, 252,   0, 255 } , 
-  { "Green"                    ,    0, 255,   0, 255 } , 
-  { "chartreuse"               ,  127, 255,   0, 255 } , 
-  { "MediumSpringGreen"        ,    0, 250, 154, 255 } , 
-  { "GreenYellow"              ,  173, 255,  47, 255 } , 
-  { "LimeGreen"                ,   50, 205,  50, 255 } , 
-  { "YellowGreen"              ,  154, 205,  50, 255 } , 
-  { "ForestGreen"              ,   34, 139,  34, 255 } , 
-  { "OliveDrab"                ,  107, 142,  35, 255 } , 
-  { "DarkKhaki"                ,  189, 183, 107, 255 } , 
-  { "Khaki"                    ,  240, 230, 140, 255 } , 
-  { "PaleGoldenrod"            ,  238, 232, 170, 255 } , 
-  { "LightGoldenrodYellow"     ,  250, 250, 210, 255 } , 
-  { "LightYellow"              ,  255, 255, 224, 255 } , 
-  { "Yellow"                   ,  255, 255,   0, 255 } , 
-  { "Gold"                     ,  255, 215,   0, 255 } , 
-  { "LightGoldenrod"           ,  238, 221, 130, 255 } , 
-  { "Goldenrod"                ,  218, 165,  32, 255 } , 
-  { "DarkGoldenrod"            ,  184, 134,  11, 255 } , 
-  { "RosyBrown"                ,  188, 143, 143, 255 } , 
-  { "IndianRed"                ,  205,  92,  92, 255 } , 
-  { "SaddleBrown"              ,  139,  69,  19, 255 } , 
-  { "Sienna"                   ,  160,  82,  45, 255 } , 
-  { "Peru"                     ,  205, 133,  63, 255 } , 
-  { "Burlywood"                ,  222, 184, 135, 255 } , 
-  { "Beige"                    ,  245, 245, 220, 255 } , 
-  { "Wheat"                    ,  245, 222, 179, 255 } , 
-  { "SandyBrown"               ,  244, 164,  96, 255 } , 
-  { "Tan"                      ,  210, 180, 140, 255 } , 
-  { "Chocolate"                ,  210, 105,  30, 255 } , 
-  { "Firebrick"                ,  178,  34,  34, 255 } , 
-  { "Brown"                    ,  165,  42,  42, 255 } , 
-  { "DarkSalmon"               ,  233, 150, 122, 255 } , 
-  { "Salmon"                   ,  250, 128, 114, 255 } , 
-  { "LightSalmon"              ,  255, 160, 122, 255 } , 
-  { "Orange"                   ,  255, 165,   0, 255 } , 
-  { "DarkOrange"               ,  255, 140,   0, 255 } , 
-  { "Coral"                    ,  255, 127,  80, 255 } , 
-  { "LightCoral"               ,  240, 128, 128, 255 } , 
-  { "Tomato"                   ,  255,  99,  71, 255 } , 
-  { "OrangeRed"                ,  255,  69,   0, 255 } , 
-  { "Red"                      ,  255,   0,   0, 255 } , 
-  { "HotPink"                  ,  255, 105, 180, 255 } , 
-  { "DeepPink"                 ,  255,  20, 147, 255 } , 
-  { "Pink"                     ,  255, 192, 203, 255 } , 
-  { "LightPink"                ,  255, 182, 193, 255 } , 
-  { "PaleVioletRed"            ,  219, 112, 147, 255 } , 
-  { "Maroon"                   ,  176,  48,  96, 255 } , 
-  { "MediumVioletRed"          ,  199,  21, 133, 255 } , 
-  { "VioletRed"                ,  208,  32, 144, 255 } , 
-  { "Magenta"                  ,  255,   0, 255, 255 } , 
-  { "Violet"                   ,  238, 130, 238, 255 } , 
-  { "Plum"                     ,  221, 160, 221, 255 } , 
-  { "Orchid"                   ,  218, 112, 214, 255 } , 
-  { "MediumOrchid"             ,  186,  85, 211, 255 } , 
-  { "DarkOrchid"               ,  153,  50, 204, 255 } , 
-  { "DarkViolet"               ,  148,   0, 211, 255 } , 
-  { "BlueViolet"               ,  138,  43, 226, 255 } , 
-  { "Purple"                   ,  160,  32, 240, 255 } , 
-  { "MediumPurple"             ,  147, 112, 219, 255 } , 
-  { "Thistle"                  ,  216, 191, 216, 255 } , 
-  { "Snow1"                    ,  255, 250, 250, 255 } , 
-  { "Snow2"                    ,  238, 233, 233, 255 } , 
-  { "Snow3"                    ,  205, 201, 201, 255 } , 
-  { "Snow4"                    ,  139, 137, 137, 255 } , 
-  { "Seashell1"                ,  255, 245, 238, 255 } , 
-  { "Seashell2"                ,  238, 229, 222, 255 } , 
-  { "Seashell3"                ,  205, 197, 191, 255 } , 
-  { "Seashell4"                ,  139, 134, 130, 255 } , 
-  { "AntiqueWhite1"            ,  255, 239, 219, 255 } , 
-  { "AntiqueWhite2"            ,  238, 223, 204, 255 } , 
-  { "AntiqueWhite3"            ,  205, 192, 176, 255 } , 
-  { "AntiqueWhite4"            ,  139, 131, 120, 255 } , 
-  { "Bisque1"                  ,  255, 228, 196, 255 } , 
-  { "Bisque2"                  ,  238, 213, 183, 255 } , 
-  { "Bisque3"                  ,  205, 183, 158, 255 } , 
-  { "Bisque4"                  ,  139, 125, 107, 255 } , 
-  { "PeachPuff1"               ,  255, 218, 185, 255 } , 
-  { "PeachPuff2"               ,  238, 203, 173, 255 } , 
-  { "PeachPuff3"               ,  205, 175, 149, 255 } , 
-  { "PeachPuff4"               ,  139, 119, 101, 255 } , 
-  { "NavajoWhite1"             ,  255, 222, 173, 255 } , 
-  { "NavajoWhite2"             ,  238, 207, 161, 255 } , 
-  { "NavajoWhite3"             ,  205, 179, 139, 255 } , 
-  { "NavajoWhite4"             ,  139, 121,  94, 255 } , 
-  { "LemonChiffon1"            ,  255, 250, 205, 255 } , 
-  { "LemonChiffon2"            ,  238, 233, 191, 255 } , 
-  { "LemonChiffon3"            ,  205, 201, 165, 255 } , 
-  { "LemonChiffon4"            ,  139, 137, 112, 255 } , 
-  { "Cornsilk1"                ,  255, 248, 220, 255 } , 
-  { "Cornsilk2"                ,  238, 232, 205, 255 } , 
-  { "Cornsilk3"                ,  205, 200, 177, 255 } , 
-  { "Cornsilk4"                ,  139, 136, 120, 255 } , 
-  { "Ivory1"                   ,  255, 255, 240, 255 } , 
-  { "Ivory2"                   ,  238, 238, 224, 255 } , 
-  { "Ivory3"                   ,  205, 205, 193, 255 } , 
-  { "Ivory4"                   ,  139, 139, 131, 255 } , 
-  { "Honeydew1"                ,  240, 255, 240, 255 } , 
-  { "Honeydew2"                ,  224, 238, 224, 255 } , 
-  { "Honeydew3"                ,  193, 205, 193, 255 } , 
-  { "Honeydew4"                ,  131, 139, 131, 255 } , 
-  { "LavenderBlush1"           ,  255, 240, 245, 255 } , 
-  { "LavenderBlush2"           ,  238, 224, 229, 255 } , 
-  { "LavenderBlush3"           ,  205, 193, 197, 255 } , 
-  { "LavenderBlush4"           ,  139, 131, 134, 255 } , 
-  { "MistyRose1"               ,  255, 228, 225, 255 } , 
-  { "MistyRose2"               ,  238, 213, 210, 255 } , 
-  { "MistyRose3"               ,  205, 183, 181, 255 } , 
-  { "MistyRose4"               ,  139, 125, 123, 255 } , 
-  { "Azure1"                   ,  240, 255, 255, 255 } , 
-  { "Azure2"                   ,  224, 238, 238, 255 } , 
-  { "Azure3"                   ,  193, 205, 205, 255 } , 
-  { "Azure4"                   ,  131, 139, 139, 255 } , 
-  { "SlateBlue1"               ,  131, 111, 255, 255 } , 
-  { "SlateBlue2"               ,  122, 103, 238, 255 } , 
-  { "SlateBlue3"               ,  105,  89, 205, 255 } , 
-  { "SlateBlue4"               ,   71,  60, 139, 255 } , 
-  { "RoyalBlue1"               ,   72, 118, 255, 255 } , 
-  { "RoyalBlue2"               ,   67, 110, 238, 255 } , 
-  { "RoyalBlue3"               ,   58,  95, 205, 255 } , 
-  { "RoyalBlue4"               ,   39,  64, 139, 255 } , 
-  { "Blue1"                    ,    0,   0, 255, 255 } , 
-  { "Blue2"                    ,    0,   0, 238, 255 } , 
-  { "Blue3"                    ,    0,   0, 205, 255 } , 
-  { "Blue4"                    ,    0,   0, 139, 255 } , 
-  { "DodgerBlue1"              ,   30, 144, 255, 255 } , 
-  { "DodgerBlue2"              ,   28, 134, 238, 255 } , 
-  { "DodgerBlue3"              ,   24, 116, 205, 255 } , 
-  { "DodgerBlue4"              ,   16,  78, 139, 255 } , 
-  { "SteelBlue1"               ,   99, 184, 255, 255 } , 
-  { "SteelBlue2"               ,   92, 172, 238, 255 } , 
-  { "SteelBlue3"               ,   79, 148, 205, 255 } , 
-  { "SteelBlue4"               ,   54, 100, 139, 255 } , 
-  { "DeepSkyBlue1"             ,    0, 191, 255, 255 } , 
-  { "DeepSkyBlue2"             ,    0, 178, 238, 255 } , 
-  { "DeepSkyBlue3"             ,    0, 154, 205, 255 } , 
-  { "DeepSkyBlue4"             ,    0, 104, 139, 255 } , 
-  { "SkyBlue1"                 ,  135, 206, 255, 255 } , 
-  { "SkyBlue2"                 ,  126, 192, 238, 255 } , 
-  { "SkyBlue3"                 ,  108, 166, 205, 255 } , 
-  { "SkyBlue4"                 ,   74, 112, 139, 255 } , 
-  { "LightSkyBlue1"            ,  176, 226, 255, 255 } , 
-  { "LightSkyBlue2"            ,  164, 211, 238, 255 } , 
-  { "LightSkyBlue3"            ,  141, 182, 205, 255 } , 
-  { "LightSkyBlue4"            ,   96, 123, 139, 255 } , 
-  { "SlateGray1"               ,  198, 226, 255, 255 } , 
-  { "SlateGray2"               ,  185, 211, 238, 255 } , 
-  { "SlateGray3"               ,  159, 182, 205, 255 } , 
-  { "SlateGray4"               ,  108, 123, 139, 255 } , 
-  { "LightSteelBlue1"          ,  202, 225, 255, 255 } , 
-  { "LightSteelBlue2"          ,  188, 210, 238, 255 } , 
-  { "LightSteelBlue3"          ,  162, 181, 205, 255 } , 
-  { "LightSteelBlue4"          ,  110, 123, 139, 255 } , 
-  { "LightBlue1"               ,  191, 239, 255, 255 } , 
-  { "LightBlue2"               ,  178, 223, 238, 255 } , 
-  { "LightBlue3"               ,  154, 192, 205, 255 } , 
-  { "LightBlue4"               ,  104, 131, 139, 255 } , 
-  { "LightCyan1"               ,  224, 255, 255, 255 } , 
-  { "LightCyan2"               ,  209, 238, 238, 255 } , 
-  { "LightCyan3"               ,  180, 205, 205, 255 } , 
-  { "LightCyan4"               ,  122, 139, 139, 255 } , 
-  { "PaleTurquoise1"           ,  187, 255, 255, 255 } , 
-  { "PaleTurquoise2"           ,  174, 238, 238, 255 } , 
-  { "PaleTurquoise3"           ,  150, 205, 205, 255 } , 
-  { "PaleTurquoise4"           ,  102, 139, 139, 255 } , 
-  { "CadetBlue1"               ,  152, 245, 255, 255 } , 
-  { "CadetBlue2"               ,  142, 229, 238, 255 } , 
-  { "CadetBlue3"               ,  122, 197, 205, 255 } , 
-  { "CadetBlue4"               ,   83, 134, 139, 255 } , 
-  { "Turquoise1"               ,    0, 245, 255, 255 } , 
-  { "Turquoise2"               ,    0, 229, 238, 255 } , 
-  { "Turquoise3"               ,    0, 197, 205, 255 } , 
-  { "Turquoise4"               ,    0, 134, 139, 255 } , 
-  { "Cyan1"                    ,    0, 255, 255, 255 } , 
-  { "Cyan2"                    ,    0, 238, 238, 255 } , 
-  { "Cyan3"                    ,    0, 205, 205, 255 } , 
-  { "Cyan4"                    ,    0, 139, 139, 255 } , 
-  { "DarkSlateGray1"           ,  151, 255, 255, 255 } , 
-  { "DarkSlateGray2"           ,  141, 238, 238, 255 } , 
-  { "DarkSlateGray3"           ,  121, 205, 205, 255 } , 
-  { "DarkSlateGray4"           ,   82, 139, 139, 255 } , 
-  { "Aquamarine1"              ,  127, 255, 212, 255 } , 
-  { "Aquamarine2"              ,  118, 238, 198, 255 } , 
-  { "Aquamarine3"              ,  102, 205, 170, 255 } , 
-  { "Aquamarine4"              ,   69, 139, 116, 255 } , 
-  { "DarkSeaGreen1"            ,  193, 255, 193, 255 } , 
-  { "DarkSeaGreen2"            ,  180, 238, 180, 255 } , 
-  { "DarkSeaGreen3"            ,  155, 205, 155, 255 } , 
-  { "DarkSeaGreen4"            ,  105, 139, 105, 255 } , 
-  { "SeaGreen1"                ,   84, 255, 159, 255 } , 
-  { "SeaGreen2"                ,   78, 238, 148, 255 } , 
-  { "SeaGreen3"                ,   67, 205, 128, 255 } , 
-  { "SeaGreen4"                ,   46, 139,  87, 255 } , 
-  { "PaleGreen1"               ,  154, 255, 154, 255 } , 
-  { "PaleGreen2"               ,  144, 238, 144, 255 } , 
-  { "PaleGreen3"               ,  124, 205, 124, 255 } , 
-  { "PaleGreen4"               ,   84, 139,  84, 255 } , 
-  { "SpringGreen1"             ,    0, 255, 127, 255 } , 
-  { "SpringGreen2"             ,    0, 238, 118, 255 } , 
-  { "SpringGreen3"             ,    0, 205, 102, 255 } , 
-  { "SpringGreen4"             ,    0, 139,  69, 255 } , 
-  { "Green1"                   ,    0, 255,   0, 255 } , 
-  { "Green2"                   ,    0, 238,   0, 255 } , 
-  { "Green3"                   ,    0, 205,   0, 255 } , 
-  { "Green4"                   ,    0, 139,   0, 255 } , 
-  { "Chartreuse1"              ,  127, 255,   0, 255 } , 
-  { "Chartreuse2"              ,  118, 238,   0, 255 } , 
-  { "Chartreuse3"              ,  102, 205,   0, 255 } , 
-  { "Chartreuse4"              ,   69, 139,   0, 255 } , 
-  { "OliveDrab1"               ,  192, 255,  62, 255 } , 
-  { "OliveDrab2"               ,  179, 238,  58, 255 } , 
-  { "OliveDrab3"               ,  154, 205,  50, 255 } , 
-  { "OliveDrab4"               ,  105, 139,  34, 255 } , 
-  { "DarkOliveGreen1"          ,  202, 255, 112, 255 } , 
-  { "DarkOliveGreen2"          ,  188, 238, 104, 255 } , 
-  { "DarkOliveGreen3"          ,  162, 205,  90, 255 } , 
-  { "DarkOliveGreen4"          ,  110, 139,  61, 255 } , 
-  { "Khaki1"                   ,  255, 246, 143, 255 } , 
-  { "Khaki2"                   ,  238, 230, 133, 255 } , 
-  { "Khaki3"                   ,  205, 198, 115, 255 } , 
-  { "Khaki4"                   ,  139, 134,  78, 255 } , 
-  { "LightGoldenrod1"          ,  255, 236, 139, 255 } , 
-  { "LightGoldenrod2"          ,  238, 220, 130, 255 } , 
-  { "LightGoldenrod3"          ,  205, 190, 112, 255 } , 
-  { "LightGoldenrod4"          ,  139, 129,  76, 255 } , 
-  { "LightYellow1"             ,  255, 255, 224, 255 } , 
-  { "LightYellow2"             ,  238, 238, 209, 255 } , 
-  { "LightYellow3"             ,  205, 205, 180, 255 } , 
-  { "LightYellow4"             ,  139, 139, 122, 255 } , 
-  { "Yellow1"                  ,  255, 255,   0, 255 } , 
-  { "Yellow2"                  ,  238, 238,   0, 255 } , 
-  { "Yellow3"                  ,  205, 205,   0, 255 } , 
-  { "Yellow4"                  ,  139, 139,   0, 255 } , 
-  { "Gold1"                    ,  255, 215,   0, 255 } , 
-  { "Gold2"                    ,  238, 201,   0, 255 } , 
-  { "Gold3"                    ,  205, 173,   0, 255 } , 
-  { "Gold4"                    ,  139, 117,   0, 255 } , 
-  { "Goldenrod1"               ,  255, 193,  37, 255 } , 
-  { "Goldenrod2"               ,  238, 180,  34, 255 } , 
-  { "Goldenrod3"               ,  205, 155,  29, 255 } , 
-  { "Goldenrod4"               ,  139, 105,  20, 255 } , 
-  { "DarkGoldenrod1"           ,  255, 185,  15, 255 } , 
-  { "DarkGoldenrod2"           ,  238, 173,  14, 255 } , 
-  { "DarkGoldenrod3"           ,  205, 149,  12, 255 } , 
-  { "DarkGoldenrod4"           ,  139, 101,   8, 255 } , 
-  { "RosyBrown1"               ,  255, 193, 193, 255 } , 
-  { "RosyBrown2"               ,  238, 180, 180, 255 } , 
-  { "RosyBrown3"               ,  205, 155, 155, 255 } , 
-  { "RosyBrown4"               ,  139, 105, 105, 255 } , 
-  { "IndianRed1"               ,  255, 106, 106, 255 } , 
-  { "IndianRed2"               ,  238,  99,  99, 255 } , 
-  { "IndianRed3"               ,  205,  85,  85, 255 } , 
-  { "IndianRed4"               ,  139,  58,  58, 255 } , 
-  { "Sienna1"                  ,  255, 130,  71, 255 } , 
-  { "Sienna2"                  ,  238, 121,  66, 255 } , 
-  { "Sienna3"                  ,  205, 104,  57, 255 } , 
-  { "Sienna4"                  ,  139,  71,  38, 255 } , 
-  { "Burlywood1"               ,  255, 211, 155, 255 } , 
-  { "Burlywood2"               ,  238, 197, 145, 255 } , 
-  { "Burlywood3"               ,  205, 170, 125, 255 } , 
-  { "Burlywood4"               ,  139, 115,  85, 255 } , 
-  { "Wheat1"                   ,  255, 231, 186, 255 } , 
-  { "Wheat2"                   ,  238, 216, 174, 255 } , 
-  { "Wheat3"                   ,  205, 186, 150, 255 } , 
-  { "Wheat4"                   ,  139, 126, 102, 255 } , 
-  { "Tan1"                     ,  255, 165,  79, 255 } , 
-  { "Tan2"                     ,  238, 154,  73, 255 } , 
-  { "Tan3"                     ,  205, 133,  63, 255 } , 
-  { "Tan4"                     ,  139,  90,  43, 255 } , 
-  { "Chocolate1"               ,  255, 127,  36, 255 } , 
-  { "Chocolate2"               ,  238, 118,  33, 255 } , 
-  { "Chocolate3"               ,  205, 102,  29, 255 } , 
-  { "Chocolate4"               ,  139,  69,  19, 255 } , 
-  { "Firebrick1"               ,  255,  48,  48, 255 } , 
-  { "Firebrick2"               ,  238,  44,  44, 255 } , 
-  { "Firebrick3"               ,  205,  38,  38, 255 } , 
-  { "Firebrick4"               ,  139,  26,  26, 255 } , 
-  { "Brown1"                   ,  255,  64,  64, 255 } , 
-  { "Brown2"                   ,  238,  59,  59, 255 } , 
-  { "Brown3"                   ,  205,  51,  51, 255 } , 
-  { "Brown4"                   ,  139,  35,  35, 255 } , 
-  { "Salmon1"                  ,  255, 140, 105, 255 } , 
-  { "Salmon2"                  ,  238, 130,  98, 255 } , 
-  { "Salmon3"                  ,  205, 112,  84, 255 } , 
-  { "Salmon4"                  ,  139,  76,  57, 255 } , 
-  { "LightSalmon1"             ,  255, 160, 122, 255 } , 
-  { "LightSalmon2"             ,  238, 149, 114, 255 } , 
-  { "LightSalmon3"             ,  205, 129,  98, 255 } , 
-  { "LightSalmon4"             ,  139,  87,  66, 255 } , 
-  { "Orange1"                  ,  255, 165,   0, 255 } , 
-  { "Orange2"                  ,  238, 154,   0, 255 } , 
-  { "Orange3"                  ,  205, 133,   0, 255 } , 
-  { "Orange4"                  ,  139,  90,   0, 255 } , 
-  { "DarkOrange1"              ,  255, 127,   0, 255 } , 
-  { "DarkOrange2"              ,  238, 118,   0, 255 } , 
-  { "DarkOrange3"              ,  205, 102,   0, 255 } , 
-  { "DarkOrange4"              ,  139,  69,   0, 255 } , 
-  { "Coral1"                   ,  255, 114,  86, 255 } , 
-  { "Coral2"                   ,  238, 106,  80, 255 } , 
-  { "Coral3"                   ,  205,  91,  69, 255 } , 
-  { "Coral4"                   ,  139,  62,  47, 255 } , 
-  { "Tomato1"                  ,  255,  99,  71, 255 } , 
-  { "Tomato2"                  ,  238,  92,  66, 255 } , 
-  { "Tomato3"                  ,  205,  79,  57, 255 } , 
-  { "Tomato4"                  ,  139,  54,  38, 255 } , 
-  { "OrangeRed1"               ,  255,  69,   0, 255 } , 
-  { "OrangeRed2"               ,  238,  64,   0, 255 } , 
-  { "OrangeRed3"               ,  205,  55,   0, 255 } , 
-  { "OrangeRed4"               ,  139,  37,   0, 255 } , 
-  { "Red1"                     ,  255,   0,   0, 255 } , 
-  { "Red2"                     ,  238,   0,   0, 255 } , 
-  { "Red3"                     ,  205,   0,   0, 255 } , 
-  { "Red4"                     ,  139,   0,   0, 255 } , 
-  { "DeepPink1"                ,  255,  20, 147, 255 } , 
-  { "DeepPink2"                ,  238,  18, 137, 255 } , 
-  { "DeepPink3"                ,  205,  16, 118, 255 } , 
-  { "DeepPink4"                ,  139,  10,  80, 255 } , 
-  { "HotPink1"                 ,  255, 110, 180, 255 } , 
-  { "HotPink2"                 ,  238, 106, 167, 255 } , 
-  { "HotPink3"                 ,  205,  96, 144, 255 } , 
-  { "HotPink4"                 ,  139,  58,  98, 255 } , 
-  { "Pink1"                    ,  255, 181, 197, 255 } , 
-  { "Pink2"                    ,  238, 169, 184, 255 } , 
-  { "Pink3"                    ,  205, 145, 158, 255 } , 
-  { "Pink4"                    ,  139,  99, 108, 255 } , 
-  { "LightPink1"               ,  255, 174, 185, 255 } , 
-  { "LightPink2"               ,  238, 162, 173, 255 } , 
-  { "LightPink3"               ,  205, 140, 149, 255 } , 
-  { "LightPink4"               ,  139,  95, 101, 255 } , 
-  { "PaleVioletRed1"           ,  255, 130, 171, 255 } , 
-  { "PaleVioletRed2"           ,  238, 121, 159, 255 } , 
-  { "PaleVioletRed3"           ,  205, 104, 137, 255 } , 
-  { "PaleVioletRed4"           ,  139,  71,  93, 255 } , 
-  { "Maroon1"                  ,  255,  52, 179, 255 } , 
-  { "Maroon2"                  ,  238,  48, 167, 255 } , 
-  { "Maroon3"                  ,  205,  41, 144, 255 } , 
-  { "Maroon4"                  ,  139,  28,  98, 255 } , 
-  { "VioletRed1"               ,  255,  62, 150, 255 } , 
-  { "VioletRed2"               ,  238,  58, 140, 255 } , 
-  { "VioletRed3"               ,  205,  50, 120, 255 } , 
-  { "VioletRed4"               ,  139,  34,  82, 255 } , 
-  { "Magenta1"                 ,  255,   0, 255, 255 } , 
-  { "Magenta2"                 ,  238,   0, 238, 255 } , 
-  { "Magenta3"                 ,  205,   0, 205, 255 } , 
-  { "Magenta4"                 ,  139,   0, 139, 255 } , 
-  { "Orchid1"                  ,  255, 131, 250, 255 } , 
-  { "Orchid2"                  ,  238, 122, 233, 255 } , 
-  { "Orchid3"                  ,  205, 105, 201, 255 } , 
-  { "Orchid4"                  ,  139,  71, 137, 255 } , 
-  { "Plum1"                    ,  255, 187, 255, 255 } , 
-  { "Plum2"                    ,  238, 174, 238, 255 } , 
-  { "Plum3"                    ,  205, 150, 205, 255 } , 
-  { "Plum4"                    ,  139, 102, 139, 255 } , 
-  { "MediumOrchid1"            ,  224, 102, 255, 255 } , 
-  { "MediumOrchid2"            ,  209,  95, 238, 255 } , 
-  { "MediumOrchid3"            ,  180,  82, 205, 255 } , 
-  { "MediumOrchid4"            ,  122,  55, 139, 255 } , 
-  { "DarkOrchid1"              ,  191,  62, 255, 255 } , 
-  { "DarkOrchid2"              ,  178,  58, 238, 255 } , 
-  { "DarkOrchid3"              ,  154,  50, 205, 255 } , 
-  { "DarkOrchid4"              ,  104,  34, 139, 255 } , 
-  { "purple1"                  ,  155,  48, 255, 255 } , 
-  { "purple2"                  ,  145,  44, 238, 255 } , 
-  { "purple3"                  ,  125,  38, 205, 255 } , 
-  { "purple4"                  ,   85,  26, 139, 255 } , 
-  { "MediumPurple1"            ,  171, 130, 255, 255 } , 
-  { "MediumPurple2"            ,  159, 121, 238, 255 } , 
-  { "MediumPurple3"            ,  137, 104, 205, 255 } , 
-  { "MediumPurple4"            ,   93,  71, 139, 255 } , 
-  { "Thistle1"                 ,  255, 225, 255, 255 } , 
-  { "Thistle2"                 ,  238, 210, 238, 255 } , 
-  { "Thistle3"                 ,  205, 181, 205, 255 } , 
-  { "Thistle4"                 ,  139, 123, 139, 255 } , 
-  { "Gray0"                    ,    0,   0,   0, 255 } , 
-  { "Grey0"                    ,    0,   0,   0, 255 } , 
-  { "Gray1"                    ,    3,   3,   3, 255 } , 
-  { "Grey1"                    ,    3,   3,   3, 255 } , 
-  { "Gray2"                    ,    5,   5,   5, 255 } , 
-  { "Grey2"                    ,    5,   5,   5, 255 } , 
-  { "Gray3"                    ,    8,   8,   8, 255 } , 
-  { "Grey3"                    ,    8,   8,   8, 255 } , 
-  { "Gray4"                    ,   10,  10,  10, 255 } , 
-  { "Grey4"                    ,   10,  10,  10, 255 } , 
-  { "Gray5"                    ,   13,  13,  13, 255 } , 
-  { "Grey5"                    ,   13,  13,  13, 255 } , 
-  { "Gray6"                    ,   15,  15,  15, 255 } , 
-  { "Grey6"                    ,   15,  15,  15, 255 } , 
-  { "Gray7"                    ,   18,  18,  18, 255 } , 
-  { "Grey7"                    ,   18,  18,  18, 255 } , 
-  { "Gray8"                    ,   20,  20,  20, 255 } , 
-  { "Grey8"                    ,   20,  20,  20, 255 } , 
-  { "Gray9"                    ,   23,  23,  23, 255 } , 
-  { "Grey9"                    ,   23,  23,  23, 255 } , 
-  { "Gray10"                   ,   26,  26,  26, 255 } , 
-  { "Grey10"                   ,   26,  26,  26, 255 } , 
-  { "Gray11"                   ,   28,  28,  28, 255 } , 
-  { "Grey11"                   ,   28,  28,  28, 255 } , 
-  { "Gray12"                   ,   31,  31,  31, 255 } , 
-  { "Grey12"                   ,   31,  31,  31, 255 } , 
-  { "Gray13"                   ,   33,  33,  33, 255 } , 
-  { "Grey13"                   ,   33,  33,  33, 255 } , 
-  { "Gray14"                   ,   36,  36,  36, 255 } , 
-  { "Grey14"                   ,   36,  36,  36, 255 } , 
-  { "Gray15"                   ,   38,  38,  38, 255 } , 
-  { "Grey15"                   ,   38,  38,  38, 255 } , 
-  { "Gray16"                   ,   41,  41,  41, 255 } , 
-  { "Grey16"                   ,   41,  41,  41, 255 } , 
-  { "Gray17"                   ,   43,  43,  43, 255 } , 
-  { "Grey17"                   ,   43,  43,  43, 255 } , 
-  { "Gray18"                   ,   46,  46,  46, 255 } , 
-  { "Grey18"                   ,   46,  46,  46, 255 } , 
-  { "Gray19"                   ,   48,  48,  48, 255 } , 
-  { "Grey19"                   ,   48,  48,  48, 255 } , 
-  { "Gray20"                   ,   51,  51,  51, 255 } , 
-  { "Grey20"                   ,   51,  51,  51, 255 } , 
-  { "Gray21"                   ,   54,  54,  54, 255 } , 
-  { "Grey21"                   ,   54,  54,  54, 255 } , 
-  { "Gray22"                   ,   56,  56,  56, 255 } , 
-  { "Grey22"                   ,   56,  56,  56, 255 } , 
-  { "Gray23"                   ,   59,  59,  59, 255 } , 
-  { "Grey23"                   ,   59,  59,  59, 255 } , 
-  { "Gray24"                   ,   61,  61,  61, 255 } , 
-  { "Grey24"                   ,   61,  61,  61, 255 } , 
-  { "Gray25"                   ,   64,  64,  64, 255 } , 
-  { "Grey25"                   ,   64,  64,  64, 255 } , 
-  { "Gray26"                   ,   66,  66,  66, 255 } , 
-  { "Grey26"                   ,   66,  66,  66, 255 } , 
-  { "Gray27"                   ,   69,  69,  69, 255 } , 
-  { "Grey27"                   ,   69,  69,  69, 255 } , 
-  { "Gray28"                   ,   71,  71,  71, 255 } , 
-  { "Grey28"                   ,   71,  71,  71, 255 } , 
-  { "Gray29"                   ,   74,  74,  74, 255 } , 
-  { "Grey29"                   ,   74,  74,  74, 255 } , 
-  { "Gray30"                   ,   77,  77,  77, 255 } , 
-  { "Grey30"                   ,   77,  77,  77, 255 } , 
-  { "Gray31"                   ,   79,  79,  79, 255 } , 
-  { "Grey31"                   ,   79,  79,  79, 255 } , 
-  { "Gray32"                   ,   82,  82,  82, 255 } , 
-  { "Grey32"                   ,   82,  82,  82, 255 } , 
-  { "Gray33"                   ,   84,  84,  84, 255 } , 
-  { "Grey33"                   ,   84,  84,  84, 255 } , 
-  { "Gray34"                   ,   87,  87,  87, 255 } , 
-  { "Grey34"                   ,   87,  87,  87, 255 } , 
-  { "Gray35"                   ,   89,  89,  89, 255 } , 
-  { "Grey35"                   ,   89,  89,  89, 255 } , 
-  { "Gray36"                   ,   92,  92,  92, 255 } , 
-  { "Grey36"                   ,   92,  92,  92, 255 } , 
-  { "Gray37"                   ,   94,  94,  94, 255 } , 
-  { "Grey37"                   ,   94,  94,  94, 255 } , 
-  { "Gray38"                   ,   97,  97,  97, 255 } , 
-  { "Grey38"                   ,   97,  97,  97, 255 } , 
-  { "Gray39"                   ,   99,  99,  99, 255 } , 
-  { "Grey39"                   ,   99,  99,  99, 255 } , 
-  { "Gray40"                   ,  102, 102, 102, 255 } , 
-  { "Grey40"                   ,  102, 102, 102, 255 } , 
-  { "Gray41"                   ,  105, 105, 105, 255 } , 
-  { "Grey41"                   ,  105, 105, 105, 255 } , 
-  { "Gray42"                   ,  107, 107, 107, 255 } , 
-  { "Grey42"                   ,  107, 107, 107, 255 } , 
-  { "Gray43"                   ,  110, 110, 110, 255 } , 
-  { "Grey43"                   ,  110, 110, 110, 255 } , 
-  { "Gray44"                   ,  112, 112, 112, 255 } , 
-  { "Grey44"                   ,  112, 112, 112, 255 } , 
-  { "Gray45"                   ,  115, 115, 115, 255 } , 
-  { "Grey45"                   ,  115, 115, 115, 255 } , 
-  { "Gray46"                   ,  117, 117, 117, 255 } , 
-  { "Grey46"                   ,  117, 117, 117, 255 } , 
-  { "Gray47"                   ,  120, 120, 120, 255 } , 
-  { "Grey47"                   ,  120, 120, 120, 255 } , 
-  { "Gray48"                   ,  122, 122, 122, 255 } , 
-  { "Grey48"                   ,  122, 122, 122, 255 } , 
-  { "Gray49"                   ,  125, 125, 125, 255 } , 
-  { "Grey49"                   ,  125, 125, 125, 255 } , 
-  { "Gray50"                   ,  127, 127, 127, 255 } , 
-  { "Grey50"                   ,  127, 127, 127, 255 } , 
-  { "Gray51"                   ,  130, 130, 130, 255 } , 
-  { "Grey51"                   ,  130, 130, 130, 255 } , 
-  { "Gray52"                   ,  133, 133, 133, 255 } , 
-  { "Grey52"                   ,  133, 133, 133, 255 } , 
-  { "Gray53"                   ,  135, 135, 135, 255 } , 
-  { "Grey53"                   ,  135, 135, 135, 255 } , 
-  { "Gray54"                   ,  138, 138, 138, 255 } , 
-  { "Grey54"                   ,  138, 138, 138, 255 } , 
-  { "Gray55"                   ,  140, 140, 140, 255 } , 
-  { "Grey55"                   ,  140, 140, 140, 255 } , 
-  { "Gray56"                   ,  143, 143, 143, 255 } , 
-  { "Grey56"                   ,  143, 143, 143, 255 } , 
-  { "Gray57"                   ,  145, 145, 145, 255 } , 
-  { "Grey57"                   ,  145, 145, 145, 255 } , 
-  { "Gray58"                   ,  148, 148, 148, 255 } , 
-  { "Grey58"                   ,  148, 148, 148, 255 } , 
-  { "Gray59"                   ,  150, 150, 150, 255 } , 
-  { "Grey59"                   ,  150, 150, 150, 255 } , 
-  { "Gray60"                   ,  153, 153, 153, 255 } , 
-  { "Grey60"                   ,  153, 153, 153, 255 } , 
-  { "Gray61"                   ,  156, 156, 156, 255 } , 
-  { "Grey61"                   ,  156, 156, 156, 255 } , 
-  { "Gray62"                   ,  158, 158, 158, 255 } , 
-  { "Grey62"                   ,  158, 158, 158, 255 } , 
-  { "Gray63"                   ,  161, 161, 161, 255 } , 
-  { "Grey63"                   ,  161, 161, 161, 255 } , 
-  { "Gray64"                   ,  163, 163, 163, 255 } , 
-  { "Grey64"                   ,  163, 163, 163, 255 } , 
-  { "Gray65"                   ,  166, 166, 166, 255 } , 
-  { "Grey65"                   ,  166, 166, 166, 255 } , 
-  { "Gray66"                   ,  168, 168, 168, 255 } , 
-  { "Grey66"                   ,  168, 168, 168, 255 } , 
-  { "Gray67"                   ,  171, 171, 171, 255 } , 
-  { "Grey67"                   ,  171, 171, 171, 255 } , 
-  { "Gray68"                   ,  173, 173, 173, 255 } , 
-  { "Grey68"                   ,  173, 173, 173, 255 } , 
-  { "Gray69"                   ,  176, 176, 176, 255 } , 
-  { "Grey69"                   ,  176, 176, 176, 255 } , 
-  { "Gray70"                   ,  179, 179, 179, 255 } , 
-  { "Grey70"                   ,  179, 179, 179, 255 } , 
-  { "Gray71"                   ,  181, 181, 181, 255 } , 
-  { "Grey71"                   ,  181, 181, 181, 255 } , 
-  { "Gray72"                   ,  184, 184, 184, 255 } , 
-  { "Grey72"                   ,  184, 184, 184, 255 } , 
-  { "Gray73"                   ,  186, 186, 186, 255 } , 
-  { "Grey73"                   ,  186, 186, 186, 255 } , 
-  { "Gray74"                   ,  189, 189, 189, 255 } , 
-  { "Grey74"                   ,  189, 189, 189, 255 } , 
-  { "Gray75"                   ,  191, 191, 191, 255 } , 
-  { "Grey75"                   ,  191, 191, 191, 255 } , 
-  { "Gray76"                   ,  194, 194, 194, 255 } , 
-  { "Grey76"                   ,  194, 194, 194, 255 } , 
-  { "Gray77"                   ,  196, 196, 196, 255 } , 
-  { "Grey77"                   ,  196, 196, 196, 255 } , 
-  { "Gray78"                   ,  199, 199, 199, 255 } , 
-  { "Grey78"                   ,  199, 199, 199, 255 } , 
-  { "Gray79"                   ,  201, 201, 201, 255 } , 
-  { "Grey79"                   ,  201, 201, 201, 255 } , 
-  { "Gray80"                   ,  204, 204, 204, 255 } , 
-  { "Grey80"                   ,  204, 204, 204, 255 } , 
-  { "Gray81"                   ,  207, 207, 207, 255 } , 
-  { "Grey81"                   ,  207, 207, 207, 255 } , 
-  { "Gray82"                   ,  209, 209, 209, 255 } , 
-  { "Grey82"                   ,  209, 209, 209, 255 } , 
-  { "Gray83"                   ,  212, 212, 212, 255 } , 
-  { "Grey83"                   ,  212, 212, 212, 255 } , 
-  { "Gray84"                   ,  214, 214, 214, 255 } , 
-  { "Grey84"                   ,  214, 214, 214, 255 } , 
-  { "Gray85"                   ,  217, 217, 217, 255 } , 
-  { "Grey85"                   ,  217, 217, 217, 255 } , 
-  { "Gray86"                   ,  219, 219, 219, 255 } , 
-  { "Grey86"                   ,  219, 219, 219, 255 } , 
-  { "Gray87"                   ,  222, 222, 222, 255 } , 
-  { "Grey87"                   ,  222, 222, 222, 255 } , 
-  { "Gray88"                   ,  224, 224, 224, 255 } , 
-  { "Grey88"                   ,  224, 224, 224, 255 } , 
-  { "Gray89"                   ,  227, 227, 227, 255 } , 
-  { "Grey89"                   ,  227, 227, 227, 255 } , 
-  { "Gray90"                   ,  229, 229, 229, 255 } , 
-  { "Grey90"                   ,  229, 229, 229, 255 } , 
-  { "Gray91"                   ,  232, 232, 232, 255 } , 
-  { "Grey91"                   ,  232, 232, 232, 255 } , 
-  { "Gray92"                   ,  235, 235, 235, 255 } , 
-  { "Grey92"                   ,  235, 235, 235, 255 } , 
-  { "Gray93"                   ,  237, 237, 237, 255 } , 
-  { "Grey93"                   ,  237, 237, 237, 255 } , 
-  { "Gray94"                   ,  240, 240, 240, 255 } , 
-  { "Grey94"                   ,  240, 240, 240, 255 } , 
-  { "Gray95"                   ,  242, 242, 242, 255 } , 
-  { "Grey95"                   ,  242, 242, 242, 255 } , 
-  { "Gray96"                   ,  245, 245, 245, 255 } , 
-  { "Grey96"                   ,  245, 245, 245, 255 } , 
-  { "Gray97"                   ,  247, 247, 247, 255 } , 
-  { "Grey97"                   ,  247, 247, 247, 255 } , 
-  { "Gray98"                   ,  250, 250, 250, 255 } , 
-  { "Grey98"                   ,  250, 250, 250, 255 } , 
-  { "Gray99"                   ,  252, 252, 252, 255 } , 
-  { "Grey99"                   ,  252, 252, 252, 255 } , 
-  { "Gray100"                  ,  255, 255, 255, 255 } , 
-  { "Grey100"                  ,  255, 255, 255, 255 } , 
-  { "DarkGrey"                 ,  169, 169, 169, 255 } , 
-  { "DarkGray"                 ,  169, 169, 169, 255 } , 
-  { "DarkBlue"                 ,  0  ,   0, 139, 255 } , 
-  { "DarkCyan"                 ,  0  , 139, 139, 255 } , 
-  { "DarkMagenta"              ,  139,   0, 139, 255 } , 
-  { "DarkRed"                  ,  139,   0,   0, 255 } , 
-  { "LightGreen"               ,  144, 238, 144, 255 } , 
-  { NULL                       ,  0  ,   0,   0, 255 }
-} ;
-
-int Get_ColorForString(StringX4Int SX4I[], int alpha, 
-		       char * string, int * FlagError);
-
-
-#endif
diff --git a/Common/Context.cpp b/Common/Context.cpp
deleted file mode 100644
index 53a44aa1797961a50d78d72e727aa829eb5f0194..0000000000000000000000000000000000000000
--- a/Common/Context.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-// $Id: Context.cpp,v 1.40 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "Options.h"
-#include "DefaultOptions.h"
-#include "trackball.c"
-
-extern Context_T  CTX ;
-
-/*
-  3 rotations successives autour de x, y et z:
-
-           c(y)c(z)    s(x)s(y)c(z)+c(x)s(z)   -c(x)s(y)c(z)+s(x)s(z) 
-  t[][] = -c(y)s(z)   -s(x)s(y)s(z)+c(x)c(z)    c(x)s(y)s(z)+s(x)c(z)
-           s(y)       -s(x)c(y)                 c(x)c(y)
-
-  get the position angles:
-
-  y = asin(t31)
-      Pi - asin(t31)
- 
-  si y != +- Pi/2 :
-
-  x = atan(-t32/t33)    si t33 cos y > 0
-      atan(-t32/t33)+Pi si t33 cos y < 0
-
-  z = atan(-t21/t11)    si t11 cos y > 0
-      atan(-t21/t11)+Pi si t11 cos y < 0
-
-*/
-
-void Context_T::buildRotmatrix(void)
-{
-  double x, y, z;
-  extern void set_r(int i, double val);
-
-  if(CTX.useTrackball){
-    build_rotmatrix(rot, quaternion);
-    // get the position angles
-    /*
-      double x=0., y=0., z=0.
-
-      y = asin(rot[2][0]) ; y = Pi - asin(rot[2][0]) ; // choix ???
-  
-      if(fabs(y) != Pi/2.){
-        if(rot[2][2]*cos(y) > 0.) x = atan2(-rot[2][1],rot[2][2]);
-	else                      x = atan2(-rot[2][1],rot[2][2]) + Pi;
-	if(rot[0][0]*cos(y) > 0.) z = atan2(-rot[1][0],rot[0][0]);
-	else                      z = atan2(-rot[1][0],rot[0][0]) + Pi;
-      }
-      set_r(0, x * 180./Pi);
-      set_r(1, y * 180./Pi);
-      set_r(2, z * 180./Pi);
-    */
-    /*
-    double r0, r1, r2;
-
-    r1 = atan2(-rot[0][2],sqrt(rot[1][2]*rot[1][2] + rot[2][2]*rot[2][2]));
-    
-    double c = cos(r1);  
-    if(c != 0.0){
-      r0 = atan2(rot[1][2]/c,rot[2][2]/c) ;
-      r2 = atan2(-rot[1][0]/c,rot[0][0]/c) ;
-      r0 *= 180./(Pi);
-      r2 *= 180./(Pi);
-    }
-    set_r(0, r0);
-    set_r(1, r1 * 180./(Pi));  // lazyyyyyy
-    set_r(2, r2);
-    */
-
-    // until we can compute this correctly
-    set_r(0, 0.);
-    set_r(1, 0.);
-    set_r(2, 0.);
-
-  }
-  else{
-    x = r[0] * Pi / 180.;
-    y = r[1] * Pi / 180.;
-    z = r[2] * Pi / 180.;
-
-    rot[0][0] = cos(y)*cos(z) ; 
-    rot[0][1] = sin(x)*sin(y)*cos(z)+cos(x)*sin(z);
-    rot[0][2] = -cos(x)*sin(y)*cos(z)+sin(x)*sin(z);
-    rot[0][3] = 0.0;
-
-    rot[1][0] = -cos(y)*sin(z);
-    rot[1][1] = -sin(x)*sin(y)*sin(z)+cos(x)*cos(z);
-    rot[1][2] = cos(x)*sin(y)*sin(z)+sin(x)*cos(z);
-    rot[1][3] = 0.0;
-    
-    rot[2][0] = sin(y);
-    rot[2][1] = -sin(x)*cos(y);
-    rot[2][2] = cos(x)*cos(y);
-    rot[2][3] = 0.0;
-
-    rot[3][0] = 0.0 ;
-    rot[3][1] = 0.0 ;
-    rot[3][2] = 0.0 ;
-    rot[3][3] = 1.0 ;
-    /*
-    printf("x=%g y=%g z=%g\n", r[0], r[1], r[2]);
-    printf("[%g %g %g]\n", rot[0][0], rot[0][1], rot[0][2]);
-    printf("[%g %g %g]\n", rot[1][0], rot[1][1], rot[1][2]);
-    printf("[%g %g %g]\n", rot[2][0], rot[2][1], rot[2][2]);
-    */
-  }
-
-}
-
-void Context_T::addQuaternion (float p1x, float p1y, float p2x, float p2y)
-{
-  float quat[4];
-  trackball(quat,p1x,p1y,p2x,p2y);
-  add_quats(quat, quaternion, quaternion);  
-}
-
-void Context_T::setQuaternion (float q0, float q1, float q2, float q3)
-{
-  quaternion[0] = q0;
-  quaternion[1] = q1;
-  quaternion[2] = q2;
-  quaternion[3] = q3;
-}
diff --git a/Common/Context.h b/Common/Context.h
deleted file mode 100644
index c4ebf39cfba5a5135a4ed37d6b114f9c82254688..0000000000000000000000000000000000000000
--- a/Common/Context.h
+++ /dev/null
@@ -1,192 +0,0 @@
-#ifndef _CONTEXT_H_
-#define _CONTEXT_H_
-
-// How RGBA values are packed and unpacked into/from a 4-byte integer 
-
-#  ifdef _LITTLE_ENDIAN
-#    define PACK_COLOR(R,G,B,A)   ( (A)<<24 | (B)<<16 | (G)<<8 | (R) )
-#    define UNPACK_RED(X)         ( (X) & 0xff )
-#    define UNPACK_GREEN(X)       ( ( (X) >> 8 ) & 0xff )
-#    define UNPACK_BLUE(X)        ( ( (X) >> 16 ) & 0xff )
-#    define UNPACK_ALPHA(X)       ( ( (X) >> 24 ) & 0xff )
-#  else
-#    define PACK_COLOR(R,G,B,A)   ( (R)<<24 | (G)<<16 | (B)<<8 | (A) )
-#    define UNPACK_RED(X)         ( ( (X) >> 24 ) & 0xff )
-#    define UNPACK_GREEN(X)       ( ( (X) >> 16 ) & 0xff )
-#    define UNPACK_BLUE(X)        ( ( (X) >> 8 ) & 0xff )
-#    define UNPACK_ALPHA(X)       ( (X) & 0xff )
-#  endif
-
-// Interface-independant context 
-
-class Context_T {
-
-public :
-
-  // general options
-  char filename[256];         // the name of the currently opened file
-  char base_filename[256];    // the same without the extension
-  char *output_filename;      // output file specified with command line option '-o'
-  char *default_filename;     // the name of the default file
-  char *tmp_filename;         // the name of the temp file
-  char *session_filename, sessionrc_filename[256];
-                              // the name of the sessionrc configuration file
-  char *options_filename, optionsrc_filename[256]; 
-                              // the name of the optionrc configuration file
-  char *error_filename;       // the name of the error file
-
-  int session_save, options_save; // save session/option file on exit
-  char *display;              // forced display host:0.0 under X11 
-  int  terminal;              // show we print to the terminal console?
-  char *editor;               // text editor command (with included '%s')
-  char home_dir[256];         // the home directory
-
-  int position[2];            // position of the menu window on the screen
-  int gl_position[2];         // position of the graphic window on the screen
-  int msg_position[2];        // position of the message window on the screen
-  int msg_size[2];            // size of the message window on the screen
-  int center_windows;         // center popup windows on the menu window
-
-  int default_plugins;        // do we load default plugins on startup?
-
-  int batch;                  // 0=full gfx; -1=just parse; 1,2,3=batch 1D, 2D, 3D mesh 
-  int initial_context;        // 0=automatic; 1=geom; 2=mesh; 3=solver; 4=post 
-  int verbosity;              // 0=silent -> 3=debug 
-  int expose;                 // 1 if everything is ready to expose and draw 
-
-  float rot[4][4];            // current rotation matrix 
-  double r[3];                // position angles (if succ. rot. along x, y and z) 
-  double t[3], s[3];          // current translation and scale 
-  int rlock[3], tlock[3], slock[3];
-                              // locks for r, t and s 
-  float quaternion[4];        // the actual quaternion used for "trackball" rotating 
-  int useTrackball;           // do or do not use the trackball for rotations 
-
-  double min[3];              // x, y and z min for the current geometry 
-  double max[3];              // x, y and z max for the current geometry 
-  double range[3];            // maximum range in the three directions 
-  double lc, lc_middle;       // characteristic lengths for the whole problem, 
-  double lc_order;            // and never used in mesh generation (->only for geo/post) 
-
-  int db;                     // double buffer? 
-  int overlay;                // overlay graphic window? 
-  int stream;                 // output stream: TO_SCREEN or TO_FILE 
-  int ortho;                  // orthogonal projection? 
-  int fast;                   // inhibit mesh and postpro drawing when changing r,s,t 
-  int command_win;            // command window? 
-  int display_lists;          // use display lists? 
-  int axes, small_axes;       // draw axes? 
-  int threads, threads_lock;  // threads?, lock (should be a mutex...) 
-  int alpha;                  // enable alpha blending 
-  int flash;                  // authorize colormap flashing (beek) 
-  int same_visual;            // force same visual for GUI and Graphics 
-  double zoom_factor;         // mouse2 zoom coefficient
-
-  //only used for Motif
-  int font_base;              // display list index for the font 
-  char *font;                 // main font
-  char *fixed_font;           // font for colorbar 
-  //end(only used for Motif)
-
-  int fontsize;               // font size for fltk UI
-  int gl_fontsize;            // font size for opengl graphics
-  int gl_fontheight;          // font height
-  int gl_fontascent;          // height of the font above the reference point
-
-  int viewport[4];            // current viewport 
-  double vxmin, vxmax, vymin, vymax; // current viewport in real coordinates 
-  int light[6];               // status of light 
-  float light_position[6][4]; // light sources positions 
-  int moving_light;           // type of light (follows the model or not)
-  float shine;                // specular value 
-  int render_mode;            // GMSH_RENDER, GMSH_SELECT, GMSH_FEEDBACK 
-  int clip[6];                // status of clip planes 
-  double clip_plane[6][4];    // clip planes 
-  double pixel_equiv_x, pixel_equiv_y ; 
-                              // approximative equivalent model length of a pixel 
-  int color_scheme ;          // general color scheme
-
-  // geometry options 
-  struct{
-    int vis_type;
-    int points, lines, surfaces, volumes;
-    int points_num, lines_num, surfaces_num, volumes_num;
-    int hidden, shade;
-    int highlight;
-    int level, old_circle;
-    double normals, tangents;
-    double scaling_factor;
-    int color_scheme ;
-  } geom;
-
-  // mesh options 
-  struct {
-    int vis_type;
-    int draw;
-    int points, lines, surfaces, volumes;
-    int points_num, lines_num, surfaces_num, volumes_num;
-    double quality;
-    double gamma_inf, gamma_sup, radius_inf, radius_sup;
-    double scaling_factor, lc_factor, rand_factor;
-    int dual, interactive;
-    int hidden, shade;
-    int format, nb_smoothing, algo, degree;
-    int point_insertion, speed_max, min_circ_points, constrained_bgmesh;
-    int histogram;
-    double normals, tangents, explode;
-    int color_scheme, color_carousel ;
-    int use_cut_plane;
-    double cut_planea,cut_planeb,cut_planec,cut_planed;
-    double evalCutPlane (double x, double y, double z)
-    {
-      double val = cut_planea * x + 
-	cut_planeb * y + 
-	cut_planec * z + cut_planed; 
-      return val;
-    }
-    int oldxtrude, oldxtrude_recombine, check_duplicates;
-  } mesh;
-
-  // post processing options 
-  struct{
-    int draw, scales, link ;
-    int smooth ;
-    int nb_views ;
-    double anim_delay ;
-  }post;
-
-  // print options 
-  struct{
-    int format;
-    int eps_quality, eps_background;
-    int jpeg_quality;
-    int gif_dither, gif_sort, gif_interlace, gif_transparent;
-    char *font;
-    int font_size, gl_fonts;
-    int geom_line_width, mesh_line_width, post_line_width;
-  } print;
-
-  // color options
-  struct{
-    unsigned int bg, fg, text, axes, small_axes;
-    struct{
-      unsigned int point, line, surface, volume;
-      unsigned int point_sel, line_sel, surface_sel, volume_sel;
-      unsigned int point_hlt, line_hlt, surface_hlt, volume_hlt;
-      unsigned int tangents, normals;
-    } geom;
-    struct{
-      unsigned int vertex, vertex_supp, line, triangle, quadrangle;
-      unsigned int tetrahedron, hexahedron, prism, pyramid;
-      unsigned int carousel[10];
-      unsigned int tangents, normals;
-    } mesh;
-  } color;
-  
-  // trackball functions 
-  void buildRotmatrix(void);
-  void setQuaternion (float p1x, float p1y, float p2x, float p2y);
-  void addQuaternion (float p1x, float p1y, float p2x, float p2y);
-};
-
-#endif
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
deleted file mode 100644
index b0bc6ef1488a6e30eaf1d9aa68f64a55a0d35aba..0000000000000000000000000000000000000000
--- a/Common/DefaultOptions.h
+++ /dev/null
@@ -1,727 +0,0 @@
-#ifndef _DEFAULT_OPTIONS_H_
-#define _DEFAULT_OPTIONS_H_
-
-// Option Database (General, Geometry, Mesh, Post, View, Print), with
-// default values. The first number defines the level of saving: O
-// for the option file, S for the session file and F for the full
-// listing:
-
-#define S GMSH_SESSIONRC
-#define O GMSH_OPTIONSRC
-#define F GMSH_FULLRC
-
-// STRINGS
-
-StringXString GeneralOptions_String[] = {
-  { F, "Display" , opt_general_display , "" ,
-    "X server to use (only for Unix versions)" },
-  { 0, "SessionFileName" , opt_general_session_filename , ".gmshrc" ,
-    "File into which session specific information is saved, and which is read on startup" },
-  { F|S, "DefaultFileName" , opt_general_default_filename , "unnamed.geo" ,
-    "Default project file name" },
-  { F|S, "TmpFileName" , opt_general_tmp_filename , ".gmsh-tmp" ,
-    "Temporary file (created in your home directory)" },
-  { F|S, "ErrorFileName" , opt_general_error_filename , ".gmsh-errors" ,
-    "File into which the log is saved if a fatal error occurs" },
-  { F|S, "OptionsFileName" , opt_general_options_filename , ".gmsh-options" ,
-    "File created in your home directory with 'Options->Save options now', and which is read on startup" },
-#ifdef WIN32
-  { F|O, "TextEditor" , opt_general_editor , "notepad %s" , 
-#else
-  { F|O, "TextEditor" , opt_general_editor , "emacs %s &" ,
-#endif
-    "System command to launch a text editor" },
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-StringXString GeometryOptions_String[] = {
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-StringXString MeshOptions_String[] = {
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-StringXString SolverOptions_String[] = {
-#ifdef WIN32
-  { F|O, "GetDPCommand" , opt_solver_getdp_command , "./getdp.exe" , 
-#else
-  { F|O, "GetDPCommand" , opt_solver_getdp_command , "getdp" , 
-#endif
-    "System command to launch the GetDP solver (should _not_ contain the '&' character)" },
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-StringXString PostProcessingOptions_String[] = {
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-StringXString ViewOptions_String[] = {
-  { F, "Name" , opt_view_name , "" , 
-    "Default name to assign to the post-processing view" },
-  { F|O, "Format" , opt_view_format , "%.3e" , 
-    "Number format (in standard C form)" },
-  { F, "FileName" , opt_view_filename , "" , 
-    "Default file name to assign to the post-processing view" },
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-StringXString PrintOptions_String[] = {
-  { F|O, "Font" , opt_print_font , "Courier" , 
-    "Font used for postscript printing" },
-  { 0, NULL , NULL , NULL , NULL }
-} ;
-
-// NUMBERS
-
-StringXNumber GeneralOptions_Number[] = {
-  { F|O, "InitialModule", opt_general_initial_context, 0. , 
-    "Module launched on startup (0=automatic, 1=geometry, 2=mesh, 3=solver, 4=post-processing) " },
-  { F|S, "SaveSession" , opt_general_session_save, 1. , 
-    "Automatically save session specific information each time you quit Gmsh?" }, 
-  { F|S, "SaveOptions" , opt_general_options_save, 0. , 
-    "Automatically save all current options each time you quit Gmsh?" }, 
-  { F|S, "FontSize" , opt_general_fontsize , 12. , 
-    "Size of the font in the graphical user interface" }, 
-  { F|S, "GraphicsFontSize" , opt_general_graphics_fontsize , 11. , 
-    "Size of the font in the graphic window" }, 
-  { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 20. , 
-    "Horizontal position (in pixels) of the upper left corner of the graphic window" }, 
-  { F|S, "GraphicsPositionY" , opt_general_graphics_position1 , 30. ,
-    "Vertical position (in pixels) of the upper left corner of the graphic window" }, 
-  { F|S, "GraphicsWidth" , opt_general_viewport2 , 700. , 
-    "Width (in pixels) of the graphic window" }, 
-  { F|S, "GraphicsHeight" , opt_general_viewport3 , 500. , 
-    "Height (in pixels) of the graphic window" }, 
-  { F|S, "MenuPositionX" , opt_general_menu_position0 , 800. , 
-    "Horizontal position (in pixels) of the upper left corner of the menu window" }, 
-  { F|S, "MenuPositionY" , opt_general_menu_position1 , 50. ,
-    "Vertical position (in pixels) of the upper left corner of the menu window" }, 
-  { F|S, "MessagePositionX" , opt_general_message_position0 , 650. , 
-    "Horizontal position (in pixels) of the upper left corner of the message window" }, 
-  { F|S, "MessagePositionY" , opt_general_message_position1 , 150. , 
-    "Vertical position (in pixels) of the upper left corner of the message window" }, 
-  { F|S, "MessageWidth" , opt_general_message_size0 , 450. , 
-    "Width (in pixels) of the message window" }, 
-  { F|S, "MessageHeight" , opt_general_message_size1 , 350. , 
-    "Height (in pixels) of the message window" }, 
-  { F|O, "CenterWindows" , opt_general_center_windows , 1. , 
-    "Center new windows on the menu window" }, 
-  { F, "RotationX" , opt_general_rotation0 , 0.0 , 
-    "First Euler angle (used if Trackball == 0)" }, 
-  { F, "RotationY" , opt_general_rotation1 , 0.0 , 
-    "Second Euler angle (used if Trackball == 0)" }, 
-  { F, "RotationZ" , opt_general_rotation2 , 0.0 , 
-    "Third Euler angle (used if Trackball == 0)" }, 
-  { F, "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 , 
-    "First trackball quaternion component (used if Trackball == 1)" }, 
-  { F, "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 , 
-    "Second trackball quaternion component (used if Trackball == 1)" }, 
-  { F, "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 , 
-    "Third trackball quaternion component (used if Trackball == 1)" }, 
-  { F, "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 , 
-    "Fourth trackball quaternion component (used if Trackball == 1)" }, 
-  { F, "TranslationX" , opt_general_translation0 , 0.0 , 
-    "X-axis translation (in model units)" },
-  { F, "TranslationY" , opt_general_translation1 , 0.0 , 
-    "Y-axis translation (in model units)" },
-  { F, "TranslationZ" , opt_general_translation2 , 0.0 , 
-    "Z-axis translation (in model units)" },
-  { F, "ScaleX" , opt_general_scale0 , 1.0 , 
-    "X-axis scale factor" },
-  { F, "ScaleY" , opt_general_scale1 , 1.0 , 
-    "Y-axis scale factor" },
-  { F, "ScaleZ" , opt_general_scale2 , 1.0 , 
-    "Z-axis scale factor" },
-  { F|O, "Shininess" , opt_general_shine , 0.4 , 
-    "Material shininess (must be > 0)" },
-  { F|O, "ColorScheme", opt_general_color_scheme , 0. ,
-    "Default color scheme (0, 1 or 2)" },
-#ifdef _BLACKBOX
-  { F|O, "Verbosity" , opt_general_verbosity , 0. , 
-#else
-  { F|O, "Verbosity" , opt_general_verbosity , 2. ,
-#endif
-    "Level of information printed during processing (0=no information)" },
-#ifdef _FLTK
-  { F|O, "Terminal" , opt_general_terminal , 0. ,
-#else		      
-  { F|O, "Terminal" , opt_general_terminal , 1. ,
-#endif
-    "Should information be printed on the terminal (if available)?" },
-  { F|O, "Orthographic" , opt_general_orthographic , 1. ,
-    "Orthographic projection mode (0=perspective projection)" },
-  { F|O, "FastRedraw" , opt_general_fast_redraw , 1. ,
-    "Fast redraw (no mesh or view display) when moving the model" },
-  { F|O, "Axes" , opt_general_axes , 1. ,
-    "Display the axes linked to the model" },
-  { F|O, "SmallAxes" , opt_general_small_axes , 1. ,
-    "Display the small axes" },
-  { F|O, "DoubleBuffer" , opt_general_double_buffer , 1. ,
-    "Use a double buffered graphic window (on Unix, should be set to 0 when working on a remote host without GLX)" },
-  { F|O, "DisplayLists" , opt_general_display_lists , 0. ,
-    "Use OpenGL display lists (useful with real time manipulation of 'big' post-processing views)" },
-  { F|O, "AlphaBlending" , opt_general_alpha_blending , 0. ,
-    "Enable alpha blending (transparency) in post-processing views" },
-  { F|O, "Trackball" , opt_general_trackball , 1. ,
-    "Use trackball rotation mode" },
-  { F|O, "ZoomFactor" , opt_general_zoom_factor , 1.1 ,
-    "'Speed' of the middle mouse button zoom" },
-  { F|O, "DefaultPlugins" , opt_general_default_plugins , 1. ,
-    "Load default plugins on startup" },
-  { F, "Clip0" , opt_general_clip0 , 0. ,
-    "Enable clip plane 0" },
-  { F, "Clip0A" , opt_general_clip0a , 0.0 ,
-    "First clip plane 0 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip0B" , opt_general_clip0b , 0.0 , 
-    "Second clip plane 0 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip0C" , opt_general_clip0c , 0.0 , 
-    "Third clip plane 0 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip0D" , opt_general_clip0d , 0.0 , 
-    "Fourth clip plane 0 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip1" , opt_general_clip1 , 0.,
-    "Enable clip plane 1" },
-  { F, "Clip1A" , opt_general_clip1a , 0.0 , 
-    "First clip plane 1 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip1B" , opt_general_clip1b , 0.0 , 
-    "Second clip plane 1 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip1C" , opt_general_clip1c , 0.0 , 
-    "Third clip plane 1 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip1D" , opt_general_clip1d , 0.0 , 
-    "Fourth clip plane 1 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip2" , opt_general_clip2 , 0.,
-    "Enable clip plane 2" },
-  { F, "Clip2A" , opt_general_clip2a , 0.0 , 
-    "First clip plane 2 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip2B" , opt_general_clip2b , 0.0 , 
-    "Second clip plane 2 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip2C" , opt_general_clip2c , 0.0 , 
-    "Third clip plane 2 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip2D" , opt_general_clip2d , 0.0 , 
-    "Fourth clip plane 2 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip3" , opt_general_clip3 , 0.,
-    "Enable clip plane 3" },
-  { F, "Clip3A" , opt_general_clip3a , 0.0 , 
-    "First clip plane 3 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip3B" , opt_general_clip3b , 0.0 , 
-    "Second clip plane 3 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip3C" , opt_general_clip3c , 0.0 , 
-    "Third clip plane 3 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip3D" , opt_general_clip3d , 0.0 , 
-    "Fourth clip plane 3 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip4" , opt_general_clip4 , 0.,
-    "Enable clip plane 4" },
-  { F, "Clip4A" , opt_general_clip4a , 0.0 , 
-    "First clip plane 4 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip4B" , opt_general_clip4b , 0.0 , 
-    "Second clip plane 4 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip4C" , opt_general_clip4c , 0.0 , 
-    "Third clip plane 4 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip4D" , opt_general_clip4d , 0.0 , 
-    "Fourth clip plane 4 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip5" , opt_general_clip5 , 0.,
-    "Enable clip plane 5" },
-  { F, "Clip5A" , opt_general_clip5a , 0.0 , 
-    "First clip plane 5 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip5B" , opt_general_clip5b , 0.0 , 
-    "Second clip plane 5 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip5C" , opt_general_clip5c , 0.0 , 
-    "Third clip plane 5 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "Clip5D" , opt_general_clip5d , 0.0 , 
-    "Fourth clip plane 5 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { F|O, "MovingLight" , opt_general_moving_light , 0. ,
-    "Use a moving (i.e. which follows the model) light source" },
-  { F|O, "Light0" , opt_general_light0 , 1. ,
-    "Enable light source 0" },
-  { F|O, "Light0X" , opt_general_light00 , 0.5 ,
-    "X position of light source 0" },
-  { F|O, "Light0Y" , opt_general_light01 , 0.3 , 
-    "Y position of light source 0" },
-  { F|O, "Light0Z" , opt_general_light02 , 1.0 , 
-    "Z position of light source 0" },
-  { F|O, "Light1" , opt_general_light1 , 0.,
-    "Enable light source 1" },
-  { F|O, "Light1X" , opt_general_light10 , 0.5 , 
-    "X position of light source 1" },
-  { F|O, "Light1Y" , opt_general_light11 , 0.3 , 
-    "Y position of light source 1" },
-  { F|O, "Light1Z" , opt_general_light12 , 1.0 , 
-    "Z position of light source 1" },
-  { F|O, "Light2" , opt_general_light2 , 0.,
-    "Enable light source 2" },
-  { F|O, "Light2X" , opt_general_light20 , 0.5 , 
-    "X position of light source 2" },
-  { F|O, "Light2Y" , opt_general_light21 , 0.3 , 
-    "Y position of light source 2" },
-  { F|O, "Light2Z" , opt_general_light22 , 1.0 , 
-    "Z position of light source 2" },
-  { F|O, "Light3" , opt_general_light3 , 0.,
-    "Enable light source 3" },
-  { F|O, "Light3X" , opt_general_light30 , 0.5 , 
-    "X position of light source 3" },
-  { F|O, "Light3Y" , opt_general_light31 , 0.3 , 
-    "Y position of light source 3" },
-  { F|O, "Light3Z" , opt_general_light32 , 1.0 , 
-    "Z position of light source 3" },
-  { F|O, "Light4" , opt_general_light4 , 0.,
-    "Enable light source 4" },
-  { F|O, "Light4X" , opt_general_light40 , 0.5 , 
-    "X position of light source 4" },
-  { F|O, "Light4Y" , opt_general_light41 , 0.3 , 
-    "Y position of light source 4" },
-  { F|O, "Light4Z" , opt_general_light42 , 1.0 , 
-    "Z position of light source 4" },
-  { F|O, "Light5" , opt_general_light5 , 0.,
-    "Enable light source 5" },
-  { F|O, "Light5X" , opt_general_light50 , 0.5 , 
-    "X position of light source 5" },
-  { F|O, "Light5Y" , opt_general_light51 , 0.3 , 
-    "Y position of light source 5" },
-  { F|O, "Light5Z" , opt_general_light52 , 1.0 , 
-    "Z position of light source 5" },
-  { 0, NULL , NULL , 0. , NULL }
-} ;
-
-StringXNumber GeometryOptions_Number[] = {
-  { F|O, "Normals" , opt_geometry_normals , 0. , 
-    "Size of the vectors normal to the surfaces" }, 
-  { F|O, "Tangents" , opt_geometry_tangents , 0. ,
-    "Size of the vectors tangent to the curves" }, 
-  { F|O, "Points" , opt_geometry_points , 1. ,
-    "Display geometry points?" },
-  { F|O, "Lines" , opt_geometry_lines , 1. , 
-    "Display geometry curves?" },
-  { F|O, "Surfaces" , opt_geometry_surfaces , 0. , 
-    "Display geometry surfaces?" },
-  { F|O, "Volumes" , opt_geometry_volumes , 0. , 
-    "Display geometry volumes? (not implemented yet)" },
-  { F|O, "PointsNumbers" , opt_geometry_points_num , 0. , 
-    "Display points numbers?" },
-  { F|O, "LinesNumbers" , opt_geometry_lines_num , 0. , 
-    "Display curve numbers?" },
-  { F|O, "SurfacesNumbers" , opt_geometry_surfaces_num , 0. , 
-    "Display surface numbers?" },
-  { F|O, "VolumesNumbers" , opt_geometry_volumes_num , 0. , 
-    "Display volume numbers? (not implemented yet)" },
-  { F|O, "Aspect" , opt_geometry_aspect , 0. , 
-    "Not used" },
-  { F|O, "Highlight" , opt_geometry_highlight , 1. , 
-    "Not used" },
-  { F|O, "OldCircle" , opt_geometry_old_circle , 0. , 
-    "Use old circle description (compatibility option for old Gmsh geometries)" },
-  { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 , 
-    "Global geometry scaling factor" },
-  { F|O, "ColorScheme" , opt_geometry_color_scheme , 0. , 
-    "Default geometry color scheme (0, 1 or 2)" },
-  { 0, NULL , NULL , 0. , NULL }
-} ;
-
-StringXNumber MeshOptions_Number[] = {
-  { F|O, "Quality" , opt_mesh_quality , 0.0 ,
-    "Target quality for tetrahedral elements (not fully functional)" },
-  { F|O, "Normals" , opt_mesh_normals , 0.0 ,
-    "Size of the normal vectors" }, 
-  { F|O, "Tangents" , opt_mesh_tangents , 0.0 , 
-    "Size of the tangent vectors" }, 
-  { F|O, "Explode" , opt_mesh_explode , 1.0 ,
-    "Display mesh with non adjacent elements (factor between 0 and 1)" },
-  { F|O, "ScalingFactor" , opt_mesh_scaling_factor , 1.0 ,
-    "Global scaling factor applied to the saved mesh" },
-  { F|O, "CharacteristicLengthFactor" , opt_mesh_lc_factor , 1.0 ,
-    "Factor applied to all charcteristic lenghts (and background meshes)" },
-  { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-4 ,
-    "Random factor used in 2D and 3D meshing algorithm (test other values when the algorithm fails)" },
-  { F|O, "GammaInf" , opt_mesh_gamma_inf , 0.0 , 
-    "Only display elements whose Gamma factor is greater than GammaInf" },
-  { F|O, "GammaSup" , opt_mesh_gamma_sup , 0.0 , 
-    "Only display elements whose Gamma factor is smaller than GammaSup" },
-  { F|O, "RadiusInf" , opt_mesh_radius_inf , 0.0 , 
-    "Only display elements whose Radius is greater than RadiusInf" },
-  { F|O, "RadiusSup" , opt_mesh_radius_sup , 0.0 , 
-    "Only display elements whose Radius is smaller than RadiusSup" },
-  { F|O, "Points" , opt_mesh_points , 1. , 
-    "Display mesh vertices?" },
-  { F|O, "Lines" , opt_mesh_lines , 1. , 
-    "Display mesh vertices on curves?" },
-  { F|O, "Surfaces" , opt_mesh_surfaces , 1. , 
-    "Display surface mesh?" },
-  { F|O, "Volumes" , opt_mesh_volumes , 1. , 
-    "Display volume mesh?" },
-  { F|O, "PointsNumbers" , opt_mesh_points_num , 0. , 
-    "Display mesh vertices numbers?" },
-  { F|O, "LinesNumbers" , opt_mesh_lines_num , 0. , 
-    "Display mesh line numbers?" },
-  { F|O, "SurfacesNumbers" , opt_mesh_surfaces_num , 0. , 
-    "Display mesh surface numbers?" },
-  { F|O, "VolumesNumbers" , opt_mesh_volumes_num , 0. , 
-    "Display mesh elements numbers?" },
-  { F|O, "Aspect" , opt_mesh_aspect , 0. , 
-    "Mesh apsect (0=wireframe, 1=hidden lines, 2=solid)" },
-  { F|O, "Format" , opt_mesh_format , FORMAT_MSH , 
-    "Mesh output format (1=MSH, 2=UNV)" },
-  { F|O, "Smoothing" , opt_mesh_nb_smoothing , 0. ,
-    "Number of smoothing steps applied to the final mesh" },
-  { F|O, "Algorithm" , opt_mesh_algo , DELAUNAY_OLDALGO ,
-    "2D mesh algorithm (1=isotropic, 2=anisotropic)" }, 
-  { F|O, "PointInsertion" , opt_mesh_point_insertion, CENTER_CIRCCIRC ,
-    "Point insertion method for isotropic 2D algorithm (1=center of circ. circle, 2=voronoi, 3=cog)" },
-  { F|O, "SpeedMax" , opt_mesh_speed_max , 0. ,
-    "Disable dubious point insertion tests" },
-  { F|O, "MinimumCirclePoints" , opt_mesh_min_circ_points, 7. ,
-    "Minimum number of points used to mesh a circle" },
-  { F|O, "ConstrainedBackgroundMesh" , opt_mesh_constrained_bgmesh, 0. ,
-    "Should the background mesh be constrained by the characteristic lengths associated with the geometry?" },
-  { F|O, "Degree" , opt_mesh_degree , 1. ,
-    "Element order" },
-  { F|O, "Dual" , opt_mesh_dual , 0. ,
-    "Display the dual mesh obtained by barycentric subdivision" },
-  { F|O, "Interactive" , opt_mesh_interactive , 0. ,
-    "Show the construction of the 2D mesh in real time (only with the anisotropic algorithm)" },
-  { F|O, "ColorScheme" , opt_mesh_color_scheme , 0. , 
-    "Default mesh color scheme (0, 1 or 2)" },
-  { F|O, "ColorCarousel" , opt_mesh_color_carousel , 1. ,
-    "Use a 'color by region number' scheme" },
-  { F, "use_cut_plane" , opt_mesh_use_cut_plane , 0 ,
-    "Enable mesh clip plane" },
-  { F, "cut_planea" , opt_mesh_cut_planea , 1. , 
-    "First clip plane equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
-  { F, "cut_planeb" , opt_mesh_cut_planeb , 0. , 
-    "Second clip plane equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
-  { F, "cut_planec" , opt_mesh_cut_planec , 0. , 
-    "Third clip plane equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
-  { F, "cut_planed" , opt_mesh_cut_planed , 0. , 
-    "Fourth clip plane equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
-  { 0, NULL , NULL , 0. , NULL }
-} ;
-
-StringXNumber SolverOptions_Number[] = {
-  { F|O, "GetDPPopupMessages" , opt_solver_getdp_popupmessages , 1.0 ,
-    "Automatically display GetDP messages" },
-  { F|O, "GetDPMergeViews" , opt_solver_getdp_mergeviews , 1.0 , 
-    "Automatically merge any post-processing view created by GetDP" },
-  { 0, NULL , NULL , 0. , NULL }
-} ;
-
-StringXNumber PostProcessingOptions_Number[] = {
-  { F|O, "Scales" , opt_post_scales , 1. , 
-    "Show value scales" },
-  { F|O, "Link" , opt_post_link , 0. ,
-    "Link post-processing views (0=none, 1,2=changes in visible/all, 3,4=everything in visible/all)" },
-  { F|O, "Smoothing" , opt_post_smooth , 0. ,
-    "Apply (non-reversible) smoothing to post-processing view when merged" },
-  { F|O, "AnimationDelay" , opt_post_anim_delay , 0.25 ,
-    "Delay (in seconds) between to animation frames" },
-  { F, "NbViews" , opt_post_nb_views , 0. ,
-    "Current number of views merged (do _not_ change this!)" },
-  { 0, NULL , NULL , 0. }
-} ;
-
-StringXNumber ViewOptions_Number[] = {
-  { F, "NbTimeStep" , opt_view_nb_timestep , 1. ,
-    "Number of time steps in the view (do _not_ change this!)" },
-  { F, "TimeStep" , opt_view_timestep , 0. ,
-    "Current time step displayed" },
-  { F, "Min" , opt_view_min , 1.e200 ,
-    "Minimum value in the view (do _not_ change this!)" },
-  { F, "Max" , opt_view_max , -1.e200 , 
-    "Maximum value in the view (do _not_ change this!)" },
-  { F, "CustomMin" , opt_view_custom_min , 0. , 
-    "User defined minimum value to be displayed" },
-  { F, "CustomMax" , opt_view_custom_max , 0. , 
-    "User defined maximum value to be displayed" },
-  { F, "OffsetX" , opt_view_offset0 , 0. , 
-    "Translation of the view along X-axis (in model coordinates)" },
-  { F, "OffsetY" , opt_view_offset1 , 0. , 
-    "Translation of the view along Y-axis (in model coordinates)" },
-  { F, "OffsetZ" , opt_view_offset2 , 0. , 
-    "Translation of the view along Z-axis (in model coordinates)" },
-  { F, "RaiseX" , opt_view_raise0 , 0. , 
-    "Elevation of the view along X-axis (in model coordinates)" },
-  { F, "RaiseY" , opt_view_raise1 , 0. , 
-    "Elevation of the view along Y-axis (in model coordinates)" },
-  { F, "RaiseZ" , opt_view_raise2 , 0. , 
-    "Elevation of the view along Z-axis (in model coordinates)" },
-  { F|O, "ArrowScale" , opt_view_arrow_scale , 50. ,
-    "Size of the vector (e.g. arrow size in pixels)" },
-  { F|O, "Explode" , opt_view_explode , 1. , 
-    "Explode elements (0: reduced to point; 1: not transformed)" },
-  { F, "Visible" , opt_view_visible , 1. ,
-    "Is the view visible?" },
-  { F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO ,
-    "Type of interval display (1=iso, 2=continuous, 3=discrete, 4=numeric)" },
-  { F|O, "SaturateValues" , opt_view_saturate_values , 0 ,
-    "Saturate the view values to custom min and max (1=true, 0=false)" },
-  { F|O, "NbIso" , opt_view_nb_iso , 15. ,
-    "Number of intervals" },
-  { F|O, "Boundary" , opt_view_boundary , 0 ,
-    "Draw the N-b dimensional boundary of the simplex (N=dimension, b=option value)" },
-  { F|O, "Light" , opt_view_light , 0. ,
-    "Enable light sources?" },
-  { F|O, "SmoothNormals" , opt_view_smooth_normals , 0. ,
-    "Smooth the normals?" },
-  { F|O, "ShowElement" , opt_view_show_element , 0. ,
-    "Show element boundaries?" },
-  { F|O, "ShowTime" , opt_view_show_time , 1. ,
-    "Show time value (or time step) if NbTimeStep > 1?" },
-  { F|O, "ShowScale" , opt_view_show_scale , 1. ,
-    "Show value scale?" },
-  { F|O, "DrawPoints" , opt_view_draw_points , 1. ,
-    "Display post-processing points?" },
-  { F|O, "DrawLines" , opt_view_draw_lines , 1. , 
-    "Display post-processing lines?" },
-  { F|O, "DrawTriangles" , opt_view_draw_triangles , 1. , 
-    "Display post-processing triangles?" },
-  { F|O, "DrawTetrahedra" , opt_view_draw_tetrahedra , 1. , 
-    "Display post-processing tetrahedra?" },
-  { F|O, "DrawScalars" , opt_view_draw_scalars , 1. , 
-    "Display scalar values?" },
-  { F|O, "DrawVectors" , opt_view_draw_vectors , 1. , 
-    "Display vector values?" },
-  { F|O, "DrawTensors" , opt_view_draw_tensors , 1. , 
-    "Display tensor values?" },
-  { F|O, "TransparentScale" , opt_view_transparent_scale , 1. ,
-    "Display a 'transparent' value scale?" },
-  { F|O, "ScaleType" , opt_view_scale_type , DRAW_POST_LINEAR ,
-    "Value scale type (1=linear, 2=logarithmic, 3=double logarithmic)" },
-  { F|O, "RangeType" , opt_view_range_type , DRAW_POST_DEFAULT ,
-    "Value scale range type (1=default, 2=custom)" },
-  { F|O, "ArrowType" , opt_view_arrow_type , DRAW_POST_ARROW ,
-    "Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)" },
-  { F|O, "ArrowLocation" , opt_view_arrow_location , DRAW_POST_LOCATE_COG , 
-    "Arrow location (1=cog, 2=vertex)" },
-  { 0, NULL , NULL , 0. , NULL }
-} ;
-
-StringXNumber PrintOptions_Number[] = {
-  { F|O, "Format" , opt_print_format , FORMAT_AUTO , 
-    "Print format" }, 
-  { F|O, "EpsQuality" , opt_print_eps_quality , 1 ,
-    "Postscript quality (1=simple sort, 2=recursive sort)" },
-  { F|O, "EpsBackground" , opt_print_eps_background , 1 ,
-    "Save image background in postscript output" },
-  { F|O, "JpegQuality" , opt_print_jpeg_quality , 85 ,
-    "JPEG quality (between 1 and 100)" },
-  { F|O, "GifDither" , opt_print_gif_dither , 0 ,
-    "Apply dithering to GIF output" },
-  { F|O, "GifSort" , opt_print_gif_sort , 1 ,
-    "Sort the colormap in GIF output" },
-  { F|O, "GifInterlace" , opt_print_gif_interlace , 0 ,
-    "Interlace GIF output" },
-  { F|O, "GifTransparent" , opt_print_gif_transparent , 0 ,
-    "Output transparent GIF image" },
-  { F|O, "FontSize" , opt_print_font_size , 12. ,
-    "Font size used for postscript printing" },
-  { F|O, "GeometryLineWidth" , opt_print_geom_line_width , 2. ,
-    "Width factor for geometry lines in postscript output (10 looks nice for geometry+mesh display)" },
-  { F|O, "MeshLineWidth" , opt_print_mesh_line_width , 1. ,
-    "Width factor for mesh lines in postscript output (1 looks nice for geometry+mesh display)" },
-  { F|O, "PostProcessingLineWidth" , opt_print_post_line_width , 2. ,
-    "Width factor for post-processing lines in postscript output" },
-  { 0, NULL , NULL , 0. }
-} ;
-
-// COLORS
-
-StringXColor GeneralOptions_Color[] = {
-  { F|O, "Background" , opt_general_color_background ,
-    PACK_COLOR(0,   0,   0,   255), 
-    PACK_COLOR(255, 255, 255, 255), 
-    PACK_COLOR(255, 255, 255, 255), 
-    "Background color" },
-  { F|O, "Foreground" , opt_general_color_foreground ,
-    PACK_COLOR(255, 255, 255, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Foreground color" },
-  { F|O, "Text" , opt_general_color_text ,
-    PACK_COLOR(255, 255, 255, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Text color" },
-  { F|O, "Axes" , opt_general_color_axes ,
-    PACK_COLOR(255, 255, 0,   255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Axes color" },
-  { F|O, "SmallAxes" , opt_general_color_small_axes ,
-    PACK_COLOR(255, 255, 255, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Small axes color" },
-  { 0, NULL , NULL ,  0, 0, 0 , NULL }
-} ;
-
-StringXColor GeometryOptions_Color[] = {
-  { F|O, "Points" , opt_geometry_color_points , 
-    PACK_COLOR(178, 182, 129, 255) ,
-    PACK_COLOR(178, 182, 129, 255) ,
-    PACK_COLOR(0,   0,   0,   255), 
-    "Normal geometry point color" },
-  { F|O, "Lines" , opt_geometry_color_lines ,
-    PACK_COLOR(0,   0,   255, 255),
-    PACK_COLOR(0,   0,   255, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Normal geometry curve color" },
-  { F|O, "Surfaces" , opt_geometry_color_surfaces ,
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Normal geometry surface color" },
-  { F|O, "Volumes" , opt_geometry_color_volumes ,
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Normal geometry volume color" },
-  { F|O, "PointsSelect" , opt_geometry_color_points_select ,
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Selected geometry point color" },
-  { F|O, "LinesSelect" , opt_geometry_color_lines_select ,
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Selected geometry curve color"  },
-  { F|O, "SurfacesSelect" , opt_geometry_color_surfaces_select ,
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Selected geometry surface color" },
-  { F|O, "VolumesSelect" , opt_geometry_color_volumes_select ,
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Selected geometry volume color" },
-  { F|O, "PointsHighlight" , opt_geometry_color_points_highlight ,
-    PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Highlighted geometry point color" },
-  { F|O, "LinesHighlight" , opt_geometry_color_lines_highlight ,
-    PACK_COLOR(0,   0,   255, 255),
-    PACK_COLOR(0,   0,   255, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Highlighted geometry curve color" },
-  { F|O, "SurfacesHighlight" , opt_geometry_color_surfaces_highlight ,
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Highlighted geometry surface color" },
-  { F|O, "VolumesHighlight" , opt_geometry_color_volumes_highlight ,
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Highlighted geometry volume color" },
-  { F|O, "Tangents" , opt_geometry_color_tangents ,
-    PACK_COLOR(255, 255, 0,   255),
-    PACK_COLOR(255, 255, 0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Tangent geometry vectors color" },
-  { F|O, "Normals" , opt_geometry_color_normals ,
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Normal geometry vectors color" },
-  { 0, NULL , NULL , 0, 0, 0 , NULL }
-} ;
-
-#define COL1  PACK_COLOR( 232, 210, 23, 255  )
-#define COL2  PACK_COLOR( 226, 167, 29, 255  )
-#define COL3  PACK_COLOR( 217, 113, 38, 255  )
-#define COL4  PACK_COLOR( 201, 54, 54, 255   )
-#define COL5  PACK_COLOR( 169, 12, 86, 255   )
-#define COL6  PACK_COLOR( 114, 2, 141, 255   )
-#define COL7  PACK_COLOR( 67, 30, 188, 255   )
-#define COL8  PACK_COLOR( 44, 86, 211, 255   )
-#define COL9  PACK_COLOR( 32, 145, 223, 255  )
-#define COL10 PACK_COLOR( 25, 193, 230, 255  )
-#define COLW  PACK_COLOR( 255, 255, 255, 255 )
-#define COLT  PACK_COLOR( 160, 150, 255, 255 )
-#define COLQ  PACK_COLOR( 130, 120, 225, 255 )
-#define COLP  PACK_COLOR( 232, 210, 23, 255  )
-#define COLY  PACK_COLOR( 217, 113, 38, 255  )
-
-StringXColor MeshOptions_Color[] = {
-  { F|O, "Points" , opt_mesh_color_points , 
-    PACK_COLOR(0  , 123, 59 , 255),
-    PACK_COLOR(0  , 123, 59 , 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Mesh vertex color" },
-  { F|O, "PointsSupp" , opt_mesh_color_points_supp , 
-    PACK_COLOR(255, 0,   255, 255),
-    PACK_COLOR(255, 0,   255, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Mesh high order vertex color" },
-  { F|O, "Lines" , opt_mesh_color_lines , 
-    PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Mesh line color" },
-  { F|O, "Triangles" , opt_mesh_color_triangles , 
-    COLT, COLT, COLW, "Mesh triangle color (if ColorCarousel=0)" },
-  { F|O, "Quadrangles" , opt_mesh_color_quadrangles ,
-    COLQ, COLQ, COLW, "Mesh quadrangle color (if ColorCarousel=0)" },
-  { F|O, "Tetrahedra" , opt_mesh_color_tetrahedra ,
-    COLT, COLT, COLW, "Mesh tetrahedron color (if ColorCarousel=0)" },
-  { F|O, "Hexahedra" , opt_mesh_color_hexahedra ,
-    COLQ, COLQ, COLW, "Mesh hexahedron color (if ColorCarousel=0)" },
-  { F|O, "Prisms" , opt_mesh_color_prisms ,
-    COLP, COLP, COLW, "Mesh prism color (if ColorCarousel=0)" },
-  { F|O, "Pyramids" , opt_mesh_color_pyramid ,
-    COLY, COLY, COLW, "Mesh pyramid color (if ColorCarousel=0)" },
-  { F|O, "Normals" , opt_mesh_color_normals ,
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Normal mesh vector color" },
-  { F|O, "Tangents" , opt_mesh_color_tangents ,
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255),
-    "Tangent mesh vector color" },
-  { F|O, "One" , opt_mesh_color_1   , COL1, COL1, COLW, "First color in color carousel" },
-  { F|O, "Two" , opt_mesh_color_2   , COL2, COL2, COLW, "Second color in color carousel" },
-  { F|O, "Three" , opt_mesh_color_3 , COL3, COL3, COLW, "Third color in color carousel" },
-  { F|O, "Four" , opt_mesh_color_4  , COL4, COL4, COLW, "Fourth color in color carousel" },
-  { F|O, "Five" , opt_mesh_color_5  , COL5, COL5, COLW, "Fifth color in color carousel" },
-  { F|O, "Six" , opt_mesh_color_6   , COL6, COL6, COLW, "Sixth color in color carousel" },
-  { F|O, "Seven" , opt_mesh_color_7 , COL7, COL7, COLW, "Seventh color in color carousel" },
-  { F|O, "Eight" , opt_mesh_color_8 , COL8, COL8, COLW, "Eighth color in color carousel" },
-  { F|O, "Nine" , opt_mesh_color_9  , COL9, COL9, COLW, "Nitnth color in color carousel" },
-  { F|O, "Ten" , opt_mesh_color_10  , COL10, COL10, COLW,  "tenth color in color carousel" },
-  { 0, NULL , NULL , 0, 0, 0 , NULL }
-} ;
-
-#undef COL1
-#undef COL2
-#undef COL3
-#undef COL4
-#undef COL5
-#undef COL6
-#undef COL7
-#undef COL8
-#undef COL9
-#undef COL10
-#undef COLW
-
-StringXColor SolverOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 , NULL }
-} ;
-
-StringXColor PostProcessingOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 , NULL }
-} ;
-
-StringXColor ViewOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 , NULL }
-} ;
-
-StringXColor PrintOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 , NULL }
-} ;
-
-#undef S
-#undef O
-#undef F
-
-#endif
diff --git a/Common/GetOptions.cpp b/Common/GetOptions.cpp
deleted file mode 100644
index 1fd654f2da0d445eae412e8450d5edb11371c063..0000000000000000000000000000000000000000
--- a/Common/GetOptions.cpp
+++ /dev/null
@@ -1,500 +0,0 @@
-// $Id: GetOptions.cpp,v 1.35 2001-08-11 23:28:31 geuzaine Exp $
-
-#include <unistd.h>
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "GmshVersion.h"
-#include "Numeric.h"
-#include "Context.h"
-#include "Options.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Views.h"
-#include "OpenFile.h"
-#include "Parser.h"
-
-extern Context_T  CTX;
-
-char  *TheFileNameTab[MAX_OPEN_FILES];
-char  *TheBgmFileName=NULL, *TheOptString=NULL;
-
-char gmsh_progname[]  = "This is Gmsh" ;
-char gmsh_copyright[] = "Copyright (C) 1997-2001 Jean-Francois Remacle and Christophe Geuzaine";
-char gmsh_version[]   = "Version        : " ;
-char gmsh_os[]        = "Build OS       : " GMSH_OS ;
-char gmsh_gui[]       = "GUI toolkit    : " ;
-char gmsh_date[]      = "Build date     : " GMSH_DATE ;
-char gmsh_host[]      = "Build host     : " GMSH_HOST ;
-char gmsh_packager[]  = "Packager       : " GMSH_PACKAGER ;
-char gmsh_url[]       = "Web site       : http://www.geuz.org/gmsh/" ;
-char gmsh_email[]     = "Mailing list   : gmsh@geuz.org" ;
-
-void Print_Usage(char *name){
-  Msg(DIRECT, "Usage: %s [options] [files]", name);
-  Msg(DIRECT, "Geometry options:");
-  Msg(DIRECT, "  -0                    parse input files, output flattened geometry, and exit");
-  Msg(DIRECT, "Mesh options:");
-  Msg(DIRECT, "  -1, -2, -3            perform batch 1D, 2D and 3D mesh generation");
-  Msg(DIRECT, "  -o file               specify mesh output file name");
-  Msg(DIRECT, "  -format msh|unv|gref  set output mesh format (default: msh)");
-  Msg(DIRECT, "  -algo iso|aniso       select 2D mesh algorithm (default: iso)");
-  Msg(DIRECT, "  -smooth int           set mesh smoothing (default: 0)");
-  Msg(DIRECT, "  -degree int           set mesh degree (default: 1)");
-  Msg(DIRECT, "  -scale float          set global scaling factor (default: 1.0)");
-  Msg(DIRECT, "  -meshscale float      set mesh scaling factor (default: 1.0)");
-  Msg(DIRECT, "  -clscale float        set characteristic length scaling factor (default: 1.0)");
-  Msg(DIRECT, "  -rand float           set random perturbation factor (default: 1.e-4)");
-  Msg(DIRECT, "  -bgm file             load backround mesh from file");
-  Msg(DIRECT, "  -constrain            constrain background mesh with characteristic lengths");
-  Msg(DIRECT, "  -histogram            print mesh quality histogram");
-  Msg(DIRECT, "  -extrude              use old extrusion mesh generator");
-  Msg(DIRECT, "  -recombine            recombine meshes from old extrusion mesh generator");
-#ifndef _BLACKBOX
-  Msg(DIRECT, "  -interactive          display 2D mesh construction interactively");
-  Msg(DIRECT, "Post-processing options:");
-  Msg(DIRECT, "  -dl                   enable display lists");
-  Msg(DIRECT, "  -noview               hide all views on startup");
-  Msg(DIRECT, "  -link int             select link mode between views (default: 0)");
-  Msg(DIRECT, "  -smoothview           smooth views");
-  Msg(DIRECT, "  -convert file file    convert an ascii view into a binary one");
-  Msg(DIRECT, "Display options:");    
-  Msg(DIRECT, "  -nodb                 disable double buffering");
-#ifdef _XMOTIF
-  Msg(DIRECT, "  -noov                 disable overlay visual");
-  Msg(DIRECT, "  -flash                allow colormap flashing");
-  Msg(DIRECT, "  -samevisual           force same visual for graphics and GUI");
-#else
-  Msg(DIRECT, "  -fontsize int         specify the font size for the GUI (default: 12)");
-#endif
-  Msg(DIRECT, "  -alpha                enable alpha blending");
-  Msg(DIRECT, "  -notrack              don't use trackball mode for rotations");
-  Msg(DIRECT, "  -display string       specify display");
-  Msg(DIRECT, "  -perspective          set projection mode to perspective");
-#endif
-  Msg(DIRECT, "Other options:");      
-#ifndef _BLACKBOX
-  Msg(DIRECT, "  -a, -g, -m, -s, -p    start in automatic, geometry, mesh, solver or");
-  Msg(DIRECT, "                        post-processing mode (default: automatic)");
-#endif
-  Msg(DIRECT, "  -v int                set verbosity level (default: 2)");
-#ifdef _XMOTIF
-  Msg(DIRECT, "  -nothreads            disable threads");
-#endif
-  Msg(DIRECT, "  -opt \"string\"         parse string before project file");
-  Msg(DIRECT, "  -version              show version number");
-  Msg(DIRECT, "  -info                 show detailed version information");
-  Msg(DIRECT, "  -help                 show this message");
-}
-
-
-void Get_Options (int argc, char *argv[], int *nbfiles) {
-  int i=1;
-
-  // Parse session and option files
-
-  InitSymbols(); //this symbol context is local to option parsing (the
-                 //symbols will not interfere with subsequent OpenFiles)
-
-  ParseFile(CTX.sessionrc_filename);
-  ParseFile(CTX.optionsrc_filename);
-
-  // Get command line options
-
-  TheFileNameTab[0] = CTX.default_filename ;
-  *nbfiles = 0;
-  
-  while (i < argc) {
-    
-    if (argv[i][0] == '-') {
-      
-      if(!strcmp(argv[i]+1, "opt")){
-	i++;
-        if(argv[i]!=NULL) TheOptString = argv[i++];
-	else{
-          fprintf(stderr, ERROR_STR "Missing string\n");
-          exit(1);
-	}
-      }
-      else if(!strcmp(argv[i]+1, "a")){ 
-        CTX.initial_context = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "g")){ 
-        CTX.initial_context = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "m")){ 
-        CTX.initial_context = 2; i++;
-      }
-      else if(!strcmp(argv[i]+1, "s")){ 
-        CTX.initial_context = 3; i++;
-      }
-      else if(!strcmp(argv[i]+1, "p")){ 
-        CTX.initial_context = 4; i++;
-      }
-      else if(!strcmp(argv[i]+1, "0")){ 
-        CTX.batch = -1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "1")){ 
-        CTX.batch = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "2")){ 
-        CTX.batch = 2; i++;
-      }
-      else if(!strcmp(argv[i]+1, "3")){ 
-        CTX.batch = 3; i++;
-      }
-      else if(!strcmp(argv[i]+1, "extrude")){ //old extrusion mesh generator
-        CTX.mesh.oldxtrude = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "recombine")){ //old extrusion mesh generator
-        CTX.mesh.oldxtrude_recombine = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "dupli")){
-        CTX.mesh.check_duplicates = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "histogram")){ 
-        CTX.mesh.histogram = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "o")){ 
-        i++;
-        if(argv[i] != NULL) CTX.output_filename = argv[i++];
-        else {    
-          fprintf(stderr, ERROR_STR "Missing file name\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "bgm")){ 
-        i++;
-        if(argv[i] != NULL) TheBgmFileName = argv[i++];
-        else {    
-          fprintf(stderr, ERROR_STR "Missing file name\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "constrain")){ 
-	CTX.mesh.constrained_bgmesh = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "convert")){ 
-	i++;
-	CTX.terminal = 1;
-	if(argv[i] && argv[i+1]){
-	  ParseFile(argv[i]);
-	  if(List_Nbr(Post_ViewList))
-	    Write_View(1,(Post_View*)List_Pointer(Post_ViewList, 0),argv[i+1]);
-	  else
-	    fprintf(stderr, ERROR_STR "No view to convert\n");
-	}
-	else
-	  fprintf(stderr, "Usage: %s -convert view.ascii view.binary\n", argv[0]);
-	exit(1);
-      }
-      else if(!strcmp(argv[i]+1, "old")){ 
-        CTX.geom.old_circle = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "quality")){
-        i++;
-        if(argv[i]!=NULL) CTX.mesh.quality = atof(argv[i++]);
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "scale")){
-        i++;
-        if(argv[i]!=NULL) CTX.geom.scaling_factor = atof(argv[i++]);
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "meshscale")){
-        i++;
-        if(argv[i]!=NULL) CTX.mesh.scaling_factor = atof(argv[i++]);
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "rand")){
-        i++;
-        if(argv[i]!=NULL) CTX.mesh.rand_factor = atof(argv[i++]);
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "clscale")){
-        i++;
-        if(argv[i]!=NULL){
-          CTX.mesh.lc_factor = atof(argv[i++]);
-          if(CTX.mesh.lc_factor <= 0.0){
-            fprintf(stderr, ERROR_STR 
-                    "Characteristic length factor must be > 0\n");
-            exit(1);
-          }
-        }
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "smooth")){ 
-        i++;
-        if(argv[i]!=NULL) CTX.mesh.nb_smoothing = atoi(argv[i++]);
-        else{
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "degree")){  
-        i++;
-        if(argv[i]!=NULL){
-          CTX.mesh.degree = atoi(argv[i++]);
-          if(CTX.mesh.degree != 1 && CTX.mesh.degree != 2){
-            fprintf(stderr, ERROR_STR "Wrong degree\n");
-            exit(1);
-          }
-        }
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "format") ||  
-              !strcmp(argv[i]+1, "f")){  
-        i++;
-        if(argv[i]!=NULL){
-          if(!strcmp(argv[i],"msh") || 
-             !strcmp(argv[i],"MSH") || 
-             !strcmp(argv[i],"gmsh")){
-            CTX.mesh.format = FORMAT_MSH ;
-          }
-          else if(!strcmp(argv[i],"unv") ||
-                  !strcmp(argv[i],"UNV") || 
-                  !strcmp(argv[i],"ideas")){
-            CTX.mesh.format = FORMAT_UNV ;
-          }
-          else if(!strcmp(argv[i],"gref") ||
-                  !strcmp(argv[i],"GREF") || 
-                  !strcmp(argv[i],"Gref")){
-            CTX.mesh.format = FORMAT_GREF ;
-          }
-          else{
-            fprintf(stderr, ERROR_STR "Unknown mesh format\n");
-            exit(1);
-          }
-          i++;
-        }
-        else {    
-          fprintf(stderr, ERROR_STR "Missing format\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "algo")){  
-        i++;
-        if(argv[i]!=NULL){
-          if(!strcmp(argv[i],"iso"))
-            CTX.mesh.algo = DELAUNAY_OLDALGO ;
-          else if(!strcmp(argv[i],"aniso"))
-            CTX.mesh.algo = DELAUNAY_NEWALGO ;
-          else{
-            fprintf(stderr, ERROR_STR "Unknown mesh algorithm\n");
-            exit(1);
-          }
-          i++;
-        }
-        else {    
-          fprintf(stderr, ERROR_STR "Missing algorithm\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "version") || 
-              !strcmp(argv[i]+1, "-version")){
-        fprintf(stderr, "%.2f\n", GMSH_VERSION);
-        exit(1);
-      }
-      else if(!strcmp(argv[i]+1, "info") || 
-              !strcmp(argv[i]+1, "-info")){
-        fprintf(stderr, "%s%.2f\n", gmsh_version, GMSH_VERSION);
-        fprintf(stderr, "%s\n", gmsh_os);
-#if _XMOTIF
-        fprintf(stderr, "%s%s\n", gmsh_gui, XmVERSION_STRING);
-#elif _FLTK
-        fprintf(stderr, "%sFLTK %d.%d.%d\n", gmsh_gui, FL_MAJOR_VERSION, 
-		FL_MINOR_VERSION, FL_PATCH_VERSION);
-#else
-        fprintf(stderr, "%snone\n", gmsh_gui);
-#endif
-        fprintf(stderr, "%s\n", gmsh_date);
-        fprintf(stderr, "%s\n", gmsh_host);
-        fprintf(stderr, "%s\n", gmsh_packager);
-        fprintf(stderr, "%s\n", gmsh_url);
-        fprintf(stderr, "%s\n", gmsh_email);
-        exit(1) ; 
-      }
-      else if(!strcmp(argv[i]+1, "help") || 
-              !strcmp(argv[i]+1, "-help")){
-        fprintf(stderr, "%s\n", gmsh_progname);
-        fprintf(stderr, "%s\n", gmsh_copyright);
-	CTX.terminal = 1 ;
-        Print_Usage(argv[0]);
-        exit(1);
-      }
-      else if(!strcmp(argv[i]+1, "v")){  
-        i++;
-        if(argv[i]!=NULL) CTX.verbosity = atoi(argv[i++]);
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-#ifndef _BLACKBOX
-      else if(!strcmp(argv[i]+1, "noterm")){ 
-        CTX.terminal = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "term")){ 
-        CTX.terminal = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "alpha")){ 
-        CTX.alpha = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "notrack")){ 
-        CTX.useTrackball = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "flash")){ 
-        CTX.flash = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "dual")){ 
-        CTX.mesh.dual = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "samevisual")){ 
-        CTX.same_visual = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "interactive")){ 
-        CTX.mesh.interactive = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "noview")){ 
-        opt_view_visible(0, GMSH_SET, 0); i++;
-      }
-      else if(!strcmp(argv[i]+1, "plugin")){ 
-	opt_general_default_plugins(0, GMSH_SET, 1); i++;
-      }
-      else if(!strcmp(argv[i]+1, "noplugin")){ 
-	opt_general_default_plugins(0, GMSH_SET, 0); i++;
-      }
-      else if(!strcmp(argv[i]+1, "link")){ 
-        i++ ;
-        if(argv[i]!=NULL)
-	  CTX.post.link = atoi(argv[i++]);
-        else{
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "fill")){ 
-        opt_view_intervals_type(0, GMSH_SET, DRAW_POST_CONTINUOUS) ; i++;
-      }
-      else if(!strcmp(argv[i]+1, "smoothview")){ 
-	CTX.post.smooth=1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "nbiso")){ 
-        i++ ;
-        if(argv[i]!=NULL)
-	  opt_view_nb_iso(0, GMSH_SET, atoi(argv[i++]));
-        else{
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "command") || 
-              !strcmp(argv[i]+1, "c")){ 
-        CTX.command_win = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "nocommand") ||
-              !strcmp(argv[i]+1, "noc")){ 
-        CTX.command_win = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "overlay") ||
-              !strcmp(argv[i]+1, "ov")){ 
-        CTX.overlay = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "nooverlay") ||
-              !strcmp(argv[i]+1, "noov")){ 
-        CTX.overlay = CTX.geom.highlight = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "hh")){ 
-        CTX.overlay = 0 ; CTX.geom.highlight = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "perspective") ||
-              !strcmp(argv[i]+1, "p")){ 
-        CTX.ortho = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "ortho") ||
-              !strcmp(argv[i]+1, "o")){ 
-        CTX.ortho = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "threads")){
-        CTX.threads = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "nothreads")){
-        CTX.threads = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "db")){ 
-        CTX.db = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "nodb")){ 
-        CTX.db = 0; CTX.geom.highlight = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "dl")){ 
-        CTX.display_lists = 1; i++;
-      }
-      else if(!strcmp(argv[i]+1, "nodl")){ 
-        CTX.display_lists = 0; i++;
-      }
-      else if(!strcmp(argv[i]+1, "fontsize")){
-        i++;
-        if(argv[i]!=NULL){
-	  CTX.fontsize = atoi(argv[i]);
-          i++;
-	}
-        else {    
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i]+1, "display")){
-        i++;
-        if(argv[i]!=NULL){
-	  CTX.display = argv[i];
-          i++;
-	}
-        else {    
-          fprintf(stderr, ERROR_STR "Missing argument\n");
-          exit(1);
-        }
-      }
-#endif // !_BLACKBOX
-
-
-      else{
-        fprintf(stderr, "Unknown option '%s'\n", argv[i]);
-	CTX.terminal = 1 ;
-        Print_Usage(argv[0]);
-        exit(1);
-      }
-    }
-
-    else {
-      if(*nbfiles < MAX_OPEN_FILES)
-        TheFileNameTab[(*nbfiles)++] = argv[i++]; 
-      else{
-        fprintf(stderr, ERROR_STR "Too many input files\n");
-        exit(1);
-      }
-    }
-
-  }
-
-  strncpy(CTX.filename, TheFileNameTab[0], 255);
-
-}
-
diff --git a/Common/GetOptions.h b/Common/GetOptions.h
deleted file mode 100644
index d5ded2855cf26bf46770dc7889cdc6bf679631b4..0000000000000000000000000000000000000000
--- a/Common/GetOptions.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef _GET_OPTIONS_H_
-#define _GET_OPTIONS_H_
-
-extern char gmsh_progname[], gmsh_copyright[], gmsh_version[], gmsh_os[];
-extern char gmsh_date[], gmsh_host[], gmsh_packager[], gmsh_url[];
-extern char gmsh_email[], gmsh_gui[];
-
-extern char *TheFileNameTab[MAX_OPEN_FILES], *TheBgmFileName, *TheOptString;
-
-void Get_Options(int argc, char *argv[], int *nbfiles);
-void Print_Usage(char *name);
-
-#endif
diff --git a/Common/Gmsh.h b/Common/Gmsh.h
deleted file mode 100644
index ec3acf0e79846a2501a75cc417c0cde558033e2e..0000000000000000000000000000000000000000
--- a/Common/Gmsh.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _GMSH_H_
-#define _GMSH_H_
-
-/* This header should be included in any Gmsh source file. Modify it
-   only if really necessary, since it will force the whole code to be
-   rebuilt... */
-
-#undef bool
-#define bool int
-
-#undef true
-#define true  1
-
-#undef false
-#define false 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#include "Message.h"
-#include "Malloc.h"
-#include "List.h"
-#include "Tree.h"
-#include "Tools.h"
-
-#endif
diff --git a/Common/GmshUI.h b/Common/GmshUI.h
deleted file mode 100644
index 2e75a82dc7e68745c92b09e9bef9623b0ceda09e..0000000000000000000000000000000000000000
--- a/Common/GmshUI.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _GMSH_UI_H_
-#define _GMSH_UI_H_
-
-#ifdef WIN32
-#include <windows.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#endif
-
-#if _XMOTIF // X11 Motif for Unix
-
-#include <X11/keysym.h>
-#include <Xm/XmAll.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <GL/glx.h>
-#include <GLwMDrawA.h>
-
-#elif _FLTK // FLTK for both Unix and Windows
-
-#include <FL/Fl.H>
-#include <FL/gl.h>
-#include <GL/glu.h>
-
-#endif
-
-#endif
diff --git a/Common/Icon.h b/Common/Icon.h
deleted file mode 100644
index 1b35c1ddef9c32193271d44d993635e888fe6268..0000000000000000000000000000000000000000
--- a/Common/Icon.h
+++ /dev/null
@@ -1 +0,0 @@
-#define IDI_ICON   101
diff --git a/Common/Icon.ico b/Common/Icon.ico
deleted file mode 100644
index d0761decbc9dbe7e407c0b37adbbead28a395e89..0000000000000000000000000000000000000000
Binary files a/Common/Icon.ico and /dev/null differ
diff --git a/Common/Icon.rc b/Common/Icon.rc
deleted file mode 100644
index 5c885f15cfb3f5c01e38e8c3cc697ca48e198ddc..0000000000000000000000000000000000000000
--- a/Common/Icon.rc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-#include "Icon.h"
-
-IDI_ICON   ICON    DISCARDABLE     "Icon.ico"
-
diff --git a/Common/Icon.res b/Common/Icon.res
deleted file mode 100644
index 696570cb91f14508277e69aafc31db200536c7e9..0000000000000000000000000000000000000000
Binary files a/Common/Icon.res and /dev/null differ
diff --git a/Common/Iso.cpp b/Common/Iso.cpp
deleted file mode 100644
index faadba61564da2761b8cbbc897a2fb9d93ebb126..0000000000000000000000000000000000000000
--- a/Common/Iso.cpp
+++ /dev/null
@@ -1,284 +0,0 @@
-// $Id: Iso.cpp,v 1.2 2001-08-09 13:27:41 remacle Exp $
-
-#include "Gmsh.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Numeric.h"
-
-void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]);
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e                                                   */
-/* ------------------------------------------------------------------------ */
-
-double InterpolateIso(double *X, double *Y, double *Z, 
-                 double *Val, double V, int I1, int I2, 
-                 double *XI, double *YI ,double *ZI){
-  
-  if(Val[I1] == Val[I2]){
-    *XI = X[I1]; 
-    *YI = Y[I1]; 
-    *ZI = Z[I1]; 
-    return 0;
-  }
-  else{
-    double coef = (V - Val[I1])/(Val[I2]-Val[I1]);
-    *XI= coef*(X[I2]-X[I1]) + X[I1];
-    *YI= coef*(Y[I2]-Y[I1]) + Y[I1];
-    *ZI= coef*(Z[I2]-Z[I1]) + Z[I1];
-    return coef;
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  T r i a n g l e                                                         */
-/* ------------------------------------------------------------------------ */
-
-void CutTriangle1D(double *X, double *Y, double *Z, double *Val, 
-                   double V, double Vmin, double Vmax,
-                   double *Xp, double *Yp, double *Zp, int *nb){
-  
-  if(V != Vmax){
-    *nb = 0;
-    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-    if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-    if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-  }
-  else{
-    *nb = 0;
-    if((Val[0] < V && Val[1] >= V) || (Val[1] < V && Val[0] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-    if((Val[0] < V && Val[2] >= V) || (Val[2] < V && Val[0] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }       
-    if((Val[1] < V && Val[2] >= V) || (Val[2] < V && Val[1] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-  }
-
-}
-
-// Il faut refaire cette routine pour que l'orientation des elements
-// soit respectee.
-
-void CutTriangle2D(double *X, double *Y, double *Z, double *Val, 
-                   double V1, double V2, double Vmin, double Vmax,
-                   double *Xp2, double *Yp2, double *Zp2, int *Np2, double *Vp2){
-
-  int     i, io[3],j,iot,Np,Fl;
-  double  Xp[5],Yp[5],Zp[5],Vp[5];
-
-  *Np2 = 0;
-
-  for(i=0;i<3;i++) io[i] = i;
-
-  for(i=0;i<2;i++){
-    for(j=i+1;j<3;j++){
-      if(Val[io[i]]>Val[io[j]]){
-        iot = io[i];
-        io[i] = io[j];
-        io[j] = iot;
-      }
-    }
-  }
-
-  /* io[] contient un indexage des noeuds t.q. Val[io[i]] > Val[io[j]] si i > j */
-
-  if(Val[io[0]] > V2) return;
-  if(Val[io[2]] < V1) return;
-
-  if(V1 <= Val[io[0]] && Val[io[2]] <= V2){
-    memcpy(Vp2,Val,3*sizeof(double));
-    memcpy(Xp2,X,3*sizeof(double)); 
-    memcpy(Yp2,Y,3*sizeof(double)); 
-    memcpy(Zp2,Z,3*sizeof(double)); 
-    *Np2 = 3;
-    return;
-  }
-
-  Np = 0;
-  if(V1<=Val[io[0]]){
-    Vp[Np] = Val[io[0]];
-    Xp[Np] = X[io[0]]; 
-    Yp[Np] = Y[io[0]]; 
-    Zp[Np] = Z[io[0]]; 
-    Np++; Fl = 1;
-  }
-  else if(Val[io[0]] < V1 && V1 <= Val[io[1]]){
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; 
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[1],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; Fl = 1;
-  }
-  else {
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[1],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; Fl = 0;
-  }    
-
-  if(V2 == Val[io[0]]){
-    return;
-  }
-  else if((Val[io[0]]<V2) && ( V2 < Val[io[1]])){
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[1],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-  }
-  else if(V2 < Val[io[2]]){
-    if(Fl){
-      Vp[Np] = Val[io[1]];
-      Xp[Np] = X[io[1]]; 
-      Yp[Np] = Y[io[1]]; 
-      Zp[Np] = Z[io[1]];
-      Np++;
-    }
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[1],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-  }
-  else{
-    if(Fl){
-      Vp[Np] = Val[io[1]];
-      Xp[Np] = X[io[1]];
-      Yp[Np] = Y[io[1]]; 
-      Zp[Np] = Z[io[1]];
-      Np++;
-    }
-    Vp[Np] = Val[io[2]];
-    Xp[Np] = X[io[2]]; 
-    Yp[Np] = Y[io[2]]; 
-    Zp[Np] = Z[io[2]];
-    Np++;
-  }
-
-  Vp2[0] = Vp[0];
-  Xp2[0] = Xp[0]; 
-  Yp2[0] = Yp[0]; 
-  Zp2[0] = Zp[0]; 
-  *Np2 = 1;
-
-  for(i=1;i<Np;i++){
-    if((Xp[i] != Xp2[(*Np2)-1]) ||(Yp[i] != Yp2[(*Np2)-1]) ||(Zp[i] != Zp2[(*Np2)-1])){      
-      Vp2[*Np2] = Vp[i];
-      Xp2[*Np2] = Xp[i]; 
-      Yp2[*Np2] = Yp[i]; 
-      Zp2[*Np2] = Zp[i];
-      (*Np2)++;
-    }
-  }
-
-  if(Xp2[0] == Xp2[(*Np2)-1] && Yp2[0] == Yp2[(*Np2)-1] && Zp2[0] == Zp2[(*Np2)-1]){
-    (*Np2)-- ;
-  }
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  L i n e                                                                 */
-/* ------------------------------------------------------------------------ */
-
-void CutLine0D(double *X, double *Y, double *Z, double *Val, 
-               double V, double Vmin, double Vmax,
-               double *Xp, double *Yp, double *Zp, int *nb){
-  
-  *nb = 0;
-
-  if(V != Vmax){
-    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,Xp,Yp,Zp); *nb = 1;
-    }
-  }
-  else{
-    if((Val[0] < V && Val[1] >= V) || (Val[1] < V && Val[0] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,Xp,Yp,Zp); *nb = 1;
-    }
-  }
-}
-
-void CutLine1D(double *X, double *Y, double *Z, double *Val, 
-               double V1, double V2, double Vmin, double Vmax,
-               double *Xp2, double *Yp2, double *Zp2, int *Np2, double *Vp2){
-
-  int io[2];
-
-  if(Val[0]<Val[1]){
-    io[0] = 0;
-    io[1] = 1;
-  }
-  else{
-    io[0] = 1;
-    io[1] = 0;
-  }
-
-  /* io[] contient un indexage des noeuds t.q. Val[io[i]] > Val[io[j]] si i > j */
-
-  *Np2 = 0;
-
-  if(Val[io[0]] > V2) return;
-  if(Val[io[1]] < V1) return;
-
-  *Np2 = 2;
-
-  if(V1 <= Val[io[0]] && Val[io[1]] <= V2){
-    memcpy(Vp2,Val,2*sizeof(double));
-    memcpy(Xp2,X,2*sizeof(double)); 
-    memcpy(Yp2,Y,2*sizeof(double)); 
-    memcpy(Zp2,Z,2*sizeof(double)); 
-    return;
-  }
-
-  if(V1<=Val[io[0]]){
-    Vp2[0] = Val[io[0]];
-    Xp2[0] = X[io[0]]; 
-    Yp2[0] = Y[io[0]]; 
-    Zp2[0] = Z[io[0]]; 
-  }
-  else{
-    Vp2[0] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[1],&Xp2[0],&Yp2[0],&Zp2[0]);
-  }
-
-  if(V2>=Val[io[1]]){
-    Vp2[1] = Val[io[1]];
-    Xp2[1] = X[io[1]]; 
-    Yp2[1] = Y[io[1]]; 
-    Zp2[1] = Z[io[1]]; 
-  }
-  else{
-    Vp2[1] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[1],&Xp2[1],&Yp2[1],&Zp2[1]);
-  }
-
-}
-
-void gradSimplex (double *x, double *y, double *z, double *v, double *grad){
-  /*
-    p = p1 * (1-u-v-w) + p2 u + p3 v + p4 w
-   */
-
-  double mat[3][3];
-  double det,b[3];
-  mat[0][0] = x[1]-x[0];
-  mat[1][0] = x[2]-x[0];
-  mat[2][0] = x[3]-x[0];
-  mat[0][1] = y[1]-y[0];
-  mat[1][1] = y[2]-y[0];
-  mat[2][1] = y[3]-y[0];
-  mat[0][2] = z[1]-z[0];
-  mat[1][2] = z[2]-z[0];
-  mat[2][2] = z[3]-z[0];
-  b[0] = v[1]-v[0];
-  b[1] = v[2]-v[0];
-  b[2] = v[3]-v[0];
-  sys3x3 (mat, b, grad, &det); 
-}
diff --git a/Common/Iso.h b/Common/Iso.h
deleted file mode 100644
index 6ac4c4d2b08d19a261038d4b7e4f5f43d2e99089..0000000000000000000000000000000000000000
--- a/Common/Iso.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _ISO_H_
-#define _ISO_H_
-
-void gradSimplex (double *x, double *y, double *z, double *v, double *grad);
-
-void CutTriangle1D (double *X, double *Y, double *Z, double *Val,
-                    double V, double Vmin, double Vmax,
-                    double *Xp, double *Yp, double *Zp, int *nb);
-
-void CutTriangle2D (double *X, double *Y, double *Z, double *Val,
-                    double V1, double V2, double Vmin, double Vmax,
-                    double *Xp, double *Yp, double *Zp, int *nb,
-                    double *value);
-
-void CutLine0D (double *X, double *Y, double *Z, double *Val,
-                double V, double Vmin, double Vmax,
-                double *Xp, double *Yp, double *Zp, int *nb);
-
-void CutLine1D (double *X, double *Y, double *Z, double *Val,
-                double V1, double V2, double Vmin, double Vmax,
-                double *Xp, double *Yp, double *Zp, int *nb,
-                double *value);
-
-double InterpolateIso(double *X, double *Y, double *Z, 
-		      double *Val, double V, int I1, int I2, 
-		      double *XI, double *YI ,double *ZI);
-  
-#endif
diff --git a/Common/Makefile b/Common/Makefile
deleted file mode 100644
index 48702d8144a67d1317f6bdfa9f8924d766aa095f..0000000000000000000000000000000000000000
--- a/Common/Makefile
+++ /dev/null
@@ -1,103 +0,0 @@
-# $Id: Makefile,v 1.26 2001-08-11 23:32:17 geuzaine Exp $
-#
-# Makefile for "libCommon.a"
-#
-
-.IGNORE:
-
-CC      = c++
-AR      = ar ruvs
-RANLIB  = ranlib
-RM      = rm
-
-LIB     = ../lib/libCommon.a
-INCLUDE = -I../includes -I../Common -I../DataStr -I../Geo -I../Graphics\
-          -I../Mesh -I../Parser -I../Motif -I../Fltk
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = -D_FLTK
-
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = -I/usr/X11R6/LessTif/Motif1.2/include
-
-RMFLAGS = -f
-CFLAGS  = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
-          $(GL_INCLUDE) $(GUI_INCLUDE)
-
-SRC =  	Context.cpp\
-        Views.cpp\
-        Iso.cpp\
-        Options.cpp\
-        GetOptions.cpp\
-        Timer.cpp\
-        ColorTable.cpp\
-        Numeric.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ)
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-res:
-	windres Icon.rc -O coff Icon.res
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Context.o: Context.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Context.h Options.h \
- DefaultOptions.h trackball.c trackball.h
-Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h Numeric.h Views.h ColorTable.h Context.h Options.h
-Iso.o: Iso.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Numeric.h
-Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Context.h Options.h \
- ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
- ../Fltk/Colorbar_Window.h
-GetOptions.o: GetOptions.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h GmshUI.h GmshVersion.h Numeric.h Context.h \
- Options.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h Views.h ColorTable.h ../Parser/OpenFile.h \
- ../Parser/Parser.h
-Timer.o: Timer.cpp
-ColorTable.o: ColorTable.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h ColorTable.h Context.h
-Numeric.o: Numeric.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h Numeric.h
diff --git a/Common/Message.h b/Common/Message.h
deleted file mode 100644
index a4b616e3fb0d0393ad1ed40d3fd931f47cac782d..0000000000000000000000000000000000000000
--- a/Common/Message.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef _MESSAGE_H_
-#define _MESSAGE_H_
-
-#include <stdarg.h>
-
-#define FATAL          1  // Fatal error (causes Gmsh to exit)
-#define FATAL1         2  // First part of a multiline FATAL message 
-#define FATAL2         3  // Middle part of a multiline FATAL message
-#define FATAL3         4  // Last part of a multiline FATAL message  
-
-#define GERROR         5  // Error (but Gmsh can live with it)
-#define GERROR1        6  // First part of a multiline ERROR message 
-#define GERROR2        7  // Middle part of a multiline ERROR message
-#define GERROR3        8  // Last part of a multiline ERROR message  
-
-#define WARNING        9  // Warning
-#define WARNING1      10  // First part of a multiline WARNING message 
-#define WARNING2      11  // Middle part of a multiline WARNING message
-#define WARNING3      12  // Last part of a multiline WARNING message  
-
-#define INFO          13  // Long informations
-#define INFO1         14  // First part of a multiline INFO message 
-#define INFO2         15  // Middle part of a multiline INFO message
-#define INFO3         16  // Last part of a multiline INFO message  
-
-#define DEBUG         17  // Long debug information
-#define DEBUG1        18  // First part of a multiline DEBUG message 
-#define DEBUG2        19  // Middle part of a multiline DEBUG message
-#define DEBUG3        20  // Last part of a multiline DEBUG message  
-
-#define STATUS1       21  // Small information in status bar (left)
-#define STATUS2       22  // Small interaction in status bar (middle)
-#define STATUS3       23  // Small interaction in status bar (right)
-
-#define STATUS1N      24  // Same as STATUS1, but not going into the log file
-#define STATUS2N      25  // Same as STATUS2, but not going into the log file
-#define STATUS3N      26  // Same as STATUS3, but not going into the log file
-
-#define PARSER_ERROR  27  // Error during syntax parsing
-#define PARSER_INFO   28  // Info during syntax parsing
-#define LOG_INFO      29  // Info put only in the logfile
-
-#define DIRECT        30  // Direct message (no special formatting)
-
-#define FATAL_STR          "Fatal Error : "
-#define FATAL_NIL          "            : "
-#define ERROR_STR          "Error : "
-#define ERROR_NIL          "      : "
-#define WARNING_STR        "Warning : "
-#define WARNING_NIL        "        : "
-#define INFO_STR           "Info : "
-#define INFO_NIL           "     : "
-#define DEBUG_STR          "Debug : "
-#define DEBUG_NIL          "      : "
-#define STATUS_STR         "Info : "
-#define PARSER_ERROR_STR   "Parse Error : "
-#define PARSER_INFO_STR    "Parse Info : "
-
-void   Signal (int signum);
-void   Msg (int level, char *fmt, ...);
-double Cpu (void);
-void   Progress(int);
-void   Exit(int);
-void   AddALineInTheEditGeometryForm (char* line);
-
-#endif
diff --git a/Common/Numeric.cpp b/Common/Numeric.cpp
deleted file mode 100644
index aca50feb50232fe10c419f3cbd79f1da809887b1..0000000000000000000000000000000000000000
--- a/Common/Numeric.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-// $Id: Numeric.cpp,v 1.1 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-
-// this file should contain only purely numerical routines (that do
-// not depend on any Gmsh structures)
-
-double myatan2 (double a, double b){
-  if (a == 0.0 && b == 0)
-    return 0.0;
-  return atan2 (a, b);
-}
-
-double myacos (double a){
-  if (a == 0)
-    return Pi * 0.5;
-  if (a == 1)
-    return 0.0;
-  return acos (a);
-}
-
-void prodve (double a[3], double b[3], double c[3]){
-  c[2] = a[0] * b[1] - a[1] * b[0];
-  c[1] = -a[0] * b[2] + a[2] * b[0];
-  c[0] = a[1] * b[2] - a[2] * b[1];
-}
-
-void prosca (double a[3], double b[3], double *c){
-  *c = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
-}
-
-void norme (double a[3]){
-  double mod;
-  mod = sqrt (a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
-  if (mod == 0.0)
-    return;
-  a[0] /= mod;
-  a[1] /= mod;
-  a[2] /= mod;
-}
-
-int sys2x2 (double mat[2][2], double b[2], double res[2]){
-  double det, ud, norm;
-  int i;
-
-  norm = DSQR (mat[0][0]) + DSQR (mat[1][1]) + DSQR (mat[0][1]) + DSQR (mat[1][0]);
-  det = mat[0][0] * mat[1][1] - mat[1][0] * mat[0][1];
-
-  // TOLERANCE ! WARNING WARNING
-  if (norm == 0.0 || fabs (det) / norm < 1.e-07){
-    Msg(DEBUG, "Assuming 2x2 matrix is singular (det/norm == %g)", fabs(det)/norm);
-    res[0] = res[1] = 0.0 ;
-    return 0;
-  }
-  ud = 1. / det;
-
-  res[0] = b[0] * mat[1][1] - mat[0][1] * b[1];
-  res[1] = mat[0][0] * b[1] - mat[1][0] * b[0];
-
-  for (i = 0; i < 2; i++)
-    res[i] *= ud;
-  return (1);
-}
-
-int sys3x3 (double mat[3][3], double b[3], double res[3], double *det){
-  double ud;
-  int i;
-
-  *det = mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -
-    mat[0][1] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]) +
-    mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);
-
-  if (*det == 0.0){
-    res[0] = res[1] = res[2] = 0.0 ;
-    return (0);
-  }
-
-  ud = 1. / (*det);
-
-  res[0] = b[0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -
-    mat[0][1] * (b[1] * mat[2][2] - mat[1][2] * b[2]) +
-    mat[0][2] * (b[1] * mat[2][1] - mat[1][1] * b[2]);
-
-  res[1] = mat[0][0] * (b[1] * mat[2][2] - mat[1][2] * b[2]) -
-    b[0] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]) +
-    mat[0][2] * (mat[1][0] * b[2] - b[1] * mat[2][0]);
-
-  res[2] = mat[0][0] * (mat[1][1] * b[2] - b[1] * mat[2][1]) -
-    mat[0][1] * (mat[1][0] * b[2] - b[1] * mat[2][0]) +
-    b[0] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);
-
-  for (i = 0; i < 3; i++)
-    res[i] *= ud;
-  return (1);
-
-}
-
-int sys3x3_with_tol (double mat[3][3], double b[3], double res[3], double *det){
-  int out;
-  double norm;
-
-  out = sys3x3(mat,b,res,det);
-  norm = 
-    DSQR (mat[0][0]) + DSQR (mat[0][1]) + DSQR (mat[0][2]) + 
-    DSQR (mat[1][0]) + DSQR (mat[1][1]) + DSQR (mat[1][2]) + 
-    DSQR (mat[2][0]) + DSQR (mat[2][1]) + DSQR (mat[2][2]) ;
-
-  // TOLERANCE ! WARNING WARNING
-  if (norm == 0.0 || fabs (*det) / norm < 1.e-12){
-    Msg(DEBUG, "Assuming 3x3 matrix is singular (det/norm == %g)", fabs(*det)/norm);
-    res[0] = res[1] = res[2] = 0.0 ;
-    return 0;
-  }
-
-  return out ;
-}
-
-int det3x3 (double mat[3][3], double *det){
-  *det = mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -
-    mat[0][1] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]) +
-    mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);
-  return 1;
-}
-
-int inv3x3 (double mat[3][3], double inv[3][3], double *det){
-  double ud;
-
-  *det = mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -
-    mat[0][1] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]) +
-    mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);
-
-  if (*det == 0.0)
-    return (0);
-
-  ud = 1. / (*det);
-
-  inv[0][0] = ud * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]);
-  inv[0][1] = -ud * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]);
-  inv[0][2] = ud * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);
-  inv[1][0] = -ud * (mat[0][1] * mat[2][2] - mat[0][2] * mat[2][1]);
-  inv[1][1] = ud * (mat[0][0] * mat[2][2] - mat[0][2] * mat[2][0]);
-  inv[1][2] = -ud * (mat[0][0] * mat[2][1] - mat[0][1] * mat[2][0]);
-  inv[2][0] = ud * (mat[0][1] * mat[1][2] - mat[0][2] * mat[1][1]);
-  inv[2][1] = -ud * (mat[0][0] * mat[1][2] - mat[0][2] * mat[1][0]);
-  inv[2][2] = ud * (mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]);
-  return (1);
-
-}
-
-double angle_02pi (double A3){
-  double DP = 2 * Pi;
-  while (A3 > DP || A3 < 0.){
-    if (A3 > 0)
-      A3 -= DP;
-    else
-      A3 += DP;
-  }
-  return A3;
-}
-
diff --git a/Common/Numeric.h b/Common/Numeric.h
deleted file mode 100644
index 7d00a54e852c54ab2e3bc60cf21ac772a5f4837a..0000000000000000000000000000000000000000
--- a/Common/Numeric.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef _NUMERIC_H_
-#define _NUMERIC_H_
-
-#include <math.h>
-
-#define RADTODEG      57.295779513082321
-#define RacineDeDeux  1.4142135623730950
-#define RacineDeTrois 1.7320508075688773
-#define Pi            3.1415926535897932
-#define Deux_Pi       6.2831853071795865
-
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#define MAX(a,b) (((a)<(b))?(b):(a))
-#define SQR(a)   ((a)*(a))
-
-#define IMIN MIN
-#define LMIN MIN
-#define FMIN MIN
-#define DMIN MIN
-
-#define IMAX MAX
-#define LMAX MAX
-#define FMAX MAX
-#define DMAX MAX
-
-#define DSQR SQR
-#define FSQR SQU
-
-#define THRESHOLD(a,b,c) (((a)>(c))?(c):((a)<(b)?(b):(a)))
-
-#define myhypot(a,b) (sqrt((a)*(a)+(b)*(b)))
-#define sign(x)      (((x)>=0)?1:-1)
-#define Pred(x)      ((x)->prev)
-#define Succ(x)      ((x)->next)
-#define square(x)    ((x)*(x))
-
-double myatan2 (double a, double b);
-double myacos (double a);
-void prodve (double a[3], double b[3], double c[3]);
-void prosca (double a[3], double b[3], double *c);
-void norme (double a[3]);
-int sys2x2 (double mat[2][2], double b[2], double res[2]);
-int sys3x3 (double mat[3][3], double b[3], double res[3], double *det);
-int sys3x3_with_tol (double mat[3][3], double b[3], double res[3], double *det);
-int det3x3 (double mat[3][3], double *det);
-int inv3x3 (double mat[3][3], double inv[3][3], double *det);
-double angle_02pi (double A3);
-
-#endif
diff --git a/Common/Options.cpp b/Common/Options.cpp
deleted file mode 100644
index d76a6704002974a0c42af182927b9cce97007af9..0000000000000000000000000000000000000000
--- a/Common/Options.cpp
+++ /dev/null
@@ -1,2402 +0,0 @@
-// $Id: Options.cpp,v 1.39 2001-08-04 01:16:58 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "Options.h"
-
-extern Context_T   CTX ;
-
-#ifdef _FLTK
-#include "Solvers.h"
-#include "GUI.h"
-extern GUI        *WID ;
-#endif
-
-// ************** General routines ****************************************
-
-void Init_Options(int num){
-  char *tmp;
-
-  // Home directory
-#if !defined(WIN32) // Some WinNT systems have bad HOME variables...
-  if((tmp = getenv("HOME")))      strcpy(CTX.home_dir, tmp);
-  else 
-#endif
-  if((tmp = getenv("TMP")))       strcpy(CTX.home_dir, tmp);
-  else if((tmp = getenv("TEMP"))) strcpy(CTX.home_dir, tmp);
-  else                            strcpy(CTX.home_dir, "");
-  if(strlen(CTX.home_dir)){
-#if defined(WIN32) && !defined(__CYGWIN__)
-    strcat(CTX.home_dir, "\\");
-#else
-    strcat(CTX.home_dir, "/");
-#endif
-  }
-
-  // Reference view storing default options
-  Post_ViewReference = (Post_View*)Malloc(sizeof(Post_View)) ;
-  Post_ViewReference->CT.size = 255;
-  Post_ViewReference->CT.ipar[COLORTABLE_MODE] = COLORTABLE_RGB;
-  ColorTable_InitParam(1, &Post_ViewReference->CT, 1, 1);
-  ColorTable_Recompute(&Post_ViewReference->CT, 1, 1);
-
-  // Default string options
-  Set_DefaultStringOptions(num, GeneralOptions_String);
-  Set_DefaultStringOptions(num, GeometryOptions_String);
-  Set_DefaultStringOptions(num, MeshOptions_String);
-  Set_DefaultStringOptions(num, SolverOptions_String);
-  Set_DefaultStringOptions(num, PostProcessingOptions_String);
-  Set_DefaultStringOptions(num, ViewOptions_String);
-  Set_DefaultStringOptions(num, PrintOptions_String);
-
-  // Default number options
-  Set_DefaultNumberOptions(num, GeneralOptions_Number);
-  Set_DefaultNumberOptions(num, GeometryOptions_Number);
-  Set_DefaultNumberOptions(num, MeshOptions_Number);
-  Set_DefaultNumberOptions(num, SolverOptions_Number);
-  Set_DefaultNumberOptions(num, PostProcessingOptions_Number);
-  Set_DefaultNumberOptions(num, ViewOptions_Number);
-  Set_DefaultNumberOptions(num, PrintOptions_Number);
-
-  // Default color options
-  Set_DefaultColorOptions(num, GeneralOptions_Color, CTX.color_scheme);
-  Set_DefaultColorOptions(num, GeometryOptions_Color, CTX.color_scheme);
-  Set_DefaultColorOptions(num, MeshOptions_Color, CTX.color_scheme);
-  Set_DefaultColorOptions(num, SolverOptions_Color, CTX.color_scheme);
-  Set_DefaultColorOptions(num, PostProcessingOptions_Color, CTX.color_scheme);
-  Set_DefaultColorOptions(num, ViewOptions_Color, CTX.color_scheme);
-  Set_DefaultColorOptions(num, PrintOptions_Color, CTX.color_scheme);
-
-  // The following defaults cannot be set by the user 
-  CTX.batch = 0 ;
-  CTX.output_filename = NULL ;
-  CTX.expose = 0 ;
-  CTX.stream = TO_SCREEN ;
-  CTX.gl_fontheight = 12;
-  CTX.gl_fontascent = 8;
-  CTX.lc = 1.0 ;
-  CTX.viewport[0] = CTX.viewport[1] = 0 ;
-  CTX.min[0] = CTX.min[1] = CTX.min[2] = 0.0 ;
-  CTX.max[0] = CTX.max[1] = CTX.max[2] = 1.0 ;
-  CTX.range[0] = CTX.range[1] = CTX.range[2] = 1.0 ;
-  CTX.vxmin = CTX.vymin = CTX.vxmax = CTX.vymax = 0. ;
-  CTX.render_mode = GMSH_RENDER ;
-  CTX.pixel_equiv_x = CTX.pixel_equiv_y = 0. ; 
-  CTX.geom.vis_type = 0 ;
-  CTX.geom.level = ELEMENTARY ;
-  CTX.mesh.vis_type = 0 ;
-  CTX.mesh.draw = 1 ;  
-  CTX.post.draw = 1 ;
-  CTX.threads_lock = 0 ; //very primitive locking during mesh generation
-  CTX.mesh.histogram = 0 ;
-  CTX.mesh.oldxtrude = CTX.mesh.oldxtrude_recombine = 0; //old extrusion mesh generator
-  CTX.mesh.check_duplicates = 0; //check for duplicate nodes in Read_Mesh
-
-  // For motif versions only:
-  CTX.overlay = 1 ;
-  CTX.command_win = 0 ;
-  CTX.threads = 1 ;
-  CTX.font = "-*-helvetica-medium-r-*-*-*-*-*-*-*-*-*-*" ;
-  CTX.fixed_font = "fixed" ;
-}
-
-void Init_Options_GUI(int num){
-  Set_StringOptions_GUI(num, GeneralOptions_String);
-  Set_StringOptions_GUI(num, GeometryOptions_String);
-  Set_StringOptions_GUI(num, MeshOptions_String);
-  Set_StringOptions_GUI(num, SolverOptions_String);
-  Set_StringOptions_GUI(num, PostProcessingOptions_String);
-  Set_StringOptions_GUI(num, PrintOptions_String);
-      
-  Set_NumberOptions_GUI(num, GeneralOptions_Number);
-  Set_NumberOptions_GUI(num, GeometryOptions_Number);
-  Set_NumberOptions_GUI(num, MeshOptions_Number);
-  Set_NumberOptions_GUI(num, SolverOptions_Number);
-  Set_NumberOptions_GUI(num, PostProcessingOptions_Number);
-  Set_NumberOptions_GUI(num, PrintOptions_Number);
-
-  Set_ColorOptions_GUI(num, GeneralOptions_Color);
-  Set_ColorOptions_GUI(num, GeometryOptions_Color);
-  Set_ColorOptions_GUI(num, MeshOptions_Color);
-  Set_ColorOptions_GUI(num, SolverOptions_Color);
-  Set_ColorOptions_GUI(num, PostProcessingOptions_Color);
-  Set_ColorOptions_GUI(num, PrintOptions_Color);
-}
-
-void Print_OptionCategory(int level, char *cat, FILE *file){
-  if(level & GMSH_SESSIONRC) return ;
-  if(file){
-    fprintf(file, "//\n");
-    fprintf(file, "// %s\n", cat);
-    fprintf(file, "//\n");
-  }
-  else{
-    Msg(DIRECT, "//");
-    Msg(DIRECT, "// %s", cat);
-    Msg(DIRECT, "//");
-  }
-}
-
-void Print_Options(int num, int level, char *filename){
-  FILE *file;
-  char tmp[256];
-  int i ;
-  
-  if(filename){
-    file = fopen(filename,"w");
-    if(!file){
-      Msg(WARNING, "Unable to open file '%s'", filename);
-      return;
-    }
-  }
-  else
-    file = NULL ;
-
-  if((level & GMSH_SESSIONRC) && file){
-    fprintf(file, "// Gmsh Session File\n");
-    fprintf(file, "//\n");
-    fprintf(file, "// This file takes session specific info (that is info\n");
-    fprintf(file, "// you want to keep between two Gmsh sessions). You are\n");
-    fprintf(file, "// not supposed to edit it manually, but of course you\n");
-    fprintf(file, "// can do. This file will be entirely rewritten every time\n");
-    fprintf(file, "// you quit Gmsh if the option 'General.SaveSession' is\n");
-    fprintf(file, "// set. If this file isn't found, defaults are used.\n");
-    fprintf(file, "//\n");
-  }
-
-  if((level & GMSH_OPTIONSRC) && file){
-    fprintf(file, "// Gmsh Option File\n");
-    fprintf(file, "//\n");
-    fprintf(file, "// This file takes configuration options (preferences) that\n");
-    fprintf(file, "// should be loaded each time Gmsh is launched. You can create\n");
-    fprintf(file, "// this file by hand, or let Gmsh generate it for you (with\n");
-    fprintf(file, "// the 'Options->Save options now' menu button). This file can\n");
-    fprintf(file, "// also be automatically regenerated every time you quit\n");
-    fprintf(file, "// Gmsh if the option 'General.SaveOptions' is set. If\n");
-    fprintf(file, "// this file isn't found, defaults are used.\n");
-    fprintf(file, "//\n");
-  }
-
-  Print_OptionCategory(level, "General options", file);
-  Print_StringOptions(num, level, GeneralOptions_String, "General.", file);
-  Print_NumberOptions(num, level, GeneralOptions_Number, "General.", file);
-  Print_ColorOptions(num, level, GeneralOptions_Color, "General.", file);
-  Print_OptionCategory(level, "Geometry options", file);
-  Print_StringOptions(num, level, GeometryOptions_String, "Geometry.", file);
-  Print_NumberOptions(num, level, GeometryOptions_Number, "Geometry.", file);
-  Print_ColorOptions(num, level, GeometryOptions_Color, "Geometry.", file);
-  Print_OptionCategory(level, "Mesh options", file);
-  Print_StringOptions(num, level, MeshOptions_String, "Mesh.", file);
-  Print_NumberOptions(num, level, MeshOptions_Number, "Mesh.", file);
-  Print_ColorOptions(num, level, MeshOptions_Color, "Mesh.", file);
-  Print_OptionCategory(level, "Solver options", file);
-  Print_StringOptions(num, level, SolverOptions_String, "Solver.", file);
-  Print_NumberOptions(num, level, SolverOptions_Number, "Solver.", file);
-  Print_ColorOptions(num, level, SolverOptions_Color, "Solver.", file);
-  Print_OptionCategory(level, "Post-processing options", file);
-  Print_StringOptions(num, level, PostProcessingOptions_String, "PostProcessing.", file);
-  Print_NumberOptions(num, level, PostProcessingOptions_Number, "PostProcessing.", file);
-  Print_ColorOptions(num, level, PostProcessingOptions_Color, "PostProcessing.", file);
-  Print_OptionCategory(level, "View options", file);
-  if(level & GMSH_FULLRC){
-    for(i=0; i<List_Nbr(Post_ViewList) ; i++){
-      sprintf(tmp, "View[%d].", i);
-      Print_StringOptions(i, level, ViewOptions_String, tmp, file);
-      Print_NumberOptions(i, level, ViewOptions_Number, tmp, file);
-      Print_ColorOptions(i, level, ViewOptions_Color, tmp, file);
-      strcat(tmp, "ColorTable");
-      Print_ColorTable(i, tmp, file);
-    }
-  }
-  else if(level & GMSH_OPTIONSRC){
-    Print_StringOptions(num, level, ViewOptions_String, "View.", file);
-    Print_NumberOptions(num, level, ViewOptions_Number, "View.", file);
-    Print_ColorOptions(num, level, ViewOptions_Color, "View.", file);
-    Print_ColorTable(num, "View.ColorTable", file);
-  }
-  Print_OptionCategory(level, "Print options", file);
-  Print_StringOptions(num, level, PrintOptions_String, "Print.", file);
-  Print_NumberOptions(num, level, PrintOptions_Number, "Print.", file);
-  Print_ColorOptions(num, level, PrintOptions_Color, "Print.", file);
-
-  if(filename){
-    if((level & GMSH_OPTIONSRC) || (level & GMSH_FULLRC)){
-      Msg(INFO, "Options output complete '%s'", filename);
-      Msg(STATUS2, "Wrote '%s'", filename);
-    }
-    fclose(file);
-  }
-}
-
-// ************** General routines for string options ************************
-
-StringXString * Get_StringOptionCategory(char * cat){
-  if     (!strcmp(cat,"General"))        return GeneralOptions_String ;
-  else if(!strcmp(cat,"Geometry"))       return GeometryOptions_String ;
-  else if(!strcmp(cat,"Mesh"))           return MeshOptions_String ;
-  else if(!strcmp(cat,"Solver"))         return SolverOptions_String ;
-  else if(!strcmp(cat,"PostProcessing")) return PostProcessingOptions_String ;
-  else if(!strcmp(cat,"View"))           return ViewOptions_String ;
-  else if(!strcmp(cat,"Print"))          return PrintOptions_String ;
-  else                                   return NULL ;
-}
-
-void Set_DefaultStringOptions(int num, StringXString s[]){
-  int i = 0;
-  while(s[i].str){
-    s[i].function(num, GMSH_SET, s[i].def) ;
-    i++;
-  }
-}
-
-void Set_StringOptions_GUI(int num, StringXString s[]){
-  int i = 0;
-  while(s[i].str){
-    s[i].function(num, GMSH_GUI, 0) ;
-    i++;
-  }
-}
-
-void * Get_StringOption(char *str, StringXString s[]){
-  int i = 0;
-  while ((s[i].str != NULL) && (strcmp(s[i].str, str))) i++ ;
-  if(!s[i].str)
-    return NULL;
-  else
-    return (void*)s[i].function;
-}
-
-void Print_StringOptions(int num, int level, StringXString s[], char *prefix, FILE *file){
-  int i = 0;
-  char tmp[1024];
-  while(s[i].str){
-    if(s[i].level & level){
-      sprintf(tmp, "%s%s = \"%s\"; // %s", prefix, 
-	      s[i].str, s[i].function(num, GMSH_GET, NULL), s[i].help) ;
-      if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, "%s", tmp);
-    }
-    i++;
-  }
-}
-
-// ************** General routines for numeric options ************************
-
-StringXNumber * Get_NumberOptionCategory(char * cat){
-  if     (!strcmp(cat,"General"))        return GeneralOptions_Number ;
-  else if(!strcmp(cat,"Geometry"))       return GeometryOptions_Number ;
-  else if(!strcmp(cat,"Mesh"))           return MeshOptions_Number ;
-  else if(!strcmp(cat,"Solver"))         return SolverOptions_Number ;
-  else if(!strcmp(cat,"PostProcessing")) return PostProcessingOptions_Number ;
-  else if(!strcmp(cat,"View"))           return ViewOptions_Number ;
-  else if(!strcmp(cat,"Print"))          return PrintOptions_Number ;
-  else                                   return NULL ;
-}
-
-void Set_DefaultNumberOptions(int num, StringXNumber s[]){
-  int i = 0;
-  while(s[i].str){
-    s[i].function(num, GMSH_SET, s[i].def) ;
-    i++;
-  }
-}
-
-void Set_NumberOptions_GUI(int num, StringXNumber s[]){
-  int i = 0;
-  while(s[i].str){
-    s[i].function(num, GMSH_GUI, 0) ;
-    i++ ;
-  }
-}
-
-void * Get_NumberOption(char *str, StringXNumber s[]){
-  int i = 0;
-
-  while ((s[i].str != NULL) && (strcmp(s[i].str, str))) i++ ;
-  if(!s[i].str)
-    return NULL;
-  else{
-    return (void*)s[i].function;
-  }
-}
-
-void Print_NumberOptions(int num, int level, StringXNumber s[], char *prefix, FILE *file){
-  int i = 0;
-  char tmp[1024];
-  while(s[i].str){
-    if(s[i].level & level){
-      sprintf(tmp, "%s%s = %g; // %s", prefix, 
-	      s[i].str, s[i].function(num, GMSH_GET, 0), s[i].help);
-      if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, tmp);
-    }
-    i++;
-  }
-}
-
-// ************** General routines for color options ************************
-
-StringXColor * Get_ColorOptionCategory(char * cat){
-  if     (!strcmp(cat,"General"))        return GeneralOptions_Color ;
-  else if(!strcmp(cat,"Geometry"))       return GeometryOptions_Color ;
-  else if(!strcmp(cat,"Mesh"))           return MeshOptions_Color ;
-  else if(!strcmp(cat,"Solver"))         return SolverOptions_Color ;
-  else if(!strcmp(cat,"PostProcessing")) return PostProcessingOptions_Color ;
-  else if(!strcmp(cat,"View"))           return ViewOptions_Color ;
-  else if(!strcmp(cat,"Print"))          return PrintOptions_Color ;
-  else                                   return NULL ;
-}
-
-void Set_DefaultColorOptions(int num, StringXColor s[], int scheme){
-  int i = 0;
-  switch(scheme){
-  case 0 : 
-    while(s[i].str){
-      s[i].function(num, GMSH_SET, s[i].def1) ; 
-      i++;
-    }
-    break;
-  case 1 : 
-    while(s[i].str){ 
-      s[i].function(num, GMSH_SET, s[i].def2) ;
-      i++;
-    }
-    break;
-  case 2 : 
-    while(s[i].str){ 
-      s[i].function(num, GMSH_SET, s[i].def3) ; 
-      i++;
-    }
-    break;
-  }
-}
-
-void Set_ColorOptions_GUI(int num, StringXColor s[]){
-  int i = 0;
-  while(s[i].str){
-    s[i].function(num, GMSH_GUI, 0) ;
-    i++;
-  }
-}
-
-void * Get_ColorOption(char *str, StringXColor s[]) {
-  int i = 0;
-  while ((s[i].str != NULL) && (strcmp(s[i].str, str))) i++ ;
-  if(!s[i].str)
-    return NULL;
-  else
-    return (void*)s[i].function;
-}
-
-void Print_ColorOptions(int num, int level, StringXColor s[], char *prefix, FILE *file){
-  int i = 0;
-  char tmp[1024];
-  while(s[i].str){
-    if(s[i].level & level){
-      sprintf(tmp, "%sColor.%s = {%d,%d,%d}; // %s", 
-	      prefix, s[i].str,
-	      UNPACK_RED  (s[i].function(num, GMSH_GET, 0)),
-	      UNPACK_GREEN(s[i].function(num, GMSH_GET, 0)),
-	      UNPACK_BLUE (s[i].function(num, GMSH_GET, 0)),
-	      s[i].help);
-      if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, tmp);
-    }
-    i++;
-  }
-}
-
-int Get_ColorForString(StringX4Int SX4I[], int alpha, 
-		       char * str, int * FlagError) {
-  int  i = 0 ;
-  while ((SX4I[i].str != NULL) && (strcmp(SX4I[i].str, str)))  i++ ;
-  *FlagError = (SX4I[i].str == NULL)? 1 : 0 ;
-  if(alpha > 0)
-    return PACK_COLOR(SX4I[i].int1,SX4I[i].int2,SX4I[i].int3,alpha) ;
-  else
-    return PACK_COLOR(SX4I[i].int1,SX4I[i].int2,SX4I[i].int3,SX4I[i].int4) ;
-}
-
-
-
-
-
-// ************** String option routines ****************************
-
-#define GET_VIEW(error_val)						\
-  Post_View *v;								\
-  if(!Post_ViewList)							\
-    v = Post_ViewReference ;						\
-  else{									\
-    if(!(v = (Post_View*)List_Pointer_Test(Post_ViewList, num))){	\
-      Msg(WARNING, "View[%d] does not exist", num) ;			\
-      return (error_val) ;						\
-    }									\
-  }
-
-char * opt_general_display(OPT_ARGS_STR){
-  if(action & GMSH_SET) CTX.display = val;
-  return CTX.display;
-}
-char * opt_general_default_filename(OPT_ARGS_STR){
-  if(action & GMSH_SET) CTX.default_filename = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_input[0]->value(CTX.default_filename);
-#endif
-  return CTX.default_filename;
-}
-char * opt_general_tmp_filename(OPT_ARGS_STR){
-  if(action & GMSH_SET) CTX.tmp_filename = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_input[1]->value(CTX.tmp_filename);
-#endif
-  return CTX.tmp_filename;
-}
-char * opt_general_error_filename(OPT_ARGS_STR){
-  if(action & GMSH_SET) CTX.error_filename = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_input[2]->value(CTX.error_filename);
-#endif
-  return CTX.error_filename;
-}
-char * opt_general_session_filename(OPT_ARGS_STR){
-  if(action & GMSH_SET){
-    CTX.session_filename = val;
-    strcpy(CTX.sessionrc_filename, CTX.home_dir);
-    strcat(CTX.sessionrc_filename, CTX.session_filename);
-  }
-  return CTX.session_filename;
-}
-char * opt_general_options_filename(OPT_ARGS_STR){
-  if(action & GMSH_SET){
-    CTX.options_filename = val;
-    strcpy(CTX.optionsrc_filename, CTX.home_dir);
-    strcat(CTX.optionsrc_filename, CTX.options_filename);
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_input[3]->value(CTX.options_filename);
-#endif
-  return CTX.options_filename;
-}
-char * opt_general_editor(OPT_ARGS_STR){
-  if(action & GMSH_SET) CTX.editor = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_input[4]->value(CTX.editor);
-#endif
-  return CTX.editor;
-}
-
-char * opt_solver_getdp_command(OPT_ARGS_STR){
-#ifdef _FLTK
-  if(action & GMSH_SET) strcpy(GetDP_Info.command, val);
-  if(WID && (action & GMSH_GUI))
-    WID->getdp_input[2]->value(GetDP_Info.command);
-  return GetDP_Info.command;
-#else
-  return "getdp";
-#endif
-}
-
-char * opt_view_name(OPT_ARGS_STR){
-  GET_VIEW(NULL) ;
-  if(action & GMSH_SET){
-    strcpy(v->Name, val);
-#ifdef _FLTK
-    if(WID && num<NB_BUTT_MAX){
-      WID->m_toggle_butt[num]->label(v->Name);
-      WID->m_toggle_butt[num]->redraw();
-    }
-#endif
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_input[0]->value(v->Name);
-  }
-#endif
-  return v->Name;
-}
-char * opt_view_format(OPT_ARGS_STR){
-  GET_VIEW(NULL) ;
-  if(action & GMSH_SET){
-    strcpy(v->Format, val);
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_input[1]->value(v->Format);
-#endif
-  return v->Format;
-}
-char * opt_view_filename(OPT_ARGS_STR){
-  GET_VIEW(NULL) ;
-  if(action & GMSH_SET)
-    strcpy(v->FileName, val);
-  return v->FileName;
-}
-
-
-char * opt_print_font(OPT_ARGS_STR){
-  if(action & GMSH_SET) CTX.print.font = val;
-  return CTX.print.font;
-}
-
-
-// ************** Numeric option routines ****************************
-
-
-double opt_general_initial_context(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.initial_context = (int)val;
-  return CTX.initial_context;
-}
-double opt_general_fontsize(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.fontsize = (int)val;
-  return CTX.fontsize;
-}
-double opt_general_graphics_fontsize(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.gl_fontsize = (int)val;
-  return CTX.gl_fontsize;
-}
-double opt_general_viewport2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.viewport[2] = (int)val;
-  return CTX.viewport[2];
-}
-double opt_general_viewport3(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.viewport[3] = (int)val;
-  return CTX.viewport[3];
-}
-double opt_general_graphics_position0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.gl_position[0] = (int)val;
-  return CTX.gl_position[0];
-}
-double opt_general_graphics_position1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.gl_position[1] = (int)val;
-  return CTX.gl_position[1];
-}
-double opt_general_menu_position0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.position[0] = (int)val;
-  return CTX.position[0];
-}
-double opt_general_menu_position1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.position[1] = (int)val;
-  return CTX.position[1];
-}
-double opt_general_message_position0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.msg_position[0] = (int)val;
-  return CTX.msg_position[0];
-}
-double opt_general_message_position1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.msg_position[1] = (int)val;
-  return CTX.msg_position[1];
-}
-double opt_general_message_size0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.msg_size[0] = (int)val;
-  return CTX.msg_size[0];
-}
-double opt_general_message_size1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.msg_size[1] = (int)val;
-  return CTX.msg_size[1];
-}
-double opt_general_center_windows(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.center_windows = (int)val;
-  return CTX.center_windows;
-}
-double opt_general_session_save(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.session_save = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[8]->value(CTX.session_save);
-#endif
-  return CTX.session_save;
-}
-double opt_general_options_save(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.options_save = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[9]->value(CTX.options_save);
-#endif
-  return CTX.options_save;
-}
-double opt_general_rotation0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.r[0] = val;
-  return CTX.r[0];
-}
-double opt_general_rotation1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.r[1] = val;
-  return CTX.r[1];
-}
-double opt_general_rotation2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.r[2] = val;
-  return CTX.r[3];
-}
-double opt_general_quaternion0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.quaternion[0] = val;
-  return CTX.quaternion[0];
-}
-double opt_general_quaternion1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.quaternion[1] = val;
-  return CTX.quaternion[1];
-}
-double opt_general_quaternion2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.quaternion[2] = val;
-  return CTX.quaternion[2];
-}
-double opt_general_quaternion3(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.quaternion[3] = val;
-  return CTX.quaternion[3];
-}
-double opt_general_translation0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.t[0] = val;
-  return CTX.t[0];
-}
-double opt_general_translation1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.t[1] = val;
-  return CTX.t[1];
-}
-double opt_general_translation2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.t[2] = val;
-  return CTX.t[2];
-}
-double opt_general_scale0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.s[0] = val;
-  return CTX.s[0];
-}
-double opt_general_scale1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.s[1] = val;
-  return CTX.s[1];
-}
-double opt_general_scale2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.s[2] = val;
-  return CTX.s[2];
-}
-double opt_general_shine(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.shine = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_value[1]->value(CTX.shine);
-#endif
-  return CTX.shine;
-}
-double opt_general_verbosity(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.verbosity = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_value[5]->value(CTX.verbosity);
-#endif
-  return CTX.verbosity;
-}
-double opt_general_terminal(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.terminal = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[7]->value(CTX.terminal);
-#endif
-  return CTX.terminal;
-}
-double opt_general_orthographic(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.ortho = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI)){
-    WID->gen_butt[10]->value(CTX.ortho);
-    WID->gen_butt[11]->value(!CTX.ortho);
-  }
-#endif
-  return CTX.ortho;
-}
-double opt_general_fast_redraw(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.fast = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[2]->value(CTX.fast);
-#endif
-  return CTX.fast;
-}
-double opt_general_axes(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.axes = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[0]->value(CTX.axes);
-#endif
-  return CTX.axes;
-}
-double opt_general_small_axes(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.small_axes = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[1]->value(CTX.small_axes);
-#endif
-  return CTX.small_axes;
-}
-double opt_general_display_lists(OPT_ARGS_NUM){
-  int i;
-  if(action & GMSH_SET){
-    CTX.display_lists = (int)val;
-    if(CTX.display_lists)
-      for(i=0 ; i<List_Nbr(Post_ViewList) ; i++)
-	((Post_View*)List_Pointer_Test(Post_ViewList, i))->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[4]->value(CTX.display_lists);
-#endif
-  return CTX.display_lists;
-}
-double opt_general_double_buffer(OPT_ARGS_NUM){
-  if(action & GMSH_SET){
-    CTX.db = (int)val;
-#ifdef _FLTK
-    if(WID){
-      if(CTX.db){
-	Msg(INFO, "Setting OpenGL visual to double buffered");
-	WID->g_opengl_window->mode(FL_RGB | FL_DEPTH | FL_DOUBLE);
-      }
-      else{
-	Msg(INFO, "Setting OpenGL visual to single buffered");
-	WID->g_opengl_window->mode(FL_RGB | FL_DEPTH | FL_SINGLE);
-      }
-    }
-#endif
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[3]->value(CTX.db);
-#endif
-  return CTX.db;
-}
-double opt_general_alpha_blending(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.alpha = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[5]->value(CTX.alpha);
-#endif
-  return CTX.alpha;
-}
-double opt_general_color_scheme(OPT_ARGS_NUM){
-  if(action & GMSH_SET){
-    CTX.color_scheme = (int)val;
-    if(CTX.color_scheme>2) CTX.color_scheme=0;
-    Set_DefaultColorOptions(0, GeneralOptions_Color, CTX.color_scheme);
-    Set_ColorOptions_GUI(0, GeneralOptions_Color);
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_value[0]->value(CTX.color_scheme);
-#endif
-  return CTX.color_scheme;
-}
-double opt_general_trackball(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.useTrackball = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[6]->value(CTX.useTrackball);
-#endif
-  return CTX.useTrackball;
-}
-double opt_general_zoom_factor(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.zoom_factor = val;
-  return CTX.zoom_factor;
-}
-double opt_general_default_plugins(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.default_plugins = (int)val;
-  return CTX.default_plugins;
-}
-double opt_general_clip0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip[0] = (int)val;
-  return CTX.clip[0];
-}
-double opt_general_clip0a(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[0][0] = val;
-  return CTX.clip_plane[0][0];
-}
-double opt_general_clip0b(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[0][1] = val;
-  return CTX.clip_plane[0][1];
-}
-double opt_general_clip0c(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[0][2] = val;
-  return CTX.clip_plane[0][2];
-}
-double opt_general_clip0d(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[0][3] = val;
-  return CTX.clip_plane[0][3];
-}
-double opt_general_clip1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip[1] = (int)val;
-  return CTX.clip[1];
-}
-double opt_general_clip1a(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[1][0] = val;
-  return CTX.clip_plane[1][0];
-}
-double opt_general_clip1b(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[1][1] = val;
-  return CTX.clip_plane[1][1];
-}
-double opt_general_clip1c(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[1][2] = val;
-  return CTX.clip_plane[1][2];
-}
-double opt_general_clip1d(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[1][3] = val;
-  return CTX.clip_plane[1][3];
-}
-double opt_general_clip2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip[2] = (int)val;
-  return CTX.clip[2];
-}
-double opt_general_clip2a(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[2][0] = val;
-  return CTX.clip_plane[2][0];
-}
-double opt_general_clip2b(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[2][1] = val;
-  return CTX.clip_plane[2][1];
-}
-double opt_general_clip2c(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[2][2] = val;
-  return CTX.clip_plane[2][2];
-}
-double opt_general_clip2d(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[2][3] = val;
-  return CTX.clip_plane[2][3];
-}
-double opt_general_clip3(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip[3] = (int)val;
-  return CTX.clip[3];
-}
-double opt_general_clip3a(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[3][0] = val;
-  return CTX.clip_plane[3][0];
-}
-double opt_general_clip3b(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[3][1] = val;
-  return CTX.clip_plane[3][1];
-}
-double opt_general_clip3c(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[3][2] = val;
-  return CTX.clip_plane[3][2];
-}
-double opt_general_clip3d(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[3][3] = val;
-  return CTX.clip_plane[3][3];
-}
-double opt_general_clip4(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip[4] = (int)val;
-  return CTX.clip[4];
-}
-double opt_general_clip4a(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[4][0] = val;
-  return CTX.clip_plane[4][0];
-}
-double opt_general_clip4b(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[4][1] = val;
-  return CTX.clip_plane[4][1];
-}
-double opt_general_clip4c(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[4][2] = val;
-  return CTX.clip_plane[4][2];
-}
-double opt_general_clip4d(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[4][3] = val;
-  return CTX.clip_plane[4][3];
-}
-double opt_general_clip5(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip[5] = (int)val;
-  return CTX.clip[5];
-}
-double opt_general_clip5a(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[5][0] = val;
-  return CTX.clip_plane[5][0];
-}
-double opt_general_clip5b(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[5][1] = val;
-  return CTX.clip_plane[5][1];
-}
-double opt_general_clip5c(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[5][2] = val;
-  return CTX.clip_plane[5][2];
-}
-double opt_general_clip5d(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.clip_plane[5][3] = val;
-  return CTX.clip_plane[5][3];
-}
-double opt_general_moving_light(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.moving_light = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_butt[12]->value(CTX.moving_light);
-#endif
-  return CTX.moving_light;
-}
-double opt_general_light0(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light[0] = (int)val;
-  return CTX.light[0];
-}
-double opt_general_light00(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[0][0] = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_value[2]->value(CTX.light_position[0][0]);
-#endif
-  return CTX.light_position[0][0];
-}
-double opt_general_light01(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[0][1] = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_value[3]->value(CTX.light_position[0][1]);
-#endif
-  return CTX.light_position[0][1];
-}
-double opt_general_light02(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[0][2] = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->gen_value[4]->value(CTX.light_position[0][2]);
-#endif
-  return CTX.light_position[0][2];
-}
-double opt_general_light1(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light[1] = (int)val;
-  return CTX.light[1];
-}
-double opt_general_light10(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[1][0] = val;
-  return CTX.light_position[1][0];
-}
-double opt_general_light11(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[1][1] = val;
-  return CTX.light_position[1][1];
-}
-double opt_general_light12(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[1][2] = val;
-  return CTX.light_position[1][2];
-}
-double opt_general_light2(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light[2] = (int)val;
-  return CTX.light[2];
-}
-double opt_general_light20(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[2][0] = val;
-  return CTX.light_position[2][0];
-}
-double opt_general_light21(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[2][1] = val;
-  return CTX.light_position[2][1];
-}
-double opt_general_light22(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[2][2] = val;
-  return CTX.light_position[2][2];
-}
-double opt_general_light3(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light[3] = (int)val;
-  return CTX.light[3];
-}
-double opt_general_light30(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[3][0] = val;
-  return CTX.light_position[3][0];
-}
-double opt_general_light31(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[3][1] = val;
-  return CTX.light_position[3][1];
-}
-double opt_general_light32(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[3][2] = val;
-  return CTX.light_position[3][2];
-}
-double opt_general_light4(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light[4] = (int)val;
-  return CTX.light[4];
-}
-double opt_general_light40(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[4][0] = val;
-  return CTX.light_position[4][0];
-}
-double opt_general_light41(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[4][1] = val;
-  return CTX.light_position[4][1];
-}
-double opt_general_light42(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[4][2] = val;
-  return CTX.light_position[4][2];
-}
-double opt_general_light5(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light[5] = (int)val;
-  return CTX.light[5];
-}
-double opt_general_light50(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[5][0] = val;
-  return CTX.light_position[5][0];
-}
-double opt_general_light51(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[5][1] = val;
-  return CTX.light_position[5][1];
-}
-double opt_general_light52(OPT_ARGS_NUM){
-  if(action & GMSH_SET) CTX.light_position[5][2] = val;
-  return CTX.light_position[5][2];
-}
-
-
-
-double opt_geometry_normals(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.normals = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_value[0]->value(CTX.geom.normals);
-#endif
-  return CTX.geom.normals;
-}
-double opt_geometry_tangents(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.tangents = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_value[1]->value(CTX.geom.tangents);
-#endif
-  return CTX.geom.tangents;
-}
-double opt_geometry_points(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.points = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[0]->value(CTX.geom.points);
-#endif
-  return CTX.geom.points;
-}
-double opt_geometry_lines(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.lines = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[1]->value(CTX.geom.lines);
-#endif
-  return CTX.geom.lines;
-}
-double opt_geometry_surfaces(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.surfaces = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[2]->value(CTX.geom.surfaces);
-#endif
-  return CTX.geom.surfaces;
-}
-double opt_geometry_volumes(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.volumes = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[3]->value(CTX.geom.volumes);
-#endif
-  return CTX.geom.volumes;
-}
-double opt_geometry_points_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.points_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[4]->value(CTX.geom.points_num);
-#endif
-  return CTX.geom.points_num;
-}
-double opt_geometry_lines_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.lines_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[5]->value(CTX.geom.lines_num);
-#endif
-  return CTX.geom.lines_num;
-}
-double opt_geometry_surfaces_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.surfaces_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[6]->value(CTX.geom.surfaces_num);
-#endif
-  return CTX.geom.surfaces_num;
-}
-double opt_geometry_volumes_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.volumes_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_butt[7]->value(CTX.geom.volumes_num);
-#endif
-  return CTX.geom.volumes_num;
-}
-double opt_geometry_aspect(OPT_ARGS_NUM){
-  if(action & GMSH_SET){ 
-    switch((int)val){
-    case 1  : CTX.geom.hidden = 1; CTX.geom.shade = 0; break ;
-    case 2  : CTX.geom.hidden = 1; CTX.geom.shade = 1; break ;
-    default : CTX.geom.hidden = CTX.geom.shade = 0; break ;
-    }
-  }
-  if(CTX.geom.hidden && !CTX.geom.shade) return 1;
-  else if(CTX.geom.hidden && CTX.geom.shade) return 2;
-  else return 0;
-}
-double opt_geometry_highlight(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.highlight = (int)val;
-  return CTX.geom.highlight;
-}
-double opt_geometry_old_circle(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.old_circle = (int)val;
-  return CTX.geom.old_circle;
-}
-double opt_geometry_scaling_factor(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.geom.scaling_factor = (int)val;
-  return CTX.geom.scaling_factor;
-}
-double opt_geometry_color_scheme(OPT_ARGS_NUM){
-  if(action & GMSH_SET){
-    CTX.geom.color_scheme = (int)val;
-    if(CTX.geom.color_scheme>2) CTX.geom.color_scheme=0;
-    Set_DefaultColorOptions(0, GeometryOptions_Color, CTX.geom.color_scheme);
-    Set_ColorOptions_GUI(0, GeometryOptions_Color);
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->geo_value[2]->value(CTX.geom.color_scheme);
-#endif
-  return CTX.geom.color_scheme;
-}
-
-
-double opt_mesh_quality(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.quality = val;
-  return CTX.mesh.quality;
-}
-double opt_mesh_normals(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.normals = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[8]->value(CTX.mesh.normals);
-#endif
-  return CTX.mesh.normals;
-}
-double opt_mesh_tangents(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.tangents = val;
-  return CTX.mesh.tangents;
-}
-double opt_mesh_explode(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.explode = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[9]->value(CTX.mesh.explode);
-#endif
-  return CTX.mesh.explode;
-}
-double opt_mesh_scaling_factor(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.scaling_factor = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[1]->value(CTX.mesh.scaling_factor);
-#endif
-  return CTX.mesh.scaling_factor;
-}
-double opt_mesh_lc_factor(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.lc_factor = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[2]->value(CTX.mesh.lc_factor);
-#endif
-  return CTX.mesh.lc_factor;
-}
-double opt_mesh_rand_factor(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.rand_factor = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[3]->value(CTX.mesh.rand_factor);
-#endif
-  return CTX.mesh.rand_factor;
-}
-double opt_mesh_gamma_inf(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.gamma_inf = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[4]->value(CTX.mesh.gamma_inf);
-#endif
-  return CTX.mesh.gamma_inf;
-}
-double opt_mesh_gamma_sup(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.gamma_sup = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[5]->value(CTX.mesh.gamma_sup);
-#endif
-  return CTX.mesh.gamma_sup;
-}
-double opt_mesh_radius_inf(OPT_ARGS_NUM){
-  if(action & GMSH_SET)
-    CTX.mesh.radius_inf = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[6]->value(CTX.mesh.radius_inf);
-#endif
-  return CTX.mesh.radius_inf;
-}
-double opt_mesh_radius_sup(OPT_ARGS_NUM){
-  if(action & GMSH_SET)
-    CTX.mesh.radius_sup = val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[7]->value(CTX.mesh.radius_sup);
-#endif
-  return CTX.mesh.radius_sup;
-}
-double opt_mesh_points(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.points = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[4]->value(CTX.mesh.points);
-#endif
-  return CTX.mesh.points;
-}
-double opt_mesh_lines(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.lines = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[5]->value(CTX.mesh.lines);
-#endif
-  return CTX.mesh.lines;
-}
-double opt_mesh_surfaces(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.surfaces = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[6]->value(CTX.mesh.surfaces);
-#endif
-  return CTX.mesh.surfaces;
-}
-double opt_mesh_volumes(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.volumes = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[7]->value(CTX.mesh.volumes);
-#endif
-  return CTX.mesh.volumes;
-}
-double opt_mesh_points_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.points_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[8]->value(CTX.mesh.points_num);
-#endif
-  return CTX.mesh.points_num;
-}
-double opt_mesh_lines_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.lines_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[9]->value(CTX.mesh.lines_num);
-#endif
-  return CTX.mesh.lines_num;
-}
-double opt_mesh_surfaces_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.surfaces_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[10]->value(CTX.mesh.surfaces_num);
-#endif
-  return CTX.mesh.surfaces_num;
-}
-double opt_mesh_volumes_num(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.volumes_num = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[11]->value(CTX.mesh.volumes_num);
-#endif
-  return CTX.mesh.volumes_num;
-}
-double opt_mesh_aspect(OPT_ARGS_NUM){
-  if(action & GMSH_SET){ 
-    switch((int)val){
-    case 1  : CTX.mesh.hidden = 1; CTX.mesh.shade = 0; break ;
-    case 2  : CTX.mesh.hidden = 1; CTX.mesh.shade = 1; break ;
-    default : CTX.mesh.hidden = CTX.mesh.shade = 0; break ;
-    }
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI)){
-    WID->mesh_butt[12]->value(!CTX.mesh.hidden && !CTX.mesh.shade);
-    WID->mesh_butt[13]->value(CTX.mesh.hidden && !CTX.mesh.shade);
-    WID->mesh_butt[14]->value(CTX.mesh.hidden && CTX.mesh.shade);
-  }
-#endif
-  if(CTX.mesh.hidden && !CTX.mesh.shade) return 1;
-  else if(CTX.mesh.hidden && CTX.mesh.shade) return 2;
-  else return 0;
-}
-double opt_mesh_format(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.format = (int)val;
-  return CTX.mesh.format;
-}
-double opt_mesh_nb_smoothing(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.nb_smoothing = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[0]->value(CTX.mesh.nb_smoothing);
-#endif
-  return CTX.mesh.nb_smoothing;
-}
-double opt_mesh_algo(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.algo = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[2]->value(CTX.mesh.algo==DELAUNAY_NEWALGO);
-#endif
-  return CTX.mesh.algo;
-}
-double opt_mesh_point_insertion(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.point_insertion = (int)val;
-  return CTX.mesh.point_insertion;
-}
-double opt_mesh_speed_max(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.speed_max = (int)val;
-  return CTX.mesh.speed_max;
-}
-double opt_mesh_min_circ_points(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.min_circ_points = (int)val;
-  return CTX.mesh.min_circ_points;
-}
-double opt_mesh_constrained_bgmesh(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.constrained_bgmesh = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[3]->value(CTX.mesh.constrained_bgmesh);
-#endif
-  return CTX.mesh.constrained_bgmesh;
-}
-double opt_mesh_degree(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.degree = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[0]->value(CTX.mesh.degree==2);
-#endif
-  return CTX.mesh.degree;
-}
-double opt_mesh_dual(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.dual = (int)val;
-  return CTX.mesh.dual;
-}
-double opt_mesh_interactive(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.interactive = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[1]->value(CTX.mesh.interactive);
-#endif
-  return CTX.mesh.interactive;
-}
-double opt_mesh_use_cut_plane(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.use_cut_plane = (int)val;
-  return CTX.mesh.use_cut_plane;
-}
-double opt_mesh_cut_planea(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.cut_planea = val;
-  return CTX.mesh.cut_planea;
-}
-double opt_mesh_cut_planeb(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.cut_planeb = val;
-  return CTX.mesh.cut_planeb;
-}
-double opt_mesh_cut_planec(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.cut_planec = val;
-  return CTX.mesh.cut_planec;
-}
-double opt_mesh_cut_planed(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.mesh.cut_planed = val;
-  return CTX.mesh.cut_planed;
-}
-double opt_mesh_color_scheme(OPT_ARGS_NUM){
-  if(action & GMSH_SET){
-    CTX.mesh.color_scheme = (int)val;
-    if(CTX.mesh.color_scheme>2) CTX.mesh.color_scheme=0;
-    Set_DefaultColorOptions(0, MeshOptions_Color, CTX.mesh.color_scheme);
-    Set_ColorOptions_GUI(0, MeshOptions_Color);
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_value[10]->value(CTX.mesh.color_scheme);
-#endif
-  return CTX.mesh.color_scheme;
-}
-double opt_mesh_color_carousel(OPT_ARGS_NUM){
-  if(action & GMSH_SET)
-    CTX.mesh.color_carousel = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->mesh_butt[15]->value(CTX.mesh.color_carousel);
-#endif
-  return CTX.mesh.color_carousel;
-}
-
-
-double opt_solver_getdp_popupmessages(OPT_ARGS_NUM){
-#ifdef _FLTK
-  if(action & GMSH_SET)
-    GetDP_Info.popupmessages = (int)val;
-  if(WID && (action & GMSH_GUI))
-    WID->getdp_butt[0]->value(GetDP_Info.popupmessages);
-  return GetDP_Info.popupmessages;
-#else
-  return 1.;
-#endif
-}
-double opt_solver_getdp_mergeviews(OPT_ARGS_NUM){
-#ifdef _FLTK
-  if(action & GMSH_SET)
-    GetDP_Info.mergeviews = (int)val;
-  if(WID && (action & GMSH_GUI))
-    WID->getdp_butt[1]->value(GetDP_Info.mergeviews);
-  return GetDP_Info.mergeviews;
-#else
-  return 1.;
-#endif
-}
-
-
-double opt_post_scales(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.post.scales = (int)val;
-  return CTX.post.scales;
-}
-double opt_post_link(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.post.link = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI)){
-    WID->post_butt[0]->value(CTX.post.link==0);
-    WID->post_butt[1]->value(CTX.post.link==1);
-    WID->post_butt[2]->value(CTX.post.link==2);
-    WID->post_butt[3]->value(CTX.post.link==3);
-    WID->post_butt[4]->value(CTX.post.link==4);
-  }
-#endif
-  return CTX.post.link;
-}
-double opt_post_smooth(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.post.smooth = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->post_butt[3]->value(CTX.post.smooth);
-#endif
-  return CTX.post.smooth;
-}
-double opt_post_anim_delay(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.post.anim_delay = (val>=0.)? val : 0. ;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI))
-    WID->post_value[0]->value(CTX.post.anim_delay);
-#endif
-  return CTX.post.anim_delay;
-}
-double opt_post_nb_views(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.post.nb_views = (int)val;
-  return CTX.post.nb_views;
-}
-
-
-
-double opt_view_nb_timestep(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET) 
-    v->NbTimeStep = (int)val;
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[9]->maximum(v->NbTimeStep-1);
-  if(WID && (action & GMSH_GUI) && v->NbTimeStep > 1)
-    WID->g_status_butt[5]->activate();
-#endif
-  return v->NbTimeStep;
-}
-double opt_view_timestep(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->TimeStep = (int)val;
-    if(v->TimeStep > v->NbTimeStep-1 || v->TimeStep < 0)
-      v->TimeStep = 0 ;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[9]->value(v->TimeStep);
-#endif
-  return v->TimeStep;
-}
-double opt_view_min(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){ 
-    v->Min = val;
-    v->Changed = 1;
-  }
-  return v->Min;
-}
-double opt_view_max(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Max = val;
-    v->Changed = 1;
-  }
-  return v->Max;
-}
-double opt_view_custom_min(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->CustomMin = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_value[0]->value(v->CustomMin);
-  }
-#endif
-  return v->CustomMin;
-}
-double opt_view_custom_max(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->CustomMax = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[1]->value(v->CustomMax);
-#endif
-  return v->CustomMax;
-}
-double opt_view_offset0(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Offset[0] = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[3]->value(v->Offset[0]);
-#endif
-  return v->Offset[0];
-}
-double opt_view_offset1(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Offset[1] = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[4]->value(v->Offset[1]);
-#endif
-  return v->Offset[1];
-}
-double opt_view_offset2(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Offset[2] = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[5]->value(v->Offset[2]);
-#endif
-  return v->Offset[2];
-}
-double opt_view_raise0(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Raise[0] = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[6]->value(v->Raise[0]);
-#endif
-  return v->Raise[0];
-}
-double opt_view_raise1(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Raise[1] = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[7]->value(v->Raise[1]);
-#endif
-  return v->Raise[1];
-}
-double opt_view_raise2(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Raise[2] = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[8]->value(v->Raise[2]);
-#endif
-  return v->Raise[2];
-}
-double opt_view_arrow_scale(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ArrowScale = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[10]->value(v->ArrowScale);
-#endif
-  return v->ArrowScale;
-}
-double opt_view_explode(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Explode = val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[12]->value(v->Explode);
-#endif
-  return v->Explode;
-}
-double opt_view_visible(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Visible = (int)val;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && num<NB_BUTT_MAX)
-    WID->m_toggle_butt[num]->value(v->Visible);
-#endif
-  Msg(DEBUG1, "View %d", v->Num);
-  Msg(DEBUG2, "  -> Name '%s'", v->Name);
-  Msg(DEBUG2, "  -> FileName '%s'", v->FileName);
-  Msg(DEBUG2, "  -> DuplicateOf %d", v->DuplicateOf);
-  Msg(DEBUG3, "  -> Links %d", v->Links);
-  return v->Visible;
-}
-double opt_view_intervals_type(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->IntervalsType = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[3]->value(v->IntervalsType==DRAW_POST_ISO);
-    WID->view_butt[4]->value(v->IntervalsType==DRAW_POST_DISCRETE);
-    WID->view_butt[5]->value(v->IntervalsType==DRAW_POST_CONTINUOUS);
-    WID->view_butt[6]->value(v->IntervalsType==DRAW_POST_NUMERIC);
-  }
-#endif
-  return v->IntervalsType;
-}
-
-double opt_view_saturate_values(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->SaturateValues = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[25]->value(v->SaturateValues);
-  }
-#endif
-  return v->SaturateValues;
-}
-
-double opt_view_nb_iso(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->NbIso = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[2]->value(v->NbIso);
-#endif
-  return v->NbIso;
-}
-double opt_view_boundary(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Boundary = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_value[11]->value(v->Boundary);
-  }
-#endif
-  return v->Boundary;
-}
-double opt_view_light(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->Light = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[17]->value(v->Light);
-#endif
-  return v->Light;
-}
-double opt_view_smooth_normals(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->SmoothNormals = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[27]->value(v->SmoothNormals);
-#endif
-  return v->SmoothNormals;
-}
-double opt_view_show_element(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ShowElement = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[13]->value(v->ShowElement);
-#endif
-  return v->ShowElement;
-}
-double opt_view_show_time(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ShowTime = (int)val;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[15]->value(v->ShowTime);
-#endif
-  return v->ShowTime;
-}
-double opt_view_show_scale(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ShowScale = (int)val;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[14]->value(v->ShowScale);
-#endif
-  return v->ShowScale;
-}
-double opt_view_draw_points(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawPoints = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[18]->value(v->DrawPoints);
-#endif
-  return v->DrawPoints;
-}
-double opt_view_draw_lines(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawLines = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[19]->value(v->DrawLines);
-#endif
-  return v->DrawLines;
-}
-double opt_view_draw_triangles(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawTriangles = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[20]->value(v->DrawTriangles);
-#endif
-  return v->DrawTriangles;
-}
-double opt_view_draw_tetrahedra(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawTetrahedra = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[21]->value(v->DrawTetrahedra);
-#endif
-  return v->DrawTetrahedra;
-}
-double opt_view_draw_scalars(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawScalars = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[22]->value(v->DrawScalars);
-#endif
-  return v->DrawScalars;
-}
-double opt_view_draw_vectors(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawVectors = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[23]->value(v->DrawVectors);
-#endif
-  return v->DrawVectors;
-}
-double opt_view_draw_tensors(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->DrawTensors = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[24]->value(v->DrawTensors);
-#endif
-  return v->DrawTensors;
-}
-double opt_view_transparent_scale(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->TransparentScale = (int)val;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[16]->value(v->TransparentScale);
-#endif
-  return v->TransparentScale;
-}
-double opt_view_scale_type(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ScaleType = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[1]->value(v->ScaleType==DRAW_POST_LINEAR);
-    WID->view_butt[2]->value(v->ScaleType==DRAW_POST_LOGARITHMIC);
-    WID->view_butt[26]->value(v->ScaleType==DRAW_POST_DOUBLELOGARITHMIC);
-  }
-#endif
-  return v->ScaleType;
-}
-double opt_view_range_type(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->RangeType = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[0]->value(v->RangeType==DRAW_POST_CUSTOM);
-#endif
-  return v->RangeType;
-}
-double opt_view_arrow_type(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ArrowType = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[7]->value(v->ArrowType==DRAW_POST_SEGMENT);
-    WID->view_butt[8]->value(v->ArrowType==DRAW_POST_ARROW);
-    WID->view_butt[9]->value(v->ArrowType==DRAW_POST_CONE);
-    WID->view_butt[10]->value(v->ArrowType==DRAW_POST_DISPLACEMENT);
-  }
-#endif
-  return v->ArrowType;
-}
-double opt_view_arrow_location(OPT_ARGS_NUM){
-  GET_VIEW(0.) ;
-  if(action & GMSH_SET){
-    v->ArrowLocation = (int)val;
-    v->Changed = 1;
-  }
-#ifdef _FLTK
-  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[11]->value(v->ArrowLocation==DRAW_POST_LOCATE_COG);
-    WID->view_butt[12]->value(v->ArrowLocation==DRAW_POST_LOCATE_VERTEX);
-  }
-#endif
-  return v->ArrowLocation;
-}
-
-
-double opt_print_format(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.format = (int)val;
-  return CTX.print.format;
-}
-double opt_print_eps_quality(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.eps_quality = (int)val;
-  return CTX.print.eps_quality;
-}
-double opt_print_eps_background(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.eps_background = (int)val;
-  return CTX.print.eps_background;
-}
-double opt_print_jpeg_quality(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.jpeg_quality = (int)val;
-  return CTX.print.jpeg_quality;
-}
-double opt_print_gif_dither(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.gif_dither = (int)val;
-  return CTX.print.gif_dither;
-}
-double opt_print_gif_sort(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.gif_sort = (int)val;
-  return CTX.print.gif_sort;
-}
-double opt_print_gif_interlace(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.gif_interlace = (int)val;
-  return CTX.print.gif_interlace;
-}
-double opt_print_gif_transparent(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.gif_transparent = (int)val;
-  return CTX.print.gif_transparent;
-}
-double opt_print_font_size(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.font_size = (int)val;
-  return CTX.print.font_size;
-}
-double opt_print_geom_line_width(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.geom_line_width = (int)val;
-  return CTX.print.geom_line_width;
-}
-double opt_print_mesh_line_width(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.mesh_line_width = (int)val;
-  return CTX.print.mesh_line_width;
-}
-double opt_print_post_line_width(OPT_ARGS_NUM){
-  if(action & GMSH_SET) 
-    CTX.print.post_line_width = (int)val;
-  return CTX.print.post_line_width;
-}
-
-// ************** Color option routines ****************************
-
-#ifdef _FLTK
-#define CCC(col,but)							\
-  if(WID && (action & GMSH_GUI)){					\
-    Fl_Color c = fl_color_cube(UNPACK_RED(col)*FL_NUM_RED/256, 		\
-			       UNPACK_GREEN(col)*FL_NUM_GREEN/256,	\
-			       UNPACK_BLUE(col)*FL_NUM_BLUE/256);	\
-    (but)->color(c);							\
-    (but)->labelcolor(contrast(FL_BLACK,c));				\
-    (but)->redraw();							\
-  }
-#endif
-
-unsigned int opt_general_color_background(OPT_ARGS_COL){
-  if(action & GMSH_SET){
-    CTX.color.bg = val;
-#ifdef _FLTK
-    if(WID) WID->view_colorbar_window->redraw();
-#endif
-  }
-#ifdef _FLTK
-  CCC(CTX.color.bg,WID->gen_col[0]);
-#endif
-  return CTX.color.bg;
-}
-unsigned int opt_general_color_foreground(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.fg = val;
-#ifdef _FLTK
-  CCC(CTX.color.fg,WID->gen_col[1]);
-#endif
-  return CTX.color.fg;
-}
-unsigned int opt_general_color_text(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.text = val;
-#ifdef _FLTK
-  CCC(CTX.color.text,WID->gen_col[2]);
-#endif
-  return CTX.color.text;
-}
-unsigned int opt_general_color_axes(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.axes = val;
-#ifdef _FLTK
-  CCC(CTX.color.axes,WID->gen_col[3]);
-#endif
-  return CTX.color.axes;
-}
-unsigned int opt_general_color_small_axes(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.small_axes = val;
-#ifdef _FLTK
-  CCC(CTX.color.small_axes,WID->gen_col[4]);
-#endif
-  return CTX.color.small_axes;
-}
-unsigned int opt_geometry_color_points(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.point = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.point,WID->geo_col[0]);
-#endif
-  return CTX.color.geom.point;
-} 
-unsigned int opt_geometry_color_lines(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.line = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.line,WID->geo_col[1]);
-#endif
-  return CTX.color.geom.line;
-}
-unsigned int opt_geometry_color_surfaces(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.surface = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.surface,WID->geo_col[2]);
-#endif
-  return CTX.color.geom.surface;
-}
-unsigned int opt_geometry_color_volumes(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.volume = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.volume,WID->geo_col[3]);
-#endif
-  return CTX.color.geom.volume;
-}
-unsigned int opt_geometry_color_points_select(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.point_sel = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.point_sel,WID->geo_col[4]);
-#endif
-  return CTX.color.geom.point_sel;
-}
-unsigned int opt_geometry_color_lines_select(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.line_sel = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.line_sel,WID->geo_col[5]);
-#endif
-  return CTX.color.geom.line_sel;
-}
-unsigned int opt_geometry_color_surfaces_select(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.surface_sel = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.surface_sel,WID->geo_col[6]);
-#endif
-  return CTX.color.geom.surface_sel;
-}
-unsigned int opt_geometry_color_volumes_select(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.volume_sel = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.volume_sel,WID->geo_col[7]);
-#endif
-  return CTX.color.geom.volume_sel;
-}
-unsigned int opt_geometry_color_points_highlight(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.point_hlt = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.point_hlt,WID->geo_col[8]);
-#endif
-  return CTX.color.geom.point_hlt;
-}
-unsigned int opt_geometry_color_lines_highlight(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.line_hlt = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.line_hlt,WID->geo_col[9]);
-#endif
-  return CTX.color.geom.line_hlt;
-}
-unsigned int opt_geometry_color_surfaces_highlight(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.surface_hlt = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.surface_hlt,WID->geo_col[10]);
-#endif
-  return CTX.color.geom.surface_hlt;
-}
-unsigned int opt_geometry_color_volumes_highlight(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.volume_hlt = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.volume_hlt,WID->geo_col[11]);
-#endif
-  return CTX.color.geom.volume_hlt;
-}
-unsigned int opt_geometry_color_tangents(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.tangents = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.tangents,WID->geo_col[12]);
-#endif
-  return CTX.color.geom.tangents;
-}
-unsigned int opt_geometry_color_normals(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.geom.normals = val;
-#ifdef _FLTK
-  CCC(CTX.color.geom.normals,WID->geo_col[13]);
-#endif
-  return CTX.color.geom.normals;
-}
-unsigned int opt_mesh_color_points(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.vertex = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.vertex,WID->mesh_col[0]);
-#endif
-  return CTX.color.mesh.vertex;
-} 
-unsigned int opt_mesh_color_points_supp(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.vertex_supp = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.vertex_supp,WID->mesh_col[1]);
-#endif
-  return CTX.color.mesh.vertex_supp;
-} 
-unsigned int opt_mesh_color_lines(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.line = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.line,WID->mesh_col[2]);
-#endif
-  return CTX.color.mesh.line;
-} 
-unsigned int opt_mesh_color_triangles(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.triangle = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.triangle,WID->mesh_col[3]);
-#endif
-  return CTX.color.mesh.triangle;
-}
-unsigned int opt_mesh_color_quadrangles(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.quadrangle = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.quadrangle,WID->mesh_col[4]);
-#endif
-  return CTX.color.mesh.quadrangle;
-}
-unsigned int opt_mesh_color_tetrahedra(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.tetrahedron = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.tetrahedron,WID->mesh_col[5]);
-#endif
-  return CTX.color.mesh.tetrahedron;
-}
-unsigned int opt_mesh_color_hexahedra(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.hexahedron = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.hexahedron,WID->mesh_col[6]);
-#endif
-  return CTX.color.mesh.hexahedron;
-}
-unsigned int opt_mesh_color_prisms(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.prism = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.prism,WID->mesh_col[7]);
-#endif
-  return CTX.color.mesh.prism;
-}
-unsigned int opt_mesh_color_pyramid(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.pyramid = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.pyramid,WID->mesh_col[8]);
-#endif
-  return CTX.color.mesh.pyramid;
-}
-unsigned int opt_mesh_color_tangents(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.tangents = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.tangents,WID->mesh_col[9]);
-#endif
-  return CTX.color.mesh.tangents;
-}
-unsigned int opt_mesh_color_normals(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.normals = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.normals,WID->mesh_col[10]);
-#endif
-  return CTX.color.mesh.normals;
-}
-unsigned int opt_mesh_color_1(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[0] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[0],WID->mesh_col[11]);
-#endif
-  return CTX.color.mesh.carousel[0];
-}
-unsigned int opt_mesh_color_2(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[1] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[1],WID->mesh_col[12]);
-#endif
-  return CTX.color.mesh.carousel[1];
-}
-unsigned int opt_mesh_color_3(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[2] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[2],WID->mesh_col[13]);
-#endif
-  return CTX.color.mesh.carousel[2];
-}
-unsigned int opt_mesh_color_4(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[3] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[3],WID->mesh_col[14]);
-#endif
-  return CTX.color.mesh.carousel[3];
-}
-unsigned int opt_mesh_color_5(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[4] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[4],WID->mesh_col[15]);
-#endif
-  return CTX.color.mesh.carousel[4];
-}
-unsigned int opt_mesh_color_6(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[5] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[5],WID->mesh_col[16]);
-#endif
-  return CTX.color.mesh.carousel[5];
-}
-unsigned int opt_mesh_color_7(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[6] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[6],WID->mesh_col[17]);
-#endif
-  return CTX.color.mesh.carousel[6];
-}
-unsigned int opt_mesh_color_8(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[7] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[7],WID->mesh_col[18]);
-#endif
-  return CTX.color.mesh.carousel[7];
-}
-unsigned int opt_mesh_color_9(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[8] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[8],WID->mesh_col[19]);
-#endif
-  return CTX.color.mesh.carousel[8];
-}
-unsigned int opt_mesh_color_10(OPT_ARGS_COL){
-  if(action & GMSH_SET) 
-    CTX.color.mesh.carousel[9] = val;
-#ifdef _FLTK
-  CCC(CTX.color.mesh.carousel[9],WID->mesh_col[20]);
-#endif
-  return CTX.color.mesh.carousel[9];
-}
diff --git a/Common/Options.h b/Common/Options.h
deleted file mode 100644
index 30ed840b5b847e6532d511b481398050c5f12223..0000000000000000000000000000000000000000
--- a/Common/Options.h
+++ /dev/null
@@ -1,365 +0,0 @@
-#ifndef _OPTIONS_H_
-#define _OPTIONS_H_
-
-#define GMSH_SET       (1<<0)
-#define GMSH_GET       (1<<1)
-#define GMSH_GUI       (1<<2)
-
-#define GMSH_SESSIONRC (1<<0)
-#define GMSH_OPTIONSRC (1<<1)
-#define GMSH_FULLRC    (1<<2)
-
-// action is a combination of GMSH_SET, GMSH_GET, GMSH_GUI
-
-#define OPT_ARGS_STR   int num, int action, char *val
-#define OPT_ARGS_NUM   int num, int action, double val
-#define OPT_ARGS_COL   int num, int action, unsigned int val
-
-// STRINGS
-
-char * opt_general_display(OPT_ARGS_STR);
-char * opt_general_default_filename(OPT_ARGS_STR);
-char * opt_general_tmp_filename(OPT_ARGS_STR);
-char * opt_general_error_filename(OPT_ARGS_STR);
-char * opt_general_session_filename(OPT_ARGS_STR);
-char * opt_general_options_filename(OPT_ARGS_STR);
-char * opt_general_editor(OPT_ARGS_STR);
-char * opt_solver_getdp_command(OPT_ARGS_STR);
-char * opt_view_name(OPT_ARGS_STR);
-char * opt_view_format(OPT_ARGS_STR);
-char * opt_view_filename(OPT_ARGS_STR);
-char * opt_print_font(OPT_ARGS_STR);
-
-// NUMBERS
-
-double opt_general_initial_context(OPT_ARGS_NUM);
-double opt_general_fontsize(OPT_ARGS_NUM);
-double opt_general_graphics_fontsize(OPT_ARGS_NUM);
-double opt_general_graphics_position0(OPT_ARGS_NUM);
-double opt_general_graphics_position1(OPT_ARGS_NUM);
-double opt_general_viewport2(OPT_ARGS_NUM);
-double opt_general_viewport3(OPT_ARGS_NUM);
-double opt_general_menu_position0(OPT_ARGS_NUM);
-double opt_general_menu_position1(OPT_ARGS_NUM);
-double opt_general_message_position0(OPT_ARGS_NUM);
-double opt_general_message_position1(OPT_ARGS_NUM);
-double opt_general_message_size0(OPT_ARGS_NUM);
-double opt_general_message_size1(OPT_ARGS_NUM);
-double opt_general_center_windows(OPT_ARGS_NUM);
-double opt_general_session_save(OPT_ARGS_NUM);
-double opt_general_options_save(OPT_ARGS_NUM);
-double opt_general_rotation0(OPT_ARGS_NUM);
-double opt_general_rotation1(OPT_ARGS_NUM);
-double opt_general_rotation2(OPT_ARGS_NUM);
-double opt_general_quaternion0(OPT_ARGS_NUM);
-double opt_general_quaternion1(OPT_ARGS_NUM);
-double opt_general_quaternion2(OPT_ARGS_NUM);
-double opt_general_quaternion3(OPT_ARGS_NUM);
-double opt_general_translation0(OPT_ARGS_NUM);
-double opt_general_translation1(OPT_ARGS_NUM);
-double opt_general_translation2(OPT_ARGS_NUM);
-double opt_general_scale0(OPT_ARGS_NUM);
-double opt_general_scale1(OPT_ARGS_NUM);
-double opt_general_scale2(OPT_ARGS_NUM);
-double opt_general_shine(OPT_ARGS_NUM);
-double opt_general_color_scheme(OPT_ARGS_NUM);
-double opt_general_verbosity(OPT_ARGS_NUM);
-double opt_general_terminal(OPT_ARGS_NUM);
-double opt_general_orthographic(OPT_ARGS_NUM);
-double opt_general_fast_redraw(OPT_ARGS_NUM);
-double opt_general_axes(OPT_ARGS_NUM);
-double opt_general_small_axes(OPT_ARGS_NUM);
-double opt_general_display_lists(OPT_ARGS_NUM);
-double opt_general_double_buffer(OPT_ARGS_NUM);
-double opt_general_alpha_blending(OPT_ARGS_NUM);
-double opt_general_trackball(OPT_ARGS_NUM);
-double opt_general_zoom_factor(OPT_ARGS_NUM);
-double opt_general_default_plugins(OPT_ARGS_NUM);
-double opt_general_clip0(OPT_ARGS_NUM);
-double opt_general_clip0a(OPT_ARGS_NUM);
-double opt_general_clip0b(OPT_ARGS_NUM);
-double opt_general_clip0c(OPT_ARGS_NUM);
-double opt_general_clip0d(OPT_ARGS_NUM);
-double opt_general_clip1(OPT_ARGS_NUM);
-double opt_general_clip1a(OPT_ARGS_NUM);
-double opt_general_clip1b(OPT_ARGS_NUM);
-double opt_general_clip1c(OPT_ARGS_NUM);
-double opt_general_clip1d(OPT_ARGS_NUM);
-double opt_general_clip2(OPT_ARGS_NUM);
-double opt_general_clip2a(OPT_ARGS_NUM);
-double opt_general_clip2b(OPT_ARGS_NUM);
-double opt_general_clip2c(OPT_ARGS_NUM);
-double opt_general_clip2d(OPT_ARGS_NUM);
-double opt_general_clip3(OPT_ARGS_NUM);
-double opt_general_clip3a(OPT_ARGS_NUM);
-double opt_general_clip3b(OPT_ARGS_NUM);
-double opt_general_clip3c(OPT_ARGS_NUM);
-double opt_general_clip3d(OPT_ARGS_NUM);
-double opt_general_clip4(OPT_ARGS_NUM);
-double opt_general_clip4a(OPT_ARGS_NUM);
-double opt_general_clip4b(OPT_ARGS_NUM);
-double opt_general_clip4c(OPT_ARGS_NUM);
-double opt_general_clip4d(OPT_ARGS_NUM);
-double opt_general_clip5(OPT_ARGS_NUM);
-double opt_general_clip5a(OPT_ARGS_NUM);
-double opt_general_clip5b(OPT_ARGS_NUM);
-double opt_general_clip5c(OPT_ARGS_NUM);
-double opt_general_clip5d(OPT_ARGS_NUM);
-double opt_general_moving_light(OPT_ARGS_NUM);
-double opt_general_light0(OPT_ARGS_NUM);
-double opt_general_light00(OPT_ARGS_NUM);
-double opt_general_light01(OPT_ARGS_NUM);
-double opt_general_light02(OPT_ARGS_NUM);
-double opt_general_light1(OPT_ARGS_NUM);
-double opt_general_light10(OPT_ARGS_NUM);
-double opt_general_light11(OPT_ARGS_NUM);
-double opt_general_light12(OPT_ARGS_NUM);
-double opt_general_light2(OPT_ARGS_NUM);
-double opt_general_light20(OPT_ARGS_NUM);
-double opt_general_light21(OPT_ARGS_NUM);
-double opt_general_light22(OPT_ARGS_NUM);
-double opt_general_light3(OPT_ARGS_NUM);
-double opt_general_light30(OPT_ARGS_NUM);
-double opt_general_light31(OPT_ARGS_NUM);
-double opt_general_light32(OPT_ARGS_NUM);
-double opt_general_light4(OPT_ARGS_NUM);
-double opt_general_light40(OPT_ARGS_NUM);
-double opt_general_light41(OPT_ARGS_NUM);
-double opt_general_light42(OPT_ARGS_NUM);
-double opt_general_light5(OPT_ARGS_NUM);
-double opt_general_light50(OPT_ARGS_NUM);
-double opt_general_light51(OPT_ARGS_NUM);
-double opt_general_light52(OPT_ARGS_NUM);
-double opt_geometry_normals(OPT_ARGS_NUM);
-double opt_geometry_tangents(OPT_ARGS_NUM);
-double opt_geometry_points(OPT_ARGS_NUM);
-double opt_geometry_lines(OPT_ARGS_NUM);
-double opt_geometry_surfaces(OPT_ARGS_NUM);
-double opt_geometry_volumes(OPT_ARGS_NUM);
-double opt_geometry_points_num(OPT_ARGS_NUM);
-double opt_geometry_lines_num(OPT_ARGS_NUM);
-double opt_geometry_surfaces_num(OPT_ARGS_NUM);
-double opt_geometry_volumes_num(OPT_ARGS_NUM);
-double opt_geometry_aspect(OPT_ARGS_NUM);
-double opt_geometry_highlight(OPT_ARGS_NUM);
-double opt_geometry_old_circle(OPT_ARGS_NUM);
-double opt_geometry_scaling_factor(OPT_ARGS_NUM);
-double opt_geometry_color_scheme(OPT_ARGS_NUM);
-double opt_mesh_quality(OPT_ARGS_NUM);
-double opt_mesh_normals(OPT_ARGS_NUM);
-double opt_mesh_tangents(OPT_ARGS_NUM);
-double opt_mesh_explode(OPT_ARGS_NUM);
-double opt_mesh_scaling_factor(OPT_ARGS_NUM);
-double opt_mesh_lc_factor(OPT_ARGS_NUM);
-double opt_mesh_rand_factor(OPT_ARGS_NUM);
-double opt_mesh_gamma_inf(OPT_ARGS_NUM);
-double opt_mesh_gamma_sup(OPT_ARGS_NUM);
-double opt_mesh_radius_inf(OPT_ARGS_NUM);
-double opt_mesh_radius_sup(OPT_ARGS_NUM);
-double opt_mesh_points(OPT_ARGS_NUM);
-double opt_mesh_lines(OPT_ARGS_NUM);
-double opt_mesh_surfaces(OPT_ARGS_NUM);
-double opt_mesh_volumes(OPT_ARGS_NUM);
-double opt_mesh_points_num(OPT_ARGS_NUM);
-double opt_mesh_lines_num(OPT_ARGS_NUM);
-double opt_mesh_surfaces_num(OPT_ARGS_NUM);
-double opt_mesh_volumes_num(OPT_ARGS_NUM);
-double opt_mesh_aspect(OPT_ARGS_NUM);
-double opt_mesh_format(OPT_ARGS_NUM);
-double opt_mesh_nb_smoothing(OPT_ARGS_NUM);
-double opt_mesh_algo(OPT_ARGS_NUM);
-double opt_mesh_point_insertion(OPT_ARGS_NUM);
-double opt_mesh_speed_max(OPT_ARGS_NUM);
-double opt_mesh_min_circ_points(OPT_ARGS_NUM);
-double opt_mesh_constrained_bgmesh(OPT_ARGS_NUM);
-double opt_mesh_degree(OPT_ARGS_NUM);
-double opt_mesh_dual(OPT_ARGS_NUM);
-double opt_mesh_interactive(OPT_ARGS_NUM);
-double opt_mesh_use_cut_plane(OPT_ARGS_NUM);
-double opt_mesh_cut_planea(OPT_ARGS_NUM);
-double opt_mesh_cut_planeb(OPT_ARGS_NUM);
-double opt_mesh_cut_planec(OPT_ARGS_NUM);
-double opt_mesh_cut_planed(OPT_ARGS_NUM);
-double opt_mesh_color_scheme(OPT_ARGS_NUM);
-double opt_mesh_color_carousel(OPT_ARGS_NUM);
-double opt_solver_getdp_popupmessages(OPT_ARGS_NUM);
-double opt_solver_getdp_mergeviews(OPT_ARGS_NUM);
-double opt_post_scales(OPT_ARGS_NUM);
-double opt_post_link(OPT_ARGS_NUM);
-double opt_post_smooth(OPT_ARGS_NUM);
-double opt_post_anim_delay(OPT_ARGS_NUM);
-double opt_post_nb_views(OPT_ARGS_NUM);
-double opt_post_color_scheme(OPT_ARGS_NUM);
-double opt_view_nb_timestep(OPT_ARGS_NUM);
-double opt_view_timestep(OPT_ARGS_NUM);
-double opt_view_min(OPT_ARGS_NUM);
-double opt_view_max(OPT_ARGS_NUM);
-double opt_view_custom_min(OPT_ARGS_NUM);
-double opt_view_custom_max(OPT_ARGS_NUM);
-double opt_view_offset0(OPT_ARGS_NUM);
-double opt_view_offset1(OPT_ARGS_NUM);
-double opt_view_offset2(OPT_ARGS_NUM);
-double opt_view_raise0(OPT_ARGS_NUM);
-double opt_view_raise1(OPT_ARGS_NUM);
-double opt_view_raise2(OPT_ARGS_NUM);
-double opt_view_arrow_scale(OPT_ARGS_NUM);
-double opt_view_explode(OPT_ARGS_NUM);
-double opt_view_visible(OPT_ARGS_NUM);
-double opt_view_intervals_type(OPT_ARGS_NUM);
-double opt_view_saturate_values(OPT_ARGS_NUM);
-double opt_view_nb_iso(OPT_ARGS_NUM);
-double opt_view_boundary(OPT_ARGS_NUM);
-double opt_view_light(OPT_ARGS_NUM);
-double opt_view_smooth_normals(OPT_ARGS_NUM);
-double opt_view_show_element(OPT_ARGS_NUM);
-double opt_view_show_time(OPT_ARGS_NUM);
-double opt_view_show_scale(OPT_ARGS_NUM);
-double opt_view_draw_points(OPT_ARGS_NUM);
-double opt_view_draw_lines(OPT_ARGS_NUM);
-double opt_view_draw_triangles(OPT_ARGS_NUM);
-double opt_view_draw_tetrahedra(OPT_ARGS_NUM);
-double opt_view_draw_scalars(OPT_ARGS_NUM);
-double opt_view_draw_vectors(OPT_ARGS_NUM);
-double opt_view_draw_tensors(OPT_ARGS_NUM);
-double opt_view_transparent_scale(OPT_ARGS_NUM);
-double opt_view_scale_type(OPT_ARGS_NUM);
-double opt_view_range_type(OPT_ARGS_NUM);
-double opt_view_arrow_type(OPT_ARGS_NUM);
-double opt_view_arrow_location(OPT_ARGS_NUM);
-double opt_print_format(OPT_ARGS_NUM);
-double opt_print_eps_quality(OPT_ARGS_NUM);
-double opt_print_eps_background(OPT_ARGS_NUM);
-double opt_print_jpeg_quality(OPT_ARGS_NUM);
-double opt_print_gif_dither(OPT_ARGS_NUM);
-double opt_print_gif_sort(OPT_ARGS_NUM);
-double opt_print_gif_interlace(OPT_ARGS_NUM);
-double opt_print_gif_transparent(OPT_ARGS_NUM);
-double opt_print_font_size(OPT_ARGS_NUM);
-double opt_print_geom_line_width(OPT_ARGS_NUM);
-double opt_print_mesh_line_width(OPT_ARGS_NUM);
-double opt_print_post_line_width(OPT_ARGS_NUM);
-
-// COLORS
-
-unsigned int opt_general_color_background(OPT_ARGS_COL);
-unsigned int opt_general_color_foreground(OPT_ARGS_COL);
-unsigned int opt_general_color_text(OPT_ARGS_COL);
-unsigned int opt_general_color_axes(OPT_ARGS_COL);
-unsigned int opt_general_color_small_axes(OPT_ARGS_COL);
-unsigned int opt_geometry_color_points(OPT_ARGS_COL); 
-unsigned int opt_geometry_color_lines(OPT_ARGS_COL);
-unsigned int opt_geometry_color_surfaces(OPT_ARGS_COL);
-unsigned int opt_geometry_color_volumes(OPT_ARGS_COL);
-unsigned int opt_geometry_color_points_select(OPT_ARGS_COL);
-unsigned int opt_geometry_color_lines_select(OPT_ARGS_COL);
-unsigned int opt_geometry_color_surfaces_select(OPT_ARGS_COL);
-unsigned int opt_geometry_color_volumes_select(OPT_ARGS_COL);
-unsigned int opt_geometry_color_points_highlight(OPT_ARGS_COL);
-unsigned int opt_geometry_color_lines_highlight(OPT_ARGS_COL);
-unsigned int opt_geometry_color_surfaces_highlight(OPT_ARGS_COL);
-unsigned int opt_geometry_color_volumes_highlight(OPT_ARGS_COL);
-unsigned int opt_geometry_color_tangents(OPT_ARGS_COL);
-unsigned int opt_geometry_color_normals(OPT_ARGS_COL);
-unsigned int opt_mesh_color_points(OPT_ARGS_COL); 
-unsigned int opt_mesh_color_points_supp(OPT_ARGS_COL); 
-unsigned int opt_mesh_color_lines(OPT_ARGS_COL); 
-unsigned int opt_mesh_color_triangles(OPT_ARGS_COL);
-unsigned int opt_mesh_color_quadrangles(OPT_ARGS_COL);
-unsigned int opt_mesh_color_tetrahedra(OPT_ARGS_COL);
-unsigned int opt_mesh_color_hexahedra(OPT_ARGS_COL);
-unsigned int opt_mesh_color_prisms(OPT_ARGS_COL);
-unsigned int opt_mesh_color_pyramid(OPT_ARGS_COL);
-unsigned int opt_mesh_color_tangents(OPT_ARGS_COL);
-unsigned int opt_mesh_color_normals(OPT_ARGS_COL);
-unsigned int opt_mesh_color_1(OPT_ARGS_COL);
-unsigned int opt_mesh_color_2(OPT_ARGS_COL);
-unsigned int opt_mesh_color_3(OPT_ARGS_COL);
-unsigned int opt_mesh_color_4(OPT_ARGS_COL);
-unsigned int opt_mesh_color_5(OPT_ARGS_COL);
-unsigned int opt_mesh_color_6(OPT_ARGS_COL);
-unsigned int opt_mesh_color_7(OPT_ARGS_COL);
-unsigned int opt_mesh_color_8(OPT_ARGS_COL);
-unsigned int opt_mesh_color_9(OPT_ARGS_COL);
-unsigned int opt_mesh_color_10(OPT_ARGS_COL);
-
-
-// Data structures and global functions
-
-typedef struct {
-  char *str ; 
-  int int1, int2, int3, int4 ;
-} StringX4Int;
-
-typedef struct {
-  int level;
-  char *str ;
-  char * (*function)(int num, int action, char *val) ;
-  char *def ;
-  char *help ;
-} StringXString ;
-
-typedef struct {
-  int level;
-  char *str;
-  double (*function)(int num, int action, double val) ;
-  double def ;
-  char *help ;
-} StringXNumber ;
-
-typedef struct {
-  int level;
-  char *str ; 
-  unsigned int (*function)(int num, int action, unsigned int val) ;
-  unsigned int def1, def2, def3 ;
-  char *help ;
-} StringXColor ;
-
-void Init_Options (int num);
-void Init_Options_GUI (int num);
-void Print_Options(int num, int level, char *filename);
-
-StringXString * Get_StringOptionCategory(char * cat);
-StringXNumber * Get_NumberOptionCategory(char * cat);
-StringXColor * Get_ColorOptionCategory(char * cat);
-
-void Set_DefaultStringOptions(int num, StringXString s[]);
-void Set_DefaultNumberOptions(int num, StringXNumber s[]);
-void Set_DefaultColorOptions(int num, StringXColor s[], int scheme);
-
-void Set_StringOptions_GUI(int num, StringXString s[]);
-void Set_NumberOptions_GUI(int num, StringXNumber s[]);
-void Set_ColorOptions_GUI(int num, StringXColor s[]);
-
-void * Get_StringOption(char *str, StringXString s[]);
-void * Get_NumberOption(char *str, StringXNumber s[]);
-void * Get_ColorOption(char *str, StringXColor s[]);
-
-void Print_StringOptions(int num, int level, StringXString s[], char *prefix, FILE *file);
-void Print_NumberOptions(int num, int level, StringXNumber s[], char *prefix, FILE *file);
-void Print_ColorOptions(int num, int level, StringXColor s[], char *prefix, FILE *file);
-
-extern StringXString GeneralOptions_String[] ;
-extern StringXString GeometryOptions_String[] ;
-extern StringXString MeshOptions_String[] ;
-extern StringXString SolverOptions_String[] ;
-extern StringXString PostProcessingOptions_String[] ;
-extern StringXString ViewOptions_String[] ;
-extern StringXString PrintOptions_String[] ;
-
-extern StringXNumber GeneralOptions_Number[] ;
-extern StringXNumber GeometryOptions_Number[] ;
-extern StringXNumber MeshOptions_Number[] ;
-extern StringXNumber SolverOptions_Number[] ;
-extern StringXNumber PostProcessingOptions_Number[] ;
-extern StringXNumber ViewOptions_Number[] ;
-extern StringXNumber PrintOptions_Number[] ;
-
-extern StringXColor GeneralOptions_Color[] ;
-extern StringXColor GeometryOptions_Color[] ;
-extern StringXColor MeshOptions_Color[] ;
-extern StringXColor SolverOptions_Color[] ;
-extern StringXColor PostProcessingOptions_Color[] ;
-extern StringXColor ViewOptions_Color[] ;
-extern StringXColor PrintOptions_Color[] ;
-
-#endif
diff --git a/Common/Static.h b/Common/Static.h
deleted file mode 100644
index 44a4156f41ce53b42d0daa56e4b9162d030e5bd9..0000000000000000000000000000000000000000
--- a/Common/Static.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef _STATIC_H_
-#define _STATIC_H_
-
-/* This file defines the static structures for Gmsh. It should be
-   included only once, in your 'main' file */
-
-char        yyname[256];
-int         yyerrorstate;
-
-int         CurrentNodeNumber, CurrentSimplexNumber;
-
-Context_T   CTX ;
-Mesh        M, *THEM, *LOCAL;
-
-#endif
diff --git a/Common/Timer.cpp b/Common/Timer.cpp
deleted file mode 100644
index f2218c588da2228cb6a20216e360a51c1321f2a9..0000000000000000000000000000000000000000
--- a/Common/Timer.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// $Id: Timer.cpp,v 1.4 2001-02-09 07:59:50 geuzaine Exp $
-
-#if defined(WIN32) && !defined(__CYGWIN__)
-
-long GetTime(){
-  return 0;
-}
-
-#else
-
-#include <sys/time.h>
-#include <unistd.h>
-long GetTime(){
-  struct timeval tp;
-  gettimeofday(&tp, (struct timezone *)0);
-  return (long)tp.tv_sec * 1000000 + (long)tp.tv_usec;
-}
-
-#endif
diff --git a/Common/Timer.h b/Common/Timer.h
deleted file mode 100644
index a5103b0f2e7c751128a59ff81d7b5c025c031f69..0000000000000000000000000000000000000000
--- a/Common/Timer.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _TIMER_H_
-#define _TIMER_H_
-
-long GetTime();
-
-#endif
diff --git a/Common/Views.cpp b/Common/Views.cpp
deleted file mode 100644
index 40ea8a6e52edb2ec3b7be3fbb95b8442b1412690..0000000000000000000000000000000000000000
--- a/Common/Views.cpp
+++ /dev/null
@@ -1,929 +0,0 @@
-// $Id: Views.cpp,v 1.50 2001-08-11 23:28:31 geuzaine Exp $
-
-#include <set>
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Views.h"
-#include "Context.h"
-#include "Options.h"
-#include "ColorTable.h"
-
-extern Context_T   CTX ;
-
-#define INFINITY 1.e200
-
-// this static stuff should be removed
-List_T     *Post_ViewList = NULL;
-Post_View  *Post_ViewReference = NULL;
-int         Post_ViewForceNumber = 0;
-
-/* ------------------------------------------------------------------------ */
-/*  V i e w s                                                               */
-/* ------------------------------------------------------------------------ */
-
-int fcmpPostViewNum(const void *v1, const void *v2){
-  return (((Post_View *)v1)->Num - ((Post_View *)v2)->Num);
-}
-
-int fcmpPostViewDuplicateOf(const void *v1, const void *v2){
-  return (((Post_View *)v1)->DuplicateOf - ((Post_View *)v2)->DuplicateOf);
-}
-
-Post_View * BeginView(int allocate){
-  Post_View vv, *v;
-  static int  UniqueNum=0;
-  int i;
-
-  if(!Post_ViewList) Post_ViewList = List_Create(100,1,sizeof(Post_View));
-
-  if(!Post_ViewForceNumber){
-    vv.Num = ++UniqueNum; // each view _must_ have a unique number
-    List_Add(Post_ViewList, &vv);
-  }
-  else{
-    vv.Num = Post_ViewForceNumber;    
-    List_Replace(Post_ViewList,&vv,fcmpPostViewNum);
-  }
-
-  CTX.post.nb_views = List_Nbr(Post_ViewList);
-
-  i = List_ISearch(Post_ViewList, &vv, fcmpPostViewNum);
-  v = (Post_View*)List_Pointer(Post_ViewList, i);
-
-  v->Index = i;
-  v->Dirty = 1;
-  v->NbTimeStep = 0;
-  v->NbSP = v->NbVP = v->NbTP = 0;
-  v->NbSL = v->NbVL = v->NbTL = 0;
-  v->NbST = v->NbVT = v->NbTT = 0;
-  v->NbSS = v->NbVS = v->NbTS = 0;
-
-  if(allocate){
-    v->datasize = sizeof(double);
-
-    v->Time = List_Create(100,1000,sizeof(double));
-
-    v->SP = List_Create(100,1000,sizeof(double));
-    v->VP = List_Create(100,1000,sizeof(double));
-    v->TP = List_Create(100,1000,sizeof(double));
-    
-    v->SL = List_Create(100,1000,sizeof(double));
-    v->VL = List_Create(100,1000,sizeof(double));
-    v->TL = List_Create(100,1000,sizeof(double));
-    
-    v->ST = List_Create(100,1000,sizeof(double));
-    v->VT = List_Create(100,1000,sizeof(double));
-    v->TT = List_Create(100,1000,sizeof(double));
-    
-    v->SS = List_Create(100,1000,sizeof(double));
-    v->VS = List_Create(100,1000,sizeof(double));
-    v->TS = List_Create(100,1000,sizeof(double));
-  }
-  else{
-    v->Time = NULL;
-    v->SP = NULL; v->VP = NULL; v->TP = NULL;
-    v->SL = NULL; v->VL = NULL; v->TL = NULL;
-    v->ST = NULL; v->VT = NULL; v->TT = NULL;
-    v->SS = NULL; v->VS = NULL; v->TS = NULL;
-  }
-
-  // Copy all options from the reference view initialized in InitOptions()
-  CopyViewOptions(Post_ViewReference, v);
-
-  v->Changed = 1;
-  v->Links = 0;
-  v->DuplicateOf = 0;
-  v->ScalarOnly = 1;
-  v->normals = NULL;
-  v->Min = INFINITY;
-  v->Max = -INFINITY;
-  for(i=0;i<3;i++){
-    v->BBox[2*i] = INFINITY;
-    v->BBox[2*i+1] = -INFINITY;
-  }
-
-  return v;
-}
-
-void Stat_ScalarSimplex(Post_View *v, int nbnod, int N, 
-			double *X, double *Y, double *Z, double *V){
-  int i;
-
-  if(v->Min == INFINITY || v->Max == -INFINITY){
-    v->Min = V[0];
-    v->Max = V[0];
-    v->NbTimeStep = N/nbnod;
-  }
-  else if(N/nbnod < v->NbTimeStep)
-    v->NbTimeStep = N/nbnod ;
-
-  for(i=0 ; i<N ; i++){
-    if(V[i] < v->Min) v->Min = V[i] ;
-    if(V[i] > v->Max) v->Max = V[i] ;
-  }
-
-  for(i=0 ; i<nbnod ; i++){
-    if(X[i] < v->BBox[0]) v->BBox[0] = X[i] ;
-    if(X[i] > v->BBox[1]) v->BBox[1] = X[i] ;
-    if(Y[i] < v->BBox[2]) v->BBox[2] = Y[i] ;
-    if(Y[i] > v->BBox[3]) v->BBox[3] = Y[i] ;
-    if(Z[i] < v->BBox[4]) v->BBox[4] = Z[i] ;
-    if(Z[i] > v->BBox[5]) v->BBox[5] = Z[i] ;
-  }
-}
-
-void Stat_VectorSimplex(Post_View *v, int nbnod, int N, 
-			double *X, double *Y, double *Z, double *V){
-  double l0;
-  int i;
-
-  if(v->Min == INFINITY || v->Max == -INFINITY){
-    l0 = sqrt(DSQR(V[0])+DSQR(V[1])+DSQR(V[2]));
-    v->Min = l0;
-    v->Max = l0;
-    v->NbTimeStep = N/(3*nbnod) ;
-  }
-  else if(N/(3*nbnod) < v->NbTimeStep)
-    v->NbTimeStep = N/(3*nbnod) ;
-
-  for(i=0 ; i<N ; i+=3){
-    l0 = sqrt(DSQR(V[i])+DSQR(V[i+1])+DSQR(V[i+2]));
-    if(l0 < v->Min) v->Min = l0 ;
-    if(l0 > v->Max) v->Max = l0 ;
-  }
-
-  for(i=0 ; i<nbnod ; i++){
-    if(X[i] < v->BBox[0]) v->BBox[0] = X[i] ;
-    if(X[i] > v->BBox[1]) v->BBox[1] = X[i] ;
-    if(Y[i] < v->BBox[2]) v->BBox[2] = Y[i] ;
-    if(Y[i] > v->BBox[3]) v->BBox[3] = Y[i] ;
-    if(Z[i] < v->BBox[4]) v->BBox[4] = Z[i] ;
-    if(Z[i] > v->BBox[5]) v->BBox[5] = Z[i] ;
-  }
-
-  v->ScalarOnly = 0;
-}
-
-void Stat_TensorSimplex(Post_View *v, int nbnod, int N, 
-			double *X, double *Y, double *Z, double *V){
-  Msg(GERROR, "Tensor field views not implemented yet");
-}
-
-
-void EndView(Post_View *v, int add_in_gui, char *file_name, char *name){
-  int i, nb;
-  double d;
-  extern int AddViewInUI(int , char *, int);
-
-  // Points
-
-  if(v->NbSP){
-    nb = List_Nbr(v->SP) / v->NbSP ;
-    for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb)
-      Stat_ScalarSimplex(v, 1, nb-3, 
-			 (double*)List_Pointer_Fast(v->SP,i),
-			 (double*)List_Pointer_Fast(v->SP,i+1),
-			 (double*)List_Pointer_Fast(v->SP,i+2),
-			 (double*)List_Pointer_Fast(v->SP,i+3));
-  }
-  if(v->NbVP){
-    nb = List_Nbr(v->VP) / v->NbVP ;
-    for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb)
-      Stat_VectorSimplex(v, 1, nb-3, 
-			 (double*)List_Pointer_Fast(v->VP,i),
-			 (double*)List_Pointer_Fast(v->VP,i+1),
-			 (double*)List_Pointer_Fast(v->VP,i+2),
-			 (double*)List_Pointer_Fast(v->VP,i+3));
-  }
-  if(v->NbTP){
-    nb = List_Nbr(v->TP) / v->NbTP ;
-    for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb)
-      Stat_TensorSimplex(v, 1, nb-3, 
-			 (double*)List_Pointer_Fast(v->TP,i),
-			 (double*)List_Pointer_Fast(v->TP,i+1),
-			 (double*)List_Pointer_Fast(v->TP,i+2),
-			 (double*)List_Pointer_Fast(v->TP,i+3));
-  }
-
-  // Lines
-
-  if(v->NbSL){
-    nb = List_Nbr(v->SL) / v->NbSL ;
-    for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb)
-      Stat_ScalarSimplex(v, 2, nb-6,
-			 (double*)List_Pointer_Fast(v->SL,i),
-			 (double*)List_Pointer_Fast(v->SL,i+2),
-			 (double*)List_Pointer_Fast(v->SL,i+4),
-			 (double*)List_Pointer_Fast(v->SL,i+6));
-  }
-  if(v->NbVL){
-    nb = List_Nbr(v->VL) / v->NbVL ;
-    for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb)
-      Stat_VectorSimplex(v, 2, nb-6, 
-			 (double*)List_Pointer_Fast(v->VL,i),
-			 (double*)List_Pointer_Fast(v->VL,i+2),
-			 (double*)List_Pointer_Fast(v->VL,i+4),
-			 (double*)List_Pointer_Fast(v->VL,i+6));
-  }
-  if(v->NbTL){
-    nb = List_Nbr(v->TL) / v->NbTL ;
-    for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb)
-      Stat_TensorSimplex(v, 2, nb-6, 
-			 (double*)List_Pointer_Fast(v->TL,i),
-			 (double*)List_Pointer_Fast(v->TL,i+2),
-			 (double*)List_Pointer_Fast(v->TL,i+4),
-			 (double*)List_Pointer_Fast(v->TL,i+6));
-  }
-
-  // Triangles
-
-  if(v->NbST){
-    nb = List_Nbr(v->ST) / v->NbST ;
-    for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb)
-      Stat_ScalarSimplex(v, 3, nb-9, 
-			 (double*)List_Pointer_Fast(v->ST,i),
-			 (double*)List_Pointer_Fast(v->ST,i+3),
-			 (double*)List_Pointer_Fast(v->ST,i+6),
-			 (double*)List_Pointer_Fast(v->ST,i+9));
-  }
-  if(v->NbVT){
-    nb = List_Nbr(v->VT) / v->NbVT ;
-    for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb)
-      Stat_VectorSimplex(v, 3, nb-9, 
-			 (double*)List_Pointer_Fast(v->VT,i),
-			 (double*)List_Pointer_Fast(v->VT,i+3),
-			 (double*)List_Pointer_Fast(v->VT,i+6),
-			 (double*)List_Pointer_Fast(v->VT,i+9));
-  }
-  if(v->NbTT){
-    nb = List_Nbr(v->TT) / v->NbTT ;
-    for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb)
-      Stat_TensorSimplex(v, 3, nb-9,
-			 (double*)List_Pointer_Fast(v->TT,i),
-			 (double*)List_Pointer_Fast(v->TT,i+3),
-			 (double*)List_Pointer_Fast(v->TT,i+6),
-			 (double*)List_Pointer_Fast(v->TT,i+9));
-  }
-
-  // Tetrahedra
-
-  if(v->NbSS){
-    nb = List_Nbr(v->SS) / v->NbSS ;
-    for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb)
-      Stat_ScalarSimplex(v, 4, nb-12, 
-			 (double*)List_Pointer_Fast(v->SS,i),
-			 (double*)List_Pointer_Fast(v->SS,i+4),
-			 (double*)List_Pointer_Fast(v->SS,i+8),
-			 (double*)List_Pointer_Fast(v->SS,i+12));
-  }
-  if(v->NbVS){
-    nb = List_Nbr(v->VS) / v->NbVS ;
-    for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb)
-      Stat_VectorSimplex(v, 4, nb-12,
-			 (double*)List_Pointer_Fast(v->VS,i),
-			 (double*)List_Pointer_Fast(v->VS,i+4),
-			 (double*)List_Pointer_Fast(v->VS,i+8),
-			 (double*)List_Pointer_Fast(v->VS,i+12));
-  }
-  if(v->NbTS){
-    nb = List_Nbr(v->TS) / v->NbTS ;
-    for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb)
-      Stat_TensorSimplex(v, 4, nb-12, 
-			 (double*)List_Pointer_Fast(v->TS,i),
-			 (double*)List_Pointer_Fast(v->TS,i+4),
-			 (double*)List_Pointer_Fast(v->TS,i+8),
-			 (double*)List_Pointer_Fast(v->TS,i+12));
-  }
-
-  // Dummy time values if using old parsed format...
-  if(v->Time && !List_Nbr(v->Time)){
-    for(i=0 ; i<v->NbTimeStep ; i++){
-      d = (double)i;
-      List_Add(v->Time, &d);
-    }
-  }
-
-  opt_view_name(v->Index, GMSH_SET|GMSH_GUI, name);
-  opt_view_filename(v->Index, GMSH_SET|GMSH_GUI, file_name);
-  opt_view_nb_timestep(v->Index, GMSH_GUI, 0);
-  opt_view_timestep(v->Index, GMSH_SET|GMSH_GUI, v->TimeStep);
-  if(v->Min > v->Max){
-    opt_view_min(v->Index, GMSH_SET|GMSH_GUI, 0.);
-    opt_view_max(v->Index, GMSH_SET|GMSH_GUI, 0.);
-  }
-  else{
-    opt_view_min(v->Index, GMSH_GUI, 0);
-    opt_view_max(v->Index, GMSH_GUI, 0);
-  }
-  opt_view_custom_min(v->Index, GMSH_SET|GMSH_GUI, v->Min);
-  opt_view_custom_max(v->Index, GMSH_SET|GMSH_GUI, v->Max);
-
-  if(CTX.post.smooth) v->smooth();
-
-  if(!Post_ViewForceNumber && add_in_gui)
-    AddViewInUI(List_Nbr(Post_ViewList), v->Name, v->Num);
-
-  v->Dirty = 0; //the view is complete, we may draw it
-}
-
-bool FreeView(int num){
-  Post_View *v;
-
-  Msg(DEBUG, "Trying to free view %d",num);
-  
-  if(num < 0 || num >= List_Nbr(Post_ViewList)){
-    return false ;
-  }
-  v = (Post_View*)List_Pointer(Post_ViewList, num);
-  FreeView(v);
-  List_PSuppress(Post_ViewList, num);
-  CTX.post.nb_views = List_Nbr(Post_ViewList);
-
-  Msg(INFO, "View %d deleted (%d views left)",num, List_Nbr(Post_ViewList));
-  return true;
-}
-
-
-void FreeView(Post_View *v){
-  Post_View vv,*v2;
-  int i, numdup, free = 1;
-
-  if(v->DuplicateOf){
-    vv.Num = v->DuplicateOf ;
-    Msg(DEBUG, "This view is a duplicata");
-    if(!(v2 = (Post_View*)List_PQuery(Post_ViewList, &vv, fcmpPostViewNum))){
-      Msg(DEBUG, "  -the original view is gone");
-      numdup = 0;
-      for(i=0 ; i<List_Nbr(Post_ViewList); i++)
-	numdup += (((Post_View*)List_Pointer(Post_ViewList, i))->DuplicateOf == v->DuplicateOf);
-      if(numdup == 1){
-        Msg(DEBUG, "  -there are no other duplicata, so I can free");
-        free = 1 ;
-      }
-      else{
-        Msg(DEBUG, "  -there are still duplicata, so I cannot free");
-        free = 0 ;
-      }
-    }
-    else{
-      v2->Links--;
-      free = 0 ;
-      Msg(DEBUG, "  -the original still exists, so I cannot free");
-    }
-  }
-
-  if(free && !v->Links){
-    Msg(DEBUG, "FREEING VIEW");
-    List_Delete(v->Time);
-    List_Delete(v->SP); List_Delete(v->VP); List_Delete(v->TP);
-    List_Delete(v->SL); List_Delete(v->VL); List_Delete(v->TL);
-    List_Delete(v->ST); List_Delete(v->VT); List_Delete(v->TT);
-    List_Delete(v->SS); List_Delete(v->VS); List_Delete(v->TS);
-    v->reset_normals();
-  }
-
-}
-
-void CopyViewOptions(Post_View *src, Post_View *dest){
-  strcpy(dest->Format, src->Format);
-  dest->CustomMin = src->CustomMin;
-  dest->CustomMax = src->CustomMax;
-  dest->Offset[0] = src->Offset[0];
-  dest->Offset[1] = src->Offset[1];
-  dest->Offset[2] = src->Offset[2];
-  dest->Raise[0] = src->Raise[0];
-  dest->Raise[1] = src->Raise[1];
-  dest->Raise[2] = src->Raise[2];
-  dest->ArrowScale = src->ArrowScale;
-  dest->Explode = src->Explode;
-  dest->Visible = src->Visible;
-  dest->IntervalsType = src->IntervalsType;
-  dest->SaturateValues = src->SaturateValues;
-  dest->Boundary = src->Boundary ;
-  dest->NbIso = src->NbIso;
-  dest->Light = src->Light ;
-  dest->SmoothNormals = src->SmoothNormals ;
-  dest->ShowElement = src->ShowElement;
-  dest->ShowTime = src->ShowTime;
-  dest->ShowScale = src->ShowScale;
-  dest->DrawPoints = src->DrawPoints;
-  dest->DrawLines = src->DrawLines;
-  dest->DrawTriangles = src->DrawTriangles;
-  dest->DrawTetrahedra = src->DrawTetrahedra;
-  dest->DrawScalars = src->DrawScalars;
-  dest->DrawVectors = src->DrawVectors;
-  dest->DrawTensors = src->DrawTensors;
-  dest->TransparentScale = src->TransparentScale;
-  dest->ScaleType = src->ScaleType;
-  dest->RangeType = src->RangeType;
-  dest->ArrowType = src->ArrowType;
-  dest->ArrowLocation = src->ArrowLocation;
-  dest->TimeStep = src->TimeStep;
-  ColorTable_Copy(&src->CT);
-  ColorTable_Paste(&dest->CT);
-}
-
-ColorTable *Get_ColorTable(int num){
-  Post_View *v;
-
-  if(!Post_ViewList)
-    v = Post_ViewReference ;
-  else
-    v = (Post_View*)List_Pointer_Test(Post_ViewList, num);
-  if(v)
-    return &v->CT ;
-  else
-    return NULL ;
-}
-
-void Print_ColorTable(int num, char *prefix, FILE *file){
-  char tmp[1024];
-  Post_View *v;
-  if(!Post_ViewList)
-    v = Post_ViewReference ;
-  else
-    v = (Post_View*)List_Pointer_Test(Post_ViewList, num);
-  if(!v) return;
-  sprintf(tmp, "%s = {", prefix);
-  if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, tmp);
-  ColorTable_Print(&v->CT, file);
-  sprintf(tmp, "};");
-  if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, tmp);
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  R e a d _ V i e w                                                       */
-/* ------------------------------------------------------------------------ */
-
-void Read_View(FILE *file, char *filename){
-  char   str[256], name[256];
-  int    nb, format, size, testone, swap;
-  double version;
-  Post_View *v;
-
-  while (1) {
-
-    do { 
-      fgets(str, 256, file) ; 
-      if (feof(file))  break ;
-    } while (str[0] != '$') ;  
-
-    if (feof(file))  break ;
-
-    /*  F o r m a t  */
-
-    if (!strncmp(&str[1], "PostFormat", 10)){
-      fscanf(file, "%lf %d %d\n", &version, &format, &size) ;
-      if(version < 1.0){
-        Msg(GERROR, "The version of this post-processing file is too old (%g < 1.0)", version);
-        return;
-      }
-      if(size == sizeof(double))
-	Msg(DEBUG, "Data is in double precision format (size==%d)", size);
-      else if(size == sizeof(float))
-	Msg(DEBUG, "Data is in single precision format (size==%d)", size);
-      else{
-        Msg(GERROR, "Unknown type of data (size = %d) in post-processing file", 
-	    size);
-        return;
-      }
-      if(format == 0)
-	format = LIST_FORMAT_ASCII ;
-      else if(format == 1)
-	format = LIST_FORMAT_BINARY ;
-      else{
-	Msg(GERROR, "Unknown format for view");
-	return ;
-      }
-    }
-
-    /*  V i e w  */
-
-    if (!strncmp(&str[1], "View", 4)) {
-
-      v = BeginView(0);
-
-      fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", 
-             name, &v->NbTimeStep,
-             &v->NbSP, &v->NbVP, &v->NbTP, 
-             &v->NbSL, &v->NbVL, &v->NbTL, 
-             &v->NbST, &v->NbVT, &v->NbTT, 
-             &v->NbSS, &v->NbVS, &v->NbTS);
-
-      swap = 0 ;
-      if(format == LIST_FORMAT_BINARY){
-	fread(&testone, sizeof(int), 1, file);
-	if(testone != 1){
-	  Msg(INFO, "Swapping bytes from binary file");
-	  swap = 1;
-	}
-      }
-
-      v->datasize = size ;
-
-      // Time values
-      v->Time = List_CreateFromFile(v->NbTimeStep, size, file, format, swap);
-
-      // Points
-      nb = v->NbSP ? v->NbSP * (v->NbTimeStep  +3) : 0 ;
-      v->SP = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbVP ? v->NbVP * (v->NbTimeStep*3+3) : 0 ;
-      v->VP = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbTP ? v->NbTP * (v->NbTimeStep*9+3) : 0 ;
-      v->TP = List_CreateFromFile(nb, size, file, format, swap);
-
-      // Lines
-      nb = v->NbSL ? v->NbSL * (v->NbTimeStep*2  +6) : 0 ;
-      v->SL = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbVL ? v->NbVL * (v->NbTimeStep*2*3+6) : 0 ;
-      v->VL = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbTL ? v->NbTL * (v->NbTimeStep*2*9+6) : 0 ;
-      v->TL = List_CreateFromFile(nb, size, file, format, swap);
-
-      // Triangles
-      nb = v->NbST ? v->NbST * (v->NbTimeStep*3  +9) : 0 ;
-      v->ST = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbVT ? v->NbVT * (v->NbTimeStep*3*3+9) : 0 ;
-      v->VT = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbTT ? v->NbTT * (v->NbTimeStep*3*9+9) : 0 ;
-      v->TT = List_CreateFromFile(nb, size, file, format, swap);
-
-      // Tetrahedra
-      nb = v->NbSS ? v->NbSS * (v->NbTimeStep*4  +12) : 0 ;
-      v->SS = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbVS ? v->NbVS * (v->NbTimeStep*4*3+12) : 0 ;
-      v->VS = List_CreateFromFile(nb, size, file, format, swap);
-
-      nb = v->NbTS ? v->NbTS * (v->NbTimeStep*4*9+12) : 0 ;
-      v->TS = List_CreateFromFile(nb, size, file, format, swap);
-
-      Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d",
-          name, v->NbTimeStep,
-          v->NbSP, v->NbVP, v->NbTP, 
-          v->NbSL, v->NbVL, v->NbTL, 
-          v->NbST, v->NbVT, v->NbTT, 
-          v->NbSS, v->NbVS, v->NbTS);
-      Msg(DEBUG, "List_Nbrs: %d %d %d %d %d %d %d %d %d %d %d %d",
-          List_Nbr(v->SP), List_Nbr(v->VP), List_Nbr(v->TP), 
-          List_Nbr(v->SL), List_Nbr(v->VL), List_Nbr(v->TL), 
-          List_Nbr(v->ST), List_Nbr(v->VT), List_Nbr(v->TT), 
-          List_Nbr(v->SS), List_Nbr(v->VS), List_Nbr(v->TS));
-
-      EndView(v, 1, filename, name); 
-    }
-
-    do {
-      fgets(str, 256, file) ;
-      if (feof(file)) Msg(GERROR,"Prematured end of file");
-    } while (str[0] != '$') ;
-
-  }   /* while 1 ... */
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  W r i t e _ V i e w                                                     */
-/* ------------------------------------------------------------------------ */
-
-void Write_View(int Flag_BIN, Post_View *v, char *filename){
-  FILE *file;
-  int i, f, One=1;
-
-  if(filename){
-    file = fopen(filename,"w");
-    if(!file){
-      Msg(WARNING, "Unable to open file '%s'", filename);
-      return;
-    }
-  }
-  else
-    file = stdout;
- 
-  fprintf(file, "$PostFormat /* Gmsh 1.0, %s */\n", Flag_BIN ? "binary" : "ascii") ;
-  fprintf(file, "1.0 %d %d\n", Flag_BIN, (int)sizeof(double)) ;
-  fprintf(file, "$EndPostFormat\n") ;
-  for(i=0;i<(int)strlen(v->Name);i++) if(v->Name[i]==' ') v->Name[i]='_'; 
-  // -> Il faudra changer le format de post pour autoriser les blancs.
-  // On ajoutera aussi un entier par simplexe (num de region).
-  // Devrait-on passer a un format liste de noeuds + liste de
-  // simplexes ?
-  fprintf(file, "$View /* %s */\n", v->Name);
-  fprintf(file, "%s ", v->Name);
-  fprintf(file, "%d %d %d %d %d %d %d %d %d %d %d %d %d\n", 
-	  List_Nbr(v->Time),
-	  v->NbSP, v->NbVP, v->NbTP, v->NbSL, v->NbVL, v->NbTL, 
-	  v->NbST, v->NbVT, v->NbTT, v->NbSS, v->NbVS, v->NbTS);
-  if(Flag_BIN){
-    f = LIST_FORMAT_BINARY;
-    fwrite(&One, sizeof(int), 1, file);
-  }
-  else
-    f = LIST_FORMAT_ASCII;
-  List_WriteToFile(v->Time, file, f); 
-  List_WriteToFile(v->SP, file, f); List_WriteToFile(v->VP, file, f);
-  List_WriteToFile(v->TP, file, f); List_WriteToFile(v->SL, file, f);
-  List_WriteToFile(v->VL, file, f); List_WriteToFile(v->TL, file, f);
-  List_WriteToFile(v->ST, file, f); List_WriteToFile(v->VT, file, f);
-  List_WriteToFile(v->TT, file, f); List_WriteToFile(v->SS, file, f);
-  List_WriteToFile(v->VS, file, f); List_WriteToFile(v->TS, file, f);
-  if(Flag_BIN) fprintf(file, "\n");
-  fprintf(file, "$EndView\n");
-
-  if(filename){
-    Msg(INFO, "View output complete '%s'", filename);
-    Msg(STATUS2, "Wrote '%s'", filename);
-    fclose(file);
-  }
-
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  S m o o t h i n g                                                       */
-/* ------------------------------------------------------------------------ */
-
-using namespace std;
-
-struct xyzv{
-private:
-public:
-  double x,y,z,*vals;
-  int nbvals;
-  int nboccurences;
-  static double eps;
-  void update (int nbVals, double *);
-  xyzv(double x, double y, double z);
-  ~xyzv();
-  xyzv & operator = ( const xyzv &);
-  xyzv ( const xyzv &);
-};
-
-double xyzv::eps = 0.0;
-
-xyzv::xyzv (double xx, double yy, double zz) 
-  : x(xx),y(yy),z(zz),vals(0),nbvals(0),nboccurences(0){}
-
-xyzv::~xyzv(){
-  if(vals)delete [] vals;
-}
-
-xyzv::xyzv(const xyzv &other){
-  x = other.x;
-  y = other.y;
-  z = other.z;
-  nbvals = other.nbvals;
-  nboccurences = other.nboccurences;
-  if(other.vals && other.nbvals){
-    vals = new double[other.nbvals];
-    for(int i=0;i<nbvals;i++)vals[i] = other.vals[i];
-  }
-}
-
-xyzv & xyzv::operator = (const xyzv &other){
-  if(this != &other){ 
-    x = other.x;
-    y = other.y;
-    z = other.z;
-    nbvals = other.nbvals;
-    nboccurences = other.nboccurences;
-    if(other.vals && other.nbvals){
-      vals = new double[other.nbvals];
-      for(int i=0;i<nbvals;i++)vals[i] = other.vals[i];
-    }
-  }
-  return *this;
-}
-
-void xyzv::update (int n, double *v){
-  int i;
-  if(!vals){
-    vals = new double[n];
-    for(i=0;i<n;i++)vals[i] = 0.0;
-    nbvals = n;
-    nboccurences = 0;
-  }
-  else if (nbvals != n){
-    throw n;
-  }
-
-  double x1 = (double)(nboccurences)/ (double)(nboccurences + 1);
-  double x2 = 1./(double)(nboccurences + 1);
-  for(i=0;i<nbvals;i++)vals[i] = (x1 * vals[i] + x2 * v[i]);
-  nboccurences++;
-
-  //printf("val(%d,%f,%f,%f) = %f\n",nboccurences,x,y,z,vals[0]);
-}
-
-// trop simple... If faudrait coder une structure qui tient compte des
-// angles entres normales, qui ne smoothe que si p1.val est "proche"
-// (eps2) de p2.val, et qui renvoie le xyzv qui a le xyz dans eps ET
-// val eps2... Sinon, pour un smoothing de normales, les "coins"
-// deviennent de la bouillie.
-
-struct lessthanxyzv{
-  bool operator () (const xyzv & p2, const xyzv &p1) const{
-    if( p1.x - p2.x > xyzv::eps)return true;
-    if( p1.x - p2.x <-xyzv::eps)return false;
-    if( p1.y - p2.y > xyzv::eps)return true;
-    if( p1.y - p2.y <-xyzv::eps)return false;
-    if( p1.z - p2.z > xyzv::eps)return true;
-    return false;  
-  }
-};
-
-typedef set<xyzv,lessthanxyzv> mycont;
-typedef mycont::const_iterator iter;
-
-class smooth_container{
-public :
-  mycont c;
-};
-
-void smooth_list (List_T *SS ,
-		  double *min, double *max,
-		  int NbTimeStep,
-		  int nbvert,
-		  int nb, 
-		  mycont & connectivities){
-  double *x,*y,*z,*v;
-  int i,j,k;
-  double *vals = new double[NbTimeStep];
-  *min = INFINITY;
-  *max = -INFINITY;
-
-  for(i = 0 ; i < List_Nbr(SS) ; i+=nb){
-    x = (double*)List_Pointer_Fast(SS,i);
-    y = (double*)List_Pointer_Fast(SS,i+nbvert);
-    z = (double*)List_Pointer_Fast(SS,i+2*nbvert);
-    v = (double*)List_Pointer_Fast(SS,i+3*nbvert);
-    
-    for(j=0;j<nbvert;j++){
-      for(k=0;k<NbTimeStep;k++)vals[k] = v[j+k*nbvert];
-      xyzv xyz(x[j],y[j],z[j]);
-      iter it = connectivities.find(xyz);
-      if(it == connectivities.end()){
-	xyz.update(NbTimeStep,vals);
-	connectivities.insert(xyz);
-      }
-      else{
-	xyzv *xx = (xyzv*) &(*it); // a little weird ... becaus we know that 
-	// this will not destroy the set ordering
-	xx->update(NbTimeStep,vals);
-      }
-    }
-  }   
-  
-  for(i = 0 ; i < List_Nbr(SS) ; i+=nb){
-    x = (double*)List_Pointer_Fast(SS,i);
-    y = (double*)List_Pointer_Fast(SS,i+nbvert);
-    z = (double*)List_Pointer_Fast(SS,i+2*nbvert);
-    v = (double*)List_Pointer_Fast(SS,i+3*nbvert);
-    for(j=0;j<nbvert;j++){
-      xyzv xyz(x[j],y[j],z[j]);
-      iter it = connectivities.find(xyz);
-      if(it != connectivities.end()){
-	for(k=0;k<NbTimeStep;k++){
-	  v[j+k*nbvert] = (*it).vals[k];
-	  if(v[j+k*nbvert] < *min) *min = v[j+k*nbvert] ;
-	  if(v[j+k*nbvert] > *max) *max = v[j+k*nbvert] ;
-	}
-      }
-    }
-  } 
-  delete [] vals;
-}
-
-void Post_View :: smooth (){
-  xyzv::eps = CTX.lc * 1.e-6;
-  int nb;
-  
-  if(NbSS){
-    mycont conSS;
-    Msg(INFO,"Smoothing scalar tetrahedra in view...");
-    nb = List_Nbr(SS) / NbSS ;
-    smooth_list (SS , &Min, &Max, NbTimeStep, 4, nb, conSS);
-    Msg(INFO,"...done");
-  }
-  if(NbST){
-    mycont conST;
-    Msg(INFO,"Smoothing scalar triangles in view...");
-    nb = List_Nbr(ST) / NbST ;
-    smooth_list (ST , &Min, &Max, NbTimeStep, 3, nb, conST);
-    Msg(INFO,"...done");
-  }
-  
-}
-  
-// a small utility to smooth normals
-
-void Post_View :: reset_normals(){
-  if(normals) delete normals;
-  normals  = 0;
-}
-
-void Post_View :: add_normal(double x, double y, double z, 
-			     double nx, double ny, double nz){
-  if(!normals) normals = new smooth_container;
-  xyzv xyz(x,y,z);
-  double n[3] = {nx,ny,nz};
-  iter it = normals->c.find(xyz);
-  if(it == normals->c.end()){
-    xyz.update(3,n);
-    normals->c.insert(xyz);
-  }
-  else{
-    xyzv *xx = (xyzv*) &(*it); 
-    xx->update(3,n);
-  }
-}
-
-bool Post_View :: get_normal(double x, double y, double z, 
-			     double &nx, double &ny, double &nz){
-  if(!normals) return false;
-  xyzv xyz(x,y,z);
-  iter it = normals->c.find(xyz);
-  if(it == normals->c.end()) return false;
-  nx = (*it).vals[0];
-  ny = (*it).vals[1];
-  nz = (*it).vals[2];
-  return true;
-}
-
-/* ------------------------------------------------------------------------ */
-/*  T r a n s f o r m a t i o n                                             */
-/* ------------------------------------------------------------------------ */
-
-static void transform(double mat[3][3], double v[3],
-		      double *x, double *y, double *z){
-  *x = mat[0][0]*v[0] + mat[0][1]*v[1] + mat[0][2]*v[2];
-  *y = mat[1][0]*v[0] + mat[1][1]*v[1] + mat[1][2]*v[2];
-  *z = mat[2][0]*v[0] + mat[2][1]*v[1] + mat[2][2]*v[2];
-}
-
-static void transform_list(List_T *V ,
-			   int NbTimeStep,
-			   int nbvert,
-			   int nb,
-			   double mat[3][3]){
-  double *x,*y,*z, v[3];
-  int i, j;
-
-  for(i = 0 ; i < List_Nbr(V) ; i+=nb){
-    x = (double*)List_Pointer_Fast(V,i);
-    y = (double*)List_Pointer_Fast(V,i+nbvert);
-    z = (double*)List_Pointer_Fast(V,i+2*nbvert);
-    for(j=0; j<nbvert; j++){
-      v[0] = x[j];
-      v[1] = y[j];
-      v[2] = z[j];
-      transform(mat,v,&x[j],&y[j],&z[j]);
-    }
-  }
-}
-
-void Post_View :: transform (double mat[3][3]){
-  int nb;
-
-  if(NbSP){
-    nb = List_Nbr(SP) / NbSP ;
-    transform_list(SP, NbTimeStep, 1, nb, mat);
-  }
-  if(NbSL){
-    nb = List_Nbr(SL) / NbSL ;
-    transform_list(SL, NbTimeStep, 2, nb, mat);
-  }
-  if(NbST){
-    nb = List_Nbr(ST) / NbST ;
-    transform_list(ST, NbTimeStep, 3, nb, mat);
-  }
-  if(NbSS){
-    nb = List_Nbr(SS) / NbSS ;
-    transform_list(SS, NbTimeStep, 4, nb, mat);
-  }
-
-
-  if(NbVP){
-    nb = List_Nbr(VP) / NbVP ;
-    transform_list(VP, NbTimeStep, 1, nb, mat);
-  }
-  if(NbVL){
-    nb = List_Nbr(VL) / NbVL ;
-    transform_list(VL, NbTimeStep, 2, nb, mat);
-  }
-  if(NbVT){
-    nb = List_Nbr(VT) / NbVT ;
-    transform_list(VT, NbTimeStep, 3, nb, mat);
-  }
-  if(NbVS){
-    nb = List_Nbr(VS) / NbVS ;
-    transform_list(VS, NbTimeStep, 4, nb, mat);
-  }
-}
diff --git a/Common/Views.h b/Common/Views.h
deleted file mode 100644
index 9c0ffa53832b65eb10d95112a261412af2bc963c..0000000000000000000000000000000000000000
--- a/Common/Views.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef _VIEWS_H_
-#define _VIEWS_H_
-
-#include "ColorTable.h"
-
-class smooth_container;
-
-class Post_View{
-  public :
-  // intrinsic to a view
-  int Num, Index, Changed, DuplicateOf, Links, Dirty;
-  char FileName[256], Name[256];
-
-  // the data
-  int datasize; // size(double) or sizeof(float)
-  List_T *Time;
-  int NbSP, NbVP, NbTP;
-  List_T *SP, *VP, *TP; // points
-  int NbSL, NbVL, NbTL;
-  List_T *SL, *VL, *TL; // lines
-  int NbST, NbVT, NbTT;
-  List_T *ST, *VT, *TT; // triangles
-  int NbSS, NbVS, NbTS;
-  List_T *SS, *VS, *TS; // tetrahedra
-  int NbTimeStep, ScalarOnly;
-  double Min, Max, BBox[6];
-
-  // options
-  char   Format[256];
-  double CustomMin, CustomMax;
-  double Offset[3], Raise[3], ArrowScale, Explode;
-  int Visible, IntervalsType, NbIso, Light, SmoothNormals ;
-  int SaturateValues;
-  int ShowElement, ShowTime, ShowScale;
-  int TransparentScale, ScaleType, RangeType;
-  int ArrowType, ArrowLocation;
-  int TimeStep;
-  int DrawPoints, DrawLines, DrawTriangles, DrawTetrahedra;
-  int DrawScalars, DrawVectors, DrawTensors;
-  int Boundary;
-  ColorTable CT;
-
-  // dynamic
-  double (*GVFI) (double min, double max, int nb, int index);
-  int (*GIFV) (double min, double max, int nb, double value);
-  // smooth the view
-  void smooth();
-  // smooth the normals
-  smooth_container *normals;
-  void reset_normals();
-  void add_normal(double x, double y, double z, 
-		  double nx, double ny, double nz);
-  bool get_normal(double x, double y, double z, 
-		  double &nx, double &ny, double &nz);
-  // transform the view
-  void transform(double mat[3][3]);
-};
-
-// The static list with pointers to all views
-
-extern List_T *Post_ViewList;
-
-// Reference view storing default options and the static options
-
-extern Post_View *Post_ViewReference;
-extern int        Post_ViewForceNumber, Post_ViewComputeBBox;
-
-
-
-// IntervalsType
-#define DRAW_POST_ISO          1
-#define DRAW_POST_CONTINUOUS   2
-#define DRAW_POST_DISCRETE     3
-#define DRAW_POST_NUMERIC      4
-
-// ArrowType
-#define DRAW_POST_SEGMENT      1
-#define DRAW_POST_ARROW        2
-#define DRAW_POST_PYRAMID      3
-#define DRAW_POST_CONE         4
-#define DRAW_POST_DISPLACEMENT 5
-#define DRAW_POST_ARROW_HEAD   6
-
-// ArrowLocation
-#define DRAW_POST_LOCATE_COG     1
-#define DRAW_POST_LOCATE_VERTEX  2
-
-// RangeType
-#define DRAW_POST_DEFAULT 1
-#define DRAW_POST_CUSTOM  2
-
-// ScaleType
-#define DRAW_POST_LINEAR             1
-#define DRAW_POST_LOGARITHMIC        2
-#define DRAW_POST_DOUBLELOGARITHMIC  3 // for vorticity e.g.
-
-// Public functions
-
-int fcmpPostViewNum(const void *v1, const void *v2);
-int fcmpPostViewDuplicateOf(const void *v1, const void *v2);
-
-Post_View * BeginView (int alloc);
-void EndView (Post_View *v, int AddInUI, char *FileName, char *Name);
-void FreeView(Post_View *v);
-bool FreeView(int);
-void Read_View(FILE *file, char *filename);
-void Write_View(int Flag_BIN, Post_View *v, char *filename);
-void CopyViewOptions(Post_View *src, Post_View *dest);
-
-int BGMWithView (Post_View *ErrView);
-int CreateBGM(Post_View *ErrView, int OptiMethod, double Degree,
-              double OptiValue, double *ObjFunct, char *OutFile);
-double ErrorInView(Post_View * ErrView, int *n);
-
-ColorTable *Get_ColorTable(int num);
-void Print_ColorTable(int num, char *prefix, FILE *file);
-
-#endif
diff --git a/Common/trackball.c b/Common/trackball.c
deleted file mode 100644
index f23d3db30b53cf5f401f7900dd70e4b84e58f921..0000000000000000000000000000000000000000
--- a/Common/trackball.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-/*
- * Trackball code:
- *
- * Implementation of a virtual trackball.
- * Implemented by Gavin Bell, lots of ideas from Thant Tessman and
- *   the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129.
- *
- * Vector manip code:
- *
- * Original code from:
- * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli
- *
- * Much mucking with by:
- * Gavin Bell
- */
-#include <math.h>
-#include "trackball.h"
-
-/*
- * This size should really be based on the distance from the center of
- * rotation to the point on the object underneath the mouse.  That
- * point would then track the mouse as closely as possible.  This is a
- * simple example, though, so that is left as an Exercise for the
- * Programmer.
- */
-#define TRACKBALLSIZE  (0.8)
-
-/*
- * Local function prototypes (not defined in trackball.h)
- */
-static float tb_project_to_sphere(float, float, float);
-static void normalize_quat(float [4]);
-
-void
-vzero(float *v)
-{
-    v[0] = 0.0;
-    v[1] = 0.0;
-    v[2] = 0.0;
-}
-
-void
-vset(float *v, float x, float y, float z)
-{
-    v[0] = x;
-    v[1] = y;
-    v[2] = z;
-}
-
-void
-vsub(const float *src1, const float *src2, float *dst)
-{
-    dst[0] = src1[0] - src2[0];
-    dst[1] = src1[1] - src2[1];
-    dst[2] = src1[2] - src2[2];
-}
-
-void
-vcopy(const float *v1, float *v2)
-{
-    register int i;
-    for (i = 0 ; i < 3 ; i++)
-        v2[i] = v1[i];
-}
-
-void
-vcross(const float *v1, const float *v2, float *cross)
-{
-    float temp[3];
-
-    temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]);
-    temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]);
-    temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]);
-    vcopy(temp, cross);
-}
-
-float
-vlength(const float *v)
-{
-    return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
-}
-
-void
-vscale(float *v, float div)
-{
-    v[0] *= div;
-    v[1] *= div;
-    v[2] *= div;
-}
-
-void
-vnormal(float *v)
-{
-    vscale(v,1.0/vlength(v));
-}
-
-float
-vdot(const float *v1, const float *v2)
-{
-    return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
-}
-
-void
-vadd(const float *src1, const float *src2, float *dst)
-{
-    dst[0] = src1[0] + src2[0];
-    dst[1] = src1[1] + src2[1];
-    dst[2] = src1[2] + src2[2];
-}
-
-/*
- * Ok, simulate a track-ball.  Project the points onto the virtual
- * trackball, then figure out the axis of rotation, which is the cross
- * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0)
- * Note:  This is a deformed trackball-- is a trackball in the center,
- * but is deformed into a hyperbolic sheet of rotation away from the
- * center.  This particular function was chosen after trying out
- * several variations.
- *
- * It is assumed that the arguments to this routine are in the range
- * (-1.0 ... 1.0)
- */
-void
-trackball(float q[4], float p1x, float p1y, float p2x, float p2y)
-{
-    float a[3]; /* Axis of rotation */
-    float phi;  /* how much to rotate about axis */
-    float p1[3], p2[3], d[3];
-    float t;
-
-    if (p1x == p2x && p1y == p2y) {
-        /* Zero rotation */
-        vzero(q);
-        q[3] = 1.0;
-        return;
-    }
-
-    /*
-     * First, figure out z-coordinates for projection of P1 and P2 to
-     * deformed sphere
-     */
-    vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y));
-    vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y));
-
-    /*
-     *  Now, we want the cross product of P1 and P2
-     */
-    vcross(p2,p1,a);
-
-    /*
-     *  Figure out how much to rotate around that axis.
-     */
-    vsub(p1,p2,d);
-    t = vlength(d) / (2.0*TRACKBALLSIZE);
-
-    /*
-     * Avoid problems with out-of-control values...
-     */
-    if (t > 1.0) t = 1.0;
-    if (t < -1.0) t = -1.0;
-    phi = 2.0 * asin(t);
-
-    axis_to_quat(a,phi,q);
-}
-
-/*
- *  Given an axis and angle, compute quaternion.
- */
-void
-axis_to_quat(float a[3], float phi, float q[4])
-{
-    vnormal(a);
-    vcopy(a,q);
-    vscale(q,sin(phi/2.0));
-    q[3] = cos(phi/2.0);
-}
-
-/*
- * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet
- * if we are away from the center of the sphere.
- */
-static float
-tb_project_to_sphere(float r, float x, float y)
-{
-    float d, t, z;
-
-    d = sqrt(x*x + y*y);
-    if (d < r * 0.70710678118654752440) {    /* Inside sphere */
-        z = sqrt(r*r - d*d);
-    } else {           /* On hyperbola */
-        t = r / 1.41421356237309504880;
-        z = t*t / d;
-    }
-    return z;
-}
-
-/*
- * Given two rotations, e1 and e2, expressed as quaternion rotations,
- * figure out the equivalent single rotation and stuff it into dest.
- *
- * This routine also normalizes the result every RENORMCOUNT times it is
- * called, to keep error from creeping in.
- *
- * NOTE: This routine is written so that q1 or q2 may be the same
- * as dest (or each other).
- */
-
-#define RENORMCOUNT 97
-
-void
-add_quats(float q1[4], float q2[4], float dest[4])
-{
-    static int count=0;
-    float t1[4], t2[4], t3[4];
-    float tf[4];
-
-    vcopy(q1,t1);
-    vscale(t1,q2[3]);
-
-    vcopy(q2,t2);
-    vscale(t2,q1[3]);
-
-    vcross(q2,q1,t3);
-    vadd(t1,t2,tf);
-    vadd(t3,tf,tf);
-    tf[3] = q1[3] * q2[3] - vdot(q1,q2);
-
-    dest[0] = tf[0];
-    dest[1] = tf[1];
-    dest[2] = tf[2];
-    dest[3] = tf[3];
-
-    if (++count > RENORMCOUNT) {
-        count = 0;
-        normalize_quat(dest);
-    }
-}
-
-/*
- * Quaternions always obey:  a^2 + b^2 + c^2 + d^2 = 1.0
- * If they don't add up to 1.0, dividing by their magnitued will
- * renormalize them.
- *
- * Note: See the following for more information on quaternions:
- *
- * - Shoemake, K., Animating rotation with quaternion curves, Computer
- *   Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985.
- * - Pletinckx, D., Quaternion calculus as a basic tool in computer
- *   graphics, The Visual Computer 5, 2-13, 1989.
- */
-static void
-normalize_quat(float q[4])
-{
-    int i;
-    float mag;
-
-    mag = (q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]);
-    for (i = 0; i < 4; i++) q[i] /= mag;
-}
-
-/*
- * Build a rotation matrix, given a quaternion rotation.
- *
- */
-void
-build_rotmatrix(float m[4][4], float q[4])
-{
-    m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]);
-    m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]);
-    m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]);
-    m[0][3] = 0.0;
-
-    m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]);
-    m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]);
-    m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]);
-    m[1][3] = 0.0;
-
-    m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]);
-    m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]);
-    m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]);
-    m[2][3] = 0.0;
-
-    m[3][0] = 0.0;
-    m[3][1] = 0.0;
-    m[3][2] = 0.0;
-    m[3][3] = 1.0;
-}
-
diff --git a/Common/trackball.h b/Common/trackball.h
deleted file mode 100644
index b676fb4e54ba7cd70f22a02087a88ac31db343f0..0000000000000000000000000000000000000000
--- a/Common/trackball.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
- * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States.  Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-/*
- * trackball.h
- * A virtual trackball implementation
- * Written by Gavin Bell for Silicon Graphics, November 1988.
- */
-
-/*
- * Pass the x and y coordinates of the last and current positions of
- * the mouse, scaled so they are from (-1.0 ... 1.0).
- *
- * The resulting rotation is returned as a quaternion rotation in the
- * first paramater.
- */
-void
-trackball(float q[4], float p1x, float p1y, float p2x, float p2y);
-
-/*
- * Given two quaternions, add them together to get a third quaternion.
- * Adding quaternions to get a compound rotation is analagous to adding
- * translations to get a compound translation.  When incrementally
- * adding rotations, the first argument here should be the new
- * rotation, the second and third the total rotation (which will be
- * over-written with the resulting new total rotation).
- */
-void
-add_quats(float *q1, float *q2, float *dest);
-
-/*
- * A useful function, builds a rotation matrix in Matrix based on
- * given quaternion.
- */
-void
-build_rotmatrix(float m[4][4], float q[4]);
-
-/*
- * This function computes a quaternion based on an axis (defined by
- * the given vector) and an angle about which to rotate.  The angle is
- * expressed in radians.  The result is put into the third argument.
- */
-void
-axis_to_quat(float a[3], float phi, float q[4]);
-
diff --git a/DataStr/List.cpp b/DataStr/List.cpp
deleted file mode 100644
index 53487fd51effbcd0ea205e33aeb36783adb6d04d..0000000000000000000000000000000000000000
--- a/DataStr/List.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-// $Id: List.cpp,v 1.16 2001-05-22 07:11:14 geuzaine Exp $
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "Malloc.h"
-#include "List.h"
-#include "Message.h"
-
-static char *startptr;
-
-
-List_T *List_Create(int n, int incr, int size)
-{
-  List_T *liste;
-
-  if (n <= 0)  n = 1 ;
-  if (incr <= 0) incr = 1;
-
-  liste = (List_T *)Malloc(sizeof(List_T));
-
-  liste->nmax    = 0;
-  liste->incr    = incr;
-  liste->size    = size;
-  liste->n       = 0;
-  liste->isorder = 0;
-  liste->array   = NULL;
-
-  List_Realloc(liste,n);
-  return(liste);
-}
-
-void List_Delete(List_T *liste)
-{
-  if(!liste) return ;
-  Free(liste->array);
-  Free(liste);
-}
-
-void List_Realloc(List_T *liste,int n)
-{
-  if (n <= 0) return;
-
-  if (liste->array == NULL) {
-    liste->nmax = ((n - 1) / liste->incr + 1) * liste->incr;
-    liste->array = (char *)Malloc(liste->nmax * liste->size);
-  }
-  else
-    if (n > liste->nmax) {
-      liste->nmax = ((n - 1) / liste->incr + 1) * liste->incr;
-      liste->array = (char *)Realloc(liste->array,
-                         liste->nmax * liste->size);
-    }
-}
-
-void List_Add(List_T *liste, void *data)
-{
-  liste->n++;
-
-  List_Realloc(liste,liste->n);
-  liste->isorder = 0;
-  memcpy(&liste->array[(liste->n - 1) * liste->size],data,liste->size);
-}
-
-int List_Nbr(List_T *liste)
-{
-  return (liste)? liste->n : 0 ;
-}
-
-void List_Insert(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  if (List_Search(liste,data,fcmp) == 0)
-    List_Add(liste,data);
-}
-
-int List_Replace(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  void *ptr;
-
-  if (liste->isorder != 1) List_Sort(liste,fcmp);
-  liste->isorder = 1;
-  ptr = (void *) bsearch(data,liste->array,liste->n,liste->size,fcmp);
-  if (ptr == NULL) {
-    List_Add(liste,data);
-    return(0);
-  }
-  else {
-    memcpy(ptr,data,liste->size);
-    return (1);
-  }
-}
-
-void List_Read(List_T *liste, int index, void *data)
-{
-  if ((index < 0) || (index >= liste->n))
-    Msg(FATAL, "Wrong list index (read)");
-  memcpy(data,&liste->array[index * liste->size],liste->size);
-}
-
-void List_Write(List_T *liste, int index, void *data)
-{
-  if ((index < 0) || (index >= liste->n))
-    Msg(GERROR, "Wrong list index (write)");
-  else{
-    liste->isorder = 0;
-    memcpy(&liste->array[index * liste->size],data,liste->size);
-  }
-}
-
-void List_Put(List_T *liste, int index, void *data)
-{
-  if (index < 0)
-    Msg(GERROR, "Wrong list index (put)");
-  else{
-    if (index >= liste->n) {
-      liste->n = index + 1;
-      List_Realloc(liste,liste->n);
-      List_Write(liste,index,data);
-    } 
-    else {
-      List_Write(liste,index,data);
-    }
-  }
-}
-
-void List_Pop(List_T *liste)
-{
-  liste->n -- ;
-}
-
-void *List_Pointer(List_T *liste, int index)
-{
-  if ((index < 0) || (index >= liste->n))
-    Msg(FATAL, "Wrong list index (pointer)");
-    
-  liste->isorder = 0;
-  return(&liste->array[index * liste->size]);
-}
-
-void *List_Pointer_NoChange(List_T *liste, int index)
-{
-  if ((index < 0) || (index >= liste->n))
-    Msg(FATAL, "Wrong list index (pointer)");
-
-  return(&liste->array[index * liste->size]);
-}
-
-void *List_Pointer_Fast(List_T *liste, int index)
-{
-  return(&liste->array[index * liste->size]);
-}
-
-void *List_Pointer_Test(List_T *liste, int index)
-{
-  if (!liste || (index < 0) || (index >= liste->n))
-    return NULL;
-    
-  liste->isorder = 0;
-  return(&liste->array[index * liste->size]);
-}
-
-void List_Sort(List_T *liste, int (*fcmp)(const void *a, const void *b))
-{
-  qsort(liste->array,liste->n,liste->size,fcmp);
-}
-
-int List_Search(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  void *ptr;
-
-  if (liste->isorder != 1) { List_Sort(liste,fcmp) ; liste->isorder = 1 ; }
-  ptr = (void *) bsearch(data,liste->array,liste->n,liste->size,fcmp);
-  if (ptr == NULL) return(0);
-  return (1);
-}
-
-int List_ISearch(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  void *ptr;
-
-  if (liste->isorder != 1) List_Sort(liste,fcmp);
-  liste->isorder = 1;
-  ptr = (void *) bsearch(data,liste->array,liste->n,liste->size,fcmp);
-  if (ptr == NULL) return(-1);
-  return (((long)ptr - (long)liste->array) / liste->size);
-}
-
-int  List_ISearchSeq(List_T *liste, void * data,
-                     int (*fcmp)(const void *a, const void *b)) {
-  int i ;
-
-  if (!liste)  return -1 ;
-  i = 0 ;
-  while ((i < List_Nbr(liste)) &&
-         fcmp(data, (void *)List_Pointer(liste, i)) )  i++ ;
-  if (i == List_Nbr(liste))  i = -1 ;
-  return i ;
-}
-
-int  List_ISearchSeqPartial(List_T *liste, void * data, int i_Start,
-                            int (*fcmp)(const void *a, const void *b)) {
-  int i ;
-
-  if (!liste)  return -1 ;
-  i = i_Start ;
-  while ((i < List_Nbr(liste)) &&
-         fcmp(data, (void *)List_Pointer(liste, i)) )  i++ ;
-  if (i == List_Nbr(liste))  i = -1 ;
-  return i ;
-}
-
-int List_Query(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  void *ptr;
-
-  if (liste->isorder != 1) List_Sort(liste,fcmp);
-  liste->isorder = 1;
-  ptr = (void *) bsearch(data,liste->array,liste->n,liste->size,fcmp);
-  if (ptr == NULL) return(0);
-
-  memcpy(data,ptr,liste->size);
-  return (1);
-}
-
-void *lolofind(void *data, void *array, int n, int size,
-               int (*fcmp)(const void *a, const void *b) )
-{
-  char *ptr;
-  int i;
-
-  ptr = (char*)array;
-  for (i = 0; i < n; i++) {
-    if (fcmp(ptr,data) == 0) break;
-    ptr += size;
-  }
-  if (i < n) return(ptr);
-  return(NULL);
-}
-
-int List_LQuery(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b), int first)
-{
-  char *ptr;
-  
-  if (first == 1) { 
-    ptr = (char *) lolofind(data,liste->array,liste->n,liste->size,fcmp);
-  }
-  else {
-    if (startptr != NULL)
-      ptr = (char *) lolofind(data,startptr,liste->n,liste->size,fcmp);
-    else
-      return(0);
-  }
-
-  if (ptr == NULL) return(0);
-
-  startptr =  ptr + liste->size;
-  if ( startptr >= ( liste->array + liste->n * liste->size))
-    startptr = NULL;
-  memcpy(data,ptr,liste->size);
-  return (1);
-}
-
-void *List_PQuery(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  void *ptr;
-
-  if (liste->isorder != 1) List_Sort(liste,fcmp);
-  liste->isorder = 1;
-  ptr = (void *) bsearch(data,liste->array,liste->n,liste->size,fcmp);
-  return(ptr);
-}
-
-int List_Suppress(List_T *liste, void *data,
-                 int (*fcmp)(const void *a, const void *b))
-{
-  char *ptr;
-  int len;
-  
-  ptr = (char*)List_PQuery(liste,data,fcmp) ;
-  if (ptr == NULL) return(0);
-  
-  liste->n--;
-  len = liste->n - (((long)ptr - (long)liste->array) / liste->size);
-  if (len > 0) memmove(ptr, ptr + liste->size, len * liste->size);
-  return(1);
-}
-
-int List_PSuppress(List_T *liste, int index)
-{
-  char *ptr;
-  int len;
-  
-  ptr = (char*)List_Pointer_NoChange(liste,index) ;
-  if (ptr == NULL) return(0);
-  
-  liste->n--;
-  len = liste->n - (((long)ptr - (long)liste->array) / liste->size);
-  if (len > 0) memmove(ptr, ptr + liste->size, len * liste->size);
-  return(1);
-}
-
-void List_Invert(List_T *a , List_T *b)
-{
-  int i,N;
-  N = List_Nbr(a);
-  for(i=0;i<N;i++){
-    List_Add(b,List_Pointer(a,N-i-1));
-  }
-}
-
-void List_Reset(List_T *liste)
-{
-  if(!liste) return;
-  liste->n = 0;
-}
-
-void List_Action(List_T *liste, void (*action)(void *data, void *dummy))
-{
-  int i,dummy;
-
-  for(i=0 ; i<List_Nbr(liste) ; i++){
-    (*action)(List_Pointer_NoChange(liste,i),&dummy);
-  }
-
-}
-
-void List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy))
-{
-  int i,dummy;
-
-  for(i=List_Nbr(liste) ; i>0 ; i--){
-    (*action)(List_Pointer_NoChange(liste,i-1),&dummy);
-  }
-
-}
-
-void List_Copy(List_T *a , List_T *b){
-  int i,N;
-  N = List_Nbr(a);
-  for(i=0;i<N;i++){
-    List_Add(b,List_Pointer(a,i));
-  }
-}
-
-void swap_bytes(char *array, int size, int n){
-  int i, c;
-  char *x, *a;
-  
-  x = (char*)Malloc(size);
-
-  for (i = 0; i < n; i++) {
-    a = &array[i*size];
-    memcpy(x, a, size);
-    for (c = 0; c < size; c++)
-      a[size-1-c] = x[c];
-  }
-
-  Free(x);
-}
-
-List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap){
-  int i;
-  List_T *liste;
-
-  if(!n) return NULL;
-  
-  liste = List_Create(n, 1, size);
-  liste->n = n;
-  switch(format){
-  case LIST_FORMAT_ASCII :
-    if(size == sizeof(double))
-      for(i=0;i<n;i++) fscanf(file, "%lf", (double*)&liste->array[i*size]) ;
-    else if(size == sizeof(float))
-      for(i=0;i<n;i++) fscanf(file, "%f", (float*)&liste->array[i*size]) ;
-    else if(size == sizeof(int))
-      for(i=0;i<n;i++) fscanf(file, "%d", (int*)&liste->array[i*size]) ;
-    else{
-      Msg(GERROR, "Bad type of data to create list from (size = %d)", size);
-      return NULL;
-    }
-    return liste;
-  case LIST_FORMAT_BINARY :
-    fread(liste->array, size, n, file);
-    if(swap) swap_bytes(liste->array, size, n);
-    return liste;
-  default :
-    Msg(GERROR, "Unknown list format");
-    return NULL;
-  }
-
-}
-
-void List_WriteToFile(List_T *liste, FILE *file, int format){
-  int i, n;
-
-  if(!(n=List_Nbr(liste))) return ;
-
-  switch(format){
-  case LIST_FORMAT_ASCII :
-    if(liste->size == sizeof(double))
-      for(i=0;i<n;i++) fprintf(file, "%g ", *((double*)&liste->array[i*liste->size])) ;
-    else if(liste->size == sizeof(float))
-      for(i=0;i<n;i++) fprintf(file, "%g ", *((float*)&liste->array[i*liste->size])) ;
-    else if(liste->size == sizeof(int))
-      for(i=0;i<n;i++) fprintf(file, "%d ", *((int*)&liste->array[i*liste->size])) ;
-    else
-      Msg(GERROR, "Bad type of data to write list to file (size = %d)", liste->size);
-    fprintf(file, "\n");
-    break;
-  case LIST_FORMAT_BINARY :
-    fwrite(liste->array, liste->size, n, file);
-    break;
-  default :
-    Msg(GERROR, "Unknown list format");
-  }
-}
diff --git a/DataStr/List.h b/DataStr/List.h
deleted file mode 100644
index 50e58b3bbfeaf465cbed8d0cc853cf4cf0d8ee05..0000000000000000000000000000000000000000
--- a/DataStr/List.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _LIST_H_
-#define _LIST_H_
-
-#include <stdio.h>
-
-#define LIST_FORMAT_ASCII       0
-#define LIST_FORMAT_BINARY      1
-
-typedef struct {
-  int nmax;
-  int size;
-  int incr;
-  int n;
-  int isorder;
-  char *array;
-} List_T;
-
-List_T *List_Create(int n, int incr, int size);
-void    List_Delete(List_T *liste);
-void    List_Realloc(List_T *liste,int n);
-void    List_Add(List_T *liste, void *data);
-int     List_Nbr(List_T *liste);
-void    List_Insert(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-int     List_Replace(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-void    List_Read(List_T *liste, int index, void *data);
-void    List_Write(List_T *liste, int index, void *data);
-void    List_Put(List_T *liste, int index, void *data);
-void    List_Pop(List_T *liste);
-void   *List_Pointer(List_T *liste, int index);
-void   *List_Pointer_NoChange(List_T *liste, int index);
-void   *List_Pointer_Fast(List_T *liste, int index);
-void   *List_Pointer_Test(List_T *liste, int index);
-void    List_Sort(List_T *liste, int (*fcmp)(const void *a, const void *b));
-int     List_Search(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-int     List_ISearch(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-int     List_ISearchSeq(List_T *liste, void * data, int (*fcmp)(const void *a, const void *b));
-int     List_ISearchSeqPartial(List_T *liste, void * data, int i_Start,
-                               int (*fcmp)(const void *a, const void *b)) ;
-int     List_Query(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-int     List_LQuery(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b), int first);
-void   *List_PQuery(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-int     List_Suppress(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
-int     List_PSuppress(List_T *liste, int index);
-void    List_Invert(List_T *a, List_T *b);
-void    List_Reset(List_T *liste);
-void    List_Action(List_T *liste, void (*action)(void *data, void *dummy));
-void    List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy));
-void    List_Copy(List_T *a , List_T *b);
-List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap);
-void    List_WriteToFile(List_T *liste, FILE *file, int format);
-
-#endif
-
diff --git a/DataStr/Makefile b/DataStr/Makefile
deleted file mode 100644
index 4906bf4cc8f21347ed9e841ffaca79df3ec87a78..0000000000000000000000000000000000000000
--- a/DataStr/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-# $Id: Makefile,v 1.11 2001-08-11 23:32:18 geuzaine Exp $
-#
-# Makefile for "libDataStr.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RM       = rm
-RANLIB   = ranlib
-LIB      = ../lib/libDataStr.a
-INCLUDE  = -I../Common
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)
-
-SRC = List.cpp \
-      Malloc.cpp \
-      Tree.cpp \
-      avl.cpp \
-      Tools.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ)
-	$(AR) $(LIB) $(OBJ)
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	lint $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) Makefile.new
-
-
-# DO NOT DELETE THIS LINE
-List.o: List.cpp Malloc.h List.h ../Common/Message.h
-Malloc.o: Malloc.cpp Malloc.h ../Common/Message.h
-Tree.o: Tree.cpp Malloc.h Tree.h avl.h ../Common/Message.h
-avl.o: avl.cpp avl.h Malloc.h
-Tools.o: Tools.cpp Tools.h List.h Tree.h avl.h
diff --git a/DataStr/Malloc.cpp b/DataStr/Malloc.cpp
deleted file mode 100644
index fb02765f15ea032221496f02efc7c74488b749d7..0000000000000000000000000000000000000000
--- a/DataStr/Malloc.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// $Id: Malloc.cpp,v 1.8 2001-06-07 15:13:08 geuzaine Exp $
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-
-#include "Malloc.h"
-#include "Message.h"
-
-void *Malloc(size_t size)
-{
-  void *ptr;
-
-  if (!size) return(NULL);
-  ptr = malloc(size);
-  if (ptr == NULL)
-    Msg(FATAL, "Out of memory (buy some more RAM!)");
-  return(ptr);
-}
-
-void *Calloc(size_t num, size_t size)
-{
-  void *ptr;
-
-  if (!size) return(NULL);
-  ptr = calloc(num, size);
-  if (ptr == NULL)
-    Msg(FATAL, "Out of memory (buy some more RAM!)");
-  return(ptr);
-}
-
-void *Realloc(void *ptr, size_t size)
-{
-  if (!size) return(NULL);
-  ptr = realloc(ptr,size);
-  if (ptr == NULL)
-    Msg(FATAL, "Out of memory (buy some more RAM!)");
-  return(ptr);
-}
-
-void Free(void *ptr)
-{
-  if (ptr == NULL) return;
-  free(ptr);
-}
diff --git a/DataStr/Malloc.h b/DataStr/Malloc.h
deleted file mode 100644
index aeabacae095d830c7d46d9507cdb45f9a6404339..0000000000000000000000000000000000000000
--- a/DataStr/Malloc.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef _MALLOC_H_
-#define _MALLOC_H_
-
-void *Malloc(size_t size);
-void *Calloc(size_t num, size_t size);
-void *Realloc(void *ptr, size_t size);
-void  Free(void *ptr);
-
-#endif
diff --git a/DataStr/Tools.cpp b/DataStr/Tools.cpp
deleted file mode 100644
index f8a24c72a456a08518327bf1ba35ab883cbba0f2..0000000000000000000000000000000000000000
--- a/DataStr/Tools.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// $Id: Tools.cpp,v 1.4 2001-01-08 08:05:41 geuzaine Exp $
-
-#include <stdlib.h>
-#include <math.h>
-#include "Tools.h"
-
-// Comparison functions
-
-int fcmp_int(const void *a, const void *b){
-  return(*(int*)a - *(int*)b );
-}
-
-int fcmp_absint(const void *a, const void *b){
-  return( abs(*(int*)a) - abs(*(int*)b) );
-}
-
-int fcmp_double(const void *a, const void *b){
-  double cmp ;
-  
-  cmp = *(double*)a - *(double*)b ;
-  if      (cmp > 1.e-16)  return  1 ;
-  else if (cmp < -1.e-16) return -1 ;
-  else                    return  0 ;
-}
-
-// Tree ==> List transfer
-
-List_T *pListeTransfert;
-
-void TransfereListe(void *a,void *b){
-  List_Add(pListeTransfert,a);
-}
-List_T *Tree2List(Tree_T *pTree){
-  int Nb;
-  Nb = Tree_Nbr(pTree) ; if (Nb == 0) Nb = 1 ;
-  pListeTransfert = List_Create(Nb,Nb,Tree_Size(pTree));
-  Tree_Action(pTree,TransfereListe);
-  return(pListeTransfert);
-}
-
-// Algebraic utilities
-
-Tree_T *pTreeTransfert;
-Tree_T *pTreeTransfert2;
-
-void DupliqueArbre(void *a,void *b){
-  Tree_Add(pTreeTransfert,a);
-}
-Tree_T *Tree_Duplique(Tree_T *pTree){
-  pTreeTransfert = Tree_Create(pTree->size,pTree->root->compar);
-  Tree_Action(pTree,DupliqueArbre);
-  return(pTreeTransfert);
-}
-
-void UnitArbre(void *a,void *b){
-  Tree_Replace(pTreeTransfert,a);
-}
-Tree_T *Tree_Union(Tree_T *pTreeA, Tree_T *pTreeB){
-  pTreeTransfert = Tree_Duplique(pTreeA);
-  Tree_Action(pTreeB,UnitArbre);
-  return(pTreeTransfert);
-}
-void Tree_Unit(Tree_T *pTreeA, Tree_T *pTreeB){
-  pTreeTransfert = pTreeA;
-  Tree_Action(pTreeB,UnitArbre);
-}
-
-
-void SoustraitArbre(void *a,void *b){
-  Tree_Suppress(pTreeTransfert,a);
-}
-Tree_T *Tree_Soustraction(Tree_T *pTreeA, Tree_T *pTreeB){
-  pTreeTransfert = Tree_Duplique(pTreeA);
-  Tree_Action(pTreeB,SoustraitArbre);
-  return(pTreeTransfert);
-}
-void Tree_Soustrait(Tree_T *pTreeA, Tree_T *pTreeB){
-  pTreeTransfert = pTreeA;
-  Tree_Action(pTreeB,SoustraitArbre);
-}
-
-
-void IntersecteArbre(void *a,void *b){
-  if (Tree_Query(pTreeTransfert,a)) Tree_Add(pTreeTransfert2,a);
-}
-Tree_T *Tree_Intersection(Tree_T *pTreeA, Tree_T *pTreeB){
-  pTreeTransfert = Tree_Duplique(pTreeA);
-  pTreeTransfert2= Tree_Create(pTreeA->size,pTreeA->root->compar);
-  Tree_Action(pTreeB,IntersecteArbre);
-  Tree_Delete(pTreeTransfert);
-  return(pTreeTransfert2);
-}
-void Tree_Intersecte(Tree_T *pTreeA, Tree_T *pTreeB){
-  pTreeTransfert2 = pTreeA;
-  pTreeTransfert  = Tree_Create(pTreeA->size,pTreeA->root->compar);
-  Tree_Action(pTreeB,IntersecteArbre);
-  pTreeA = pTreeTransfert2;
-  Tree_Delete(pTreeA);
-}
diff --git a/DataStr/Tools.h b/DataStr/Tools.h
deleted file mode 100644
index cb5f57b839e68bb8a6a90b810b7bff1557de527e..0000000000000000000000000000000000000000
--- a/DataStr/Tools.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _TOOLS_H_
-#define _TOOLS_H_
-
-#include "List.h"
-#include "Tree.h"
-
-int fcmp_int(const void *a, const void *b);
-int fcmp_absint(const void *a, const void *b);
-int fcmp_double(const void *a, const void *b);
-
-List_T *Tree2List(Tree_T *pTree) ;
-
-Tree_T *Tree_Duplique(Tree_T *pTree) ;
-Tree_T *Tree_Union       (Tree_T *pTreeA, Tree_T *pTreeB) ;
-Tree_T *Tree_Soustraction(Tree_T *pTreeA, Tree_T *pTreeB) ;
-Tree_T *Tree_Intersection(Tree_T *pTreeA, Tree_T *pTreeB) ;
-
-void Tree_Unit      (Tree_T *pTreeA, Tree_T *pTreeB) ;
-void Tree_Soustrait (Tree_T *pTreeA, Tree_T *pTreeB) ;
-void Tree_Intersecte(Tree_T *pTreeA, Tree_T *pTreeB) ;
-
-#endif
diff --git a/DataStr/Tree.cpp b/DataStr/Tree.cpp
deleted file mode 100644
index 091c60207763f8422efb4ac89bfdd03f8eb74df3..0000000000000000000000000000000000000000
--- a/DataStr/Tree.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-// $Id: Tree.cpp,v 1.7 2001-04-08 20:36:49 geuzaine Exp $
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "Malloc.h"
-#include "Tree.h"
-#include "Message.h"
-
-Tree_T *Tree_Create(int size, int (*fcmp)(const void *a, const void *b))
-{
-  Tree_T *tree;
-
-  tree = (Tree_T *) Malloc(sizeof(Tree_T));
-
-  tree->size = size;
-  tree->root = avl_init_table(fcmp);
-
-  return(tree);
-}
-
-void Tree_Delete(Tree_T *tree)
-{
-  if(!tree) return;
-  avl_free_table(tree->root, Free, 0);
-  Free(tree);
-}
-
-void Tree_Add(Tree_T *tree, void *data)
-{
-  void *ptr;
-
-  if(!tree) 
-    Msg(GERROR, "Impossible to add in unallocated tree");
-  else{
-    ptr = Malloc(tree->size);
-    memcpy(ptr,data,tree->size);
-    avl_insert(tree->root, ptr, ptr);
-  }
-}
-
-void * Tree_AddP(Tree_T *tree, void *data)
-{
-  void *ptr;
-
-  if(!tree) 
-    Msg(FATAL, "Impossible to add in unallocated tree");
-  ptr = Malloc(tree->size);
-  memcpy(ptr,data,tree->size);
-  avl_insert(tree->root, ptr, ptr);
-  return ptr ;
-}
-
-int Tree_Nbr(Tree_T *tree)
-{
-  if(!tree) return 0;
-  return(avl_count(tree->root));
-}
-
-void Tree_Insert(Tree_T *tree, void *data)
-{
-  if (Tree_Search(tree,data) == 0)
-    Tree_Add(tree,data);
-}
-
-int Tree_Replace(Tree_T *tree, void *data)
-{
-  void *ptr;
-  int state;
-
-  if(!tree) {
-    Msg(GERROR, "Impossible to replace in unallocated tree");
-    return(0);
-  }
-  state = avl_lookup(tree->root, data, &ptr);
-  if (state == 0) {
-    Tree_Add(tree,data);
-    return(0);
-  }
-  else {
-    memcpy(ptr,data,tree->size);
-    return (1);
-  }
-}
-
-int Tree_Search(Tree_T *tree, void *data)
-{
-  void *ptr;
-
-  if(!tree) return 0;
-  return (avl_lookup(tree->root, data, &ptr));
-}
-
-int Tree_Query(Tree_T *tree, void *data)
-{
-  void *ptr;
-  int state;
-
-  if(!tree) return 0;
-
-  state = avl_lookup(tree->root, data, &ptr);
-
-  if (state == 0) return(0);
-
-  memcpy(data,ptr,tree->size);
-
-  return (1);
-}
-
-void *Tree_PQuery(Tree_T *tree, void *data)
-{
-  void *ptr;
-  int state;
-
-  if(!tree) return 0;
-
-  state = avl_lookup(tree->root, data, &ptr);
-
-  if (state == 0) return(NULL);
-  return (ptr);
-}
-
-int Tree_Suppress(Tree_T *tree, void *data)
-{
-  void *ptr;
-  int state;
-
-  if(!tree) return 0;
-
-  ptr = data;
-  state = avl_delete(tree->root, &ptr, &ptr) ;
-  if (state == 0) return(0);
-
-  Free(ptr);
-  return(1);
-}
-
-int Tree_Left(Tree_T *tree, void *data)
-{
-  void *ptr;
-  int state;
-
-  if(!tree) return 0;
-
-  state = avl_extremum(tree->root, AVL_MOST_LEFT, &ptr);
-
-  if (state == 0) return (0);
-
-  memcpy(data,ptr,tree->size);
-
-  return (1);
-}
-
-int Tree_Right(Tree_T *tree, void *data)
-{
-  void *ptr;
-  int state;
-
-  if(!tree) return 0;
-
-  state = avl_extremum(tree->root, AVL_MOST_RIGHT, &ptr);
-
-  if (state == 0) return (0);
-
-  memcpy(data,ptr,tree->size);
-
-  return (1);
-}
-
-void Tree_Action(Tree_T *tree, void (*action) (void *data, void *dummy))
-{
-  if(!tree) return;
-
-  avl_foreach(tree->root, action, AVL_FORWARD);
-}
-
-int Tree_Size(Tree_T *tree) {
-  if(!tree) return 0;
-
-  return(tree->size);
-}
diff --git a/DataStr/Tree.h b/DataStr/Tree.h
deleted file mode 100644
index 85be99ed569c2945c825e957ff8c636e41baf316..0000000000000000000000000000000000000000
--- a/DataStr/Tree.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _TREE_H_
-#define _TREE_H_
-
-#include "avl.h"
-
-typedef struct {
-  int size;
-  avl_tree *root;
-} Tree_T;
-
-Tree_T *Tree_Create(int size, int (*fcmp)(const void *a, const void *b));
-void    Tree_Delete(Tree_T *Tree);
-void    Tree_Add(Tree_T *tree, void *data);
-void   *Tree_AddP(Tree_T *tree, void *data);
-int     Tree_Nbr(Tree_T *Tree);
-void    Tree_Insert(Tree_T *Tree, void *data);
-int     Tree_Replace(Tree_T *Tree, void *data);
-int     Tree_Search(Tree_T *Tree, void *data);
-int     Tree_Query(Tree_T *Tree, void *data);
-void   *Tree_PQuery(Tree_T *Tree, void *data);
-int     Tree_Suppress(Tree_T *Tree, void *data);
-int     Tree_Left(Tree_T *tree, void *data);
-int     Tree_Right(Tree_T *tree, void *data);
-void    Tree_Action(Tree_T *tree, void (*action) (void *data, void *dummy));
-int     Tree_Size(Tree_T *tree) ;
-
-#endif
-
diff --git a/DataStr/avl.cpp b/DataStr/avl.cpp
deleted file mode 100644
index c10d4b2ce9c07c1854749b64ec06e76b350e7f46..0000000000000000000000000000000000000000
--- a/DataStr/avl.cpp
+++ /dev/null
@@ -1,443 +0,0 @@
-// $Id: avl.cpp,v 1.5 2001-01-08 08:05:41 geuzaine Exp $
-
-/*
- * This is a modified version for Gmsh (for c++, 64-bit architectures, etc.)
- */
-
-/*
- * avl package
- *
- * Copyright (c) 1988-1993, The Regents of the University of California.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of the University of California not
- * be used in advertising or publicity pertaining to distribution of 
- * the software without specific, written prior permission.  The University
- * of California makes no representations about the suitability of this
- * software for any purpose.  It is provided "as is" without express or
- * implied warranty.
- *
- * THE UNIVERSITY OF CALIFORNIA DISCLAIMS ALL WARRANTIES WITH REGARD TO 
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
- * FITNESS, IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <stdio.h>
-
-#include "avl.h"
-#include "Malloc.h"
-
-#define ALLOC(type, number)  (type *) Malloc((unsigned) sizeof(type) * number)
-#define NIL(type)            (type *) 0
-#define FREE(item)           (void) Free(item)
-#define XRNMAX(a,b)          ((a) > (b) ? (a) : (b))
-#define HEIGHT(node)         (node == NIL(avl_node) ? -1 : (node)->height)
-#define BALANCE(node)        (HEIGHT((node)->right) - HEIGHT((node)->left))
-
-#define compute_height(node) {                          \
-    int x=HEIGHT(node->left), y=HEIGHT(node->right);    \
-    (node)->height = XRNMAX(x,y) + 1;                   \
-}
-
-#define COMPARE(key, nodekey, compare)                  \
-    ((compare == avl_numcmp) ?                          \
-        (long int) key - (long int) nodekey :                   \
-        (*compare)(key, nodekey))
-
-static void avl_record_gen_forward(avl_node *node, avl_generator *gen);
-static void avl_record_gen_backward(avl_node *node, avl_generator *gen);
-static avl_node *find_rightmost(avl_node **node_p);
-static void do_rebalance(avl_node ***stack_nodep, int stack_n);
-static void rotate_left(avl_node **node_p);
-static void rotate_right(avl_node **node_p);
-static void avl_walk_forward(avl_node *node, void (*func)(void *key, void *value));
-static void avl_walk_backward(avl_node *node, void (*func)(void *key, void *value));
-static void free_entry(avl_node *node, void (*key_free)(void *key), 
-                       void (*value_free)(void *value));
-static avl_node *new_node(void *key, void *value);
-static int do_check_tree(avl_node *node, int (*compar)(const void *key1, const void *key2),
-                         int *error);
-
-
-avl_tree *avl_init_table(int (*compar)(const void *key1, const void *key2))
-{
-    avl_tree *tree;
-
-    tree = ALLOC(avl_tree, 1);
-    tree->root = NIL(avl_node);
-    tree->compar = compar;
-    tree->num_entries = 0;
-    return tree;
-}
-
-int avl_lookup(avl_tree *tree, void *key, void **value_p)
-{
-    register avl_node *node;
-    register int (*compare)(const void*, const void *) = tree->compar, diff;
-
-    node = tree->root;
-    while (node != NIL(avl_node)) {
-        diff = COMPARE(key, node->key, compare);
-        if (diff == 0) {
-            /* got a match, give the user a 'value' only if non-null */
-            if (value_p != NIL(void *)) *value_p = node->value;
-            return 1;
-        }
-        node = (diff < 0) ? node->left : node->right;
-    }
-    return 0;
-}
-
-int avl_insert(avl_tree *tree, void *key, void *value)
-{
-    register avl_node **node_p, *node;
-    register int stack_n = 0;
-    register int (*compare)(const void*, const void *) = tree->compar;
-    avl_node **stack_nodep[32];
-    int diff, status;
-
-    node_p = &tree->root;
-
-    /* walk down the tree (saving the path); stop at insertion point */
-    status = 0;
-    while ((node = *node_p) != NIL(avl_node)) {
-        stack_nodep[stack_n++] = node_p;
-        diff = COMPARE(key, node->key, compare);
-        if (diff == 0) status = 1;
-        node_p = (diff < 0) ? &node->left : &node->right;
-    }
-
-    /* insert the item and re-balance the tree */
-    *node_p = new_node(key, value);
-    do_rebalance(stack_nodep, stack_n);
-    tree->num_entries++;
-    tree->modified = 1;
-    return status;
-}
-
-int avl_delete(avl_tree *tree, void **key_p, void **value_p)
-{
-    register avl_node **node_p, *node, *rightmost;
-    register int stack_n = 0;
-    void *key = *key_p;
-    int (*compare)(const void*, const void*) = tree->compar, diff;
-    avl_node **stack_nodep[32];
-    
-    node_p = &tree->root;
-
-    /* Walk down the tree saving the path; return if not found */
-    while ((node = *node_p) != NIL(avl_node)) {
-        diff = COMPARE(key, node->key, compare);
-        if (diff == 0) goto delete_item;
-        stack_nodep[stack_n++] = node_p;
-        node_p = (diff < 0) ? &node->left : &node->right;
-    }
-    return 0;           /* not found */
-
-    /* prepare to delete node and replace it with rightmost of left tree */
-  delete_item:
-    *key_p = node->key;
-    if (value_p != 0) *value_p = node->value;
-    if (node->left == NIL(avl_node)) {
-        *node_p = node->right;
-    } else {
-        rightmost = find_rightmost(&node->left);
-        rightmost->left = node->left;
-        rightmost->right = node->right;
-        rightmost->height = -2;         /* mark bogus height for do_rebal */
-        *node_p = rightmost;
-        stack_nodep[stack_n++] = node_p;
-    }
-    FREE(node);
-
-    /* work our way back up, re-balancing the tree */
-    do_rebalance(stack_nodep, stack_n);
-    tree->num_entries--;
-    tree->modified = 1;
-    return 1;
-}
-
-static void avl_record_gen_forward(avl_node *node, avl_generator *gen)
-{
-    if (node != NIL(avl_node)) {
-        avl_record_gen_forward(node->left, gen);
-        gen->nodelist[gen->count++] = node;
-        avl_record_gen_forward(node->right, gen);
-    }
-}
-
-static void avl_record_gen_backward(avl_node *node, avl_generator *gen)
-{
-    if (node != NIL(avl_node)) {
-        avl_record_gen_backward(node->right, gen);
-        gen->nodelist[gen->count++] = node;
-        avl_record_gen_backward(node->left, gen);
-    }
-}
-
-avl_generator *avl_init_gen(avl_tree *tree, int dir)
-{
-    avl_generator *gen;
-
-    /* what a hack */
-    gen = ALLOC(avl_generator, 1);
-    gen->tree = tree;
-    gen->nodelist = ALLOC(avl_node *, avl_count(tree));
-    gen->count = 0;
-    if (dir == AVL_FORWARD) {
-        avl_record_gen_forward(tree->root, gen);
-    } else {
-        avl_record_gen_backward(tree->root, gen);
-    }
-    gen->count = 0;
-
-    /* catch any attempt to modify the tree while we generate */
-    tree->modified = 0;
-    return gen;
-}
-
-int avl_gen(avl_generator *gen, void **key_p, void **value_p)
-{
-    avl_node *node;
-
-    if (gen->count == gen->tree->num_entries) {
-        return 0;
-    } else {
-        node = gen->nodelist[gen->count++];
-        if (key_p != NIL(void *)) *key_p = node->key;
-        if (value_p != NIL(void *)) *value_p = node->value;
-        return 1;
-    }
-}
-
-void avl_free_gen(avl_generator *gen)
-{
-    FREE(gen->nodelist);
-    FREE(gen);
-}
-
-static avl_node *find_rightmost(avl_node **node_p)
-{
-    register avl_node *node;
-    register int stack_n = 0;
-    avl_node **stack_nodep[32];
-
-    node = *node_p;
-    while (node->right != NIL(avl_node)) {
-        stack_nodep[stack_n++] = node_p;
-        node_p = &node->right;
-        node = *node_p;
-    }
-    *node_p = node->left;
-
-    do_rebalance(stack_nodep, stack_n);
-    return node;
-}
-
-static void do_rebalance(avl_node ***stack_nodep, int stack_n)
-{
-    register avl_node **node_p, *node;
-    register int hl, hr;
-    int height;
-
-    /* work our way back up, re-balancing the tree */
-    while (--stack_n >= 0) {
-        node_p = stack_nodep[stack_n];
-        node = *node_p;
-        hl = HEIGHT(node->left);                /* watch for NIL */
-        hr = HEIGHT(node->right);               /* watch for NIL */
-        if ((hr - hl) < -1) {
-            rotate_right(node_p);
-        } else if ((hr - hl) > 1) {
-            rotate_left(node_p);
-        } else {
-            height = XRNMAX(hl, hr) + 1;
-            if (height == node->height) break;
-            node->height = height;
-        }
-    }
-}
-
-static void rotate_left(avl_node **node_p)
-{
-    register avl_node *old_root = *node_p, *new_root, *new_right;
-
-    if (BALANCE(old_root->right) >= 0) {
-        *node_p = new_root = old_root->right;
-        old_root->right = new_root->left;
-        new_root->left = old_root;
-    } else {
-        new_right = old_root->right;
-        *node_p = new_root = new_right->left;
-        old_root->right = new_root->left;
-        new_right->left = new_root->right;
-        new_root->right = new_right;
-        new_root->left = old_root;
-        compute_height(new_right);
-    }
-    compute_height(old_root);
-    compute_height(new_root);
-}
-
-static void rotate_right(avl_node **node_p)
-{
-    register avl_node *old_root = *node_p, *new_root, *new_left;
-
-    if (BALANCE(old_root->left) <= 0) {
-        *node_p = new_root = old_root->left;
-        old_root->left = new_root->right;
-        new_root->right = old_root;
-    } else {
-        new_left = old_root->left;
-        *node_p = new_root = new_left->right;
-        old_root->left = new_root->right;
-        new_left->right = new_root->left;
-        new_root->left = new_left;
-        new_root->right = old_root;
-        compute_height(new_left);
-    }
-    compute_height(old_root);
-    compute_height(new_root);
-}
-
-static void avl_walk_forward(avl_node *node, void (*func)(void *key, void *value))
-{
-    if (node != NIL(avl_node)) {
-        avl_walk_forward(node->left, func);
-        (*func)(node->key, node->value);
-        avl_walk_forward(node->right, func);
-    }
-}
-
-static void avl_walk_backward(avl_node *node, void (*func)(void *key, void *value))
-{
-    if (node != NIL(avl_node)) {
-        avl_walk_backward(node->right, func);
-        (*func)(node->key, node->value);
-        avl_walk_backward(node->left, func);
-    }
-}
-
-void avl_foreach(avl_tree *tree, void (*func)(void *key, void *value), int direction)
-{
-    if (direction == AVL_FORWARD) {
-        avl_walk_forward(tree->root, func);
-    } else {
-        avl_walk_backward(tree->root, func);
-    }
-}
-
-int avl_extremum(avl_tree *tree, int side, void **value_p)
-{
-    register avl_node *node;
-
-    node = tree->root;
-    if (node == NIL(avl_node)) return 0;
-
-    if (side == AVL_MOST_LEFT) 
-      while (node->left != NIL(avl_node)) node = node->left;
-    else
-      while (node->right != NIL(avl_node)) node = node->right;
-    
-    if (value_p != NIL(void *)) {
-      *value_p = node->value;
-      return 1;
-    }
-    return 0;
-}
-
-static void free_entry(avl_node *node, void (*key_free)(void *key), void (*value_free)(void *value))
-{
-    if (node != NIL(avl_node)) {
-        free_entry(node->left, key_free, value_free);
-        free_entry(node->right, key_free, value_free);
-        if (key_free != 0) (*key_free)(node->key);
-        if (value_free != 0) (*value_free)(node->value);
-        FREE(node);
-    }
-}
-    
-void avl_free_table(avl_tree *tree, void (*key_free)(void *key), void (*value_free)(void *value))
-{
-    free_entry(tree->root, key_free, value_free);
-    FREE(tree);
-}
-
-int avl_count(avl_tree *tree)
-{
-    return tree->num_entries;
-}
-
-static avl_node *new_node(void *key, void *value)
-{
-    register avl_node *newn;
-
-    newn = ALLOC(avl_node, 1);
-    newn->key = key;
-    newn->value = value;
-    newn->height = 0;
-    newn->left = newn->right = NIL(avl_node);
-    return newn;
-}
-int avl_numcmp(const void *x, const void*y)
-{
-    return (long int) x - (long int) y;
-}
-
-int avl_check_tree(avl_tree *tree)
-{
-    int error = 0;
-    (void) do_check_tree(tree->root, tree->compar, &error);
-    return error;
-}
-
-static int do_check_tree(avl_node *node, 
-                         int (*compar)(const void *key1, const void *key2), int *error)
-{
-    int l_height, r_height, comp_height, bal;
-    
-    if (node == NIL(avl_node)) {
-        return -1;
-    }
-
-    r_height = do_check_tree(node->right, compar, error);
-    l_height = do_check_tree(node->left, compar, error);
-
-    comp_height = XRNMAX(l_height, r_height) + 1;
-    bal = r_height - l_height;
-    
-    if (comp_height != node->height) {
-        (void) printf("Bad height for %p: computed=%d stored=%d\n",
-            node, comp_height, node->height);
-        ++*error;
-    }
-
-    if (bal > 1 || bal < -1) {
-        (void) printf("Out of balance at node %p, balance = %d\n", 
-            node, bal);
-        ++*error;
-    }
-
-    if (node->left != NIL(avl_node) && 
-                    (*compar)(node->left->key, node->key) > 0) {
-        (void) printf("Bad ordering between %p and %p", 
-            node, node->left);
-        ++*error;
-    }
-    
-    if (node->right != NIL(avl_node) && 
-                    (*compar)(node->key, node->right->key) > 0) {
-        (void) printf("Bad ordering between %p and %p", 
-            node, node->right);
-        ++*error;
-    }
-
-    return comp_height;
-}
diff --git a/DataStr/avl.h b/DataStr/avl.h
deleted file mode 100644
index 6ff601f6bb7fb4cea7d69d966df95b01315355d9..0000000000000000000000000000000000000000
--- a/DataStr/avl.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef _AVL_H_
-#define _AVL_H_
-
-/*
- * avl package
- *
- * Copyright (c) 1988-1993, The Regents of the University of California.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of the University of California not
- * be used in advertising or publicity pertaining to distribution of 
- * the software without specific, written prior permission.  The University
- * of California makes no representations about the suitability of this
- * software for any purpose.  It is provided "as is" without express or
- * implied warranty.
- *
- * THE UNIVERSITY OF CALIFORNIA DISCLAIMS ALL WARRANTIES WITH REGARD TO 
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
- * FITNESS, IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-typedef struct avl_node_struct avl_node;
-struct avl_node_struct {
-  avl_node *left, *right;
-  void *key;
-  void *value;
-  int height;
-};
-
-
-typedef struct avl_tree_struct avl_tree;
-struct avl_tree_struct {
-  avl_node *root;
-  int (*compar)(const void *key1, const void *key2);
-  int num_entries;
-  int modified;
-};
-
-
-typedef struct avl_generator_struct avl_generator;
-struct avl_generator_struct {
-  avl_tree *tree;
-  avl_node **nodelist;
-  int count;
-};
-
-
-#define AVL_FORWARD     0
-#define AVL_BACKWARD    1
-
-#define AVL_MOST_LEFT   0
-#define AVL_MOST_RIGHT  1
-
-#define avl_is_member(tree, key)   avl_lookup(tree, key, (void **) 0)
-
-#define avl_foreach_item(table, gen, dir, key_p, value_p)               \
-    for(gen = avl_init_gen(table, dir);                                 \
-            avl_gen(gen, key_p, value_p) || (avl_free_gen(gen),0);)
-
-
-avl_tree *avl_init_table(int (*compar)(const void *key1, const void *key2));
-int avl_lookup(avl_tree *tree, void *key, void **value_p);
-int avl_insert(avl_tree *tree, void *key, void *value);
-int avl_delete(avl_tree *tree, void **key_p, void **value_p);
-void avl_foreach(avl_tree *tree, void (*func)(void *key, void *value), int direction);
-void avl_free_table(avl_tree *tree, void (*key_free)(void *key), void (*value_free)(void *value));
-int avl_count(avl_tree *tree);
-int avl_check_tree(avl_tree *tree);
-int avl_extremum(avl_tree *tree, int side, void **value_p);
-
-avl_generator *avl_init_gen(avl_tree *tree, int dir);
-int avl_gen(avl_generator *gen, void **key_p, void **value_p);
-void avl_free_gen(avl_generator *gen);
-
-int avl_numcmp(const void *x, const void*y);
-
-#endif
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
deleted file mode 100644
index 6c7ea0e58403001d3959da01cc552649f1f57752..0000000000000000000000000000000000000000
--- a/Fltk/Callbacks.cpp
+++ /dev/null
@@ -1,1908 +0,0 @@
-// $Id: Callbacks.cpp,v 1.77 2001-08-12 14:23:36 geuzaine Exp $
-
-#include <sys/types.h>
-#include <signal.h>
-#include <map>
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Verif.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Views.h"
-#include "Timer.h"
-#include "Visibility.h"
-#include "CreateFile.h"
-#include "OpenFile.h"
-#include "GetOptions.h"
-#include "Context.h"
-#include "Options.h"
-#include "GUI.h"
-#include "Callbacks.h"
-#include "Plugin.h"
-
-using namespace std;
-
-#include <FL/fl_file_chooser.H>
-#include <errno.h>
-
-extern GUI       *WID;
-extern Mesh       M;
-extern Context_T  CTX;
-
-// Compatibility/local routines
-
-int AddViewInUI(int i, char *Name, int Num){
-  if(i > NB_BUTT_MAX -1) return 1;
-  if(WID && (WID->get_context() == 3))
-    WID->set_context(menu_post,0);
-  return 0;
-}
-
-int SetGlobalShortcut(int event){
-  return WID->global_shortcuts(event);
-}
-
-int SelectContour (int type, int num, List_T *Liste1){
-  int      k,ip,i;
-  List_T  *Liste2;
-
-  Liste2 = List_Create(1,1,sizeof(int));
-
-  if(!List_Nbr(Liste1)){
-    switch(type){
-    case ENT_LINE    : k = alledgeslinked (num, Liste1, (List_T*)NULL); break;
-    case ENT_SURFACE : k = allfaceslinked (num, Liste1, (List_T*)NULL); break;
-    }
-  }
-  else{
-    List_Reset(Liste2);
-    for(i=0;i<List_Nbr(Liste1);i++)
-      List_Add(Liste2,List_Pointer(Liste1,i));
-    List_Reset(Liste1);
-    switch(type){
-    case ENT_LINE    : k = alledgeslinked (num, Liste1, Liste2); break;
-    case ENT_SURFACE : k = allfaceslinked (num, Liste1, Liste2); break;
-    }
-  }
-
-  for(i=0;i<List_Nbr(Liste1);i++){
-    List_Read(Liste1,i,&ip);
-    switch(type){
-    case ENT_LINE    : HighlightEntityNum(0,abs(ip),0,1); break ;
-    case ENT_SURFACE : HighlightEntityNum(0,0,abs(ip),1); break ;
-    }
-  }
-
-  Draw();//added July 18 2001 to overcome missing refreshes... Is this OK ?
-  List_Delete(Liste2);
-  return k;
-}
-
-
-// Common callbacks 
-
-void cancel_cb(CALLBACK_ARGS){
-  if(data) ((Fl_Window*)data)->hide();
-}
-
-void color_cb(CALLBACK_ARGS){
-  unsigned int (*fct) (int, int, unsigned int);
-  fct = (unsigned int (*) (int, int, unsigned int))data ;
-  uchar r = UNPACK_RED(fct(0,GMSH_GET,0)) ; 
-  uchar g = UNPACK_GREEN(fct(0,GMSH_GET,0)) ; 
-  uchar b = UNPACK_BLUE(fct(0,GMSH_GET,0)) ; 
-  if (fl_color_chooser("Color Chooser",r,g,b))
-    fct(0,GMSH_SET|GMSH_GUI,PACK_COLOR(r,g,b,255));
-  Draw();
-}
-
-void set_changed_cb(CALLBACK_ARGS){
-  w->set_changed();
-}
-
-// Graphical window 
-
-void status_xyz1p_cb(CALLBACK_ARGS){
-
-  extern void set_r(int i, double val);
-  extern void set_t(int i, double val);
-  extern void set_s(int i, double val);
-
-  switch((int)data){
-  case 0 : 
-    if(CTX.useTrackball)
-      CTX.setQuaternion(0.,-1./sqrt(2.),0.,1./sqrt(2.));
-    set_r(0,0.);  set_r(1,90.);set_r(2,0.); 
-    Draw(); 
-    break;
-  case 1 : 
-    if(CTX.useTrackball)
-      CTX.setQuaternion(1./sqrt(2.),0.,0.,1./sqrt(2.));
-    set_r(0,-90.);set_r(1,0.); set_r(2,0.); 
-    Draw(); 
-    break;
-  case 2 :
-    if(CTX.useTrackball)
-      CTX.setQuaternion(0.,0.,0.,1.);
-    set_r(0,0.);  set_r(1,0.); set_r(2,0.); 
-    Draw(); 
-    break;
-  case 3 : 
-    set_t(0,0.);  set_t(1,0.); set_t(2,0.); 
-    set_s(0,1.);  set_s(1,1.); set_s(2,1.); 
-    Draw(); 
-    break;
-  case 4 :
-    Print_Options(0,GMSH_FULLRC,NULL);
-    WID->create_message_window();
-    break ;
-  }
-}
-
-static int stop_anim ;
-void status_play_cb(CALLBACK_ARGS){
-  static long anim_time ;
-  int i;
-  WID->set_anim(0);
-  stop_anim = 0 ;
-  anim_time = GetTime();
-  while(1){
-    if(stop_anim) break ;
-    if(GetTime() - anim_time > 1.e6*CTX.post.anim_delay){
-      anim_time = GetTime();
-      for(i=0 ; i<List_Nbr(Post_ViewList) ; i++)
-	opt_view_timestep(i, GMSH_SET|GMSH_GUI, opt_view_timestep(i, GMSH_GET, 0)+1);
-      Draw();
-    }
-    WID->check();
-  }
-}
-
-void status_pause_cb(CALLBACK_ARGS){
-  stop_anim = 1;
-  WID->set_anim(1);
-}
-
-void status_cancel_cb(CALLBACK_ARGS){
-}
-
-// File Menu
-
-void file_open_cb(CALLBACK_ARGS) {
-  char *newfile;
-  int n = List_Nbr(Post_ViewList);
-  newfile = fl_file_chooser("Open file", "*", NULL);
-  if (newfile != NULL) {
-    OpenProblem(newfile); 
-    Draw(); 
-  }
-  if(n != List_Nbr(Post_ViewList))
-    WID->set_context(menu_post, 0);
-}
-
-void file_merge_cb(CALLBACK_ARGS) {
-  char *newfile;
-  int n = List_Nbr(Post_ViewList);
-  newfile = fl_file_chooser("Merge file", "*", NULL);
-  if (newfile != NULL) {
-    MergeProblem(newfile); 
-    Draw(); 
-  }
-  if(n != List_Nbr(Post_ViewList))
-    WID->set_context(menu_post, 0);
-}
-
-void file_save_as_auto_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save file by extension", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_AUTO); 
-}
-
-void file_save_as_geo_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save GEO file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_GEO); 
-}
-
-void file_save_as_geo_options_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save options file", "*", NULL)))
-    Print_Options(0,GMSH_FULLRC, newfile); 
-}
-
-void file_save_as_msh_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save MSH file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = CTX.mesh.format = FORMAT_MSH); 
-}
-void file_save_as_unv_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save UNV file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = CTX.mesh.format = FORMAT_UNV); 
-}
-void file_save_as_gref_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save GREF file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = CTX.mesh.format = FORMAT_GREF); 
-}
-void file_save_as_eps_simple_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save EPS file", "*", NULL))){
-    CTX.print.eps_quality = 1; 
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_EPS); 
-  }
-}
-void file_save_as_eps_accurate_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save EPS file", "*", NULL))){
-    CTX.print.eps_quality = 2; 
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_EPS); 
-  }
-}
-void file_save_as_jpeg_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save JPEG file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_JPEG); 
-}
-
-void file_save_as_gif_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save GIF file", "*", NULL))){
-    CTX.print.gif_dither = 0;
-    CTX.print.gif_transparent = 0;
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_GIF); 
-  }
-}
-void file_save_as_gif_dithered_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save GIF file", "*", NULL))){
-    CTX.print.gif_dither = 1; 
-    CTX.print.gif_transparent = 0; 
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_GIF); 
-  }
-}
-void file_save_as_gif_transparent_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save GIF file", "*", NULL))){
-    CTX.print.gif_dither = 0;
-    CTX.print.gif_transparent = 1; 
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_GIF);
-  }
-}
-void file_save_as_ppm_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save PPM file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_PPM); 
-}
-void file_save_as_yuv_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save YUV file", "*", NULL)))
-    CreateOutputFile(newfile, CTX.print.format = FORMAT_YUV); 
-}
-
-void file_quit_cb(CALLBACK_ARGS) {
-  Exit(0);
-}
-
-// Option General Menu
-
-void opt_general_cb(CALLBACK_ARGS) {
-  WID->create_general_options_window();
-}
-void opt_general_color_scheme_cb(CALLBACK_ARGS){
-  opt_general_color_scheme(0,GMSH_SET, WID->gen_value[0]->value());
-  Draw();
-}
-void opt_general_ok_cb(CALLBACK_ARGS){
-  opt_general_axes(0, GMSH_SET, WID->gen_butt[0]->value());
-  opt_general_small_axes(0, GMSH_SET, WID->gen_butt[1]->value());
-  opt_general_fast_redraw(0, GMSH_SET, WID->gen_butt[2]->value());
-  if(opt_general_double_buffer(0, GMSH_GET, 0) != WID->gen_butt[3]->value())
-    opt_general_double_buffer(0, GMSH_SET, WID->gen_butt[3]->value());
-  opt_general_display_lists(0, GMSH_SET, WID->gen_butt[4]->value());
-  opt_general_alpha_blending(0, GMSH_SET, WID->gen_butt[5]->value());
-  opt_general_trackball(0, GMSH_SET, WID->gen_butt[6]->value());
-  opt_general_terminal(0, GMSH_SET, WID->gen_butt[7]->value());
-  double sessionrc = opt_general_session_save(0, GMSH_GET, 0);
-  opt_general_session_save(0, GMSH_SET, WID->gen_butt[8]->value());
-  if(sessionrc && !opt_general_session_save(0, GMSH_GET, 0))
-    Print_Options(0, GMSH_SESSIONRC, CTX.sessionrc_filename);
-  opt_general_options_save(0, GMSH_SET, WID->gen_butt[9]->value());
-  opt_general_orthographic(0, GMSH_SET, WID->gen_butt[10]->value());
-  opt_general_moving_light(0, GMSH_SET, WID->gen_butt[12]->value());
-
-  opt_general_shine(0, GMSH_SET, WID->gen_value[1]->value());
-  opt_general_light00(0, GMSH_SET, WID->gen_value[2]->value());
-  opt_general_light01(0, GMSH_SET, WID->gen_value[3]->value());
-  opt_general_light02(0, GMSH_SET, WID->gen_value[4]->value());
-  opt_general_verbosity(0, GMSH_SET, WID->gen_value[5]->value());
-
-  opt_general_default_filename(0, GMSH_SET, (char*)WID->gen_input[0]->value());
-  opt_general_tmp_filename(0, GMSH_SET, (char*)WID->gen_input[1]->value());
-  opt_general_error_filename(0, GMSH_SET, (char*)WID->gen_input[2]->value());
-  opt_general_options_filename(0, GMSH_SET, (char*)WID->gen_input[3]->value());
-  opt_general_editor(0, GMSH_SET, (char*)WID->gen_input[4]->value());
-
-  Draw();
-}
-
-// Option Geometry Menu
-
-void opt_geometry_cb(CALLBACK_ARGS) {
-  WID->create_geometry_options_window();
-}
-void opt_geometry_show_by_entity_num_cb(CALLBACK_ARGS) {
-  char * c = (char*)((Fl_Input*)w)->value(); 
-  if (!strcmp(c,"all") || !strcmp(c,"*")){
-    if(SHOW_ALL_ENTITIES){ RemplirEntitesVisibles(0); SHOW_ALL_ENTITIES = 0; }
-    else { RemplirEntitesVisibles(1); SHOW_ALL_ENTITIES = 1; }
-  }
-  else{ 
-    int i = atoi(c);
-    if(EntiteEstElleVisible(i)) ToutesLesEntitesRelatives(i,EntitesVisibles,0);
-    else ToutesLesEntitesRelatives(i,EntitesVisibles,1);
-  }
-  Draw();
-}
-void opt_geometry_color_scheme_cb(CALLBACK_ARGS){
-  opt_geometry_color_scheme(0,GMSH_SET, WID->geo_value[2]->value());
-  Draw();
-}
-void opt_geometry_ok_cb(CALLBACK_ARGS) {
-  opt_geometry_points(0, GMSH_SET, WID->geo_butt[0]->value());
-  opt_geometry_lines(0, GMSH_SET, WID->geo_butt[1]->value());
-  opt_geometry_surfaces(0, GMSH_SET, WID->geo_butt[2]->value());
-  opt_geometry_volumes(0, GMSH_SET, WID->geo_butt[3]->value());
-  opt_geometry_points_num(0, GMSH_SET, WID->geo_butt[4]->value());
-  opt_geometry_lines_num(0, GMSH_SET, WID->geo_butt[5]->value());
-  opt_geometry_surfaces_num(0, GMSH_SET, WID->geo_butt[6]->value());
-  opt_geometry_volumes_num(0, GMSH_SET, WID->geo_butt[7]->value());
-
-  opt_geometry_normals(0, GMSH_SET, WID->geo_value[0]->value());
-  opt_geometry_tangents(0, GMSH_SET, WID->geo_value[1]->value());
-  Draw();
-}
-
-// Option Mesh Menu
-
-void opt_mesh_cb(CALLBACK_ARGS) {
-  WID->create_mesh_options_window();
-}
-void opt_mesh_show_by_entity_num_cb(CALLBACK_ARGS) {
-  opt_geometry_show_by_entity_num_cb(w,data);
-}
-void opt_mesh_color_scheme_cb(CALLBACK_ARGS){
-  opt_mesh_color_scheme(0,GMSH_SET, WID->mesh_value[10]->value());
-  Draw();
-}
-void opt_mesh_ok_cb(CALLBACK_ARGS) {
-  opt_mesh_degree(0, GMSH_SET, WID->mesh_butt[0]->value()?2:1);
-  opt_mesh_interactive(0, GMSH_SET, WID->mesh_butt[1]->value());
-  opt_mesh_algo(0, GMSH_SET, WID->mesh_butt[2]->value()?DELAUNAY_NEWALGO:DELAUNAY_OLDALGO);
-  opt_mesh_constrained_bgmesh(0, GMSH_SET, WID->mesh_butt[3]->value());
-  opt_mesh_points(0, GMSH_SET, WID->mesh_butt[4]->value());
-  opt_mesh_lines(0, GMSH_SET, WID->mesh_butt[5]->value());
-  opt_mesh_surfaces(0, GMSH_SET, WID->mesh_butt[6]->value());
-  opt_mesh_volumes(0, GMSH_SET, WID->mesh_butt[7]->value());
-  opt_mesh_points_num(0, GMSH_SET, WID->mesh_butt[8]->value());
-  opt_mesh_lines_num(0, GMSH_SET, WID->mesh_butt[9]->value());
-  opt_mesh_surfaces_num(0, GMSH_SET, WID->mesh_butt[10]->value());
-  opt_mesh_volumes_num(0, GMSH_SET, WID->mesh_butt[11]->value());
-  opt_mesh_aspect(0, GMSH_SET, 
-		  WID->mesh_butt[12]->value()?0:
-		  WID->mesh_butt[13]->value()?1:
-		  2);
-  opt_mesh_color_carousel(0, GMSH_SET, WID->mesh_butt[15]->value());
-
-  opt_mesh_nb_smoothing(0, GMSH_SET, WID->mesh_value[0]->value());
-  opt_mesh_scaling_factor(0, GMSH_SET, WID->mesh_value[1]->value());
-  opt_mesh_lc_factor(0, GMSH_SET, WID->mesh_value[2]->value());
-  opt_mesh_rand_factor(0, GMSH_SET, WID->mesh_value[3]->value());
-  opt_mesh_gamma_inf(0, GMSH_SET, WID->mesh_value[4]->value());
-  opt_mesh_gamma_sup(0, GMSH_SET, WID->mesh_value[5]->value());
-  opt_mesh_radius_inf(0, GMSH_SET, WID->mesh_value[6]->value());
-  opt_mesh_radius_sup(0, GMSH_SET, WID->mesh_value[7]->value());
-  opt_mesh_normals(0, GMSH_SET, WID->mesh_value[8]->value());
-  opt_mesh_explode(0, GMSH_SET, WID->mesh_value[9]->value());
-
-  Draw();
-}
-
-// Option Solver Menu
-
-void opt_solver_cb(CALLBACK_ARGS) {
-  WID->create_solver_options_window();
-}
-void opt_solver_ok_cb(CALLBACK_ARGS) {
-}
-
-// Option Post Menu
-
-void opt_post_cb(CALLBACK_ARGS) {
-  WID->create_post_options_window();
-}
-void opt_post_ok_cb(CALLBACK_ARGS) {
-  opt_post_link(0, GMSH_SET, 
-		WID->post_butt[0]->value()?0:
-		WID->post_butt[1]->value()?1:
-		WID->post_butt[2]->value()?2:
-		WID->post_butt[3]->value()?3:
-		4);
-  opt_post_smooth(0, GMSH_SET, WID->post_butt[3]->value());
-
-  opt_post_anim_delay(0, GMSH_SET, WID->post_value[0]->value());
-  Draw();
-}
-
-// Option Statistics Menu
-
-void opt_statistics_cb(CALLBACK_ARGS) {
-  WID->create_statistics_window();
-}
-void opt_statistics_update_cb(CALLBACK_ARGS) {
-  WID->set_statistics();
-}
-void opt_statistics_histogram_cb(CALLBACK_ARGS) {
-  Print_Histogram(M.Histogram[(int)data]);
-  WID->create_message_window();
-}
-
-// Option Messages Menu
-
-void opt_message_cb(CALLBACK_ARGS) {
-  WID->create_message_window();
-}
-void opt_message_clear_cb(CALLBACK_ARGS) {
-  WID->msg_browser->clear();
-}
-void opt_message_save_cb(CALLBACK_ARGS) {
-  char *newfile;
-  if((newfile = fl_file_chooser("Save messages", "*", NULL)))
-    WID->save_message(newfile); 
-}
-void opt_save_cb(CALLBACK_ARGS) {
-  Print_Options(0,GMSH_OPTIONSRC, CTX.optionsrc_filename); 
-}
-
-// Help Menu
-
-void help_short_cb(CALLBACK_ARGS){
-  Msg(DIRECT, "");
-  Msg(DIRECT, "Mouse:");
-  Msg(DIRECT, "");
-  Msg(DIRECT, "  move          - highlight the elementary geometrical entity");
-  Msg(DIRECT, "                  currently under the mouse pointer and display");
-  Msg(DIRECT, "                  its properties in the status bar");
-  Msg(DIRECT, "                - size a rubber zoom started with Ctrl+mouse1");
-  Msg(DIRECT, "  mouse1        - rotate");
-  Msg(DIRECT, "                - accept a rubber zoom started with Ctrl+mouse1"); 
-  Msg(DIRECT, "  Ctrl+mouse1   start (anisotropic) rubber zoom"); 
-  Msg(DIRECT, "  Shift+mouse1  - zoom (isotropic)");
-  Msg(DIRECT, "                - cancel a rubber zoom");
-  Msg(DIRECT, "  mouse2        same as Shift+mouse1");
-  Msg(DIRECT, "  Ctrl+mouse2   orthogonalize display"); 
-  Msg(DIRECT, "  mouse3        - pan");
-  Msg(DIRECT, "                - cancel a rubber zoom");
-  Msg(DIRECT, "                - pop up menu on post-processing view button");
-  Msg(DIRECT, "  Ctrl+mouse3   reset to default viewpoint");   
-  Msg(DIRECT, "");
-  Msg(DIRECT, "Menu bar shortcuts:");
-  Msg(DIRECT, "");
-  Msg(DIRECT, "  b             go back to previous context");
-  Msg(DIRECT, "  f             go forward to next context");
-  Msg(DIRECT, "  g             go to geometry module");
-  Msg(DIRECT, "  Shift+g       show geometry options");
-  Msg(DIRECT, "  Shift+i       show statistics window"); 
-  Msg(DIRECT, "  m             go to mesh module");
-  Msg(DIRECT, "  Shift+m       show mesh options");
-  Msg(DIRECT, "  Ctrl+m        merge file"); 
-  Msg(DIRECT, "  Shift+o       show general options"); 
-  Msg(DIRECT, "  Ctrl+o        open file"); 
-  Msg(DIRECT, "  p             go to post-processor module");
-  Msg(DIRECT, "  Shift+p       show post-processing general options");
-  Msg(DIRECT, "  Ctrl+p        save file by extension");
-  Msg(DIRECT, "  Ctrl+q        quit");
-  Msg(DIRECT, "  Ctrl+s        save mesh in default format");
-  Msg(DIRECT, "");
-  Msg(DIRECT, "Other shortcuts");
-  Msg(DIRECT, "");
-  Msg(DIRECT, "  0 or Esc      reload geometry input file");
-  Msg(DIRECT, "  1 or F1       mesh curves");
-  Msg(DIRECT, "  2 or F2       mesh surfaces");
-  Msg(DIRECT, "  3 or F3       mesh volumes");
-  Msg(DIRECT, "  Alt+a         hide/show small axes"); 
-  Msg(DIRECT, "  Alt+Shift+a   hide/show big moving axes"); 
-  Msg(DIRECT, "  Alt+b         hide/show all post-processing scales");
-  Msg(DIRECT, "  Alt+c         alternate between predefined color schemes");
-  Msg(DIRECT, "  Alt+d         alternate between mesh wire frame, hidden lines and shading modes");
-  Msg(DIRECT, "  Shift+d       decrease animation delay");
-  Msg(DIRECT, "  Ctrl+Shift+d  increase animation delay");
-  Msg(DIRECT, "  Alt+f         toggle redraw mode (fast/full)"); 
-  Msg(DIRECT, "  Alt+h         hide/show all post-processing views"); 
-  Msg(DIRECT, "  Alt+l         hide/show geometry lines");
-  Msg(DIRECT, "  Alt+Shift+l   hide/show mesh lines");
-  Msg(DIRECT, "  Alt+m         toggle visibility of all mesh entities");
-  Msg(DIRECT, "  Alt+o         change projection mode");
-  Msg(DIRECT, "  Alt+p         hide/show geometry points");
-  Msg(DIRECT, "  Alt+Shift+p   hide/show mesh points");
-  Msg(DIRECT, "  Alt+s         hide/show geometry surfaces");
-  Msg(DIRECT, "  Alt+Shift+s   hide/show mesh surfaces");
-  Msg(DIRECT, "  Alt+t         alternate intervals mode for visible post-processing views"); 
-  Msg(DIRECT, "  Alt+v         hide/show geometry volumes");
-  Msg(DIRECT, "  Alt+Shift+v   hide/show mesh volumes");
-  Msg(DIRECT, "  Alt+x         set X view"); 
-  Msg(DIRECT, "  Alt+y         set Y view"); 
-  Msg(DIRECT, "  Alt+z         set Z view"); 
-  Msg(DIRECT, "");
-  WID->create_message_window();
-}
-void help_command_line_cb(CALLBACK_ARGS){
-  Msg(DIRECT, "");
-  Print_Usage("gmsh");
-  WID->create_message_window();
-}
-void help_about_cb(CALLBACK_ARGS){
-  WID->create_about_window();
-}
-
-// Module Menu
-
-void mod_geometry_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry, 0);
-}
-void mod_mesh_cb(CALLBACK_ARGS){
-  WID->set_context(menu_mesh, 0);
-}
-void mod_solver_cb(CALLBACK_ARGS){
-  WID->set_context(menu_solver, 0);
-}
-void mod_post_cb(CALLBACK_ARGS){
-  WID->set_context(menu_post, 0);
-}
-void mod_back_cb(CALLBACK_ARGS){
-  WID->set_context(NULL, -1);
-}
-void mod_forward_cb(CALLBACK_ARGS){
-  WID->set_context(NULL, 1);
-}
-
-// Dynamic Geomtry Menus
-
-void geometry_elementary_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary, 0);
-}
-void geometry_physical_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_physical, 0);
-}
-void geometry_edit_cb(CALLBACK_ARGS){
-  char cmd[1000];
-  sprintf(cmd, CTX.editor, CTX.filename);
-  Msg(INFO, "Starting text editor '%s'", cmd);
-  system(cmd);
-} 
-void geometry_reload_cb(CALLBACK_ARGS){
-  OpenProblem(CTX.filename);
-  Draw();
-} 
-void geometry_elementary_add_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_add, 0);
-}
-void geometry_elementary_add_new_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_add_new, 0);
-}
-void geometry_elementary_add_new_parameter_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(0);
-}
-void geometry_elementary_add_new_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(1);
-}
-
-static void _new_line_spline(int dim){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib;
-  static int n, p[100];
-
-  if(!opt_geometry_points(0,GMSH_GET,0)){
-    opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-    Draw();
-  }
-
-  n = 0;
-  while(1){
-    Msg(STATUS3N,"Select Point ('e'=end, 'q'=quit)");
-    ib = SelectEntity(ENT_POINT, &v,&c,&s);
-    if(ib == 1){ /* left mouse butt */
-      p[n++] = v->Num; 
-    }
-    if (ib == -1){ /* 'e' */
-      if(n >= 2) {
-	switch(dim){
-	case 0 : add_multline(n,p,CTX.filename); break;
-	case 1 : add_spline(n,p,CTX.filename); break;
-	}
-      }
-      n=0;
-      ZeroHighlight(&M);
-      Draw();
-    }
-    if(ib == 0){ /* 'q' */
-      n=0 ;
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-  }
-  Msg(STATUS3N,"Ready");
-}
-
-void geometry_elementary_add_new_line_cb(CALLBACK_ARGS){
-  _new_line_spline(0);
-}
-void geometry_elementary_add_new_spline_cb(CALLBACK_ARGS){
-  _new_line_spline(1);
-}
-void geometry_elementary_add_new_circle_cb(CALLBACK_ARGS){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib;
-  static int n, p[100];
-
-  if(!opt_geometry_points(0,GMSH_GET,0)){
-    opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-    Draw();
-  }
-
-  n=0;
-  while(1){
-    if(n == 0) Msg(STATUS3N,"Select center Point ('q'=quit)");
-    if(n == 1) Msg(STATUS3N,"Select start Point ('q'=quit)");
-    if(n == 2) Msg(STATUS3N,"Select end Point ('q'=quit)");
-    ib = SelectEntity(ENT_POINT, &v,&c,&s);
-    if(ib == 1) { /* left mouse butt */
-      p[n++] = v->Num; 
-    }
-    if(ib == 0) { /* 'q' */
-      n=0 ;
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-    if(n == 3){
-      add_circ(p[1],p[0],p[2],CTX.filename); /* begin, center, end */
-      ZeroHighlight(&M);
-      Draw();
-      n=0;
-    }
-  }
-  Msg(STATUS3N,"Ready");
-}
-void geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib;
-  static int n, p[100];
-
-  if(!opt_geometry_points(0,GMSH_GET,0)){
-    opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-    Draw();
-  }
-
-  n=0;
-  while(1){
-    if(n == 0) Msg(STATUS3N,"Select center Point ('q'=quit)");
-    if(n == 1) Msg(STATUS3N,"Select axis Point ('q'=quit)");
-    if(n == 2) Msg(STATUS3N,"Select start Point ('q'=quit)");
-    if(n == 3) Msg(STATUS3N,"Select end Point ('q'=quit)");
-    ib = SelectEntity(ENT_POINT, &v,&c,&s);
-    if(ib == 1) { /* left mouse butt */
-      p[n++] = v->Num; 
-    }
-    if(ib == 0){ /* 'q' */
-      n=0 ;
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-    if(n == 4){
-      add_ell(p[3],p[2],p[0],p[1],CTX.filename);
-      ZeroHighlight(&M);
-      Draw();
-      n=0;
-    }
-  }
-  Msg(STATUS3N,"Ready");
-}
-
-static void _new_surface_volume(int mode){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib, type, zone;
-  List_T  *Liste1, *Liste2;
-
-  Liste1 = List_Create(10,10,sizeof(int));
-  Liste2 = List_Create(10,10,sizeof(int));
-  
-  if(mode == 2){
-    type = ENT_SURFACE;
-    if(!opt_geometry_surfaces(0,GMSH_GET,0)){
-      opt_geometry_surfaces(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  else{
-    type = ENT_LINE;
-    if(!opt_geometry_lines(0,GMSH_GET,0)){
-      opt_geometry_lines(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  
-  while(1){      
-    List_Reset(Liste1);
-    List_Reset(Liste2);
-    
-    while(1) {        
-      Msg(STATUS3N,"Select boundary ('q'=quit)");
-      ib = SelectEntity(type, &v,&c,&s);
-      if(ib <= 0){
-	ZeroHighlight(&M);
-	Draw();
-	goto stopall;
-      }       
-      if(SelectContour (type, (type==ENT_LINE)?c->Num:s->Num, Liste1)){
-	if(type==ENT_LINE) 
-	  add_loop(Liste1,CTX.filename,&zone);
-	else
-	  add_vol(Liste1,CTX.filename,&zone);
-	List_Reset(Liste1);
-	List_Add(Liste2,&zone);
-	while(1){
-	  Msg(STATUS3N,"Select holes ('q'=quit)");
-	  ib = SelectEntity(type, &v,&c,&s); 
-	  if(ib <= 0){
-	    ZeroHighlight(&M);
-	    Draw();
-	    break;
-	  }
-	  if(SelectContour (type, (type==ENT_LINE)?c->Num:s->Num, Liste1)){
-	    if(type==ENT_LINE) 
-	      add_loop(Liste1,CTX.filename,&zone);
-	    else
-	      add_vol(Liste1,CTX.filename,&zone);
-	    List_Reset(Liste1);
-	    List_Add(Liste2,&zone);
-	  }
-	}
-	if(List_Nbr(Liste2)){
-	  switch(mode){
-	  case 0 : add_surf(Liste2,CTX.filename,0,2); break;
-	  case 1 : add_surf(Liste2,CTX.filename,0,1); break;
-	  case 2 : add_multvol(Liste2,CTX.filename); break;
-	  }
-	  ZeroHighlight(&M);
-	  Draw();
-	  break;
-	}
-      }
-    }
-  }
-  stopall : ;
-  List_Delete(Liste1);
-  List_Delete(Liste2);
-  Msg(STATUS3N,"Ready");
-}
-
-void geometry_elementary_add_new_planesurface_cb(CALLBACK_ARGS){
-  _new_surface_volume(0);
-}
-void geometry_elementary_add_new_ruledsurface_cb(CALLBACK_ARGS){
-  _new_surface_volume(1);
-}
-void geometry_elementary_add_new_volume_cb(CALLBACK_ARGS){
-  _new_surface_volume(2);
-}
-
-static void _transform_point_curve_surface(int transfo, int mode, char *what){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int type, num;
-
-  if(!strcmp(what,"Point")) {
-    type = ENT_POINT;
-    if(!opt_geometry_points(0,GMSH_GET,0)){
-      opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  else if(!strcmp(what,"Line")){
-    type = ENT_LINE; 
-    if(!opt_geometry_lines(0,GMSH_GET,0)){
-      opt_geometry_lines(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  else{
-    type = ENT_SURFACE;
-    if(!opt_geometry_surfaces(0,GMSH_GET,0)){
-      opt_geometry_surfaces(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-
-  while(1){
-    Msg(STATUS3N,"Select %s ('q'=quit)", what);
-    if(!SelectEntity(type, &v,&c,&s)){
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-    switch(type){
-    case ENT_POINT: num = v->Num; break;
-    case ENT_LINE: num = c->Num; break;
-    case ENT_SURFACE: num = s->Num; break;
-    }
-    switch(transfo){
-    case 0: translate(mode,num,CTX.filename,what); break;
-    case 1: rotate(mode,num,CTX.filename,what); break;
-    case 2: dilate(mode,num,CTX.filename,what); break;
-    case 3: symmetry(mode,num,CTX.filename,what); break;
-    case 4: extrude(num,CTX.filename,what); break;
-    case 5: protude(num,CTX.filename,what); break;
-    case 6: delet(num,CTX.filename,what); break;
-    }
-    ZeroHighlight(&M);
-    Draw();
-  }
-  Msg(STATUS3N,"Ready");
-}
-
-void geometry_elementary_add_translate_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_add_translate, 0);
-}
-void geometry_elementary_add_translate_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(0,1,"Point");
-}
-void geometry_elementary_add_translate_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(0,1,"Line");
-}
-void geometry_elementary_add_translate_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(0,1,"Surface");
-}
-void geometry_elementary_translate_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_translate, 0);
-}
-void geometry_elementary_translate_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(0,0,"Point");
-}
-void geometry_elementary_translate_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(0,0,"Line");
-}
-void geometry_elementary_translate_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(0,0,"Surface");
-}
-
-void geometry_elementary_add_rotate_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_add_rotate, 0);
-}
-void geometry_elementary_add_rotate_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(1,1,"Point");
-}
-void geometry_elementary_add_rotate_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(1,1,"Line");
-}
-void geometry_elementary_add_rotate_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(1,1,"Surface");
-}
-void geometry_elementary_rotate_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_rotate, 0);
-}
-void geometry_elementary_rotate_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(1,0,"Point");
-}
-void geometry_elementary_rotate_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(1,0,"Line");
-}
-void geometry_elementary_rotate_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(1,0,"Surface");
-}
-
-void geometry_elementary_add_scale_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_add_scale, 0);
-}
-void geometry_elementary_add_scale_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(4);
-  _transform_point_curve_surface(2,1,"Point");
-}
-void geometry_elementary_add_scale_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(4);
-  _transform_point_curve_surface(2,1,"Line");
-}
-void geometry_elementary_add_scale_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(4);
-  _transform_point_curve_surface(2,1,"Surface");
-}
-void geometry_elementary_scale_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_scale, 0);
-}
-void geometry_elementary_scale_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(4);
-  _transform_point_curve_surface(2,0,"Point");
-}
-void geometry_elementary_scale_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(4);
-  _transform_point_curve_surface(2,0,"Line");
-}
-void geometry_elementary_scale_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(4);
-  _transform_point_curve_surface(2,0,"Surface");
-}
-
-void geometry_elementary_add_symmetry_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_add_symmetry, 0);
-}
-void geometry_elementary_add_symmetry_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(5);
-  _transform_point_curve_surface(3,1,"Point");
-}
-void geometry_elementary_add_symmetry_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(5);
-  _transform_point_curve_surface(3,1,"Line");
-}
-void geometry_elementary_add_symmetry_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(5);
-  _transform_point_curve_surface(3,1,"Surface");
-}
-void geometry_elementary_symmetry_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_symmetry, 0);
-}
-void geometry_elementary_symmetry_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(5);
-  _transform_point_curve_surface(3,0,"Point");
-}
-void geometry_elementary_symmetry_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(5);
-  _transform_point_curve_surface(3,0,"Line");
-}
-void geometry_elementary_symmetry_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(5);
-  _transform_point_curve_surface(3,0,"Surface");
-}
-
-void geometry_elementary_extrude_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_extrude, 0);
-}
-void geometry_elementary_extrude_translate_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_extrude_translate, 0);
-}
-void geometry_elementary_extrude_translate_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(4,0,"Point");
-}
-void geometry_elementary_extrude_translate_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(4,0,"Line");
-}
-void geometry_elementary_extrude_translate_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(2);
-  _transform_point_curve_surface(4,0,"Surface");
-}
-void geometry_elementary_extrude_rotate_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_extrude_rotate, 0);
-}
-void geometry_elementary_extrude_rotate_point_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(5,0,"Point");
-}
-void geometry_elementary_extrude_rotate_curve_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(5,0,"Line");
-}
-void geometry_elementary_extrude_rotate_surface_cb(CALLBACK_ARGS){
-  WID->create_geometry_context_window(3);
-  _transform_point_curve_surface(5,0,"Surface");
-}
-
-void geometry_elementary_delete_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_elementary_delete, 0);
-}
-void geometry_elementary_delete_point_cb(CALLBACK_ARGS){
-  _transform_point_curve_surface(6,0,"Point");
-}
-void geometry_elementary_delete_curve_cb(CALLBACK_ARGS){
-  _transform_point_curve_surface(6,0,"Line");
-}
-void geometry_elementary_delete_surface_cb(CALLBACK_ARGS){
-  _transform_point_curve_surface(6,0,"Surface");
-}
-
-static void _add_physical(char *what){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib, type, zone;
-  List_T  *Liste1;
-
-  if(!strcmp(what,"Point")){
-    type = ENT_POINT;
-    if(!opt_geometry_points(0,GMSH_GET,0)){
-      opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  else if(!strcmp(what,"Line")){
-    type = ENT_LINE; 
-    if(!opt_geometry_lines(0,GMSH_GET,0)){
-      opt_geometry_lines(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  else if(!strcmp(what,"Surface")){
-    type = ENT_SURFACE;
-    if(!opt_geometry_surfaces(0,GMSH_GET,0)){
-      opt_geometry_surfaces(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-  }
-  else{
-    Msg(GERROR, "Interactive volume selection not done "
-	"(you will have to edit the input file manually)");
-    if(!opt_geometry_volumes(0,GMSH_GET,0)){
-      opt_geometry_volumes(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-    return;
-  }
-
-  Liste1 = List_Create(5,5,sizeof(int));
-  while(1){
-    Msg(STATUS3N,"Select %s ('e'=end, 'q'=quit)", what); 
-    ib = SelectEntity(type, &v,&c,&s);
-    if(ib == 1){ /* left mouse */
-      switch(type){
-      case ENT_POINT: List_Add(Liste1, &v->Num); break;
-      case ENT_LINE:  List_Add(Liste1, &c->Num); break;
-      case ENT_SURFACE:  List_Add(Liste1, &s->Num); break;
-      }
-    }
-    if(ib == -1){ /* end */
-      if(List_Nbr(Liste1)){
-	add_physical(Liste1,CTX.filename,type,&zone);
-	List_Reset(Liste1);
-	ZeroHighlight(&M);
-	Draw();
-      }
-    }
-    if(ib == 0){
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-  }
-  Msg(STATUS3N,"Ready");
-}
-
-void geometry_physical_add_cb(CALLBACK_ARGS){
-  WID->set_context(menu_geometry_physical_add, 0);
-}
-void geometry_physical_add_point_cb (CALLBACK_ARGS){
-  _add_physical("Point");
-}
-void geometry_physical_add_curve_cb (CALLBACK_ARGS){
-  _add_physical("Line");
-}
-void geometry_physical_add_surface_cb (CALLBACK_ARGS){
-  _add_physical("Surface");
-}
-void geometry_physical_add_volume_cb (CALLBACK_ARGS){
-  _add_physical("Volume");
-}
-
-// Dynamic Mesh Menus
-
-void mesh_save_cb(CALLBACK_ARGS) {
-  Print_Mesh(&M, CTX.output_filename, CTX.mesh.format);
-}
-void mesh_define_cb(CALLBACK_ARGS){
-  WID->set_context(menu_mesh_define, 0);
-}
-void mesh_1d_cb(CALLBACK_ARGS){
-  mai3d(&M, 1); 
-  Draw();
-  Msg(STATUS3N,"Ready");
-}
-void mesh_2d_cb(CALLBACK_ARGS){
-  mai3d(&M, 2);
-  Draw();
-  Msg(STATUS3N,"Ready");
-} 
-void mesh_3d_cb(CALLBACK_ARGS){
-  mai3d(&M, 3); 
-  Draw();
-  Msg(STATUS3N,"Ready");
-} 
-void mesh_define_length_cb (CALLBACK_ARGS){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int       ib;
-  static int n=0, p[100];
-
-  if(!opt_geometry_points(0,GMSH_GET,0)){
-    opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-    Draw();
-  }
-
-  WID->create_mesh_context_window(0);
-
-  while(1){
-    Msg(STATUS3N,"Select Point ('e'=end, 'q'=quit)");
-    ib = SelectEntity(ENT_POINT, &v,&c,&s);
-    if(ib == 1){ /* left mouse butt */
-      p[n++] = v->Num; 
-    }
-    if (ib == -1){ /* 'e' */
-      if(n >= 1) {
-	add_charlength(n,p,CTX.filename); 
-	n=0;
-	ZeroHighlight(&M);
-	Draw();
-	break;
-      }
-    }
-    if(ib == 0){ /* 'q' */
-      n=0 ;
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-  }
-  Msg(STATUS3N,"Ready");
-}
-void mesh_define_recombine_cb (CALLBACK_ARGS){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib;
-  static int n, p[100];
-
-  if(!opt_geometry_surfaces(0,GMSH_GET,0)){
-    opt_geometry_surfaces(0,GMSH_SET|GMSH_GUI,1);
-    Draw();
-  }
-
-  n=0;
-  while(1){
-    Msg(STATUS3N,"Select Surface ('e'=end, 'q'=quit)");
-    ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
-    if(ib == 1){ /* left mouse butt */
-      p[n++] = s->Num; 
-    }
-    if (ib == -1){ /* 'e' */
-      if(n >= 1) {
-	add_recosurf(n,p,CTX.filename); break;
-      }
-      n=0;
-      ZeroHighlight(&M);
-      Draw();
-    }
-    if(ib == 0){ /* 'q' */
-      n=0 ;
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-  }
-  Msg(STATUS3N, "Ready");
-}
-void mesh_define_transfinite_cb (CALLBACK_ARGS){
-  WID->set_context(menu_mesh_define_transfinite, 0);
-} 
-
-static void _add_transfinite(int dim){
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int      ib;
-  static int n, p[100];
-
-  if(!opt_geometry_points(0,GMSH_GET,0)){
-    opt_geometry_points(0,GMSH_SET|GMSH_GUI,1);
-    Draw();
-  }
-
-  switch (dim) {
-  case 1 :
-    if(!opt_geometry_lines(0,GMSH_GET,0)){
-      opt_geometry_lines(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-    break ;
-  case 2 :
-    if(!opt_geometry_surfaces(0,GMSH_GET,0)){
-      opt_geometry_surfaces(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-    break;
-  case 3 :
-    if(!opt_geometry_volumes(0,GMSH_GET,0)){
-      opt_geometry_volumes(0,GMSH_SET|GMSH_GUI,1);
-      Draw();
-    }
-    break;
-  }
-  
-  n=0;
-  while(1){
-    switch (dim) {
-    case 1 :
-      Msg(STATUS3N,"Select Line ('e'=end, 'q'=quit)");
-      ib = SelectEntity(ENT_LINE, &v,&c,&s);
-      break ;
-    case 2 :
-      Msg(STATUS3N,"Select Surface ('e'=end, 'q'=quit)");
-      ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
-      break;
-    case 3 :
-      ib = 1;
-      break;
-    }
-    if(ib == 1){ /* left mouse butt */
-      switch (dim) {    
-      case 1 : p[n++] = c->Num ; break ;
-      case 2 : p[n++] = s->Num; // fall-through
-      case 3 :
-	while(1){
-	  Msg(STATUS3N,"Select Point ('e'=end, 'q'=quit)");
-	  ib = SelectEntity(ENT_POINT, &v,&c,&s);
-	  if(ib == 1){ /* left mouse butt */
-	    p[n++] = v->Num ;
-	  }
-	  if (ib == -1){ /* 'e' */
-	    switch (dim) {    
-	    case 2 :
-	      if(n == 3+1 || n == 4+1)
-		add_trsfsurf(n,p,CTX.filename); 
-	      else
-		Msg(STATUS2, "Wrong number of points for Transfinite Surface");
-	      break;
-	    case 3 :
-	      if(n == 6 || n == 8)
-		add_trsfvol(n,p,CTX.filename);
-	      else
-		Msg(STATUS2, "Wrong number of points for Transfinite Volume");
-	      break;
-	    }
-	    n=0;
-	    ZeroHighlight(&M);
-	    Draw();
-	    break;
-	  }
-	  if(ib == 0){ /* 'q' */
-	    n=0 ;
-	    ZeroHighlight(&M);
-	    Draw();
-	    break;
-	  }
-	}
-	break ;
-      }
-    }
-    if (ib == -1){ /* 'e' */
-      if (dim == 1){ 
-	if(n >= 1) add_trsfline(n,p,CTX.filename);
-      }
-      n=0;
-      ZeroHighlight(&M);
-      Draw();
-    }
-    if(ib == 0){ /* 'q' */
-      n=0 ;
-      ZeroHighlight(&M);
-      Draw();
-      break;
-    }
-  }
-  Msg(STATUS3N, "Ready");
-}
-
-void mesh_define_transfinite_line_cb(CALLBACK_ARGS){
-  WID->create_mesh_context_window(1);
-  _add_transfinite(1);
-}
-void mesh_define_transfinite_surface_cb(CALLBACK_ARGS){
-  _add_transfinite(2);
-}
-void mesh_define_transfinite_volume_cb(CALLBACK_ARGS){
-  WID->create_mesh_context_window(2);
-  _add_transfinite(3);
-} 
-
-// Dynamic Solver Menus
-
-#include "Solvers.h"
-
-void getdp_cb(CALLBACK_ARGS){
-  char file[256];
-  static int first=1;
-  if(first){
-    first = 0;
-    strcpy(file,CTX.base_filename);
-    strcat(file,".pro");
-    WID->getdp_input[0]->value(file);
-  }
-  GetDP((char*)WID->getdp_input[0]->value());
-  WID->create_getdp_window();
-}
-void getdp_file_open_cb(CALLBACK_ARGS){
-  char *newfile;
-  newfile = fl_file_chooser("Open problem definition file", "*.[Pp][Rr][Oo]", NULL);
-  if (newfile != NULL){
-    WID->getdp_input[0]->value(newfile);
-    GetDP(newfile);
-  }
-}
-void getdp_file_edit_cb(CALLBACK_ARGS){
-  char cmd[1000];
-  sprintf(cmd, CTX.editor, WID->getdp_input[0]->value());
-  Msg(INFO, "Starting text editor '%s'", cmd);
-  system(cmd);
-}
-void getdp_choose_mesh_cb(CALLBACK_ARGS){
-  char *newfile;
-  newfile = fl_file_chooser("Open mesh file", "*.[Mm][Ss][Hh]", NULL);
-  if (newfile != NULL) WID->getdp_input[1]->value(newfile);
-}
-void getdp_pre_cb(CALLBACK_ARGS){
-  char arg[256];
-  if(GetDP_Info.popupmessages) WID->create_message_window();
-  if(strlen(WID->getdp_input[1]->value()))
-    sprintf(arg, "%s -msh %s -pre %s", 
-	    WID->getdp_input[0]->value(),
-	    WID->getdp_input[1]->value(),
-	    GetDP_Info.res[WID->getdp_choice[0]->value()]);
-  else
-    sprintf(arg, "%s -pre %s", 
-	    WID->getdp_input[0]->value(), 
-	    GetDP_Info.res[WID->getdp_choice[0]->value()]);
-
-  GetDP(arg);
-}
-void getdp_cal_cb(CALLBACK_ARGS){
-  char arg[256];
-  if(GetDP_Info.popupmessages) WID->create_message_window();
-  if(strlen(WID->getdp_input[1]->value()))
-    sprintf(arg, "%s -msh %s -cal", 
-	    WID->getdp_input[0]->value(),
-	    WID->getdp_input[1]->value());
-  else
-    sprintf(arg, "%s -cal", WID->getdp_input[0]->value());
-  GetDP(arg);
-}
-void getdp_post_cb(CALLBACK_ARGS){
-  char arg[256];
-  if(GetDP_Info.popupmessages) WID->create_message_window();
-  if(strlen(WID->getdp_input[1]->value()))
-    sprintf(arg, "%s -msh %s -bin -pos %s",
-	    WID->getdp_input[0]->value(),
-	    WID->getdp_input[1]->value(),
-	    GetDP_Info.postop[WID->getdp_choice[1]->value()]);
-  else
-    sprintf(arg, "%s -bin -pos %s",
-	    WID->getdp_input[0]->value(),
-	    GetDP_Info.postop[WID->getdp_choice[1]->value()]);
-  GetDP(arg);
-}
-void getdp_kill_cb(CALLBACK_ARGS){
-  if(GetDP_Info.pid > 0){
-    kill(GetDP_Info.pid, 9);
-    Msg(INFO, "Killed GetDP pid %d", GetDP_Info.pid);
-  }
-  GetDP_Info.pid = -1;
-}
-void getdp_choose_command_cb(CALLBACK_ARGS){
-  char *newfile;
-#if defined(WIN32)
-  newfile = fl_file_chooser("Choose executable", "*.[Ee][Xx][Ee]", NULL);
-#else
-  newfile = fl_file_chooser("Choose executable", "*", NULL);
-#endif
-  if (newfile != NULL) WID->getdp_input[2]->value(newfile);
-}
-void getdp_ok_cb(CALLBACK_ARGS){
-  opt_solver_getdp_popupmessages(0, GMSH_SET, WID->getdp_butt[0]->value());
-  opt_solver_getdp_mergeviews(0, GMSH_SET, WID->getdp_butt[1]->value());
-
-  int retry=0;
-  if(strcmp(opt_solver_getdp_command(0, GMSH_GET, NULL), 
-	    WID->getdp_input[2]->value())) retry=1;
-  opt_solver_getdp_command(0, GMSH_SET, (char*)WID->getdp_input[2]->value());
-  if(retry) getdp_cb(NULL,NULL);
-}
-
-
-// Dynamic Post Menus
-
-void view_toggle_cb(CALLBACK_ARGS){
-  opt_view_visible((int)data, GMSH_SET, WID->m_toggle_butt[(int)data]->value());
-  Draw();
-}
-
-static int RELOAD_ALL_VIEWS = 0 ;
-
-void view_reload_all_cb(CALLBACK_ARGS) {
-  if(!Post_ViewList) return;
-  RELOAD_ALL_VIEWS = 1;
-  for(int i = 0 ; i<List_Nbr(Post_ViewList) ; i++)
-    view_reload_cb(NULL, (void *)i);
-  RELOAD_ALL_VIEWS = 0;
-  Draw();
-}
-
-void view_reload_visible_cb(CALLBACK_ARGS) {
-  if(!Post_ViewList) return;
-  RELOAD_ALL_VIEWS = 1;
-  for(int i = 0 ; i<List_Nbr(Post_ViewList) ; i++)
-    if(opt_view_visible(i, GMSH_GET, 0))
-      view_reload_cb(NULL, (void *)i);
-  RELOAD_ALL_VIEWS = 0;
-  Draw();
-}
-
-void view_reload_cb(CALLBACK_ARGS){
-  Post_View tmp ;
-  char filename[256];
-
-  if(!Post_ViewList) return;
-
-  Post_View *v = (Post_View*)List_Pointer(Post_ViewList,(int)data);
-  strcpy(filename, v->FileName);
-  CopyViewOptions(v, &tmp);
-
-  Post_ViewForceNumber = v->Num ;
-  FreeView(v);
-  MergeProblem(filename);
-  Post_ViewForceNumber = 0 ;
-  
-  v = (Post_View*)List_Pointer(Post_ViewList,(int)data);
-  CopyViewOptions(&tmp, v);
-
-  // In case the reloaded view has a different number of time steps
-  if(v->TimeStep > v->NbTimeStep-1) v->TimeStep = 0;
-
-  if(!RELOAD_ALL_VIEWS)
-    Draw();
-}
-
-static int REMOVE_ALL_VIEWS = 0 ;
-
-void view_remove_all_cb(CALLBACK_ARGS) {
-  if(!Post_ViewList) return;
-  REMOVE_ALL_VIEWS = 1;
-  while(List_Nbr(Post_ViewList))
-    view_remove_cb(NULL, (void*)0);
-  REMOVE_ALL_VIEWS = 0;
-  Draw();
-}
-
-void view_remove_visible_cb(CALLBACK_ARGS) {
-  int i;
-  if(!Post_ViewList) return;
-  REMOVE_ALL_VIEWS = 1;
-  for(i=List_Nbr(Post_ViewList)-1 ; i>=0 ; i--)
-    if(opt_view_visible(i, GMSH_GET, 0))
-      view_remove_cb(NULL, (void*)i);
-  REMOVE_ALL_VIEWS = 0;
-  Draw();
-}
-
-void view_remove_cb(CALLBACK_ARGS){
-  int i, play=0;
-
-  FreeView((int)data);
-
-  for(i=0 ; i<List_Nbr(Post_ViewList) ; i++)
-    if(((Post_View*)List_Pointer(Post_ViewList,i))->NbTimeStep > 1){
-      play = 1 ; 
-      break ;
-    }
-  if(!play) WID->g_status_butt[5]->deactivate();
-
-  if(WID->get_context() == 3)
-    WID->set_context(menu_post, 0);  
-
-  if(!REMOVE_ALL_VIEWS)
-    Draw();
-}
-
-void view_save_ascii_cb(CALLBACK_ARGS){
-  char *newfile;
-  if((newfile = fl_file_chooser("Save view in ASCII format", "*", NULL)))
-    Write_View(0, (Post_View*)List_Pointer(Post_ViewList,(int)data), newfile); 
-}
-
-void view_save_binary_cb(CALLBACK_ARGS){
-  char *newfile;
-  if((newfile = fl_file_chooser("Save view in binary format", "*", NULL)))
-    Write_View(1, (Post_View*)List_Pointer(Post_ViewList,(int)data), newfile); 
-}
-
-static void _duplicate_view(int num, int options){
-  Post_View  v, *v1, *v2, *v3 ;
-
-  if(!Post_ViewList) return;
-
-  v1 = (Post_View*)List_Pointer(Post_ViewList,num);
-
-  v2 = BeginView(0);
-  EndView(v2, 0, v1->FileName, v1->Name);
-
-  if(!v1->DuplicateOf){
-    v2->DuplicateOf = v1->Num ;
-    v1->Links++ ;
-  }
-  else{
-    v.Num = v1->DuplicateOf ;
-    if(!(v3 = (Post_View*)List_PQuery(Post_ViewList, &v, fcmpPostViewNum))){
-      v2->DuplicateOf = v1->Num ;
-      v1->Links++ ;
-    }
-    else{
-      v2->DuplicateOf = v3->Num;
-      v3->Links++ ;
-    }
-  }
-
-  v2->Time = v1->Time;
-  v2->NbSP = v1->NbSP; v2->SP = v1->SP; 
-  v2->NbVP = v1->NbVP; v2->VP = v1->VP; 
-  v2->NbTP = v1->NbTP; v2->TP = v1->TP;
-  v2->NbSL = v1->NbSL; v2->SL = v1->SL; 
-  v2->NbVL = v1->NbVL; v2->VL = v1->VL; 
-  v2->NbTL = v1->NbTL; v2->TL = v1->TL;
-  v2->NbST = v1->NbST; v2->ST = v1->ST; 
-  v2->NbVT = v1->NbVT; v2->VT = v1->VT; 
-  v2->NbTT = v1->NbTT; v2->TT = v1->TT;
-  v2->NbSS = v1->NbSS; v2->SS = v1->SS; 
-  v2->NbVS = v1->NbVS; v2->VS = v1->VS; 
-  v2->NbTS = v1->NbTS; v2->TS = v1->TS;
-  v2->ScalarOnly  = v1->ScalarOnly;
-  v2->Min         = v1->Min;       
-  v2->Max         = v1->Max;      
-  v2->NbTimeStep  = v1->NbTimeStep;
-
-  if(options) CopyViewOptions(v1, v2);
-  AddViewInUI(List_Nbr(Post_ViewList), v2->Name, v2->Num);
-  Draw();
-}
-void view_duplicate_cb(CALLBACK_ARGS){
-  _duplicate_view((int)data,0);
-}
-void view_duplicate_with_options_cb(CALLBACK_ARGS){
-  _duplicate_view((int)data,1);
-}
-
-void view_applybgmesh_cb(CALLBACK_ARGS){
-  Post_View *v = (Post_View*)List_Pointer(Post_ViewList,(int)data);
-  if(!v->ScalarOnly){
-    Msg(GERROR, "Background mesh generation impossible with non-scalar view");
-    return;
-  }
-  BGMWithView(v); 
-}
-void view_options_cb(CALLBACK_ARGS){
-  WID->create_view_options_window((int)data);
-}
-
-void view_plugin_cb(CALLBACK_ARGS){
-  char name[256];
-  std::pair<int,GMSH_Plugin*> *pair = (std::pair<int,GMSH_Plugin*>*)data;
-  int iView = pair->first;
-  GMSH_Post_Plugin *p = (GMSH_Post_Plugin*)pair->second;
-  p->getName(name);
-
-  if(p->dialogBox){//Get the values from the GUI
-    int n = p->getNbOptions();
-    if(n > 20)Msg(GERROR,"Plugin has too much parameters");
-    for(int i=0;i<n;i++){
-      StringXNumber *sxn;
-      sxn = p->GetOption(i);
-      sxn->def = p->dialogBox->view_value[i]->value();
-    }
-  }
-
-  try{
-    Post_View *v = (Post_View*)List_Pointer(Post_ViewList,iView);
-    p->execute(v);
-    Draw();
-  }
-  catch (GMSH_Plugin *err){
-    p->CatchErrorMessage(name);
-    Msg(WARNING,"%s",name);
-  }
-}
-
-void view_options_plugin_cb(CALLBACK_ARGS){
-  std::pair<int,GMSH_Plugin*> *pair =  (std::pair<int,GMSH_Plugin*>*)data;
-  GMSH_Plugin *p = pair->second;
-
-  if(!p->dialogBox)p->dialogBox = WID->create_plugin_window(p);
-
-  p->dialogBox->run_button->callback(view_plugin_cb, (void*)pair);
-
-  if(p->dialogBox->main_window->shown())
-    p->dialogBox->main_window->redraw();
-  else
-    p->dialogBox->main_window->show();    
-}
-
-void view_options_custom_cb(CALLBACK_ARGS){
-  if(WID->view_butt[0]->value()){
-    WID->view_value[0]->activate();
-    WID->view_value[1]->activate();
-  }
-  else{
-    WID->view_value[0]->deactivate();
-    WID->view_value[1]->deactivate();
-  }
-}
-
-void view_options_timestep_cb(CALLBACK_ARGS){
-  int links = (int)opt_post_link(0, GMSH_GET, 0);
-  for(int i=0 ; i<List_Nbr(Post_ViewList) ; i++){
-    if((links == 2 || links == 4) ||
-       ((links == 1 || links == 3) && opt_view_visible(i, GMSH_GET, 0)) ||
-       (links == 0 && i == (int)data)){
-      opt_view_timestep(i, GMSH_SET, (int)((Fl_Value_Input*)w)->value());
-    }
-  }
-  Draw();
-}
-
-void view_options_ok_cb(CALLBACK_ARGS){
-  int i, links, force=0;
-
-  links = (int)opt_post_link(0, GMSH_GET, 0);
-
-  for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){
-    if((links == 2 || links == 4) ||
-       ((links == 1 || links == 3) && opt_view_visible(i, GMSH_GET, 0)) ||
-       (links == 0 && i == (int)data)){
-
-      if(links == 3 || links == 4) force = 1;
-
-      // view_butts
-
-      //not this one. if(WID->view_butt[0]->changed())
-      opt_view_range_type(i, GMSH_SET, 
-			  WID->view_butt[0]->value()?DRAW_POST_CUSTOM:
-			  DRAW_POST_DEFAULT);
-
-      if(force || WID->view_butt[1]->changed() ||
-	 WID->view_butt[2]->changed() ||
-	 WID->view_butt[3]->changed())
-	opt_view_scale_type(i, GMSH_SET, 
-			    WID->view_butt[1]->value()?DRAW_POST_LINEAR:
-			    WID->view_butt[2]->value()?DRAW_POST_LOGARITHMIC:
-			    DRAW_POST_DOUBLELOGARITHMIC);
-
-      if(force || WID->view_butt[25]->changed())
-	opt_view_saturate_values(i, GMSH_SET, 
-				 WID->view_butt[25]->value());
-      
-      if(force || WID->view_butt[3]->changed() ||
-	 WID->view_butt[4]->changed() ||
-	 WID->view_butt[5]->changed() ||
-	 WID->view_butt[6]->changed())
-	opt_view_intervals_type(i, GMSH_SET, 
-				WID->view_butt[3]->value()?DRAW_POST_ISO:
-				WID->view_butt[4]->value()?DRAW_POST_DISCRETE:
-				WID->view_butt[5]->value()?DRAW_POST_CONTINUOUS:
-				DRAW_POST_NUMERIC);
-
-      if(force || WID->view_butt[7]->changed() ||
-	 WID->view_butt[8]->changed() ||
-	 WID->view_butt[9]->changed() ||
-	 WID->view_butt[10]->changed())
-	opt_view_arrow_type(i, GMSH_SET, 
-			    WID->view_butt[7]->value()?DRAW_POST_SEGMENT:
-			    WID->view_butt[8]->value()?DRAW_POST_ARROW:
-			    WID->view_butt[9]->value()?DRAW_POST_CONE:
-			    DRAW_POST_DISPLACEMENT);
-
-      if(force || WID->view_butt[11]->changed() ||
-	 WID->view_butt[12]->changed())
-	opt_view_arrow_location(i, GMSH_SET, 
-				WID->view_butt[11]->value()?DRAW_POST_LOCATE_COG:
-				DRAW_POST_LOCATE_VERTEX);
-
-      if(force || WID->view_butt[13]->changed())
-	opt_view_show_element(i, GMSH_SET, WID->view_butt[13]->value());
-
-      if(force || WID->view_butt[14]->changed())
-	opt_view_show_scale(i, GMSH_SET, WID->view_butt[14]->value());
-
-      if(force || WID->view_butt[15]->changed())
-	opt_view_show_time(i, GMSH_SET, WID->view_butt[15]->value());
-
-      if(force || WID->view_butt[16]->changed())
-	opt_view_transparent_scale(i, GMSH_SET, WID->view_butt[16]->value());
-
-      if(force || WID->view_butt[17]->changed())
-	opt_view_light(i,GMSH_SET,WID->view_butt[17]->value());
-
-      if(force || WID->view_butt[27]->changed())
-	opt_view_smooth_normals(i,GMSH_SET,WID->view_butt[27]->value());
-      
-      if(force || WID->view_butt[18]->changed())
-	opt_view_draw_points(i, GMSH_SET, WID->view_butt[18]->value());
-
-      if(force || WID->view_butt[19]->changed())
-	opt_view_draw_lines(i, GMSH_SET, WID->view_butt[19]->value());
-
-      if(force || WID->view_butt[20]->changed())
-	opt_view_draw_triangles(i, GMSH_SET, WID->view_butt[20]->value());
-
-      if(force || WID->view_butt[21]->changed())
-	opt_view_draw_tetrahedra(i, GMSH_SET, WID->view_butt[21]->value());
-
-      if(force || WID->view_butt[22]->changed())
-	opt_view_draw_scalars(i, GMSH_SET, WID->view_butt[22]->value());
-
-      if(force || WID->view_butt[23]->changed())
-	opt_view_draw_vectors(i, GMSH_SET, WID->view_butt[23]->value());
-
-      if(force || WID->view_butt[24]->changed())
-	opt_view_draw_tensors(i, GMSH_SET, WID->view_butt[24]->value());
-
-      // view_values
-
-      if(force || WID->view_value[0]->changed())
-	opt_view_custom_min(i, GMSH_SET, WID->view_value[0]->value());
-      
-      if(force || WID->view_value[1]->changed())
-	opt_view_custom_max(i, GMSH_SET, WID->view_value[1]->value());
-
-      if(force || WID->view_value[2]->changed())
-	opt_view_nb_iso(i, GMSH_SET, WID->view_value[2]->value());
-
-      if(force || WID->view_value[3]->changed())
-	opt_view_offset0(i, GMSH_SET, WID->view_value[3]->value());
-
-      if(force || WID->view_value[4]->changed())
-	opt_view_offset1(i, GMSH_SET, WID->view_value[4]->value());
-
-      if(force || WID->view_value[5]->changed())
-	opt_view_offset2(i, GMSH_SET, WID->view_value[5]->value());
-
-      if(force || WID->view_value[6]->changed())
-	opt_view_raise0(i, GMSH_SET, WID->view_value[6]->value());
-
-      if(force || WID->view_value[7]->changed())
-	opt_view_raise1(i, GMSH_SET, WID->view_value[7]->value());
-
-      if(force || WID->view_value[8]->changed())
-	opt_view_raise2(i, GMSH_SET, WID->view_value[8]->value());
-
-      if(force || WID->view_value[9]->changed())
-	opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value());
-
-      if(force || WID->view_value[10]->changed())
-	opt_view_arrow_scale(i, GMSH_SET, WID->view_value[10]->value());
-
-      if(force || WID->view_value[11]->changed())
-	opt_view_boundary(i, GMSH_SET, WID->view_value[11]->value());
-
-      if(force || WID->view_value[12]->changed())
-	opt_view_explode(i, GMSH_SET, WID->view_value[12]->value());
-
-      // view_inputs
-
-      if(force || WID->view_input[0]->changed())      
-	opt_view_name(i, GMSH_SET, (char*)WID->view_input[0]->value());
-
-      if(force || WID->view_input[1]->changed())
-	opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value());
-
-      // colorbar window
-
-      if(force || (WID->view_colorbar_window->changed() && i!=(int)data)){
-	ColorTable_Copy(&((Post_View*)List_Pointer(Post_ViewList,(int)data))->CT);
-	ColorTable_Paste(&((Post_View*)List_Pointer(Post_ViewList,i))->CT);
-      }
-    }
-  }
-
-  // we clear all the flags
-  for(i=0; i<VIEW_OPT_BUTT; i++){  
-    if(WID->view_butt[i]) WID->view_butt[i]->clear_changed();
-    if(WID->view_value[i]) WID->view_value[i]->clear_changed();
-    if(WID->view_input[i]) WID->view_input[i]->clear_changed();
-    WID->view_colorbar_window->clear_changed();
-  }
-
-  Draw();
-}
-
-// Contextual windows for geometry
-
-void con_geometry_define_parameter_cb(CALLBACK_ARGS){
-  add_param((char*)WID->context_geometry_input[0]->value(),
-	    (char*)WID->context_geometry_input[1]->value(),
-	    CTX.filename);
-}
-
-void con_geometry_define_point_cb(CALLBACK_ARGS){
-  strcpy(x_text, (char*)WID->context_geometry_input[2]->value());
-  strcpy(y_text, WID->context_geometry_input[3]->value());
-  strcpy(z_text, WID->context_geometry_input[4]->value());
-  strcpy(l_text, WID->context_geometry_input[5]->value());
-  add_point(CTX.filename);
-  ZeroHighlight(&M);
-  Replot();
-}
-
-void con_geometry_define_translation_cb(CALLBACK_ARGS){
-  strcpy(tx_text, WID->context_geometry_input[6]->value());
-  strcpy(ty_text, WID->context_geometry_input[7]->value());
-  strcpy(tz_text, WID->context_geometry_input[8]->value());
-}
-
-void con_geometry_define_rotation_cb(CALLBACK_ARGS){
-  strcpy(px_text, WID->context_geometry_input[9]->value());
-  strcpy(py_text, WID->context_geometry_input[10]->value());
-  strcpy(pz_text, WID->context_geometry_input[11]->value());
-  strcpy(ax_text, WID->context_geometry_input[12]->value());
-  strcpy(ay_text, WID->context_geometry_input[13]->value());
-  strcpy(az_text, WID->context_geometry_input[14]->value());
-  strcpy(angle_text, WID->context_geometry_input[15]->value());
-}
-
-void con_geometry_define_scale_cb(CALLBACK_ARGS){
-  strcpy(dx_text, WID->context_geometry_input[16]->value());
-  strcpy(dy_text, WID->context_geometry_input[17]->value());
-  strcpy(dz_text, WID->context_geometry_input[18]->value());
-  strcpy(df_text, WID->context_geometry_input[19]->value());
-}
-
-void con_geometry_define_symmetry_cb(CALLBACK_ARGS){
-  strcpy(sa_text, WID->context_geometry_input[20]->value());
-  strcpy(sb_text, WID->context_geometry_input[21]->value());
-  strcpy(sc_text, WID->context_geometry_input[22]->value());
-  strcpy(sd_text, WID->context_geometry_input[23]->value());
-}
-
-
-// Contextual windows for mesh
-
-void con_mesh_define_length_cb(CALLBACK_ARGS){
-  strcpy(char_length_text, WID->context_mesh_input[0]->value());
-}
-
-void con_mesh_define_transfinite_line_cb(CALLBACK_ARGS){
-  strcpy(trsf_pts_text, WID->context_mesh_input[1]->value());
-  strcpy(trsf_type_text, WID->context_mesh_input[2]->value());
-}
-
-void con_mesh_define_transfinite_volume_cb(CALLBACK_ARGS){
-  strcpy(trsf_vol_text, WID->context_mesh_input[3]->value());
-}
-
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
deleted file mode 100644
index 791493badd344f52b913bc907281cbd76e5cdd75..0000000000000000000000000000000000000000
--- a/Fltk/Callbacks.h
+++ /dev/null
@@ -1,228 +0,0 @@
-#ifndef _CALLBACKS_H_
-#define _CALLBACKS_H_
-
-#define CALLBACK_ARGS   Fl_Widget* w, void* data
-
-int SetGlobalShortcut(int event);
-
-// Common callbacks
-
-void cancel_cb(CALLBACK_ARGS) ;
-void color_cb(CALLBACK_ARGS) ;
-void set_changed_cb(CALLBACK_ARGS);
-
-// Graphical window
-
-void status_xyz1p_cb(CALLBACK_ARGS) ;
-void status_play_cb(CALLBACK_ARGS) ;
-void status_pause_cb(CALLBACK_ARGS) ;
-void status_cancel_cb(CALLBACK_ARGS) ;
-
-// File Menu
-
-void file_open_cb(CALLBACK_ARGS) ;
-void file_merge_cb(CALLBACK_ARGS) ;
-void file_save_as_auto_cb(CALLBACK_ARGS) ;
-void file_save_as_geo_cb(CALLBACK_ARGS) ;
-void file_save_as_geo_options_cb(CALLBACK_ARGS) ;
-void file_save_as_msh_cb(CALLBACK_ARGS) ;
-void file_save_as_unv_cb(CALLBACK_ARGS) ;
-void file_save_as_gref_cb(CALLBACK_ARGS) ;
-void file_save_as_eps_simple_cb(CALLBACK_ARGS) ;
-void file_save_as_eps_accurate_cb(CALLBACK_ARGS) ;
-void file_save_as_jpeg_cb(CALLBACK_ARGS) ;
-void file_save_as_gif_cb(CALLBACK_ARGS) ;
-void file_save_as_gif_dithered_cb(CALLBACK_ARGS) ;
-void file_save_as_gif_transparent_cb(CALLBACK_ARGS) ;
-void file_save_as_ppm_cb(CALLBACK_ARGS) ;
-void file_save_as_yuv_cb(CALLBACK_ARGS) ;
-void file_quit_cb(CALLBACK_ARGS) ;
-
-// Option General Menu
-
-void opt_general_cb(CALLBACK_ARGS) ;
-void opt_general_color_scheme_cb(CALLBACK_ARGS) ;
-void opt_general_ok_cb(CALLBACK_ARGS) ;
-
-// Option Geometry Menu
-
-void opt_geometry_cb(CALLBACK_ARGS) ;
-void opt_geometry_show_by_entity_num_cb(CALLBACK_ARGS) ;
-void opt_geometry_color_scheme_cb(CALLBACK_ARGS) ;
-void opt_geometry_ok_cb(CALLBACK_ARGS) ;
-
-// Option Mesh Menu
-
-void opt_mesh_cb(CALLBACK_ARGS) ;
-void opt_mesh_show_by_entity_num_cb(CALLBACK_ARGS) ;
-void opt_mesh_color_scheme_cb(CALLBACK_ARGS) ;
-void opt_mesh_ok_cb(CALLBACK_ARGS) ;
-
-// Option Solver Menu
-
-void opt_solver_cb(CALLBACK_ARGS) ;
-void opt_solver_ok_cb(CALLBACK_ARGS) ;
-
-// Option Post Menu
-
-void opt_post_cb(CALLBACK_ARGS) ;
-void opt_post_ok_cb(CALLBACK_ARGS) ;
-
-// Option Statistics Menu
-
-void opt_statistics_cb(CALLBACK_ARGS) ;
-void opt_statistics_update_cb(CALLBACK_ARGS) ;
-void opt_statistics_histogram_cb(CALLBACK_ARGS) ;
-
-// Option Message Menu
-
-void opt_message_cb(CALLBACK_ARGS) ;
-void opt_message_clear_cb(CALLBACK_ARGS) ;
-void opt_message_save_cb(CALLBACK_ARGS) ;
-
-void opt_save_cb(CALLBACK_ARGS) ;
-
-// Help Menu
-
-void help_short_cb(CALLBACK_ARGS) ;
-void help_command_line_cb(CALLBACK_ARGS) ;
-void help_about_cb(CALLBACK_ARGS) ;
-
-// Module Menu
-
-void mod_geometry_cb(CALLBACK_ARGS) ;
-void mod_mesh_cb(CALLBACK_ARGS) ;
-void mod_solver_cb(CALLBACK_ARGS) ;
-void mod_post_cb(CALLBACK_ARGS) ;
-void mod_back_cb(CALLBACK_ARGS) ;
-void mod_forward_cb(CALLBACK_ARGS) ;
-
-// Dynamic Geometry Menus
-
-void geometry_elementary_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_add_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_add_new_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_parameter_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_point_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_line_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_spline_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_circle_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_planesurface_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_ruledsurface_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_new_volume_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_add_translate_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_translate_point_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_translate_curve_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_translate_surface_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_add_rotate_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_rotate_point_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_rotate_curve_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_rotate_surface_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_add_scale_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_scale_point_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_scale_curve_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_scale_surface_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_add_symmetry_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_symmetry_point_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_symmetry_curve_cb(CALLBACK_ARGS) ;
-void       geometry_elementary_add_symmetry_surface_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_translate_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_translate_point_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_translate_curve_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_translate_surface_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_rotate_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_rotate_point_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_rotate_curve_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_rotate_surface_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_scale_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_scale_point_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_scale_curve_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_scale_surface_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_symmetry_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_symmetry_point_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_symmetry_curve_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_symmetry_surface_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_extrude_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_extrude_translate_cb(CALLBACK_ARGS) ;
-void        geometry_elementary_extrude_translate_point_cb(CALLBACK_ARGS) ;
-void        geometry_elementary_extrude_translate_curve_cb(CALLBACK_ARGS) ;
-void        geometry_elementary_extrude_translate_surface_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_extrude_rotate_cb(CALLBACK_ARGS) ;
-void        geometry_elementary_extrude_rotate_point_cb(CALLBACK_ARGS) ;
-void        geometry_elementary_extrude_rotate_curve_cb(CALLBACK_ARGS) ;
-void        geometry_elementary_extrude_rotate_surface_cb(CALLBACK_ARGS) ;
-void   geometry_elementary_delete_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_delete_point_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_delete_curve_cb(CALLBACK_ARGS) ;
-void     geometry_elementary_delete_surface_cb(CALLBACK_ARGS) ;
-void geometry_physical_cb(CALLBACK_ARGS) ;
-void   geometry_physical_add_cb(CALLBACK_ARGS) ;
-void     geometry_physical_add_point_cb (CALLBACK_ARGS) ;
-void     geometry_physical_add_curve_cb (CALLBACK_ARGS) ;
-void     geometry_physical_add_surface_cb (CALLBACK_ARGS) ;
-void     geometry_physical_add_volume_cb (CALLBACK_ARGS) ;
-void geometry_edit_cb(CALLBACK_ARGS) ;
-void geometry_reload_cb(CALLBACK_ARGS) ; 
-
-void con_geometry_define_parameter_cb(CALLBACK_ARGS) ;
-void con_geometry_define_point_cb(CALLBACK_ARGS) ;
-void con_geometry_define_translation_cb(CALLBACK_ARGS) ;
-void con_geometry_define_rotation_cb(CALLBACK_ARGS) ;
-void con_geometry_define_scale_cb(CALLBACK_ARGS) ;
-void con_geometry_define_symmetry_cb(CALLBACK_ARGS) ;
-
-// Dynamic Mesh Menus
-
-void mesh_save_cb(CALLBACK_ARGS) ;
-void mesh_define_cb(CALLBACK_ARGS) ;
-void mesh_1d_cb(CALLBACK_ARGS) ;
-void mesh_2d_cb(CALLBACK_ARGS) ; 
-void mesh_3d_cb(CALLBACK_ARGS) ; 
-void mesh_define_length_cb (CALLBACK_ARGS) ;
-void mesh_define_recombine_cb (CALLBACK_ARGS) ;
-void mesh_define_transfinite_cb (CALLBACK_ARGS) ; 
-void mesh_define_transfinite_line_cb(CALLBACK_ARGS) ;
-void mesh_define_transfinite_surface_cb(CALLBACK_ARGS) ;
-void mesh_define_transfinite_volume_cb(CALLBACK_ARGS) ; 
-
-void con_mesh_define_length_cb(CALLBACK_ARGS) ;
-void con_mesh_define_transfinite_line_cb(CALLBACK_ARGS) ;
-void con_mesh_define_transfinite_volume_cb(CALLBACK_ARGS) ;
-
-// Dynamic Solver Menus
-
-void getdp_cb(CALLBACK_ARGS);
-void getdp_file_open_cb(CALLBACK_ARGS);
-void getdp_file_edit_cb(CALLBACK_ARGS);
-void getdp_choose_mesh_cb(CALLBACK_ARGS);
-void getdp_pre_cb(CALLBACK_ARGS);
-void getdp_cal_cb(CALLBACK_ARGS);
-void getdp_post_cb(CALLBACK_ARGS);
-void getdp_kill_cb(CALLBACK_ARGS);
-void getdp_choose_command_cb(CALLBACK_ARGS);
-void getdp_ok_cb(CALLBACK_ARGS);
-
-// Dynamic post menus
-
-void view_toggle_cb(CALLBACK_ARGS) ;
-void view_reload_cb(CALLBACK_ARGS) ;
-void view_reload_all_cb(CALLBACK_ARGS) ;
-void view_reload_visible_cb(CALLBACK_ARGS) ;
-void view_remove_cb(CALLBACK_ARGS) ;
-void view_remove_all_cb(CALLBACK_ARGS) ;
-void view_remove_visible_cb(CALLBACK_ARGS) ;
-void view_save_ascii_cb(CALLBACK_ARGS) ;
-void view_save_binary_cb(CALLBACK_ARGS) ;
-void view_duplicate_cb(CALLBACK_ARGS) ;
-void view_duplicate_with_options_cb(CALLBACK_ARGS) ;
-void view_applybgmesh_cb(CALLBACK_ARGS) ;
-void view_options_cb(CALLBACK_ARGS) ;
-void view_plugin_cb(CALLBACK_ARGS) ;
-void view_options_plugin_cb(CALLBACK_ARGS) ;
-void view_options_custom_cb(CALLBACK_ARGS) ;
-void view_options_timestep_cb(CALLBACK_ARGS) ;
-void view_options_ok_cb(CALLBACK_ARGS) ;
-
-#endif
-
diff --git a/Fltk/Colorbar_Window.cpp b/Fltk/Colorbar_Window.cpp
deleted file mode 100644
index 0ca53097323844fc5583295e14cf054f21d2a676..0000000000000000000000000000000000000000
--- a/Fltk/Colorbar_Window.cpp
+++ /dev/null
@@ -1,602 +0,0 @@
-// $Id: Colorbar_Window.cpp,v 1.12 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "GUI.h"
-#include "ColorTable.h"
-#include "Colorbar_Window.h"
-#include "Context.h"
-
-extern Context_T  CTX;
-
-#define UNDEFINED   0
-#define EPS         1.e-10
-
-// This file defines the Colorbar_Window class (subclass of Fl_Window)
-
-// The constructor
-
-Colorbar_Window::Colorbar_Window(int x,int y,int w,int h,const char *l)
-  : Fl_Window(x,y,w,h,l){
-
-  ct = NULL;
-  label = NULL;
-  help_flag = 1;  
-  font_height = CTX.fontsize ;
-  marker_height = font_height ;
-  wedge_height = marker_height ;
-  marker_pos = 0 ;
-  minval = maxval = 0.0 ;
-}
-
-
-// rgb on [0, 1], sv returned on [0, 1] and h on [0, 6]. 
-// Exception: h is returned UNDEFINED if S==0.
-
-#define RETURN_HSV(h,s,v) {*H=h; *S=s; *V=v; return;} 
-                                                                             
-static void RGB_to_HSV(double  R, double  G, double  B,
-		       double *H, double *S, double *V) { 
-  double v, x, f;   
-  int i; 
-   
-  x = DMIN(DMIN(R, G), B);   
-  v = DMAX(DMAX(R, G), B);   
-  if(v == x) RETURN_HSV(UNDEFINED, 0, v);   
-  f = (R == x) ? G - B : ((G == x) ? B - R : R - G);   
-  i = (R == x) ? 3 : ((G == x) ? 5 : 1);   
-  RETURN_HSV(i - f /(v - x), (v - x)/v, v);   
-} 
-
-// h given on [0, 6] or UNDEFINED. s and v given on [0, 1].      
-// rgb each returned on [0, 1].
-
-#define RETURN_RGB(r,g,b) {*R=r; *G=g; *B=b; return;} 
-
-static void HSV_to_RGB(double  H, double  S, double  V,
-		       double *R, double *G, double *B) {     
-  double m, n, f;   
-  int i; 
-      
-  if (H == UNDEFINED) RETURN_RGB(V, V, V);
-  i = (int)floor(H);
-  f = H - i;   
-  if ( !(i&1) ) f = 1 - f; // if i is even
-  m = V * (1 - S);   
-  n = V * (1 - S * f); 
-  
-  switch (i) {         
-  case 6:         
-  case 0: RETURN_RGB(V, n, m);        
-  case 1: RETURN_RGB(n, V, m);         
-  case 2: RETURN_RGB(m, V, n);        
-  case 3: RETURN_RGB(m, n, V);                
-  case 4: RETURN_RGB(n, m, V);         
-  case 5: RETURN_RGB(V, m, n);     
-  } 
-} 
-
-
-// Convert window X coordinate to color table index
-
-int Colorbar_Window::x_to_index(int x){
-  int index;
-  index = (int) (x * (float) ct->size / (float)w());
-  if (index<0) 
-    index = 0;
-  else if (index >= ct->size)
-    index = ct->size-1;
-  return index;
-}
-
-// Convert color table index to window X coordinate
-
-int Colorbar_Window::index_to_x(int index){
-  int x;
-  x = (int) (index * (float)w() / (float)(ct->size-1));
-  if (x >= w())
-    x = w() - 1;
-  return x;
-}
-
-// Convert a color intensity to a window Y coordinate
-
-int Colorbar_Window::intensity_to_y(int intensity){
-  int y;
-  y = (int) (wedge_y - intensity * (float)wedge_y/255.);
-  if (y < 0)
-    y = 0;
-  else if (y >= wedge_y)
-    y = wedge_y - 1;
-  return y;
-}
-
-// Convert a window Y coordinate to a color intensity
-
-int Colorbar_Window::y_to_intensity(int y){
-  int intensity;
-  intensity = (int) ((wedge_y - y) * 255. / (float)wedge_y);
-  if (intensity < 0)
-    intensity = 0;
-  else if (intensity > 255)
-    intensity = 255;
-  return intensity;
-}
-
-// Redraw part of the Colorbar_Window (between a and b)
-
-void Colorbar_Window::redraw_range(int a, int b){
-   int i;
-   int x,y, px,py;
-   int x1, y1, x2, y2;
-   int intensity;
-   double H,S,V;
-
-   make_current();
-
-   if(a < 0)  a = 0;
-   if(b >= ct->size)  b = ct->size-1;
-
-   // calculate region to update
-   x1 = index_to_x(a);
-   x2 = index_to_x(b);
-   y1 = intensity_to_y(255);
-   y2 = intensity_to_y(0); 
-
-   // erase region
-   fl_color(color_bg);
-   fl_rectf(x1, y1, x2-x1+1, y2-y1+1);
-
-   // redraw region of entries in interval [a,b]
-   if (a > 0) a--;
-   if (b < ct->size-1) b++;
-
-   // draw red or hue levels
-   for (i=a ; i<=b ; i++) {
-      x = index_to_x(i);
-      if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_RGB)
-        intensity = UNPACK_RED(ct->table[i]);
-      else if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_HSV){
-        RGB_to_HSV(UNPACK_RED  (ct->table[i])/255., 
-                   UNPACK_GREEN(ct->table[i])/255.,
-                   UNPACK_BLUE (ct->table[i])/255.,
-                   &H,&S,&V);
-        intensity = (int)(H/6.*255.+EPS);
-      }
-      y = intensity_to_y(intensity);
-      if (i!=a){
-	fl_color(FL_RED);
-	fl_line(px,py,x,y);
-      }
-      px = x;  py = y;
-   }
-
-   // draw green or saturation levels
-   for (i=a ; i<=b ; i++) {
-      x = index_to_x(i);
-      if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_RGB)
-        intensity = UNPACK_GREEN(ct->table[i]);
-      else if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_HSV){
-        RGB_to_HSV(UNPACK_RED  (ct->table[i])/255., 
-                   UNPACK_GREEN(ct->table[i])/255.,
-                   UNPACK_BLUE (ct->table[i])/255.,
-                   &H,&S,&V);
-        intensity = (int)(S*255.);
-      }
-      y = intensity_to_y(intensity);
-      if (i!=a){
-	fl_color(FL_GREEN);
-	fl_line(px,py,x,y);
-      }
-      px = x;  py = y;
-   }
-
-   // draw blue or value levels
-   for (i=a ; i<=b ; i++) {
-      x = index_to_x(i);
-      if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_RGB)
-        intensity = UNPACK_BLUE(ct->table[i]);
-      else if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_HSV){
-        RGB_to_HSV(UNPACK_RED  (ct->table[i])/255., 
-                   UNPACK_GREEN(ct->table[i])/255.,
-                   UNPACK_BLUE (ct->table[i])/255.,
-                   &H,&S,&V);
-        intensity = (int)(V*255.);
-      }
-      y = intensity_to_y(intensity);
-      if (i!=a){
-	fl_color(FL_BLUE);
-	fl_line(px,py,x,y);
-      }
-      px = x;  py = y;
-   }
-
-   // draw alpha levels
-   for (i=a ; i<=b ; i++) {
-     x = index_to_x(i);
-     y = intensity_to_y(UNPACK_ALPHA(ct->table[i]));
-     if (i!=a){
-       fl_color(contrast(FL_BLACK,color_bg));
-       fl_line(px,py,x,y);
-     }
-     px = x;  py = y;
-   }
-
-   // draw the color bar
-   for (x=x1 ; x<=x2 ; x++) {
-     int r, g, b;
-     unsigned int color;
-     i = x_to_index(x);
-     color = ct->table[i];
-     r = UNPACK_RED(color);
-     g = UNPACK_GREEN(color);
-     b = UNPACK_BLUE(color);
-     fl_color(r,g,b);
-     fl_line(x, wedge_y, x, wedge_y + wedge_height-1); 
-   }
-
-   // print colortable mode and help
-   fl_font(FL_HELVETICA, font_height);
-   fl_color(contrast(FL_BLACK,color_bg));
-   int xx0=10, xx1=12*font_height, yy0=10;
-   if (help_flag){
-     i = 0;
-     fl_draw("1, 2, ..., 6", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "select predefined colormap", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("mouse1", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "draw red or hue channel", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("mouse2 or Shift+mouse1", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "draw green or saturation channel", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("mouse3", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "draw blue or value channel", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("Ctrl+mouse1", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "draw alpha channel", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("c, p, r", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "copy, paste or reset current colormap", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("m", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "toggle RGB/HSV mode", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("left, right", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "move or rotate colormap", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("up, down", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "modify color curvature", xx1,yy0+(i+1)*font_height); i++;
-     //fl_draw("Ctrl+up, Ctrl+down", xx0,yy0+(i+1)*font_height); 
-     //fl_draw(    "modify alpha curvature", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("i, Ctrl+i", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "invert x or y range", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("b, Ctrl+b", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "increase or decrease gamma", xx1,yy0+(i+1)*font_height); i++;
-     fl_draw("h", xx0,yy0+(i+1)*font_height); 
-     fl_draw(    "show this help message", xx1,yy0+(i+1)*font_height); i++;
-   }
-   else
-     if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_RGB)
-       fl_draw("RGB", xx0, yy0+font_height);
-     else if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_HSV)
-       fl_draw("HSV", xx0, yy0+font_height);
-}
-
-
-// Redraw the marker and the text
-
-void Colorbar_Window::redraw_marker(){
-  int x, y0, y1;
-  char str[50];
-  float val;
-
-  make_current();
-
-  y0 = marker_y;
-  y1 = h() - 1;
-  
-  fl_color(color_bg);
-  fl_rectf(0, y0, w(), y1-y0+1);
-  
-  // draw marker below color wedge
-  x = index_to_x(marker_pos);
-  fl_color(contrast(FL_BLACK,color_bg));   
-  fl_line(x, marker_y, x, marker_y+marker_height);
-  fl_line(x, marker_y, x-3, marker_y+6);
-  fl_line(x, marker_y, x+3, marker_y+6);
-  
-  // draw marker value
-  fl_font(FL_HELVETICA, font_height);
-  val = minval + (maxval-minval) * ((float)marker_pos/(float)(ct->size-1));
-  sprintf(str, "%g", val);
-  fl_draw(str, 10, label_y);
-}
-
-// Draw everything
-
-void Colorbar_Window::draw(){
-  if(ct){
-    label_y = h() - 5; 
-    marker_y = label_y - marker_height - font_height;
-    wedge_y = marker_y - wedge_height;
-    color_bg = fl_color_cube(UNPACK_RED(CTX.color.bg)*FL_NUM_RED/256,
-			     UNPACK_GREEN(CTX.color.bg)*FL_NUM_GREEN/256,
-			     UNPACK_BLUE(CTX.color.bg)*FL_NUM_BLUE/256);
-    redraw_range(0, ct->size-1);
-    redraw_marker();
-  }
-}
-
-// Update
-
-void Colorbar_Window::update(char *name, float min, float max, 
-			     ColorTable *table, int *changed){
-  label = name;
-  ct = table;
-  viewchanged = changed;
-  minval = min;
-  maxval = max;
-  redraw();
-}
-
-// Handle
-
-int Colorbar_Window::handle(int event){
-  static int      p1=0, p2=0, p3=0, p4=0;
-  static int      pentry, move_marker;
-  int             i, ibut, xpos, ypos, modify, entry, compute;
-
-  modify = 0;
-  compute = 0;
-
-  switch(event){
-
-  case FL_SHORTCUT :
-
-    if(Fl::test_shortcut('0')){
-      ColorTable_InitParam(0, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('1')){
-      ColorTable_InitParam(1, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('2')){
-      ColorTable_InitParam(2, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('3')){
-      ColorTable_InitParam(3, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('4')){
-      ColorTable_InitParam(4, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('5')){
-      ColorTable_InitParam(5, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('6')){
-      ColorTable_InitParam(6, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('7')){
-      ColorTable_InitParam(7, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('8')){
-      ColorTable_InitParam(8, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('9')){
-      ColorTable_InitParam(9, ct, 1, 1); compute=1;
-    }
-    else if(Fl::test_shortcut('c')){
-      ColorTable_Copy(ct);
-    }
-    else if(Fl::test_shortcut('p')){
-      ColorTable_Paste(ct); 
-      draw();
-    }
-    else if(Fl::test_shortcut('h')){
-      help_flag = !help_flag;
-      draw();
-    }
-    else if(Fl::test_shortcut('r')){
-      ColorTable_InitParam(ct->ipar[COLORTABLE_NUMBER], 
-                           ct, 1, 1); 
-      compute=1;
-    }
-    else if(Fl::test_shortcut('m')){
-      if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_RGB)
-        ct->ipar[COLORTABLE_MODE] = COLORTABLE_HSV;
-      else
-        ct->ipar[COLORTABLE_MODE] = COLORTABLE_RGB;
-      draw(); 
-    }
-    else if(Fl::test_shortcut('i')){
-      ct->ipar[COLORTABLE_SWAP] = !ct->ipar[COLORTABLE_SWAP];   
-      compute=1;
-    }
-    else if(Fl::test_shortcut(FL_CTRL + 'i')){
-      ct->ipar[COLORTABLE_INVERT] = !ct->ipar[COLORTABLE_INVERT]; 
-      compute=1;
-    }
-    else if(Fl::test_shortcut('b')){
-      ct->fpar[COLORTABLE_BETA] += 0.05;
-      if(ct->fpar[COLORTABLE_BETA]>1.0) 
-	ct->fpar[COLORTABLE_BETA] = 1.0;
-      compute = 1;
-    }
-    else if(Fl::test_shortcut(FL_CTRL + 'b')){
-      ct->fpar[COLORTABLE_BETA] -= 0.05;
-      if(ct->fpar[COLORTABLE_BETA]<-1.0) 
-	ct->fpar[COLORTABLE_BETA] = -1.0;
-      compute = 1;
-    }
-    else if(Fl::test_shortcut(FL_Left)){
-      ct->fpar[COLORTABLE_BIAS] -= 0.05; 
-      compute = 1; 
-    }
-    else if(Fl::test_shortcut(FL_CTRL + FL_Left)){
-      ct->ipar[COLORTABLE_ROTATE] += 5;
-      if(ct->ipar[COLORTABLE_ROTATE] > ct->size-1) 
-	ct->ipar[COLORTABLE_ROTATE] -= ct->size-1;
-      compute = 1; 
-    }
-    else if(Fl::test_shortcut(FL_Right)){
-      ct->fpar[COLORTABLE_BIAS] += 0.05; 
-      compute = 1;
-    }
-    else if(Fl::test_shortcut(FL_CTRL + FL_Right)){
-      ct->ipar[COLORTABLE_ROTATE] -= 5;
-      if(ct->ipar[COLORTABLE_ROTATE] < -(ct->size-1)) 
-	ct->ipar[COLORTABLE_ROTATE] += ct->size-1;
-      compute = 1;
-    }
-    else if(Fl::test_shortcut(FL_Up)){
-      ct->fpar[COLORTABLE_CURVE] -= 0.05;
-      compute = 1; 
-    }
-    else if(Fl::test_shortcut(FL_CTRL + FL_Up)){
-      ct->fpar[COLORTABLE_ALPHAPOW] -= 0.05;
-      if (ct->fpar[COLORTABLE_ALPHAPOW] < 0.0)
-	ct->fpar[COLORTABLE_ALPHAPOW] = 0.0;
-      compute = 1; 
-    }
-    else if(Fl::test_shortcut(FL_Down)){
-      ct->fpar[COLORTABLE_CURVE] += 0.05;
-      compute = 1; 
-    }
-    else if(Fl::test_shortcut(FL_CTRL + FL_Down)){
-      ct->fpar[COLORTABLE_ALPHAPOW] += 0.05;
-      compute = 1; 
-    }
-    else{
-      return Fl_Window::handle(event); 
-    }
-
-    if(compute){
-      ColorTable_Recompute(ct, 1, 1);
-      draw();
-      *viewchanged = 1;
-      set_changed();
-    }
-    // discard the event for other uses
-    return 1;
-
-  case FL_PUSH :
-    ibut = Fl::event_button();
-    xpos = Fl::event_x();
-    ypos = Fl::event_y();
-    if(help_flag){
-      help_flag = 0;
-      draw();
-    }
-    // change color function or marker position
-    if (ypos < wedge_y)
-      move_marker = 0;
-    else
-      move_marker = 1;
-
-    // determine which curve to modify
-    if (Fl::event_state(FL_CTRL))
-      p4 = 1;
-    else if(ibut == 1 && !Fl::event_state(FL_SHIFT))
-      p1 = 1 ;
-    else if(ibut == 2 ||
-	    ibut == 1 && Fl::event_state(FL_SHIFT))
-      p2 = 1 ;
-    else
-      p3 = 1 ;
-    pentry = x_to_index(xpos);
-    modify = 1;
-    break;
-
-  case FL_RELEASE :
-    ibut = Fl::event_button();
-    xpos = Fl::event_x();
-    ypos = Fl::event_y();
-    p1 = 0 ;
-    p2 = 0 ;
-    p3 = 0 ;
-    p4 = 0;
-    break;
-
-  case FL_DRAG :
-    ibut = Fl::event_button();
-    xpos = Fl::event_x();
-    ypos = Fl::event_y();
-    modify = 1;
-    break;
-
-  default:
-    // don't know what to do with the event: passing it to parent
-    return Fl_Window::handle(event);
-    
-  }
-
-  // Modify one or more of the color curves
-  
-  if (modify && (p1 || p2 || p3 || p4)) {
-    // calculate which entry in color table to change
-    entry = x_to_index(xpos);
-    // update
-    if (move_marker) {
-      // changing marker position
-      marker_pos = entry;
-      redraw_marker();
-    }
-    else {
-      // changing color graph
-      int a, b, value;
-
-      *viewchanged = 1;
-      set_changed();
-
-      value = y_to_intensity(ypos);
-      
-      if (pentry<=entry) {
-	a = pentry;
-	b = entry;
-      }
-      else {
-	a = entry;
-	b = pentry;
-      }
-      
-      // update entries from 'pentry' to 'entry'
-      for (i=a; i<=b; i++) {
-	int red, green, blue, alpha;
-	double R,G,B,H,S,V;
-	
-	red   = UNPACK_RED  (ct->table[i]);
-	green = UNPACK_GREEN(ct->table[i]);
-	blue  = UNPACK_BLUE (ct->table[i]);
-	alpha = UNPACK_ALPHA(ct->table[i]);
-	
-	if(ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB){
-	  if (p1) { red = value; }
-	  if (p2) { green = value; }
-	  if (p3) { blue = value; }
-	  if (p4) { alpha = value; }
-	}         
-	else if(ct->ipar[COLORTABLE_MODE]==COLORTABLE_HSV){
-	  RGB_to_HSV((double)red/255.,(double)green/255.,(double)blue/255.,
-		     &H,&S,&V);
-	  if (p1) { H = 6.*(double)value/255.+EPS ; }
-	  if (p2) { S = (double)value/255.; }
-	  if (p3) { V = (double)value/255.; }
-	  if (p4) { alpha = value; }         
-	  HSV_to_RGB(H, S, V, &R,&G,&B);
-	  red   = (int)(255 * R);
-	  green = (int)(255 * G);
-	  blue  = (int)(255 * B);
-	}
-	
-	ct->table[i] = PACK_COLOR(red,green,blue,alpha);
-      } 
-       
-      // redraw the color curves
-      if (pentry<entry)
-	redraw_range(pentry-1, entry+1);
-      else
-	redraw_range(entry-1, pentry+1);
-      
-      pentry = entry;
-      
-    }
-    return 1;
-  }
-  
-  return 1;
-
-}
-
-
diff --git a/Fltk/Colorbar_Window.h b/Fltk/Colorbar_Window.h
deleted file mode 100644
index ce037d5d5a55256cffce3f09f47fdf36413f2874..0000000000000000000000000000000000000000
--- a/Fltk/Colorbar_Window.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef _COLORBAR_WINDOW_H
-#define _COLORBAR_WINDOW_H
-
-#include "ColorTable.h"
-
-class Colorbar_Window : public Fl_Window {
-  void draw();
-  int  handle(int);
-
-  // new
-  int  x_to_index(int x);
-  int  index_to_x(int index);
-  int  y_to_intensity(int y);
-  int  intensity_to_y(int intensity);
-  void redraw_range(int a, int b);
-  void redraw_marker();
-
-  int font_height, marker_height, wedge_height;
-  char *label;
-
-  float minval, maxval;  // min and max data values
-  int wedge_y;     // top coord of color wedge
-  int marker_y;    // top coord of marker arrow
-  int label_y;     // y coord of text labels
-  int help_flag;   // if nonzero, print help message
-  int marker_pos;  // position of marker as index into table
-  
-  ColorTable *ct;  // pointer to the color table (allocated in Post_View)
-  int *viewchanged;// pointer to changed bit in view
-  Fl_Color color_bg;
-
-public:
-
-  Colorbar_Window(int x,int y,int w,int h,const char *l=0);
-  void update(char *name, float min, float max, ColorTable *ct, int *changed);
-
-};
-
-#endif
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
deleted file mode 100644
index 9f13c26af91a59847e60dc936cdc0b638f24b546..0000000000000000000000000000000000000000
--- a/Fltk/GUI.cpp
+++ /dev/null
@@ -1,2707 +0,0 @@
-// $Id: GUI.cpp,v 1.107 2001-08-12 14:23:36 geuzaine Exp $
-
-// To make the interface as visually consistent as possible, please:
-// - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
-// - use CTX.fontsize for font sizes
-// - examine what's already done before adding something new...
-
-#include "PluginManager.h"
-#include "Plugin.h"
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "GmshVersion.h"
-#include "Context.h"
-#include "Options.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "GUI.h"
-#include "Callbacks.h"
-#include "Bitmaps.h"
-#include "Icon.h"
-#include "OpenFile.h"
-#include "GetOptions.h"
-
-#define WINDOW_BOX FL_FLAT_BOX
-
-#define IW  (10*CTX.fontsize) // input field width
-#define BW  (3*IW/2) // width of a button with external label
-#define BB  (5*CTX.fontsize-2) // width of a button with internal label
-#define BH  (2*CTX.fontsize+1) // button height
-#define WB  (5) // window border
-
-extern Context_T  CTX;
-
-//******************* Definition of the static menus ***********************************
-
-Fl_Menu_Item m_menubar_table[] = {
-  {"File", 0, 0, 0, FL_SUBMENU},
-    {"Open...",          FL_CTRL+'o', (Fl_Callback *)file_open_cb, 0},
-    {"Merge...",         FL_CTRL+'m', (Fl_Callback *)file_merge_cb, 0},
-    {"Save as",          0, 0, 0, FL_MENU_DIVIDER|FL_SUBMENU},
-      {"By extension...",        FL_CTRL+'p', (Fl_Callback *)file_save_as_auto_cb, 0, FL_MENU_DIVIDER},
-      {"MSH native mesh format...",       0, (Fl_Callback *)file_save_as_msh_cb, 0},
-      {"UNV universal mesh format...",    0, (Fl_Callback *)file_save_as_unv_cb, 0},
-      {"GREF gref mesh format...",        0, (Fl_Callback *)file_save_as_gref_cb, 0},
-      {"GEO flattened geometry...",       0, (Fl_Callback *)file_save_as_geo_cb, 0},
-      {"GEO complete options...",         0, (Fl_Callback *)file_save_as_geo_options_cb, 0},
-      {"EPS simple sort postscript...",   0, (Fl_Callback *)file_save_as_eps_simple_cb, 0},
-      {"EPS accurate sort postscript...", 0, (Fl_Callback *)file_save_as_eps_accurate_cb, 0},
-      {"JPEG...",                0, (Fl_Callback *)file_save_as_jpeg_cb, 0},
-      {"GIF...",                 0, (Fl_Callback *)file_save_as_gif_cb, 0},
-      {"GIF dithered...",        0, (Fl_Callback *)file_save_as_gif_dithered_cb, 0},
-      {"GIF transparent...",     0, (Fl_Callback *)file_save_as_gif_transparent_cb, 0},
-      {"PPM...",                 0, (Fl_Callback *)file_save_as_ppm_cb, 0},
-      {"UCB YUV...",             0, (Fl_Callback *)file_save_as_yuv_cb, 0},
-      {0},
-    {"Messages...",      FL_SHIFT+'l', (Fl_Callback *)opt_message_cb, 0},
-    {"Statistics...",    FL_SHIFT+'i', (Fl_Callback *)opt_statistics_cb, 0, FL_MENU_DIVIDER},
-    {"Quit",             FL_CTRL+'q', (Fl_Callback *)file_quit_cb, 0},
-    {0},
-  {"Options",0,0,0,FL_SUBMENU},
-    {"General...",         FL_SHIFT+'o', (Fl_Callback *)opt_general_cb, 0, FL_MENU_DIVIDER},
-    {"Geometry...",        FL_SHIFT+'g', (Fl_Callback *)opt_geometry_cb, 0},
-    {"Mesh...",            FL_SHIFT+'m', (Fl_Callback *)opt_mesh_cb, 0},
-    {"Solver...",          FL_SHIFT+'s', (Fl_Callback *)opt_solver_cb, 0},
-    {"Post-processing...", FL_SHIFT+'p', (Fl_Callback *)opt_post_cb, 0, FL_MENU_DIVIDER},
-    {"Save options now",   0,            (Fl_Callback *)opt_save_cb, 0},
-    {0},
-  {"Help",0,0,0,FL_SUBMENU},
-    {"Current options...",       0, (Fl_Callback *)status_xyz1p_cb, (void*)4},
-    {"Shortcuts...",             0, (Fl_Callback *)help_short_cb, 0},
-    {"Command line options...",  0, (Fl_Callback *)help_command_line_cb, 0, FL_MENU_DIVIDER},
-    {"About...",                 0, (Fl_Callback *)help_about_cb, 0},
-    {0},
-  {0}
-};
-
-Fl_Menu_Item m_module_table[] = {
-  {"Geometry",        'g', (Fl_Callback *)mod_geometry_cb, 0},
-  {"Mesh",            'm', (Fl_Callback *)mod_mesh_cb, 0},
-  {"Solver",          's', (Fl_Callback *)mod_solver_cb, 0},
-  {"Post-processing", 'p', (Fl_Callback *)mod_post_cb, 0},
-  {0}
-};
-
-//********************* Definition of the dynamic contexts *****************************
-
-Context_Item menu_geometry[] = 
-{ { "0Geometry", NULL } ,
-  { "Elementary", (Fl_Callback *)geometry_elementary_cb } ,
-  { "Physical",   (Fl_Callback *)geometry_physical_cb } ,
-  { "Edit",       (Fl_Callback *)geometry_edit_cb } , 
-  { "Reload",     (Fl_Callback *)geometry_reload_cb } , 
-  { NULL }
-};  
-    Context_Item menu_geometry_elementary[] = 
-    { { "0Geometry Elementary", NULL } ,
-      { "Add",       (Fl_Callback *)geometry_elementary_add_cb } ,
-      { "Translate", (Fl_Callback *)geometry_elementary_translate_cb } ,
-      { "Rotate",    (Fl_Callback *)geometry_elementary_rotate_cb } ,
-      { "Scale",     (Fl_Callback *)geometry_elementary_scale_cb } ,
-      { "Symmetry",  (Fl_Callback *)geometry_elementary_symmetry_cb } ,
-      { "Extrude",   (Fl_Callback *)geometry_elementary_extrude_cb } ,
-      { "Delete",    (Fl_Callback *)geometry_elementary_delete_cb } ,
-      { NULL } 
-    };  
-        Context_Item menu_geometry_elementary_add[] = 
-	{ { "0Geometry Elementary Add", NULL } ,
-          { "New",       (Fl_Callback *)geometry_elementary_add_new_cb } ,
-	  { "Translate", (Fl_Callback *)geometry_elementary_add_translate_cb } ,
-	  { "Rotate",    (Fl_Callback *)geometry_elementary_add_rotate_cb } ,
-	  { "Scale",     (Fl_Callback *)geometry_elementary_add_scale_cb } ,
-	  { "Symmetry",  (Fl_Callback *)geometry_elementary_add_symmetry_cb } ,
-	  { NULL } 
-	};  
-            Context_Item menu_geometry_elementary_add_new[] = 
-	    { { "0Geometry Elementary Add New", NULL } ,
-              { "Parameter",     (Fl_Callback *)geometry_elementary_add_new_parameter_cb } ,
-	      { "Point",         (Fl_Callback *)geometry_elementary_add_new_point_cb } ,
-	      { "Line",          (Fl_Callback *)geometry_elementary_add_new_line_cb } ,
-	      { "Spline",        (Fl_Callback *)geometry_elementary_add_new_spline_cb } ,
-	      { "Circle",        (Fl_Callback *)geometry_elementary_add_new_circle_cb } ,
-	      { "Ellipsis",      (Fl_Callback *)geometry_elementary_add_new_ellipsis_cb } ,
-	      { "Plane Surface", (Fl_Callback *)geometry_elementary_add_new_planesurface_cb } ,
-	      { "Ruled Surface", (Fl_Callback *)geometry_elementary_add_new_ruledsurface_cb } ,
-	      { "Volume",        (Fl_Callback *)geometry_elementary_add_new_volume_cb } ,
-	      { NULL } 
-	    };  
-            Context_Item menu_geometry_elementary_add_translate[] = 
-	    { { "0Geometry Elementary Add Translate", NULL } ,
-              { "Point",   (Fl_Callback *)geometry_elementary_add_translate_point_cb } ,
-	      { "Curve",   (Fl_Callback *)geometry_elementary_add_translate_curve_cb } ,
-	      { "Surface", (Fl_Callback *)geometry_elementary_add_translate_surface_cb } ,
-	      { NULL } 
-	    };  
-            Context_Item menu_geometry_elementary_add_rotate[] = 
-	    { { "0Geometry Elementary Add Rotate", NULL } ,
-              { "Point",   (Fl_Callback *)geometry_elementary_add_rotate_point_cb } ,
-	      { "Curve",   (Fl_Callback *)geometry_elementary_add_rotate_curve_cb } ,
-	      { "Surface", (Fl_Callback *)geometry_elementary_add_rotate_surface_cb } ,
-	      { NULL } 
-	    };  
-            Context_Item menu_geometry_elementary_add_scale[] = 
-	    { { "0Geometry Elementary Add Scale", NULL } ,
-	      { "Point",   (Fl_Callback *)geometry_elementary_add_scale_point_cb } ,
-	      { "Curve",   (Fl_Callback *)geometry_elementary_add_scale_curve_cb } ,
-	      { "Surface", (Fl_Callback *)geometry_elementary_add_scale_surface_cb } ,
-	      { NULL } 
-	    };  
-            Context_Item menu_geometry_elementary_add_symmetry[] = 
-	    { { "0Geometry Elementary Add Symmetry", NULL } ,
-	      { "Point",   (Fl_Callback *)geometry_elementary_add_symmetry_point_cb } ,
-	      { "Curve",   (Fl_Callback *)geometry_elementary_add_symmetry_curve_cb } ,
-	      { "Surface", (Fl_Callback *)geometry_elementary_add_symmetry_surface_cb } ,
-	      { NULL } 
-	    };  
-        Context_Item menu_geometry_elementary_translate[] = 
-	{ { "0Geometry Elementary Translate", NULL } ,
-	  { "Point",   (Fl_Callback *)geometry_elementary_translate_point_cb } ,
-	  { "Curve",   (Fl_Callback *)geometry_elementary_translate_curve_cb } ,
-	  { "Surface", (Fl_Callback *)geometry_elementary_translate_surface_cb } ,
-	  { NULL } 
-	};  
-        Context_Item menu_geometry_elementary_rotate[] = 
-	{ { "0Geometry Elementary Rotate", NULL } ,
-	  { "Point",   (Fl_Callback *)geometry_elementary_rotate_point_cb } ,
-	  { "Curve",   (Fl_Callback *)geometry_elementary_rotate_curve_cb } ,
-	  { "Surface", (Fl_Callback *)geometry_elementary_rotate_surface_cb } ,
-	  { NULL } 
-	};  
-        Context_Item menu_geometry_elementary_scale[] = 
-	{ { "0Geometry Elementary Scale", NULL } ,
-	  { "Point",   (Fl_Callback *)geometry_elementary_scale_point_cb } ,
-	  { "Curve",   (Fl_Callback *)geometry_elementary_scale_curve_cb } ,
-	  { "Surface", (Fl_Callback *)geometry_elementary_scale_surface_cb } ,
-	  { NULL } 
-	};  
-        Context_Item menu_geometry_elementary_symmetry[] = 
-	{ { "0Geometry Elementary Symmetry", NULL } ,
-	  { "Point",   (Fl_Callback *)geometry_elementary_symmetry_point_cb } ,
-	  { "Curve",   (Fl_Callback *)geometry_elementary_symmetry_curve_cb } ,
-	  { "Surface", (Fl_Callback *)geometry_elementary_symmetry_surface_cb } ,
-	  { NULL } 
-	};  
-        Context_Item menu_geometry_elementary_extrude[] = 
-	{ { "0Geometry Elementary Extrude", NULL } ,
-	  { "Translate",   (Fl_Callback *)geometry_elementary_extrude_translate_cb } ,
-	  { "Rotate",   (Fl_Callback *)geometry_elementary_extrude_rotate_cb } ,
-	  { NULL } 
- 	};  
-            Context_Item menu_geometry_elementary_extrude_translate[] = 
-	    { { "0Geometry Elementary Extrude Translate", NULL } ,
-	      { "Point",   (Fl_Callback *)geometry_elementary_extrude_translate_point_cb } ,
-	      { "Curve",   (Fl_Callback *)geometry_elementary_extrude_translate_curve_cb } ,
-	      { "Surface", (Fl_Callback *)geometry_elementary_extrude_translate_surface_cb } ,
-	      { NULL } 
-	    };  
-            Context_Item menu_geometry_elementary_extrude_rotate[] = 
-	    { { "0Geometry Elementary Extrude Rotate", NULL } ,
-	      { "Point",   (Fl_Callback *)geometry_elementary_extrude_rotate_point_cb } ,
-	      { "Curve",   (Fl_Callback *)geometry_elementary_extrude_rotate_curve_cb } ,
-	      { "Surface", (Fl_Callback *)geometry_elementary_extrude_rotate_surface_cb } ,
-	      { NULL } 
-	    };  
-        Context_Item menu_geometry_elementary_delete[] = 
-	{ { "0Geometry Elementary Delete", NULL } ,
-	  { "Point",   (Fl_Callback *)geometry_elementary_delete_point_cb } ,
-	  { "Curve",   (Fl_Callback *)geometry_elementary_delete_curve_cb } ,
-	  { "Surface", (Fl_Callback *)geometry_elementary_delete_surface_cb } ,
-	  { NULL } 
-	};  
-    Context_Item menu_geometry_physical[] = 
-    { { "0Geometry Physical", NULL } ,
-      { "Add",    (Fl_Callback *)geometry_physical_add_cb } ,
-      { NULL } 
-    };  
-        Context_Item menu_geometry_physical_add[] = 
-	{ { "0Geometry Physical Add", NULL } ,
-	  { "Point",   (Fl_Callback *)geometry_physical_add_point_cb  } ,
-	  { "Curve",   (Fl_Callback *)geometry_physical_add_curve_cb  } ,
-	  { "Surface", (Fl_Callback *)geometry_physical_add_surface_cb  } ,
-	  { "Volume",  (Fl_Callback *)geometry_physical_add_volume_cb  } ,
-	  { NULL } 
-	};  
-
-Context_Item menu_mesh[] = 
-{ { "1Mesh", NULL } ,
-  { "Define", (Fl_Callback *)mesh_define_cb } ,
-  { "1D",     (Fl_Callback *)mesh_1d_cb } ,
-  { "2D",     (Fl_Callback *)mesh_2d_cb } , 
-  { "3D",     (Fl_Callback *)mesh_3d_cb } , 
-  { "Save",   (Fl_Callback *)mesh_save_cb } ,
-  { NULL } 
-};  
-    Context_Item menu_mesh_define[] = 
-    { { "1Mesh Define", NULL } ,
-      { "Length",      (Fl_Callback *)mesh_define_length_cb  } ,
-      { "Recombine",   (Fl_Callback *)mesh_define_recombine_cb  } ,
-      { "Transfinite", (Fl_Callback *)mesh_define_transfinite_cb  } , 
-      { NULL } 
-    };  
-        Context_Item menu_mesh_define_transfinite[] = 
-	{ { "1Mesh Define Transfinite", NULL } ,
-	  { "Line",    (Fl_Callback *)mesh_define_transfinite_line_cb } ,
-	  { "Surface", (Fl_Callback *)mesh_define_transfinite_surface_cb } ,
-	  { "Volume",  (Fl_Callback *)mesh_define_transfinite_volume_cb } , 
-	  { NULL } 
-	};  
-
-Context_Item menu_solver[] = 
-{ { "2Solver", NULL } ,
-  { "GetDP", (Fl_Callback *)getdp_cb } ,
-  { NULL } };
-
-Context_Item menu_post[] = 
-{ { "3Post-processing", NULL } ,
-  { NULL } };
-
-//********************** Definition of global shortcuts ********************************
-
-int GUI::global_shortcuts(int event){
-  int i, j;
-
-  // we only handle shortcuts here
-  if(event != FL_SHORTCUT) return 0 ;
-
-
-  if(Fl::test_shortcut(FL_SHIFT+FL_Escape) ||
-     Fl::test_shortcut(FL_CTRL+FL_Escape) ||
-     Fl::test_shortcut(FL_ALT+FL_Escape)){
-    return 1;
-  }
-  if(Fl::test_shortcut('0') || Fl::test_shortcut(FL_Escape)){
-    geometry_reload_cb(0,0);
-    mod_geometry_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('1') || Fl::test_shortcut(FL_F+1)){
-    mesh_1d_cb(0,0);
-    mod_mesh_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('2') || Fl::test_shortcut(FL_F+2)){
-    mesh_2d_cb(0,0);
-    mod_mesh_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('3') || Fl::test_shortcut(FL_F+3)){
-    mesh_3d_cb(0,0);
-    mod_mesh_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('g')){
-    mod_geometry_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('m')){
-    mod_mesh_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('s')){
-    mod_solver_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('p')){
-    mod_post_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('b')){
-    mod_back_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('f')){
-    mod_forward_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut('e')){
-    end_selection = 1;
-    return 1;
-  }
-  else if(Fl::test_shortcut('q')){
-    quit_selection = 1;
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_CTRL+'s')){
-    mesh_save_cb(0,0);
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_CTRL+FL_SHIFT+'d')){
-    opt_post_anim_delay(0,GMSH_SET|GMSH_GUI,opt_post_anim_delay(0,GMSH_GET,0) + 0.01);
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_SHIFT+'d')){
-    opt_post_anim_delay(0,GMSH_SET|GMSH_GUI,opt_post_anim_delay(0,GMSH_GET,0) - 0.01);
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_CTRL+'z')){
-    g_window->iconize() ;
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'f')){
-    opt_general_fast_redraw(0,GMSH_SET|GMSH_GUI,!opt_general_fast_redraw(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'b')){
-    opt_post_scales(0,GMSH_SET|GMSH_GUI,!opt_post_scales(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'o')){
-    opt_general_orthographic(0,GMSH_SET|GMSH_GUI,!opt_general_orthographic(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'c')){
-    opt_general_color_scheme(0,GMSH_SET|GMSH_GUI,opt_general_color_scheme(0,GMSH_GET,0)+1);
-    opt_geometry_color_scheme(0,GMSH_SET|GMSH_GUI,opt_geometry_color_scheme(0,GMSH_GET,0)+1);
-    opt_mesh_color_scheme(0,GMSH_SET|GMSH_GUI,opt_mesh_color_scheme(0,GMSH_GET,0)+1);
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'d')){
-    opt_mesh_aspect(0,GMSH_SET|GMSH_GUI,opt_mesh_aspect(0,GMSH_GET,0)+1);
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'x')){
-    status_xyz1p_cb(0,(void*)0);
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'y')){
-    status_xyz1p_cb(0,(void*)1);
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'z')){
-    status_xyz1p_cb(0,(void*)2);
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'a')){
-    opt_general_axes(0,GMSH_SET|GMSH_GUI,!opt_general_axes(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'a')){
-    opt_general_small_axes(0,GMSH_SET|GMSH_GUI,!opt_general_small_axes(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'p')){
-    opt_geometry_points(0,GMSH_SET|GMSH_GUI,!opt_geometry_points(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'l')){
-    opt_geometry_lines(0,GMSH_SET|GMSH_GUI,!opt_geometry_lines(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'s')){
-    opt_geometry_surfaces(0,GMSH_SET|GMSH_GUI,!opt_geometry_surfaces(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'v')){
-    opt_geometry_volumes(0,GMSH_SET|GMSH_GUI,!opt_geometry_volumes(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'p')){
-    opt_mesh_points(0,GMSH_SET|GMSH_GUI,!opt_mesh_points(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'l')){
-    opt_mesh_lines(0,GMSH_SET|GMSH_GUI,!opt_mesh_lines(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'s')){
-    opt_mesh_surfaces(0,GMSH_SET|GMSH_GUI,!opt_mesh_surfaces(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'v')){
-    opt_mesh_volumes(0,GMSH_SET|GMSH_GUI,!opt_mesh_volumes(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'m')){
-    opt_mesh_points(0,GMSH_SET|GMSH_GUI,!opt_mesh_points(0,GMSH_GET,0));
-    opt_mesh_lines(0,GMSH_SET|GMSH_GUI,!opt_mesh_lines(0,GMSH_GET,0));
-    opt_mesh_surfaces(0,GMSH_SET|GMSH_GUI,!opt_mesh_surfaces(0,GMSH_GET,0));
-    opt_mesh_volumes(0,GMSH_SET|GMSH_GUI,!opt_mesh_volumes(0,GMSH_GET,0));
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'t')){
-    for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){
-      if(opt_view_visible(i,GMSH_GET,0)){
-	j = (int)opt_view_intervals_type(i, GMSH_GET, 0);
-	opt_view_intervals_type(i, GMSH_SET|GMSH_GUI, 
-				(j == DRAW_POST_ISO) ? DRAW_POST_DISCRETE :
-				(j == DRAW_POST_DISCRETE) ? DRAW_POST_CONTINUOUS :
-				DRAW_POST_ISO);
-      }
-    }
-    redraw_opengl();
-    return 1;
-  }
-  else if(Fl::test_shortcut(FL_ALT+'h')){
-    static int show = 0;
-    for(i=0 ; i<List_Nbr(Post_ViewList) ; i++)
-      opt_view_visible(i, GMSH_SET|GMSH_GUI, show);
-    redraw_opengl();
-    show = !show;
-    return 1;
-  }
-  
-
-  return 0;
-}
-
-
-//***************************** The GUI constructor ************************************
-
-GUI::GUI(int argc, char **argv) {
-  
-  init_menu_window = 0;
-  init_graphic_window = 0;
-  init_general_options_window = 0;
-  init_geometry_options_window = 0;
-  init_mesh_options_window = 0;
-  init_solver_options_window = 0;
-  init_post_options_window = 0;
-  init_statistics_window = 0;
-  init_message_window = 0;
-  init_about_window = 0;
-  init_view_window = 0;
-  init_geometry_context_window = 0;
-  init_mesh_context_window = 0;
-  init_getdp_window = 0;
-
-  if(strlen(CTX.display)) Fl::display(CTX.display);
-
-  Fl::add_handler(SetGlobalShortcut);
-
-  // All static windows are contructed (even if some are not
-  // displayed) since the shortcuts should be valid even for hidden
-  // windows, and we don't want to test for widget existence every time
-
-  create_menu_window(argc, argv);
-  create_graphic_window(argc, argv);
-
-#ifdef WIN32
-  m_window->icon((char *)LoadImage(fl_display, MAKEINTRESOURCE(IDI_ICON),
-  				   IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR));
-#else
-  fl_open_display();
-  Pixmap p1 = XCreateBitmapFromData(fl_display, DefaultRootWindow(fl_display),
-				    g1_bits, g1_width, g1_height);
-  Pixmap p2 = XCreateBitmapFromData(fl_display, DefaultRootWindow(fl_display),
-				    g2_bits, g2_width, g2_height);
-  m_window->icon((char *)p1); 
-  g_window->icon((char *)p2);
-#endif
-
-  m_window->show(1, argv);
-  g_window->show(1, argv);
-
-  create_general_options_window();
-  create_geometry_options_window();
-  create_mesh_options_window();
-  create_solver_options_window();
-  create_post_options_window();
-  create_view_options_window(-1);
-  create_message_window();
-  create_about_window();
-  create_getdp_window();
-
-  // Draw the scene
-  g_opengl_window->redraw();
-
-}
-
-// Run the GUI until no window is left
-
-void GUI::run(){
-  Fl::run();
-}
-
-// Check (now) if any pending events and run them
-
-void GUI::check(){
-  Fl::check();
-}
-
-// Wait for any events and run them
-
-void GUI::wait(){
-  Fl::wait();
-}
-
-//********************************* Create the menu window *****************************
-
-
-void GUI::add_post_plugins (Fl_Menu_Button *button , int iView){
-  char name[256],menuname[256];
-  for(GMSH_PluginManager::iter it = GMSH_PluginManager::Instance()->begin();
-      it != GMSH_PluginManager::Instance()->end();
-      ++it){
-    GMSH_Plugin *p = (*it).second;
-    if(p->getType() == GMSH_Plugin::GMSH_POST_PLUGIN){
-      p->getName(name);
-      std::pair<int,GMSH_Plugin*> *pair = new std::pair<int,GMSH_Plugin*>(iView,p);
-      sprintf(menuname,"Plugins/%s...",name);
-      button->add(menuname, 0,(Fl_Callback *)view_options_plugin_cb, (void*)(pair), 0);
-      p->dialogBox = 0;
-    }
-  }
-}
-
-void GUI::create_menu_window(int argc, char **argv){
-  int i, y;
-  
-  if(!init_menu_window){
-    init_menu_window = 1 ;
-    
-    int width = 13*CTX.fontsize-CTX.fontsize/2-2 ;
-    MH = BH + BH+6 ; // this is the initial height: no dynamic button is shown!
-    
-    m_window = new Fl_Window(width,MH);
-    m_window->box(WINDOW_BOX);
-    m_window->label("Gmsh");
-    m_window->callback(file_quit_cb);
-    
-    m_menu_bar = new Fl_Menu_Bar(0,0,width,BH); 
-    m_menu_bar->menu(m_menubar_table);
-    m_menu_bar->textsize(CTX.fontsize);
-    m_menu_bar->box(FL_UP_BOX);
-    m_menu_bar->global();
-    
-    Fl_Box *o = new Fl_Box(0,BH,width,BH+6);
-    o->box(FL_UP_BOX);
-    
-    y = BH + 3;
-    
-    m_navig_butt[0] = new Fl_Button(1,y,18,BH/2,"@<");
-    m_navig_butt[0]->labeltype(FL_SYMBOL_LABEL);
-    m_navig_butt[0]->box(FL_FLAT_BOX);
-    m_navig_butt[0]->selection_color(FL_WHITE);
-    m_navig_butt[0]->callback(mod_back_cb);
-    m_navig_butt[1] = new Fl_Button(1,y+BH/2,18,BH/2,"@>");
-    m_navig_butt[1]->labeltype(FL_SYMBOL_LABEL);
-    m_navig_butt[1]->box(FL_FLAT_BOX);
-    m_navig_butt[1]->selection_color(FL_WHITE);
-    m_navig_butt[1]->callback(mod_forward_cb);
-    
-    m_module_butt = new Fl_Choice(19,y,width-24,BH);
-    m_module_butt->menu(m_module_table);
-    m_module_butt->textsize(CTX.fontsize);
-    m_module_butt->box(FL_THIN_DOWN_BOX);
-    
-    y = MH ;
-    
-    for(i=0; i<NB_BUTT_MAX; i++){
-      m_push_butt[i] = new Fl_Button(0,y+i*BH,width,BH); 
-      m_push_butt[i]->labelsize(CTX.fontsize);
-      m_push_butt[i]->hide();
-      m_toggle_butt[i] = new Fl_Light_Button(0,y+i*BH,width,BH); 
-      m_toggle_butt[i]->labelsize(CTX.fontsize); 
-      m_toggle_butt[i]->callback(view_toggle_cb, (void*)i);
-      m_toggle_butt[i]->hide();
-      m_popup_butt[i] = new Fl_Menu_Button(0,y+i*BH,width,BH);
-      m_popup_butt[i]->type(Fl_Menu_Button::POPUP3);
-      m_popup_butt[i]->add("Reload/View", 0, 
-			   (Fl_Callback *)view_reload_cb, (void*)i, 0);
-      m_popup_butt[i]->add("Reload/All views", 0, 
-			   (Fl_Callback *)view_reload_all_cb, (void*)i, 0);
-      m_popup_butt[i]->add("Reload/All visible views", 0, 
-			   (Fl_Callback *)view_reload_visible_cb, (void*)i, 0);
-      m_popup_butt[i]->add("Remove/View", 0, 
-			   (Fl_Callback *)view_remove_cb, (void*)i, 0);
-      m_popup_butt[i]->add("Remove/All views", 0, 
-			   (Fl_Callback *)view_remove_all_cb, (void*)i, 0);
-      m_popup_butt[i]->add("Remove/All visible views", 0, 
-			   (Fl_Callback *)view_remove_visible_cb, (void*)i, 0);
-      m_popup_butt[i]->add("Duplicate/View without options", 0,
-			   (Fl_Callback *)view_duplicate_cb, (void*)i, 0) ;
-      m_popup_butt[i]->add("Duplicate/View with options", 0,
-			   (Fl_Callback *)view_duplicate_with_options_cb, (void*)i, 0) ;
-      m_popup_butt[i]->add("Save as/ASCII view...", 0,
-			   (Fl_Callback *)view_save_ascii_cb, (void*)i, 0) ;
-      m_popup_butt[i]->add("Save as/Binary view...", 0,
-			   (Fl_Callback *)view_save_binary_cb, (void*)i, 0) ;
-      add_post_plugins ( m_popup_butt[i] , i);
-      m_popup_butt[i]->add("Apply as background mesh", 0,
-			   (Fl_Callback *)view_applybgmesh_cb, (void*)i, FL_MENU_DIVIDER);
-      m_popup_butt[i]->add("Options...", 0,
-			   (Fl_Callback *)view_options_cb, (void*)i, 0);
-      m_popup_butt[i]->textsize(CTX.fontsize);
-      m_popup_butt[i]->hide();
-    }
-    
-    m_window->position(CTX.position[0],CTX.position[1]);
-    m_window->end();
-  }
-  else{
-    if(m_window->shown())
-      m_window->redraw();
-    else
-      m_window->show(1, argv);
-    
-  }
-  
-}
-
-// Dynamically set the height of the menu window
-
-void GUI::set_menu_size(int nb_butt){
-  m_window->size(m_window->w(), MH + nb_butt*BH);
-}
-
-// Dynamically set the context
-
-void GUI::set_context(Context_Item *menu_asked, int flag){
-  static int nb_back = 0, nb_forward = 0, init_context=0;
-  static Context_Item *menu_history[NB_HISTORY_MAX];
-  Context_Item *menu;
-  Post_View *v;
-  int i;
-  
-  if(!init_context){
-    init_context = 1;
-    for(i=0 ; i<NB_HISTORY_MAX ; i++){
-      menu_history[i] = NULL ;
-    }
-  }
-  
-  if(nb_back > NB_HISTORY_MAX-2) nb_back = 1; // we should do a circular list
-  
-  if(flag == -1){
-    if(nb_back > 1){
-      nb_back--;
-      nb_forward++;
-      menu = menu_history[nb_back-1];
-    }
-    else return;
-  }
-  else if(flag == 1){
-    if(nb_forward > 0){
-      nb_back++;
-      nb_forward--;
-      menu = menu_history[nb_back-1];
-    }
-    else return;
-  }
-  else{
-    menu = menu_asked;
-    if(!nb_back || menu_history[nb_back-1] != menu){
-      menu_history[nb_back++] = menu;
-    }
-    nb_forward = 0;
-  }
-  
-  int nb = 0;
-  
-  if(menu[0].label[0] == '0')      m_module_butt->value(0);
-  else if(menu[0].label[0] == '1') m_module_butt->value(1);
-  else if(menu[0].label[0] == '2') m_module_butt->value(2);
-  else if(menu[0].label[0] == '3') m_module_butt->value(3);
-  else {
-    Msg(WARNING, "Something is wrong in your dynamic context definition");
-    return;
-  }
-  
-  Msg(STATUS2, menu[0].label+1);
-  
-  switch(m_module_butt->value()){
-  case 3 : // post-processing contexts
-    for(i = 0 ; i < List_Nbr(Post_ViewList) ; i++) {
-      if(i == NB_BUTT_MAX) break;
-      nb++ ;
-      v = (Post_View*)List_Pointer(Post_ViewList,i);
-      m_push_butt[i]->hide();
-      m_toggle_butt[i]->show();
-      m_toggle_butt[i]->value(v->Visible);
-      m_toggle_butt[i]->label(v->Name);
-      m_popup_butt[i]->show();
-    }
-    for(i = List_Nbr(Post_ViewList) ; i < NB_BUTT_MAX ; i++) {
-      m_push_butt[i]->hide();
-      m_toggle_butt[i]->hide();
-      m_popup_butt[i]->hide();
-    }
-    break;
-  default : // geometry, mesh, solver contexts
-    for(i=0 ; i < NB_BUTT_MAX ; i++){
-      m_toggle_butt[i]->hide();
-      m_popup_butt[i]->hide();
-      if(menu[i+1].label){
-	m_push_butt[i]->label(menu[i+1].label);
-	m_push_butt[i]->callback(menu[i+1].callback);
-	m_push_butt[i]->redraw();
-	m_push_butt[i]->show();
-	nb++;
-      }
-      else
-	break;
-    }
-    for(i=nb ; i<NB_BUTT_MAX ; i++){
-      m_toggle_butt[i]->hide();
-      m_popup_butt[i]->hide();
-      m_push_butt[i]->hide();
-    }
-    break ;
-  }
-  
-  set_menu_size(nb);
-  
-}
-
-int GUI::get_context(){
-  return m_module_butt->value();
-}
-
-
-//******************************** Create the graphic window ***************************
-
-void GUI::create_graphic_window(int argc, char **argv){
-  int i, x;
-  
-  if(!init_graphic_window){
-    init_graphic_window = 1 ;
-    
-    int sh = 2*CTX.fontsize-4; // status bar height
-    int sw = CTX.fontsize+4; //status button width
-    int width = CTX.viewport[2]-CTX.viewport[0];
-    int glheight = CTX.viewport[3]-CTX.viewport[1];
-    int height = glheight + sh;
-    
-    g_window = new Fl_Window(width, height);
-    g_window->callback(file_quit_cb);
-    
-    g_opengl_window = new Opengl_Window(0,0,width,glheight);
-    if(!opt_general_double_buffer(0,GMSH_GET,0)){
-      Msg(INFO, "Setting OpenGL visual to single buffered");
-      g_opengl_window->mode(FL_RGB | FL_DEPTH | FL_SINGLE);
-    }
-    g_opengl_window->end();
-    
-    {
-      Fl_Group *o = new Fl_Group(0,glheight,width,sh);
-      o->box(FL_THIN_UP_BOX);
-      
-      x = 2;
-      
-      g_status_butt[0] = new Fl_Button(x,glheight+2,sw,sh-4,"X"); x+=sw;
-      g_status_butt[0]->callback(status_xyz1p_cb, (void*)0);
-      //g_status_butt[0]->tooltip("Set X view");
-      g_status_butt[1] = new Fl_Button(x,glheight+2,sw,sh-4,"Y"); x+=sw;
-      g_status_butt[1]->callback(status_xyz1p_cb, (void*)1);
-      g_status_butt[2] = new Fl_Button(x,glheight+2,sw,sh-4,"Z"); x+=sw;
-      g_status_butt[2]->callback(status_xyz1p_cb, (void*)2);
-      g_status_butt[3] = new Fl_Button(x,glheight+2,2*CTX.fontsize,sh-4,"1:1"); x+=2*CTX.fontsize;
-      g_status_butt[3]->callback(status_xyz1p_cb, (void*)3);
-      g_status_butt[4] = new Fl_Button(x,glheight+2,sw,sh-4,"?"); x+=sw;
-      g_status_butt[4]->callback(status_xyz1p_cb, (void*)4);
-      g_status_butt[5] = new Fl_Button(x,glheight+2,sw,sh-4); x+=sw;
-      g_status_butt[5]->callback(status_play_cb);
-      start_bmp = new Fl_Bitmap(start_bits,start_width,start_height);
-      start_bmp->label(g_status_butt[5]);
-      stop_bmp = new Fl_Bitmap(stop_bits,stop_width,stop_height);
-      g_status_butt[5]->deactivate();
-      g_status_butt[6] = new Fl_Button(x,glheight+2,sw,sh-4); x+=sw;
-      g_status_butt[6]->callback(status_cancel_cb);
-      abort_bmp = new Fl_Bitmap(abort_bits,abort_width,abort_height);
-      abort_bmp->label(g_status_butt[6]);
-      g_status_butt[6]->deactivate();
-      for(i = 0 ; i<7 ; i++){
-	g_status_butt[i]->box(FL_FLAT_BOX);
-	g_status_butt[i]->selection_color(FL_WHITE);
-	g_status_butt[i]->labelsize(CTX.fontsize);
-	g_status_butt[i]->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE|FL_ALIGN_CLIP);
-      }
-      
-      g_status_label[0] = new Fl_Box(x,glheight+2,(width-x)/3,sh-4);
-      g_status_label[1] = new Fl_Box(x+(width-x)/3,glheight+2,(width-x)/3,sh-4);
-      g_status_label[2] = new Fl_Box(x+2*(width-x)/3,glheight+2,(width-x)/3-2,sh-4);
-      for(i = 0 ; i<3 ; i++){
-	g_status_label[i]->box(FL_FLAT_BOX);
-	g_status_label[i]->labelsize(CTX.fontsize);
-	g_status_label[i]->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP);
-      }
-      
-      o->end();
-    }
-    
-    g_window->resizable(g_opengl_window);
-    g_window->position(CTX.gl_position[0],CTX.gl_position[1]);
-    g_window->end();   
-  }
-  else{
-    if(g_window->shown())
-      g_window->redraw();
-    else
-      g_window->show(1, argv);
-    
-  }
-}
-
-// Set the size of the graphical window
-
-void GUI::set_size(int new_w, int new_h){
-  g_window->size(new_w,new_h+g_window->h()-g_opengl_window->h());
-}
-
-// Set graphic window title
-
-void GUI::set_title(char *str){
-  g_window->label(str);
-}
-
-// Set animation button
-
-void GUI::set_anim(int mode){
-  if(mode){
-    g_status_butt[5]->callback(status_play_cb);
-    start_bmp->label(g_status_butt[5]);
-  }
-  else{
-    g_status_butt[5]->callback(status_pause_cb);
-    stop_bmp->label(g_status_butt[5]);
-  }
-}
-
-// Set the status messages
-
-void GUI::set_status(char *msg, int num){
-  g_status_label[num]->label(msg);
-  g_status_label[num]->redraw();
-}
-
-// set the current drawing context 
-
-void GUI::make_opengl_current(){
-  g_opengl_window->make_current();
-}
-
-void GUI::make_overlay_current(){
-  g_opengl_window->make_overlay_current();
-}
-
-// Draw the opengl window
-
-void GUI::redraw_opengl(){
-  g_opengl_window->redraw();
-}
-
-// Draw the opengl overlay window
-
-void GUI::redraw_overlay(){
-  g_opengl_window->redraw_overlay();
-}
-
-//************************ Create the window for general options ***********************
-
-void GUI::create_general_options_window(){
-  int i;
-  
-  if(!init_general_options_window){
-    init_general_options_window = 1 ;
-    
-    int width = 25*CTX.fontsize;
-    int height = 5*WB+11*BH ;
-    
-    gen_window = new Fl_Window(width,height);
-    gen_window->box(WINDOW_BOX);
-    gen_window->label("General options");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Display");
-	o->labelsize(CTX.fontsize);
-	gen_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Show moving axes");
-	gen_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Show small axes");
-	gen_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Enable fast redraw");
-	gen_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Enable double buffering");
-	gen_butt[4] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Use display lists");
-	gen_butt[5] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Enable alpha blending");
-	gen_butt[6] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Use trackball rotation mode");
-	for(i=0 ; i<7 ; i++){
-	  gen_butt[i]->type(FL_TOGGLE_BUTTON);
-	  gen_butt[i]->down_box(FL_DOWN_BOX);
-	  gen_butt[i]->labelsize(CTX.fontsize);
-	  gen_butt[i]->selection_color(FL_YELLOW);
-	}
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Output");
-	o->labelsize(CTX.fontsize);
-	gen_butt[7] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Print messages on terminal");
-	gen_butt[8] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Save session information on exit");
-	gen_butt[9] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Save options on exit");
-	for(i=7 ; i<10 ; i++){
-	  gen_butt[i]->type(FL_TOGGLE_BUTTON);
-	  gen_butt[i]->down_box(FL_DOWN_BOX);
-	  gen_butt[i]->labelsize(CTX.fontsize);
-	  gen_butt[i]->selection_color(FL_YELLOW);
-	}
-	gen_value[5] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Message verbosity");
-	gen_value[5]->minimum(0); 
-	gen_value[5]->maximum(10); 
-	gen_value[5]->step(1);
-	gen_value[5]->labelsize(CTX.fontsize);
-	gen_value[5]->textsize(CTX.fontsize);
-	gen_value[5]->type(FL_HORIZONTAL);
-	gen_value[5]->align(FL_ALIGN_RIGHT);
-	gen_input[0] = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Default file name");
-	gen_input[1] = new Fl_Input(2*WB, 2*WB+6*BH, IW, BH, "Temporary file");
-	gen_input[2] = new Fl_Input(2*WB, 2*WB+7*BH, IW, BH, "Error file");
-	gen_input[3] = new Fl_Input(2*WB, 2*WB+8*BH, IW, BH, "Option file");
-	gen_input[4] = new Fl_Input(2*WB, 2*WB+9*BH, IW, BH, "Text editor command");
-	for(i=0 ; i<5 ; i++){
-	  gen_input[i]->labelsize(CTX.fontsize);
-	  gen_input[i]->textsize(CTX.fontsize);
-	  gen_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Projection");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	gen_butt[10] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Orthographic");
-	gen_butt[11] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Perspective");
-	for(i=10 ; i<12 ; i++){
-	  gen_butt[i]->type(FL_RADIO_BUTTON);
-	  gen_butt[i]->labelsize(CTX.fontsize);
-	  gen_butt[i]->selection_color(FL_YELLOW);
-	}
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	gen_value[0] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Predefined color scheme");
-	gen_value[0]->minimum(0); 
-	gen_value[0]->maximum(2); 
-	gen_value[0]->step(1);
-	gen_value[0]->labelsize(CTX.fontsize);
-	gen_value[0]->textsize(CTX.fontsize);
-	gen_value[0]->type(FL_HORIZONTAL);
-	gen_value[0]->align(FL_ALIGN_RIGHT);
-	gen_value[0]->callback(opt_general_color_scheme_cb);
-	
-	Fl_Scroll* s = new Fl_Scroll(2*WB, 3*WB+2*BH, IW+20, height-3*WB-4*BH);
-	i = 0;
-	while(GeneralOptions_Color[i].str){
-	  gen_col[i] = new Fl_Button(2*WB, 3*WB+(2+i)*BH, IW, BH, GeneralOptions_Color[i].str);
-	  gen_col[i]->callback(color_cb, (void*)GeneralOptions_Color[i].function) ;
-	  gen_col[i]->labelsize(CTX.fontsize);
-	  i++;
-	}
-	s->end();
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Light");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	gen_value[1] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Material shininess");
-	gen_value[1]->minimum(0); 
-	gen_value[1]->maximum(10);
-	gen_value[1]->step(0.1);
-	gen_butt[12] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Moving light");
-	gen_butt[12]->type(FL_TOGGLE_BUTTON);
-	gen_butt[12]->down_box(FL_DOWN_BOX);
-	gen_butt[12]->labelsize(CTX.fontsize);
-	gen_butt[12]->selection_color(FL_YELLOW);
-	gen_value[2] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Light position X");
-	gen_value[2]->minimum(-1); 
-	gen_value[2]->maximum(1);
-	gen_value[2]->step(0.01);
-	gen_value[3] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Light position Y");
-	gen_value[3]->minimum(-1); 
-	gen_value[3]->maximum(1); 
-	gen_value[3]->step(0.01);
-	gen_value[4] = new Fl_Value_Input(2*WB, 2*WB+5*BH, IW, BH, "Light position Z");
-	gen_value[4]->minimum(-1); 
-	gen_value[4]->maximum(1); 
-	gen_value[4]->step(0.01);
-	for(i=1 ; i<5 ; i++){
-	  gen_value[i]->labelsize(CTX.fontsize);
-	  gen_value[i]->textsize(CTX.fontsize);
-	  gen_value[i]->type(FL_HORIZONTAL);
-	  gen_value[i]->align(FL_ALIGN_RIGHT);
-	}
-	o->end();
-      }
-      o->end();
-    }
-    
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_general_ok_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)gen_window);
-    }
-    
-    if(CTX.center_windows)
-      gen_window->position(m_window->x()+m_window->w()/2-width/2,
-			   m_window->y()+9*BH-height/2);
-    gen_window->end();
-  }
-  else{
-    if(gen_window->shown())
-      gen_window->redraw();
-    else
-      gen_window->show();
-    
-  }
-  
-}
-
-//************************ Create the window for geometry options **********************
-
-void GUI::create_geometry_options_window(){
-  int i;
-  
-  if(!init_geometry_options_window){
-    init_geometry_options_window = 1 ;
-    
-    int width = 25*CTX.fontsize;
-    int height = 5*WB+9*BH ;
-    
-    geo_window = new Fl_Window(width,height);
-    geo_window->box(WINDOW_BOX);
-    geo_window->label("Geometry options");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Visibility");
-	o->labelsize(CTX.fontsize);
-	geo_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Points");
-	geo_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Curves");
-	geo_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Surfaces");
-	geo_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Volumes");
-	geo_butt[4] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Point numbers");
-	geo_butt[5] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Curve numbers");
-	geo_butt[6] = new Fl_Check_Button(width/2, 2*WB+3*BH, IW, BH, "Surface numbers");
-	geo_butt[7] = new Fl_Check_Button(width/2, 2*WB+4*BH, IW, BH, "Volume numbers");
-	for(i=0 ; i<8 ; i++){
-	  geo_butt[i]->type(FL_TOGGLE_BUTTON);
-	  geo_butt[i]->down_box(FL_DOWN_BOX);
-	  geo_butt[i]->labelsize(CTX.fontsize);
-	  geo_butt[i]->selection_color(FL_YELLOW);
-	}
-	
-	geo_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity number");
-	geo_input->labelsize(CTX.fontsize);
-	geo_input->textsize(CTX.fontsize);
-	geo_input->align(FL_ALIGN_RIGHT);
-	geo_input->callback(opt_geometry_show_by_entity_num_cb);
-	geo_input->when(FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED);
-	
-	geo_value[0] = new Fl_Value_Input(2*WB, 2*WB+6*BH, IW, BH, "Normals");
-	geo_value[0]->minimum(0); 
-	geo_value[0]->maximum(100);
-	geo_value[0]->step(0.1);
-	geo_value[1] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Tangents");
-	geo_value[1]->minimum(0);
-	geo_value[1]->maximum(100);
-	geo_value[1]->step(0.1);
-	for(i=0 ; i<2 ; i++){
-	  geo_value[i]->labelsize(CTX.fontsize);
-	  geo_value[i]->textsize(CTX.fontsize);
-	  geo_value[i]->type(FL_HORIZONTAL);
-	  geo_value[i]->align(FL_ALIGN_RIGHT);
-	}
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	geo_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Predefined color scheme");
-	geo_value[2]->minimum(0); 
-	geo_value[2]->maximum(2); 
-	geo_value[2]->step(1);
-	geo_value[2]->labelsize(CTX.fontsize);
-	geo_value[2]->textsize(CTX.fontsize);
-	geo_value[2]->type(FL_HORIZONTAL);
-	geo_value[2]->align(FL_ALIGN_RIGHT);
-	geo_value[2]->callback(opt_geometry_color_scheme_cb);
-	
-	Fl_Scroll* s = new Fl_Scroll(2*WB, 3*WB+2*BH, IW+20, height-3*WB-4*BH);
-	i = 0;
-	while(GeometryOptions_Color[i].str){
-	  geo_col[i] = new Fl_Button(2*WB, 3*WB+(2+i)*BH, IW, BH, GeometryOptions_Color[i].str);
-	  geo_col[i]->callback(color_cb, (void*)GeometryOptions_Color[i].function) ;
-	  geo_col[i]->labelsize(CTX.fontsize);
-	  i++;
-	}
-	s->end();
-	o->end();
-      }
-      o->end();
-    }
-    
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_geometry_ok_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)geo_window);
-    }
-    
-    if(CTX.center_windows)
-      geo_window->position(m_window->x()+m_window->w()/2-width/2,
-			   m_window->y()+9*BH-height/2);
-    geo_window->end();
-  }
-  else{
-    if(geo_window->shown())
-      geo_window->redraw();
-    else
-      geo_window->show();
-    
-  }
-  
-}
-
-//****************************** Create the window for mesh options ********************
-
-void GUI::create_mesh_options_window(){
-  int i;
-  
-  if(!init_mesh_options_window){
-    init_mesh_options_window = 1 ;
-    
-    int width = 25*CTX.fontsize;
-    int height = 5*WB+10*BH ;
-    
-    mesh_window = new Fl_Window(width,height);
-    mesh_window->box(WINDOW_BOX);
-    mesh_window->label("Mesh options");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Algorithm");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	mesh_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Second order elements");
-	mesh_butt[0]->deactivate();//2nd order elements do not work. Disable the graphical option.
-	mesh_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Interactive");
-	mesh_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Anisotropic");
-	mesh_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Constrained background mesh");
-	for(i=0 ; i<4 ; i++){
-	  mesh_butt[i]->type(FL_TOGGLE_BUTTON);
-	  mesh_butt[i]->down_box(FL_DOWN_BOX);
-	  mesh_butt[i]->labelsize(CTX.fontsize);
-	  mesh_butt[i]->selection_color(FL_YELLOW);
-	}
-	mesh_value[0] = new Fl_Value_Input(2*WB, 2*WB+5*BH, IW, BH, "Number of smoothing steps");
-	mesh_value[0]->minimum(0);
-	mesh_value[0]->maximum(100); 
-	mesh_value[0]->step(1);
-	mesh_value[1] = new Fl_Value_Input(2*WB, 2*WB+6*BH, IW, BH, "Mesh scaling factor");
-	mesh_value[1]->minimum(0.001);
-	mesh_value[1]->maximum(1000); 
-	mesh_value[1]->step(0.001);
-	mesh_value[2] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Characteristic length factor");
-	mesh_value[2]->minimum(0.001);
-	mesh_value[2]->maximum(1000); 
-	mesh_value[2]->step(0.001);
-	mesh_value[3] = new Fl_Value_Input(2*WB, 2*WB+8*BH, IW, BH, "Random perturbation factor");
-	mesh_value[3]->minimum(1.e-6);
-	mesh_value[3]->maximum(1.e-1); 
-	mesh_value[3]->step(1.e-6);
-	for(i = 0 ; i<4 ; i++){
-	  mesh_value[i]->labelsize(CTX.fontsize);
-	  mesh_value[i]->textsize(CTX.fontsize);
-	  mesh_value[i]->type(FL_HORIZONTAL);
-	  mesh_value[i]->align(FL_ALIGN_RIGHT);
-	}
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Visibility");
-	o->labelsize(CTX.fontsize);
-	mesh_butt[4] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Points");
-	mesh_butt[5] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Curves");
-	mesh_butt[6] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Surfaces");
-	mesh_butt[7] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Volumes");
-	mesh_butt[8] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Point numbers");
-	mesh_butt[9] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Curve numbers");
-	mesh_butt[10] = new Fl_Check_Button(width/2, 2*WB+3*BH, IW, BH, "Surface numbers");
-	mesh_butt[11] = new Fl_Check_Button(width/2, 2*WB+4*BH, IW, BH, "Volume numbers");
-	for(i=4 ; i<12 ; i++){
-	  mesh_butt[i]->type(FL_TOGGLE_BUTTON);
-	  mesh_butt[i]->down_box(FL_DOWN_BOX);
-	  mesh_butt[i]->labelsize(CTX.fontsize);
-	  mesh_butt[i]->selection_color(FL_YELLOW);
-	}
-	mesh_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity Number");
-	mesh_input->labelsize(CTX.fontsize);
-	mesh_input->textsize(CTX.fontsize);
-	mesh_input->align(FL_ALIGN_RIGHT);
-	mesh_input->callback(opt_mesh_show_by_entity_num_cb);
-	mesh_input->when(FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED);
-
-	mesh_value[4] = new Fl_Value_Input(2*WB, 2*WB+6*BH, IW/2, BH);
-	mesh_value[4]->minimum(0); 
-	mesh_value[4]->maximum(1);
-	mesh_value[4]->step(0.001);
-	mesh_value[5] = new Fl_Value_Input(2*WB+IW/2, 2*WB+6*BH, IW/2, BH, "Quality range");
-	mesh_value[5]->minimum(0); 
-	mesh_value[5]->maximum(1);
-	mesh_value[5]->step(0.001);
-
-	mesh_value[6] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW/2, BH);
-	mesh_value[7] = new Fl_Value_Input(2*WB+IW/2, 2*WB+7*BH, IW/2, BH, "Size range");
-
-	mesh_value[8] = new Fl_Value_Input(2*WB, 2*WB+8*BH, IW, BH, "Normals");
-	mesh_value[8]->minimum(0); 
-	mesh_value[8]->maximum(100);
-	mesh_value[8]->step(1);
-	for(i=4 ; i<9 ; i++){
-	  mesh_value[i]->labelsize(CTX.fontsize);
-	  mesh_value[i]->textsize(CTX.fontsize);
-	  mesh_value[i]->type(FL_HORIZONTAL);
-	  mesh_value[i]->align(FL_ALIGN_RIGHT);
-	}
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Aspect");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	mesh_butt[12] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Wireframe");
-	mesh_butt[13] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Hidden lines");
-	mesh_butt[14] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Solid");
-	for(i=12 ; i<15 ; i++){
-	  mesh_butt[i]->type(FL_RADIO_BUTTON);
-	  mesh_butt[i]->down_box(FL_DOWN_BOX);
-	  mesh_butt[i]->labelsize(CTX.fontsize);
-	  mesh_butt[i]->selection_color(FL_YELLOW);
-	}
-	mesh_value[9] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Explode elements");
-	mesh_value[9]->minimum(0);
-	mesh_value[9]->maximum(1);
-	mesh_value[9]->step(0.01);
-	mesh_value[9]->labelsize(CTX.fontsize);
-	mesh_value[9]->textsize(CTX.fontsize);
-	mesh_value[9]->type(FL_HORIZONTAL);
-	mesh_value[9]->align(FL_ALIGN_RIGHT);
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	mesh_butt[15] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Switch color by entity");
-	mesh_butt[15]->type(FL_TOGGLE_BUTTON);
-	mesh_butt[15]->down_box(FL_DOWN_BOX);
-	mesh_butt[15]->labelsize(CTX.fontsize);
-	mesh_butt[15]->selection_color(FL_YELLOW);
-
-	mesh_value[10] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Predefined color scheme");
-	mesh_value[10]->minimum(0); 
-	mesh_value[10]->maximum(2); 
-	mesh_value[10]->step(1);
-	mesh_value[10]->labelsize(CTX.fontsize);
-	mesh_value[10]->textsize(CTX.fontsize);
-	mesh_value[10]->type(FL_HORIZONTAL);
-	mesh_value[10]->align(FL_ALIGN_RIGHT);
-	mesh_value[10]->callback(opt_mesh_color_scheme_cb);
-
-	Fl_Scroll* s = new Fl_Scroll(2*WB, 3*WB+3*BH, IW+20, height-3*WB-5*BH);
-	i = 0;
-	while(MeshOptions_Color[i].str){
-	  mesh_col[i] = new Fl_Button(2*WB, 3*WB+(3+i)*BH, IW, BH, MeshOptions_Color[i].str);
-	  mesh_col[i]->callback(color_cb, (void*)MeshOptions_Color[i].function) ;
-	  mesh_col[i]->labelsize(CTX.fontsize);
-	  i++;
-	}
-	s->end();
-	o->end();
-      }
-      o->end();
-    }
-
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_mesh_ok_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)mesh_window);
-    }
-
-    if(CTX.center_windows)
-      mesh_window->position(m_window->x()+m_window->w()/2-width/2,
-			    m_window->y()+9*BH-height/2);
-    mesh_window->end();
-  }
-  else{
-    if(mesh_window->shown())
-      mesh_window->redraw();
-    else
-      mesh_window->show();
-
-  }
-
-}
-
-//******************** Create the window for solver options *******************
-
-void GUI::create_solver_options_window(){
-
-  if(!init_solver_options_window){
-    init_solver_options_window = 1 ;
-
-    int width = 20*CTX.fontsize;
-    int height = 5*WB+8*BH ;
-
-    solver_window = new Fl_Window(width,height);
-    solver_window->box(WINDOW_BOX);
-    solver_window->label("Solver options");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Solvers");
-	o->labelsize(CTX.fontsize);
-	Fl_Box *text =  new Fl_Box(FL_NO_BOX, 2*WB, 3*WB+1*BH, width-4*WB, 2*BH,
-				   "There are no global solver options available yet");
-	text->align(FL_ALIGN_LEFT|FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP);
-	text->labelsize(CTX.fontsize);
-	o->end();
-      }
-      o->end();
-    }
-
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_solver_ok_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)solver_window);
-    }
-
-    if(CTX.center_windows)
-      solver_window->position(m_window->x()+m_window->w()/2-width/2,
-			      m_window->y()+9*BH-height/2);
-    solver_window->end();
-  }
-  else{
-    if(solver_window->shown())
-      solver_window->redraw();
-    else
-      solver_window->show();
-
-  }
-
-}
-
-
-//******************** Create the window for post-processing options *******************
-
-void GUI::create_post_options_window(){
-  int i;
-
-  if(!init_post_options_window){
-    init_post_options_window = 1 ;
-
-    int width = 24*CTX.fontsize;
-    int height = 5*WB+10*BH ;
-
-    post_window = new Fl_Window(width,height);
-    post_window->box(WINDOW_BOX);
-    post_window->label("Post-processing options");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Views");
-	o->labelsize(CTX.fontsize);
-	post_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Independent views");
-	post_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Apply next changes to all visible views");
-	post_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Apply next changes to all views");
-	post_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Force same options for all visible views");
-	post_butt[4] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Force same options for all views");
-	for(i=0 ; i<5 ; i++){
-	  post_butt[i]->type(FL_RADIO_BUTTON);
-	  post_butt[i]->labelsize(CTX.fontsize);
-	  post_butt[i]->selection_color(FL_YELLOW);
-	}
-	Fl_Box *text =  new Fl_Box(FL_NO_BOX, 2*WB, 3*WB+6*BH, width-4*WB, 2*BH,
-				   "Individual view options are available "
-				   "by right-clicking on each view button "
-				   "in the post-processing menu");
-	text->align(FL_ALIGN_LEFT|FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP);
-	text->labelsize(CTX.fontsize);
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Smoothing");
-	o->labelsize(CTX.fontsize);
-	post_butt[3] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Smooth views during merge");
-	post_butt[3]->type(FL_TOGGLE_BUTTON);
-	post_butt[3]->down_box(FL_DOWN_BOX);
-	post_butt[3]->labelsize(CTX.fontsize);
-	post_butt[3]->selection_color(FL_YELLOW);
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Animation");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	post_value[0] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Delay");
-	post_value[0]->minimum(0);
-	post_value[0]->maximum(10); 
-	post_value[0]->step(0.01);
-	post_value[0]->labelsize(CTX.fontsize);
-	post_value[0]->textsize(CTX.fontsize);
-	post_value[0]->type(FL_HORIZONTAL);
-	post_value[0]->align(FL_ALIGN_RIGHT);
-	o->end();
-      }
-      o->end();
-    }
-
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_post_ok_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)post_window);
-    }
-
-    if(CTX.center_windows)
-      post_window->position(m_window->x()+m_window->w()/2-width/2,
-			    m_window->y()+9*BH-height/2);
-    post_window->end();
-  }
-  else{
-    if(post_window->shown())
-      post_window->redraw();
-    else
-      post_window->show();
-
-  }
-
-}
-
-//*********************** Create the window for the statistics *************************
-
-void GUI::create_statistics_window(){
-  int i;
-
-  if(!init_statistics_window){
-    init_statistics_window = 1 ;
-
-    int width = 24*CTX.fontsize;
-    int height = 5*WB+16*BH ;
-
-    stat_window = new Fl_Window(width,height);
-    stat_window->box(WINDOW_BOX);
-    stat_window->label("Statistics");
-    {
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Geometry");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	stat_value[0] = new Fl_Output(2*WB, 2*WB+1*BH, IW, BH, "Points");
-	stat_value[1] = new Fl_Output(2*WB, 2*WB+2*BH, IW, BH, "Curves");
-	stat_value[2] = new Fl_Output(2*WB, 2*WB+3*BH, IW, BH, "Surfaces");
-	stat_value[3] = new Fl_Output(2*WB, 2*WB+4*BH, IW, BH, "Volumes");
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Mesh");
-	o->labelsize(CTX.fontsize);
-	stat_value[4] = new Fl_Output(2*WB, 2*WB+1*BH, IW, BH, "Nodes on curves");
-	stat_value[5] = new Fl_Output(2*WB, 2*WB+2*BH, IW, BH, "Nodes on surfaces");
-	stat_value[6] = new Fl_Output(2*WB, 2*WB+3*BH, IW, BH, "Nodes in volumes");
-	stat_value[7] = new Fl_Output(2*WB, 2*WB+4*BH, IW, BH, "Triangles");
-	stat_value[8] = new Fl_Output(2*WB, 2*WB+5*BH, IW, BH, "Quadrangles");
-	stat_value[9] = new Fl_Output(2*WB, 2*WB+6*BH, IW, BH, "Tetrahedra");
-	stat_value[10] = new Fl_Output(2*WB, 2*WB+7*BH, IW, BH, "Hexahedra");
-	stat_value[11] = new Fl_Output(2*WB, 2*WB+8*BH, IW, BH, "Prisms");
-	stat_value[12] = new Fl_Output(2*WB, 2*WB+9*BH, IW, BH, "Time for 1D mesh");
-	stat_value[13] = new Fl_Output(2*WB, 2*WB+10*BH, IW, BH, "Time for 2D mesh");
-	stat_value[14] = new Fl_Output(2*WB, 2*WB+11*BH, IW, BH, "Time for 3D mesh");
-	stat_value[15] = new Fl_Output(2*WB, 2*WB+12*BH, IW, BH, "Gamma factor");
-	stat_value[16] = new Fl_Output(2*WB, 2*WB+13*BH, IW, BH, "Eta factor");
-	stat_value[17] = new Fl_Output(2*WB, 2*WB+14*BH, IW, BH, "Rho factor");
-
-	Fl_Button* b0 = new Fl_Button(width-BB-2*WB, 2*WB+12*BH, BB, BH, "List");
-	b0->labelsize(CTX.fontsize);
-	b0->callback(opt_statistics_histogram_cb, (void*)0);
-	Fl_Button* b1 = new Fl_Button(width-BB-2*WB, 2*WB+13*BH, BB, BH, "List");
-	b1->labelsize(CTX.fontsize);
-	b1->callback(opt_statistics_histogram_cb, (void*)1);
-	Fl_Button* b2 = new Fl_Button(width-BB-2*WB, 2*WB+14*BH, BB, BH, "List");
-	b2->labelsize(CTX.fontsize);
-	b2->callback(opt_statistics_histogram_cb, (void*)2);
-
-	o->end();
-      }
-      { 
-	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Post-processing");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-	stat_value[18] = new Fl_Output(2*WB, 2*WB+1*BH, IW, BH, "Views");
-	stat_value[19] = new Fl_Output(2*WB, 2*WB+2*BH, IW, BH, "Visible points");
-	stat_value[20] = new Fl_Output(2*WB, 2*WB+3*BH, IW, BH, "Visible lines");
-	stat_value[21] = new Fl_Output(2*WB, 2*WB+4*BH, IW, BH, "Visible triangles");
-	stat_value[22] = new Fl_Output(2*WB, 2*WB+5*BH, IW, BH, "Visible tetrahedra");
-	o->end();
-      }
-      o->end();
-    }
-
-    for(i=0 ; i<23 ; i++){
-      stat_value[i]->labelsize(CTX.fontsize);
-      stat_value[i]->textsize(CTX.fontsize);
-      stat_value[i]->type(FL_HORIZONTAL);
-      stat_value[i]->align(FL_ALIGN_RIGHT);
-      stat_value[i]->value(0);
-    }
-
-    { 
-      Fl_Button* o = new Fl_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "Update");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_statistics_update_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)stat_window);
-    }
-
-    if(CTX.center_windows)
-      stat_window->position(m_window->x()+m_window->w()/2-width/2,
-			    m_window->y()+9*BH-height/2);
-    stat_window->end();
-    set_statistics();
-    stat_window->show();
-  }
-  else{
-    if(stat_window->shown())
-      stat_window->redraw();
-    else{
-      set_statistics();
-      stat_window->show();     
-    }
-  }
-
-}
-
-void GUI::set_statistics(){
-
-  int i;	
-  static double  s[50], p[20];
-  static char    label[50][256];
-
-  GetStatistics(s);
-
-  // geom
-  sprintf(label[0], "%g", s[0]); stat_value[0]->value(label[0]);
-  sprintf(label[1], "%g", s[1]); stat_value[1]->value(label[1]);
-  sprintf(label[2], "%g", s[2]); stat_value[2]->value(label[2]);
-  sprintf(label[3], "%g", s[3]); stat_value[3]->value(label[3]);
-
-  // mesh
-  sprintf(label[4], "%g", s[4]); stat_value[4]->value(label[4]);
-  sprintf(label[5], "%g", s[5]); stat_value[5]->value(label[5]);
-  sprintf(label[6], "%g", s[6]); stat_value[6]->value(label[6]);
-  sprintf(label[7], "%g", s[7]-s[8]); stat_value[7]->value(label[7]);
-  sprintf(label[8], "%g", s[8]); stat_value[8]->value(label[8]);
-  sprintf(label[9], "%g", s[9]); stat_value[9]->value(label[9]);
-  sprintf(label[10], "%g", s[10]); stat_value[10]->value(label[10]);
-  sprintf(label[11], "%g", s[11]); stat_value[11]->value(label[11]);
-  sprintf(label[12], "%g", s[12]); stat_value[12]->value(label[12]);
-  sprintf(label[13], "%g", s[13]); stat_value[13]->value(label[13]);
-  sprintf(label[14], "%g", s[14]); stat_value[14]->value(label[14]);
-  sprintf(label[15], "%.4g (%.4g->%.4g)", s[17], s[19], s[18]); 
-  stat_value[15]->value(label[15]);
-  sprintf(label[16], "%.4g (%.4g->%.4g)", s[20], s[22], s[21]); 
-  stat_value[16]->value(label[16]);
-  sprintf(label[17], "%.4g (%.4g->%.4g)", s[23], s[25], s[24]);
-  stat_value[17]->value(label[17]);
-
-  // post
-  p[0] = List_Nbr(Post_ViewList) ;
-  sprintf(label[18], "%g", p[0]); stat_value[18]->value(label[18]);
-  p[1] = p[2] = p[3] = p[4] = p[5] = p[6] = p[7] = p[8] = 0 ;
-  for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){
-    Post_View *v = (Post_View*)List_Pointer(Post_ViewList, i);
-    p[1] += v->NbSP + v->NbVP + v->NbTP;
-    p[2] += v->NbSL + v->NbVL + v->NbTL;
-    p[3] += v->NbST + v->NbVT + v->NbTT;
-    p[4] += v->NbSS + v->NbVS + v->NbTS;
-    if(v->Visible){
-      if(v->DrawPoints)	p[5] += (v->DrawScalars ? v->NbSP : 0) + 
-			        (v->DrawVectors ? v->NbVP : 0) + 
-			        (v->DrawTensors ? v->NbTP : 0) ;
-      if(v->DrawLines) p[6] += (v->DrawScalars ? v->NbSL : 0) + 
-			       (v->DrawVectors ? v->NbVL : 0) + 
-			       (v->DrawTensors ? v->NbTL : 0) ;
-      if(v->DrawTriangles) p[7] += (v->DrawScalars ? v->NbST : 0) + 
-			           (v->DrawVectors ? v->NbVT : 0) + 
-			           (v->DrawTensors ? v->NbTT : 0) ;
-      if(v->DrawTetrahedra) p[8] += (v->DrawScalars ? v->NbSS : 0) + 
-			            (v->DrawVectors ? v->NbVS : 0) + 
-   			            (v->DrawTensors ? v->NbTS : 0) ;
-    }
-  }
-  sprintf(label[19], "%g/%g", p[5],p[1]); stat_value[19]->value(label[19]);
-  sprintf(label[20], "%g/%g", p[6],p[2]); stat_value[20]->value(label[20]);
-  sprintf(label[21], "%g/%g", p[7],p[3]); stat_value[21]->value(label[21]);
-  sprintf(label[22], "%g/%g", p[8],p[4]); stat_value[22]->value(label[22]);
-}
-
-
-//*********************** Create the window for the plugins *************************
-
-void GUI::add_multiline_in_browser(Fl_Browser *o, char* prefix, char *str){
-  int start = 0, len;
-  char *buff;
-  if(!strlen(str) || !strcmp(str, "\n")){
-    o->add("");
-    return;
-  }
-  for(unsigned int i=0 ; i<strlen(str) ; i++){
-    if(i==strlen(str)-1 || str[i]=='\n'){
-      len = i-start+(str[i]=='\n'?0:1);
-      buff = new char[len+strlen(prefix)+2];
-      strcpy(buff, prefix);
-      strncat(buff, &str[start], len);
-      buff[len+strlen(prefix)]='\0';
-      o->add(buff);
-      start = i+1;
-    }
-  }
-}
-
-PluginDialogBox * GUI::create_plugin_window(GMSH_Plugin *p){
-  char buffer[1024],namep[1024],copyright[256],author[256],help[1024];
-
-  // get plugin info
-
-  int n = p->getNbOptions();
-  p->getName(namep);
-  p->getInfos(author,copyright,help);
-
-  // create window
-
-  int width = 20*CTX.fontsize;
-  int height = ((n>5?n:5)+2)*BH + 5*WB;
-
-  PluginDialogBox *pdb = new PluginDialogBox;
-  pdb->main_window = new Fl_Window(width,height);
-  pdb->main_window->box(WINDOW_BOX);
-  sprintf(buffer,"%s Plugin",namep);
-  char *nbuffer = new char[strlen(buffer)+1];
-  strcpy(nbuffer,buffer);
-  pdb->main_window->label(nbuffer);
-
-  { 
-    Fl_Tabs *o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-1*BH);
-    { 
-      Fl_Group *g = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Options");
-      g->labelsize(CTX.fontsize);
-
-      if(n > 20)Msg(GERROR, "Plugin has too many parameters");
-      
-      for(int i=0;i<n;i++){
-	StringXNumber *sxn;
-	sxn = p->GetOption(i);
-	pdb->view_value[i] = new Fl_Value_Input(2*WB, 2*WB+(i+1)*BH, IW, BH, sxn->str);
-	pdb->view_value[i]->labelsize(CTX.fontsize);
-	pdb->view_value[i]->textsize(CTX.fontsize);
-	pdb->view_value[i]->type(FL_HORIZONTAL);
-	pdb->view_value[i]->align(FL_ALIGN_RIGHT);
-	pdb->view_value[i]->value(sxn->def);
-      }
-
-      g->end();
-    }
-    { 
-      Fl_Group *g = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "About");
-      g->labelsize(CTX.fontsize);
-
-      Fl_Browser *o = new Fl_Browser(2*WB, 2*WB+1*BH, width-4*WB, height-5*WB-2*BH);
-
-      o->add("");
-      add_multiline_in_browser(o, "@c@b@.", namep);
-      o->add("");
-      add_multiline_in_browser(o, "", help);
-      o->add("");
-      add_multiline_in_browser(o, "Author(s): ", author);
-      add_multiline_in_browser(o, "Copyright: ", copyright);
-      o->textsize(CTX.fontsize);
-      
-      pdb->main_window->resizable(o);
-
-      g->end();
-    }
-    o->end();
-  }
-
-  Fl_Button* cancel = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Close");
-  cancel->labelsize(CTX.fontsize);
-  cancel->callback(cancel_cb, (void*)pdb->main_window);
-
-  pdb->run_button = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "Run");
-  pdb->run_button->labelsize(CTX.fontsize);
-
-  if(CTX.center_windows)
-    pdb->main_window->position(m_window->x()+m_window->w()/2-width/2,
-			       m_window->y()+9*BH-height/2);
-
-  pdb->main_window->end();  
-
-  return pdb;
-}
-
-//********************** Create the window for the messages ****************************
-
-void GUI::create_message_window(){
-
-  if(!init_message_window){
-    init_message_window = 1 ;
-
-    int width = CTX.msg_size[0];
-    int height = CTX.msg_size[1];
-    
-    msg_window = new Fl_Window(width,height);
-    msg_window->box(WINDOW_BOX);
-    msg_window->label("Messages");
-    
-    msg_browser = new Fl_Browser(WB, WB, width-2*WB, height-3*WB-BH);
-    msg_browser->textfont(FL_COURIER);
-    msg_browser->textsize(CTX.fontsize);
-
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-3*BB-3*WB, height-BH-WB, BB, BH, "Save");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_message_save_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "Clear");
-      o->labelsize(CTX.fontsize);
-      o->callback(opt_message_clear_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)msg_window);
-    }
-
-    msg_window->resizable(msg_browser);
-
-    msg_window->position(CTX.msg_position[0], CTX.msg_position[1]);
-    msg_window->end();
-  }
-  else{
-    if(msg_window->shown())
-      msg_window->redraw();
-    else
-      msg_window->show();
-  }
-
-}
-
-void GUI::add_message(char *msg){
-  msg_browser->add(msg,0);
-  msg_browser->bottomline(msg_browser->size());
-}
-
-void GUI::save_message(char *filename){
-  FILE *fp;
-
-  if(!(fp = fopen(filename,"w"))) {
-    Msg(WARNING, "Unable to open file '%s'", filename); 
-    return;
-  }
-  for(int i = 1 ; i<=msg_browser->size() ; i++){
-    const char *c=msg_browser->text(i);
-    if(c[0]=='@') fprintf(fp, "%s\n", &c[3]);
-    else fprintf(fp, "%s\n", c);
-  }
-
-  Msg(INFO, "Log creation complete '%s'", filename);
-  Msg(STATUS2, "Wrote '%s'", filename);
-  fclose(fp);
-}
-
-void GUI::fatal_error(char *filename){
-  fl_alert("A fatal error has occurred, which will force Gmsh to exit "
-	   "(all messages have been saved in the error log file '%s')", filename);
-}
-
-//******************************* Create the about window ******************************
-
-void GUI::create_about_window(){
-  char buffer[1024];
-
-  if(!init_about_window){
-    init_about_window = 1 ;
-
-    int width = 40*CTX.fontsize;
-    int height = 10*BH ;
-
-    about_window = new Fl_Window(width,height);
-    about_window->box(WINDOW_BOX);
-    about_window->label("About Gmsh");
-
-    {
-      Fl_Box *o = new Fl_Box(2*WB, WB, about_width, height-3*WB-BH);
-      about_bmp = new Fl_Bitmap(about_bits,about_width,about_height);
-      about_bmp->label(o);
-    }
-
-    {
-      Fl_Browser *o = new Fl_Browser(WB+80, WB, width-2*WB-80, height-3*WB-BH);
-      o->add("");
-      o->add("@c@b@.Gmsh");
-      o->add("@c@.A three-dimensional finite element mesh generator");
-      o->add("@c@.with built-in pre- and post-processing facilities");
-      o->add("");
-      o->add("@c@.Copyright (c) 1997-2001");
-      o->add("@c@.Christophe Geuzaine and Jean-Fran�ois Remacle");
-      o->add("");
-      o->add("@c@.Please send all questions and bug reports to");
-      o->add("@c@b@.gmsh@geuz.org");
-      o->add("");
-      sprintf(buffer, "@c@.Version: %.2f", GMSH_VERSION); o->add(buffer);
-      sprintf(buffer, "@c@.Build date: %s", GMSH_DATE); o->add(buffer);
-      sprintf(buffer, "@c@.Build OS: %s", GMSH_OS); o->add(buffer);
-      sprintf(buffer, "@c@.Graphical user interface toolkit: FLTK %d.%d.%d",
-	      FL_MAJOR_VERSION, FL_MINOR_VERSION, FL_PATCH_VERSION); o->add(buffer);
-      sprintf(buffer, "@c@.Build host: %s", GMSH_HOST); o->add(buffer);
-      sprintf(buffer, "@c@.Packaged by: %s", GMSH_PACKAGER); o->add(buffer);
-      o->add("");
-      o->add("@c@.Visit http://www.geuz.org/gmsh/ for more information");
-      o->textsize(CTX.fontsize);
-    }
-
-    { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-BB-WB, height-BH-WB, BB, BH, "OK");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)about_window);
-    }
-
-    if(CTX.center_windows)
-      about_window->position(m_window->x()+m_window->w()/2-width/2,
-			     m_window->y()+9*BH-height/2);
-    about_window->end();
-  }
-  else{
-    if(about_window->shown())
-      about_window->redraw();
-    else
-      about_window->show();
-  }
-
-}
-
-//************************* Create the window for view options *************************
-
-// WARNING! Don't forget to add the set_changed_cb() callback to any new widget!
-
-void GUI::create_view_options_window(int num){
-  int i;
-
-  if(!init_view_window){
-    init_view_window = 1 ;
-
-    // initialise all buttons to NULL (see the clear_changed() in opt_view_options_bd)
-    for(i=0; i<VIEW_OPT_BUTT; i++){
-      view_butt[i] = NULL;
-      view_value[i] = NULL;
-      view_input[i] = NULL;
-    }
-
-    int width = 32*CTX.fontsize;
-    int height = 5*WB+11*BH;
-    
-    view_window = new Fl_Window(width,height);
-    view_window->box(WINDOW_BOX);
-
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      // General
-      { 
-	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General");
-	o->labelsize(CTX.fontsize);
-        o->hide();
-
-	view_input[0] = new Fl_Input(2*WB, 2*WB+1*BH, IW, BH, "Name");
-	view_input[1] = new Fl_Input(2*WB, 2*WB+2*BH, IW, BH, "Format");
-	for(i=0 ; i<2 ; i++){
-	  view_input[i]->labelsize(CTX.fontsize);
-	  view_input[i]->textsize(CTX.fontsize);
-	  view_input[i]->align(FL_ALIGN_RIGHT);
-	  view_input[i]->callback(set_changed_cb, 0);
-	}
-
-        view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Show elements");
-        view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Show color bar");
-        view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Display time");
-        view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Transparent color bar");
-	view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Enable Lighting");
-
-	view_butt[27] = new Fl_Check_Button(2*WB, 2*WB+8*BH, BW, BH, "Smooth normals");	
-	view_butt[27]->type(FL_TOGGLE_BUTTON);
-	view_butt[27]->down_box(FL_DOWN_BOX);
-	view_butt[27]->labelsize(CTX.fontsize);
-	view_butt[27]->selection_color(FL_YELLOW);
-	view_butt[27]->callback(set_changed_cb, 0);
-
-	view_value[11] = new Fl_Value_Input(width/2, 2*WB+ 1*BH, IW, BH, "Boundary");
-	view_value[11]->labelsize(CTX.fontsize);
-	view_value[11]->textsize(CTX.fontsize);
-	view_value[11]->type(FL_HORIZONTAL);
-	view_value[11]->align(FL_ALIGN_RIGHT);
-	view_value[11]->minimum(0); 
-	view_value[11]->step(1); 
-	view_value[11]->maximum(3); 
-	view_value[11]->callback(set_changed_cb, 0);
-
-	view_value[12] = new Fl_Value_Input(width/2, 2*WB+ 2*BH, IW, BH, "Explode");
-	view_value[12]->labelsize(CTX.fontsize);
-	view_value[12]->textsize(CTX.fontsize);
-	view_value[12]->type(FL_HORIZONTAL);
-	view_value[12]->align(FL_ALIGN_RIGHT);
-	view_value[12]->minimum(0.); 
-	view_value[12]->step(0.01); 
-	view_value[12]->maximum(1.); 
-	view_value[12]->callback(set_changed_cb, 0);
-
-        view_butt[18] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Draw points");
-        view_butt[19] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW, BH, "Draw lines");
-        view_butt[20] = new Fl_Check_Button(width/2, 2*WB+5*BH, BW, BH, "Draw triangles");
-        view_butt[21] = new Fl_Check_Button(width/2, 2*WB+6*BH, BW, BH, "Draw tetrahedra");
-        view_butt[22] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW, BH, "Draw scalar values");
-        view_butt[23] = new Fl_Check_Button(width/2, 2*WB+8*BH, BW, BH, "Draw vector values");
-        view_butt[24] = new Fl_Check_Button(width/2, 2*WB+9*BH, BW, BH, "Draw tensor values");
-	for(i=13 ; i<25 ; i++){
-	  view_butt[i]->type(FL_TOGGLE_BUTTON);
-	  view_butt[i]->down_box(FL_DOWN_BOX);
-	  view_butt[i]->labelsize(CTX.fontsize);
-	  view_butt[i]->selection_color(FL_YELLOW);
-	  view_butt[i]->callback(set_changed_cb, 0);
-	}
-
-        o->end();
-      }
-      // Range
-      { 
-	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range");
-	o->labelsize(CTX.fontsize);
-	o->hide();
-        view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Custom range");
-	view_butt[0]->type(FL_TOGGLE_BUTTON);
-	view_butt[0]->down_box(FL_DOWN_BOX);
-	view_butt[0]->labelsize(CTX.fontsize);
-	view_butt[0]->selection_color(FL_YELLOW);
-	//no set_changed since customrange has its own callback
-
-        view_value[0] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Minimum");
-        view_value[1] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Maximum");
-	for(i=0 ; i<2 ; i++){
-	  view_value[i]->labelsize(CTX.fontsize);
-	  view_value[i]->textsize(CTX.fontsize);
-	  view_value[i]->type(FL_HORIZONTAL);
-	  view_value[i]->align(FL_ALIGN_RIGHT);
-	  view_value[i]->callback(set_changed_cb, 0);
-	}
-
-	view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Linear");
-	view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Logarithmic");
-	for(i=1 ; i<3 ; i++){
-	  view_butt[i]->type(FL_RADIO_BUTTON);
-	  view_butt[i]->labelsize(CTX.fontsize);
-	  view_butt[i]->selection_color(FL_YELLOW);
-	  view_butt[i]->callback(set_changed_cb, 0);
-	}
-
-	view_butt[26] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Double logarithmic");
-	view_butt[26]->type(FL_RADIO_BUTTON);
-	view_butt[26]->labelsize(CTX.fontsize);
-	view_butt[26]->selection_color(FL_YELLOW);
-	view_butt[26]->callback(set_changed_cb, 0);
-
-        view_butt[25] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Saturate values");
-	view_butt[25]->type(FL_TOGGLE_BUTTON);
-	view_butt[25]->down_box(FL_DOWN_BOX);
-	view_butt[25]->labelsize(CTX.fontsize);
-	view_butt[25]->selection_color(FL_YELLOW);
-	view_butt[25]->callback(set_changed_cb, 0);
-
-	o->end();
-      }
-      // Intervals
-      {
-	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals");
-	o->labelsize(CTX.fontsize);
-	//view_intervals->hide();
-	view_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Number of intervals");
-	view_value[2]->labelsize(CTX.fontsize);
-	view_value[2]->textsize(CTX.fontsize);
-	view_value[2]->type(FL_HORIZONTAL);
-	view_value[2]->align(FL_ALIGN_RIGHT);
-	view_value[2]->minimum(1); 
-	view_value[2]->maximum(256); 
-	view_value[2]->step(1);
-	view_value[2]->callback(set_changed_cb, 0);
-
-	view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Iso-values");
-	view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Filled iso-values");
-	view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Continuous map");
-	view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Numeric values");
-	for(i=3 ; i<7 ; i++){
-	  view_butt[i]->type(FL_RADIO_BUTTON);
-	  view_butt[i]->labelsize(CTX.fontsize);
-	  view_butt[i]->selection_color(FL_YELLOW);
-	  view_butt[i]->callback(set_changed_cb, 0);
-	}
-        o->end();
-      }
-      // Offset and Raise
-      { 
-	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset");
-	o->labelsize(CTX.fontsize);
-        o->hide();
-	view_value[3] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "X offset");
-        view_value[4] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Y offset");
-	view_value[5] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Z offset");
-	view_value[6] = new Fl_Value_Input(width/2, 2*WB+1*BH, IW, BH, "X raise");
-        view_value[7] = new Fl_Value_Input(width/2, 2*WB+2*BH, IW, BH, "Y raise");
-	view_value[8] = new Fl_Value_Input(width/2, 2*WB+3*BH, IW, BH, "Z raise");
-	for(i=3 ; i<9 ; i++){
-	  view_value[i]->labelsize(CTX.fontsize);
-	  view_value[i]->textsize(CTX.fontsize);
-	  view_value[i]->type(FL_HORIZONTAL);
-	  view_value[i]->align(FL_ALIGN_RIGHT);
-	  view_value[i]->callback(set_changed_cb, 0);
-	}	
-	o->end();
-      }
-      // Time step
-      { 
-	view_timestep = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Time step");
-	view_timestep->labelsize(CTX.fontsize);
-        view_timestep->hide();
-	view_value[9] = new Fl_Value_Input(2*WB, 2*WB+BH, IW, BH, "Time step number");
-	view_value[9]->labelsize(CTX.fontsize);
-	view_value[9]->textsize(CTX.fontsize);
-	view_value[9]->type(FL_HORIZONTAL);
-	view_value[9]->align(FL_ALIGN_RIGHT);
-	view_value[9]->minimum(0); 
-	view_value[9]->maximum(0); 
-	view_value[9]->step(1);
-	view_timestep->end();
-	//no set_changed since timestep has its own callback
-      }
-      // Vector display
-      { 
-	view_vector = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Vector");
-	view_vector->labelsize(CTX.fontsize);
-        view_vector->hide();
-
-	{
-	  Fl_Group *o = new Fl_Group(2*WB, WB+BH, width-4*WB, 2*BH, 0);
-	  view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Line");
-	  view_butt[8] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Arrow");
-	  view_butt[9] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Cone");
-	  view_butt[10] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Displacement");
-	  for(i=7 ; i<11 ; i++){
-	    view_butt[i]->type(FL_RADIO_BUTTON);
-	    view_butt[i]->labelsize(CTX.fontsize);
-	    view_butt[i]->selection_color(FL_YELLOW);
-	    view_butt[i]->callback(set_changed_cb, 0);
-	  }
-	  o->end();
-	}
-	{
-	  Fl_Group *o = new Fl_Group(2*WB, WB+3*BH, width-4*WB, 2*BH, 0);
-	  view_butt[11] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Cell centered");
-	  view_butt[12] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Vertex centered");
-	  for(i=11 ; i<13 ; i++){
-	    view_butt[i]->type(FL_RADIO_BUTTON);
-	    view_butt[i]->labelsize(CTX.fontsize);
-	    view_butt[i]->selection_color(FL_YELLOW);
-	    view_butt[i]->callback(set_changed_cb, 0);
-	  }
-	  o->end();
-	}
-	view_value[10] = new Fl_Value_Input(2*WB, 2*WB+ 5*BH, IW, BH, "Vector scale");
-	view_value[10]->labelsize(CTX.fontsize);
-	view_value[10]->textsize(CTX.fontsize);
-	view_value[10]->type(FL_HORIZONTAL);
-	view_value[10]->align(FL_ALIGN_RIGHT);
-	view_value[10]->minimum(0); 
-	view_value[10]->callback(set_changed_cb, 0);
-	view_vector->end();
-      }
-      // Colors
-      { 
-	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors");
-	o->labelsize(CTX.fontsize);
-        o->hide();
-	view_colorbar_window = new Colorbar_Window(2*WB, 2*WB+1*BH,
-						   width-4*WB, height-5*WB-2*BH);
-	view_colorbar_window->end();
-	//no set_changed since colorbarwindow has its own callbacks
-        o->end();
-      }
-      o->end();
-    }
-
-    { view_ok = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK");
-      view_ok->labelsize(CTX.fontsize);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)view_window);
-    }
-
-    if(CTX.center_windows)
-      view_window->position(m_window->x()+m_window->w()/2-width/2,
-			    m_window->y()+9*BH-height/2);
-
-    //view_window->resizable(view_colorbar_window);
-    view_window->end();
-  }
-  else{
-    update_view_window(num);
-    if(view_window->shown())
-      view_window->redraw();
-    else
-      view_window->show();
-  }
-
-}
-
-void GUI::update_view_window(int num){
-  int i;
-  double val;
-
-  view_number = num ;
-  Post_View *v = (Post_View*)List_Pointer(Post_ViewList, num);
-
-  static char buffer[1024];
-  sprintf(buffer, "Options for \"%s\" (\"%s\")", v->Name, v->FileName);
-  view_window->label(buffer);
-
-  // general
-  opt_view_show_element(num, GMSH_GUI, 0);
-  opt_view_show_scale(num, GMSH_GUI, 0);
-  opt_view_show_time(num, GMSH_GUI, 0);
-  opt_view_transparent_scale(num, GMSH_GUI, 0);
-  opt_view_name(num, GMSH_GUI, NULL);
-  opt_view_format(num, GMSH_GUI, NULL);
-  opt_view_draw_points(num, GMSH_GUI, 0);
-  opt_view_draw_lines(num, GMSH_GUI, 0);
-  opt_view_draw_triangles(num, GMSH_GUI, 0);
-  opt_view_draw_tetrahedra(num, GMSH_GUI, 0);
-  opt_view_draw_scalars(num, GMSH_GUI, 0);
-  opt_view_draw_vectors(num, GMSH_GUI, 0);
-  opt_view_draw_tensors(num, GMSH_GUI, 0);
-
-  // range
-  opt_view_range_type(num, GMSH_GUI, 0);
-  view_butt[0]->callback(view_options_custom_cb, (void*)num);
-  view_options_custom_cb(0,0);
-  view_butt[0]->clear_changed();
-  opt_view_custom_min(num, GMSH_GUI, 0);
-  opt_view_custom_max(num, GMSH_GUI, 0);
-  for(i=0 ; i<2 ; i++){
-    view_value[i]->minimum(v->CustomMin); 
-    view_value[i]->maximum(v->CustomMax); 
-  }
-  opt_view_scale_type(num, GMSH_GUI, 0);
-  opt_view_saturate_values(num, GMSH_GUI, 0);
-
-  // intervals
-  opt_view_nb_iso(num, GMSH_GUI, 0);
-  opt_view_intervals_type(num, GMSH_GUI, 0);
-  opt_view_boundary(num, GMSH_GUI, 0);
-  opt_view_explode(num, GMSH_GUI, 0);
-
-  // offset/raise
-  opt_view_offset0(num, GMSH_GUI, 0);
-  opt_view_offset1(num, GMSH_GUI, 0);
-  opt_view_offset2(num, GMSH_GUI, 0);
-  opt_view_raise0(num, GMSH_GUI, 0);
-  opt_view_raise1(num, GMSH_GUI, 0);
-  opt_view_raise2(num, GMSH_GUI, 0);
-  val = 10.*CTX.lc ;
-  for(i=3 ; i<9 ; i++){
-    view_value[i]->step(val,1000); 
-    view_value[i]->minimum(-val); 
-    view_value[i]->maximum(val); 
-  }
-
-  // timestep
-  if(v->NbTimeStep==1) view_timestep->deactivate();
-  else view_timestep->activate();
-  view_value[9]->callback(view_options_timestep_cb, (void*)num);
-  view_value[9]->maximum(v->NbTimeStep-1); 
-  opt_view_timestep(num, GMSH_GUI, 0);
-
-  // vector
-  if(v->ScalarOnly) view_vector->deactivate();
-  else view_vector->activate();
-  opt_view_arrow_type(num, GMSH_GUI, 0);
-  opt_view_arrow_scale(num, GMSH_GUI, 0);
-  opt_view_arrow_location(num, GMSH_GUI, 0);
-
-  // colors
-  view_colorbar_window->update(v->Name, v->Min, v->Max, &v->CT, &v->Changed);
-
-  // light
-  opt_view_light(num, GMSH_GUI, 0);
-  opt_view_smooth_normals(num, GMSH_GUI, 0);
-
-  // OK
-  view_ok->callback(view_options_ok_cb, (void*)num);
-
-}
-
-//*************** Create the window for geometry context dependant definitions *********
-
-void GUI::create_geometry_context_window(int num){
-  static Fl_Group *g[10];
-  int i;
-
-  if(!init_geometry_context_window){
-    init_geometry_context_window = 1 ;
-
-    int width = 31*CTX.fontsize;
-    int height = 5*WB+9*BH ;
-    
-    context_geometry_window = new Fl_Window(width,height);
-    context_geometry_window->box(WINDOW_BOX);
-    context_geometry_window->label("Contextual geometry definitions");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      // 0: Parameter
-      { 
-	g[0] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Parameter");
-	g[0]->labelsize(CTX.fontsize);
-	context_geometry_input[0] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Name");
-	context_geometry_input[1] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Value");
-	for(i=0 ; i<2 ; i++){
-	  context_geometry_input[i]->labelsize(CTX.fontsize);
-	  context_geometry_input[i]->textsize(CTX.fontsize);
-	  context_geometry_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "Add");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_geometry_define_parameter_cb);
-	}
-        g[0]->end();
-      }
-      // 1: Point
-      { 
-	g[1] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Point");
-	g[1]->labelsize(CTX.fontsize);
-	context_geometry_input[2] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X coordinate");
-	context_geometry_input[3] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y coordinate");
-	context_geometry_input[4] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z coordinate");
-	context_geometry_input[5] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Characteristic length");
-	for(i=2 ; i<6 ; i++){
-	  context_geometry_input[i]->labelsize(CTX.fontsize);
-	  context_geometry_input[i]->textsize(CTX.fontsize);
-	  context_geometry_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "Add");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_geometry_define_point_cb);
-	}
-        g[1]->end();
-      }
-      // 2: Translation
-      { 
-	g[2] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Translation");
-	g[2]->labelsize(CTX.fontsize);
-	context_geometry_input[6] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X component");
-	context_geometry_input[7] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y component");
-	context_geometry_input[8] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z component");
-	for(i=6 ; i<9 ; i++){
-	  context_geometry_input[i]->labelsize(CTX.fontsize);
-	  context_geometry_input[i]->textsize(CTX.fontsize);
-	  context_geometry_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_geometry_define_translation_cb);
-	}
-        g[2]->end();
-      }
-      // 3: Rotation
-      { 
-	g[3] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Rotation");
-	g[3]->labelsize(CTX.fontsize);
-	context_geometry_input[9]  = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X coordinate of an axis point");
-	context_geometry_input[10] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y coordinate of an axis point");
-	context_geometry_input[11] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z coordinate of an axis point");
-	context_geometry_input[12] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "X component of direction");
-	context_geometry_input[13] = new Fl_Input (2*WB, 2*WB+5*BH, IW, BH, "Y component of direction");
-	context_geometry_input[14] = new Fl_Input (2*WB, 2*WB+6*BH, IW, BH, "Z component of direction");
-	context_geometry_input[15] = new Fl_Input (2*WB, 2*WB+7*BH, IW, BH, "Angle in radians");
-	for(i=9 ; i<16 ; i++){
-	  context_geometry_input[i]->labelsize(CTX.fontsize);
-	  context_geometry_input[i]->textsize(CTX.fontsize);
-	  context_geometry_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_geometry_define_rotation_cb);
-	}
-        g[3]->end();
-      }
-      // 4: Scale
-      { 
-	g[4] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Scale");
-	g[4]->labelsize(CTX.fontsize);
-	context_geometry_input[16] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X component of direction");
-	context_geometry_input[17] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y component of direction");
-	context_geometry_input[18] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z component of direction");
-	context_geometry_input[19] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Factor");
-	for(i=16 ; i<20 ; i++){
-	  context_geometry_input[i]->labelsize(CTX.fontsize);
-	  context_geometry_input[i]->textsize(CTX.fontsize);
-	  context_geometry_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_geometry_define_scale_cb);
-	}
-        g[4]->end();
-      }
-      // 5: Symmetry
-      { 
-	g[5] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Symmetry");
-	g[5]->labelsize(CTX.fontsize);
-	context_geometry_input[20] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "1st plane equation coefficient");
-	context_geometry_input[21] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "2nd plane equation coefficient");
-	context_geometry_input[22] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "3rd plane equation coefficient");
-	context_geometry_input[23] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "4th plane equation coefficient");
-	for(i=20 ; i<24 ; i++){
-	  context_geometry_input[i]->labelsize(CTX.fontsize);
-	  context_geometry_input[i]->textsize(CTX.fontsize);
-	  context_geometry_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_geometry_define_symmetry_cb);
-	}
-        g[5]->end();
-      }
-      o->end();
-    }
-
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)context_geometry_window);
-    }
-
-    for(i=0 ; i<6 ; i++) g[i]->hide();
-    g[num]->show();
-
-    if(CTX.center_windows)
-      context_geometry_window->position(m_window->x()+m_window->w()/2-width/2,
-					m_window->y()+9*BH-height/2);
-    context_geometry_window->end();
-    context_geometry_window->show();
-  }
-  else{
-    if(context_geometry_window->shown()){
-      for(i=0 ; i<6 ; i++) g[i]->hide();
-      g[num]->show();
-    }
-    else{
-      for(i=0 ; i<6 ; i++) g[i]->hide();
-      g[num]->show();
-      context_geometry_window->show();
-    }
-    
-  }
-
-}
-
-//************** Create the window for mesh context dependant definitions **************
-
-void GUI::create_mesh_context_window(int num){
-  static Fl_Group *g[10];
-  int i;
-
-  if(!init_mesh_context_window){
-    init_mesh_context_window = 1 ;
-
-    int width = 31*CTX.fontsize;
-    int height = 5*WB+5*BH ;
-    
-    context_mesh_window = new Fl_Window(width,height);
-    context_mesh_window->box(WINDOW_BOX);
-    context_mesh_window->label("Contextual mesh definitions");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
-      // 0: Characteristic length
-      { 
-	g[0] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Characteristic length");
-	g[0]->labelsize(CTX.fontsize);
-	context_mesh_input[0] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Value");
-	context_mesh_input[0]->labelsize(CTX.fontsize);
-	context_mesh_input[0]->textsize(CTX.fontsize);
-	context_mesh_input[0]->align(FL_ALIGN_RIGHT);
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+3*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_mesh_define_length_cb);
-	}
-        g[0]->end();
-      }
-      // 1: Transfinite line
-      { 
-	g[1] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Transfinite line");
-	g[1]->labelsize(CTX.fontsize);
-	context_mesh_input[1] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Number of points");
-	context_mesh_input[2] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Distribution");
-	for(i=1 ; i<3 ; i++){
-	  context_mesh_input[i]->labelsize(CTX.fontsize);
-	  context_mesh_input[i]->textsize(CTX.fontsize);
-	  context_mesh_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+3*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_mesh_define_transfinite_line_cb);
-	}
-        g[1]->end();
-      }
-      // 2: Transfinite volume
-      { 
-	g[2] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Transfinite volume");
-	g[2]->labelsize(CTX.fontsize);
-	context_mesh_input[3] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Volume number");
-	context_mesh_input[3]->labelsize(CTX.fontsize);
-	context_mesh_input[3]->textsize(CTX.fontsize);
-	context_mesh_input[3]->align(FL_ALIGN_RIGHT);
-	{ 
-	  Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+3*BH, BB, BH, "Set");
-	  o->labelsize(CTX.fontsize);
-	  o->callback(con_mesh_define_transfinite_line_cb);
-	}
-        g[2]->end();
-      }
-      o->end();
-    }
-
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)context_mesh_window);
-    }
-
-    for(i=0 ; i<3 ; i++) g[i]->hide();
-    g[num]->show();
-
-    if(CTX.center_windows)
-      context_mesh_window->position(m_window->x()+m_window->w()/2-width/2,
-				    m_window->y()+9*BH-height/2);
-    context_mesh_window->end();
-    context_mesh_window->show();
-  }
-  else{
-    if(context_mesh_window->shown()){
-      for(i=0 ; i<3 ; i++) g[i]->hide();
-      g[num]->show();
-    }
-    else{
-      for(i=0 ; i<3 ; i++) g[i]->hide();
-      g[num]->show();
-      context_mesh_window->show();
-    }
-    
-  }
-}
-
-
-//************** Create the window for the getdp solver **************
-
-void GUI::create_getdp_window(){
-  int i;
-  static Fl_Group *g[10];
-
-  int LL = (int)(1.75*IW);
-
-  if(!init_getdp_window){
-    init_getdp_window = 1 ;
-
-    int width = 5*BB+6*WB;
-    int height = 10*WB+ 8*BH  ;
-    
-    getdp_window = new Fl_Window(width,height);
-    getdp_window->box(WINDOW_BOX);
-    getdp_window->label("GetDP solver");
-    { 
-      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-1*BH);
-      { 
-	g[0] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General");
-	g[0]->labelsize(CTX.fontsize);
-
-	getdp_input[0] = new Fl_Input(2*WB, 2*WB+1*BH, LL, BH, "Problem");
-	Fl_Button *b1 = new Fl_Button(2*WB, 3*WB+2*BH, BB, BH, "Choose");
-	b1->callback(getdp_file_open_cb);
-	b1->labelsize(CTX.fontsize);
-	Fl_Button *b2 = new Fl_Button(3*WB+BB, 3*WB+2*BH, BB, BH, "Edit");
-	b2->callback(getdp_file_edit_cb);
-	b2->labelsize(CTX.fontsize);
-
-	getdp_choice[0] = new Fl_Choice(2*WB, 4*WB+3*BH, LL, BH,"Resolution");
-	getdp_choice[1] = new Fl_Choice(2*WB, 5*WB+4*BH, LL, BH,"Post operation");
-
-	getdp_input[1] = new Fl_Input(2*WB, 6*WB+5*BH, LL, BH, "Mesh");
-	Fl_Button *b3 = new Fl_Button(2*WB, 7*WB+6*BH, BB, BH, "Choose");
-	b3->callback(getdp_choose_mesh_cb);
-	b3->labelsize(CTX.fontsize);
-
-	for(i=0 ; i<2 ; i++){
-	  getdp_input[i]->labelsize(CTX.fontsize);
-	  getdp_input[i]->textsize(CTX.fontsize);
-	  getdp_input[i]->align(FL_ALIGN_RIGHT);
-	}
-	for(i=0 ; i<2 ; i++){
-	  getdp_choice[i]->textsize(CTX.fontsize);
-	  getdp_choice[i]->labelsize(CTX.fontsize);
-	  getdp_choice[i]->align(FL_ALIGN_RIGHT);
-	}
-
-        g[0]->end();
-      }
-      { 
-	g[1] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Options");
-	g[1]->labelsize(CTX.fontsize);
-
-	getdp_input[2] = new Fl_Input(2*WB, 2*WB+1*BH, LL, BH, "Command");
-	Fl_Button *b = new Fl_Button(2*WB, 3*WB+2*BH, BB, BH, "Choose");
-	b->callback(getdp_choose_command_cb);
-	b->labelsize(CTX.fontsize);
-	
-	getdp_butt[0] = new Fl_Check_Button(2*WB, 4*WB+3*BH, LL, BH, 
-					    "Automatic message display");
-	getdp_butt[1] = new Fl_Check_Button(2*WB, 4*WB+4*BH, LL, BH, 
-					    "Automatic view merge");
-
-	getdp_input[2]->labelsize(CTX.fontsize);
-	getdp_input[2]->textsize(CTX.fontsize);
-	getdp_input[2]->align(FL_ALIGN_RIGHT);
-	for(i=0 ; i<2 ; i++){
-	  getdp_butt[i]->type(FL_TOGGLE_BUTTON);
-	  getdp_butt[i]->down_box(FL_DOWN_BOX);
-	  getdp_butt[i]->labelsize(CTX.fontsize);
-	  getdp_butt[i]->selection_color(FL_YELLOW);
-	}
-
-	Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "OK");
-	o->labelsize(CTX.fontsize);
-	o->callback(getdp_ok_cb);
-
-        g[1]->end();
-      }
-      { 
-	g[2] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "About");
-	g[2]->labelsize(CTX.fontsize);
-
-	Fl_Browser *o = new Fl_Browser(2*WB, 2*WB+1*BH, width-4*WB, height-5*WB-2*BH);
-	o->add("");
-	o->add("@c@b@.GetDP");
-	o->add("@c@.A General environment for the treatment");
-	o->add("@c@.of Discrete Problems");
-	o->add("");
-	o->add("@c@.Experimental solver plugin for Gmsh");
-	o->add("");
-	o->add("@c@.Visit http://www.geuz.org/getdp/ for more info");
-	o->textsize(CTX.fontsize);
-
-        g[2]->end();
-      }
-      o->end();
-    }
-
-    { 
-      Fl_Button* o = new Fl_Button(width-5*BB-5*WB, height-BH-WB, BB, BH, "Pre");
-      o->labelsize(CTX.fontsize);
-      o->callback(getdp_pre_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-4*BB-4*WB, height-BH-WB, BB, BH, "Cal");
-      o->labelsize(CTX.fontsize);
-      o->callback(getdp_cal_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-3*BB-3*WB, height-BH-WB, BB, BH, "Post");
-      o->labelsize(CTX.fontsize);
-      o->callback(getdp_post_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "Kill");
-      o->labelsize(CTX.fontsize);
-      o->callback(getdp_kill_cb);
-    }
-    { 
-      Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "Cancel");
-      o->labelsize(CTX.fontsize);
-      o->callback(cancel_cb, (void*)getdp_window);
-    }
-
-
-    if(CTX.center_windows)
-      getdp_window->position(m_window->x()+m_window->w()/2-width/2,
-			     m_window->y()+9*BH-height/2);
-    getdp_window->end();
-  }
-  else{
-    if(getdp_window->shown())
-      getdp_window->redraw();
-    else
-      getdp_window->show();
-  }
-}
-
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
deleted file mode 100644
index 79c601a8ac720a5456a9ad34da1b33d451da0779..0000000000000000000000000000000000000000
--- a/Fltk/GUI.h
+++ /dev/null
@@ -1,235 +0,0 @@
-#ifndef _GUI_H_
-#define _GUI_H_
-
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Menu_Bar.H>
-#include <FL/fl_draw.H>
-#include <FL/gl.h>
-#include <FL/Fl_Gl_Window.H>
-#include <FL/Fl_Choice.H>
-#include <FL/Fl_Scroll.H>
-#include <FL/Fl_Tabs.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/Fl_Light_Button.H>
-#include <FL/Fl_Menu_Button.H>
-#include <FL/Fl_Check_Button.H>
-#include <FL/Fl_Input.H>
-#include <FL/Fl_Value_Input.H>
-#include <FL/Fl_Output.H>
-#include <FL/Fl_Multiline_Output.H>
-#include <FL/Fl_Bitmap.H>
-#include <FL/Fl_Browser.H>
-#include <FL/x.H>
-#include <FL/Fl_Color_Chooser.H>
-#include <FL/fl_ask.H>
-
-#include "Opengl_Window.h"
-#include "Colorbar_Window.h"
-
-#define NB_BUTT_MAX    100
-#define NB_HISTORY_MAX 1000
-
-// The dynamic contexts
-
-typedef struct{
-  char *label;
-  Fl_Callback* callback;
-} Context_Item;
-
-extern Context_Item menu_geometry[]; 
-extern    Context_Item menu_geometry_elementary[]; 
-extern        Context_Item menu_geometry_elementary_add[]; 
-extern            Context_Item menu_geometry_elementary_add_new[]; 
-extern            Context_Item menu_geometry_elementary_add_translate[]; 
-extern            Context_Item menu_geometry_elementary_add_rotate[]; 
-extern            Context_Item menu_geometry_elementary_add_scale[]; 
-extern            Context_Item menu_geometry_elementary_add_symmetry[]; 
-extern        Context_Item menu_geometry_elementary_translate[]; 
-extern        Context_Item menu_geometry_elementary_rotate[]; 
-extern        Context_Item menu_geometry_elementary_scale[]; 
-extern        Context_Item menu_geometry_elementary_symmetry[]; 
-extern        Context_Item menu_geometry_elementary_extrude[]; 
-extern            Context_Item menu_geometry_elementary_extrude_translate[]; 
-extern            Context_Item menu_geometry_elementary_extrude_rotate[]; 
-extern        Context_Item menu_geometry_elementary_delete[]; 
-extern    Context_Item menu_geometry_physical[]; 
-extern        Context_Item menu_geometry_physical_add[]; 
-extern Context_Item menu_mesh[]; 
-extern    Context_Item menu_mesh_define[]; 
-extern        Context_Item menu_mesh_define_transfinite[]; 
-extern Context_Item menu_solver[]; 
-extern Context_Item menu_post[]; 
-
-// Forward Declarations
-
-class GMSH_Plugin;
-
-// A generalized dialogbox for plugins
-
-struct PluginDialogBox
-{
-  Fl_Window *main_window;
-  Fl_Return_Button *run_button;
-  int nb_viewvalue;
-  Fl_Value_Input *view_value[20];
-};
-
-// The GUI class contains only the important widgets (which can be set/queried).
-
-class GUI{
-
-  int MH ;
-
-  // Bitmaps
-  Fl_Bitmap  *abort_bmp, *start_bmp, *stop_bmp, *about_bmp ;
-  void add_post_plugins ( Fl_Menu_Button *button , int iView);
-  void add_multiline_in_browser(Fl_Browser *o, char* prefix, char *str);
-
-public:
-
-  // menu window
-  int init_menu_window;
-  Fl_Window        *m_window ;
-  Fl_Menu_Bar      *m_menu_bar ;
-  Fl_Choice        *m_module_butt ;
-  Fl_Button        *m_navig_butt  [2] ;
-  Fl_Button        *m_push_butt   [NB_BUTT_MAX] ;
-  Fl_Light_Button  *m_toggle_butt [NB_BUTT_MAX] ;
-  Fl_Menu_Button   *m_popup_butt  [NB_BUTT_MAX] ;
-
-  // graphic window
-  int init_graphic_window;
-  Fl_Window        *g_window ;
-  Opengl_Window    *g_opengl_window ;
-  Fl_Button        *g_status_butt[7] ;
-  Fl_Box           *g_status_label[3] ;
-
-  // general options window
-  int init_general_options_window;
-  Fl_Window        *gen_window ;
-  Fl_Check_Button  *gen_butt[20] ;
-  Fl_Value_Input   *gen_value[10] ;
-  Fl_Button        *gen_col[50] ;
-  Fl_Input         *gen_input[10] ;
-
-  // geometry options window
-  int init_geometry_options_window;
-  Fl_Window        *geo_window ;
-  Fl_Check_Button  *geo_butt[10] ;
-  Fl_Input         *geo_input ;
-  Fl_Value_Input   *geo_value[10] ;
-  Fl_Button        *geo_col[50] ;
-  
-  // mesh options window
-  int init_mesh_options_window;
-  Fl_Window        *mesh_window ;
-  Fl_Check_Button  *mesh_butt[20] ;
-  Fl_Input         *mesh_input ;
-  Fl_Value_Input   *mesh_value[20] ;
-  Fl_Button        *mesh_col[50] ;
-
-  // solver options window
-  int init_solver_options_window;
-  Fl_Window        *solver_window ;
-  Fl_Check_Button  *solver_butt[20] ;
-  Fl_Value_Input   *solver_value[20] ;
-
-  // post-processing options window
-  int init_post_options_window;
-  Fl_Window        *post_window ;
-  Fl_Check_Button  *post_butt[20] ;
-  Fl_Value_Input   *post_value[20] ;
-
-  // statistics window
-  int init_statistics_window;
-  Fl_Window        *stat_window ;
-  Fl_Output        *stat_value[50] ;
-
-  // message window
-  int init_message_window;
-  Fl_Window        *msg_window ;
-  Fl_Browser       *msg_browser ;
-
-  // about window
-  int init_about_window;
-  Fl_Window        *about_window ;
-
-  // view options window
-  int init_view_window, view_number ;
-  Fl_Window        *view_window ;
-  Fl_Group         *view_timestep, *view_vector ;
-#define VIEW_OPT_BUTT 50
-  Fl_Check_Button  *view_butt[VIEW_OPT_BUTT] ;
-  Fl_Value_Input   *view_value[VIEW_OPT_BUTT] ;
-  Fl_Input         *view_input[VIEW_OPT_BUTT] ;
-  Colorbar_Window  *view_colorbar_window ;
-  Fl_Return_Button *view_ok ;
-  
-  // geometry context window
-  int init_geometry_context_window;
-  Fl_Window        *context_geometry_window ;
-  Fl_Input         *context_geometry_input[30] ;
-
-  // mesh context window
-  int init_mesh_context_window;
-  Fl_Window        *context_mesh_window ;
-  Fl_Input         *context_mesh_input[20] ;
-
-  // solver windows
-  int init_getdp_window;
-  Fl_Window        *getdp_window ;
-  Fl_Input         *getdp_input[50] ;
-  Fl_Choice        *getdp_choice[10] ;
-  Fl_Check_Button  *getdp_butt[10] ;
-
-  // the constructor
-  GUI(int argc, char **argv);
-
-  // create the windows
-  void create_menu_window(int argc, char **argv);
-  void create_graphic_window(int argc, char **argv);
-  void create_general_options_window();
-  void create_geometry_options_window();
-  void create_mesh_options_window();
-  void create_solver_options_window();
-  void create_post_options_window();
-  PluginDialogBox *create_plugin_window(GMSH_Plugin *p);
-  void create_view_options_window(int numview);
-  void create_statistics_window();
-  void create_message_window();
-  void create_about_window();
-  void create_geometry_context_window(int num);
-  void create_mesh_context_window(int num);
-  void create_getdp_window();
-
-  // general purpose interaction
-  void run();
-  void check();
-  void wait();
-  void make_opengl_current();
-  void make_overlay_current();
-  void redraw_opengl();
-  void redraw_overlay();
-  void set_size(int w, int h);
-  void set_menu_size(int nb_butt);
-  void set_context(Context_Item menu[], int flag);
-  int  get_context();
-  void set_anim(int mode);
-  void set_status(char *msg, int num);
-  void add_message(char *msg);
-  void save_message(char *filename);
-  void fatal_error(char *filename);
-  void set_statistics();
-  void update_view_window(int numview);
-  void set_title(char *str);
-  void add_handler();
-  int  global_shortcuts(int event);
-  int  selection, try_selection, quit_selection, end_selection;
-
-};
-
-
-#endif
-
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
deleted file mode 100644
index ddc68207480b82bc1cf631d271db468609b4f659..0000000000000000000000000000000000000000
--- a/Fltk/Main.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-// $Id: Main.cpp,v 1.32 2001-08-03 14:58:04 geuzaine Exp $
-
-#include <signal.h>
-#include <time.h>
-
-#include "PluginManager.h"
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "GmshVersion.h"
-
-#include "Geo.h"
-#include "Verif.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "Options.h"
-#include "ColorTable.h"
-#include "Parser.h"
-#include "Static.h"
-#include "GUI.h"
-#include "OpenFile.h"
-#include "GetOptions.h"
-
-GUI *WID = NULL;
-
-int main(int argc, char *argv[]){
-  int     i, nbf;
-  char    cmdline[1000]="", currtime[100];
-  time_t  now;
- 
-  // log some info
-  
-  time(&now);
-  strcpy(currtime, ctime(&now));
-  currtime[strlen(currtime)-1] = '\0';
-
-  for(i=0;i<argc;i++){ 
-    if(i) strcat(cmdline, " "); 
-    strcat(cmdline, argv[i]);
-  }
-
-  // Gmsh default options
-  
-  Init_Options(0);
-
-  // Configuration files and command line options
-
-  Get_Options(argc, argv, &nbf);
-
-  // This does not work with FLTK right now...
-
-  CTX.overlay = 0 ;
-  CTX.geom.highlight = 0 ;
-
-  // Always print info on terminal for non-interactive execution
-
-  if(CTX.batch)
-    CTX.terminal = 1;
-
-  if(CTX.verbosity && CTX.terminal)
-    fprintf(stderr, "%s, version %.2f, started %s\n", 
-	    gmsh_progname, GMSH_VERSION, currtime);
-
-  // Register Default Plugins (in test ...)
-  if(CTX.default_plugins)
-    GMSH_PluginManager::Instance()->RegisterDefaultPlugins();
-
-  // Initialize the static Mesh
-
-  M.Vertices = NULL ;
-  M.VertexEdges = NULL ;
-  M.Simplexes = NULL ;
-  M.Points = NULL ;
-  M.Curves = NULL ;
-  M.SurfaceLoops = NULL ;
-  M.EdgeLoops = NULL ;
-  M.Surfaces = NULL ;
-  M.Volumes = NULL ;
-  M.PhysicalGroups = NULL ;
-  M.Metric = NULL ;
-
-  // Signal handling
-
-  signal(SIGINT,  Signal); 
-  signal(SIGSEGV, Signal);
-  signal(SIGFPE,  Signal); 
-
-  // Non-interactive Gmsh
-
-  if(CTX.batch){
-    Msg(DIRECT, "Command line : %s", cmdline);
-    OpenProblem(CTX.filename);
-    if(yyerrorstate)
-      exit(1);
-    else {
-      for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
-      if(TheBgmFileName){
-        MergeProblem(TheBgmFileName);
-        if(List_Nbr(Post_ViewList))
-          BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
-        else
-          Msg(GERROR, "Invalid background mesh (no view)");
-      }
-      if(CTX.batch > 0){
-        mai3d(THEM, CTX.batch);
-        Print_Mesh(THEM, CTX.output_filename, CTX.mesh.format);
-      }
-      else
-        Print_Geo(THEM, CTX.output_filename);
-      if(CTX.mesh.histogram)
-	Print_Histogram(THEM->Histogram[0]);
-      exit(1);
-    }    
-  }
-  
-
-  // Interactive Gmsh
-
-  CTX.batch = -1 ; // The GUI is not ready yet for interactivity
-
-  // Create the GUI
-  
-  WID = new GUI(argc, argv);
-
-  // Set all previously defined options in the GUI
-
-  Init_Options_GUI(0);
-
-  // The GUI is ready
-
-  CTX.batch = 0 ; 
-
-  // Say welcome!
-
-  Msg(STATUS3N, "Ready");
-  Msg(STATUS1, "Gmsh %.2f", GMSH_VERSION);
-
-  // Log the following for bug reports
-  
-  Msg(LOG_INFO, "-------------------------------------------------------");
-  Msg(LOG_INFO, gmsh_os);
-  Msg(LOG_INFO, gmsh_date);
-  Msg(LOG_INFO, gmsh_host);
-  Msg(LOG_INFO, gmsh_packager);
-  Msg(LOG_INFO, "Home directory : %s", CTX.home_dir);
-  Msg(LOG_INFO, "Launch date    : %s", currtime);
-  Msg(LOG_INFO, "Command line   : %s", cmdline);
-  Msg(LOG_INFO, "-------------------------------------------------------");
-
-  // Display the GUI immediately to have a quick "a la Windows" launch time
-
-  WID->check();
-
-  // Open project file
-
-  OpenProblem(CTX.filename);
-
-  // Merge all other input files
-
-  for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
-  
-  // Init first context
-
-  switch(CTX.initial_context){
-  case 1 :
-    WID->set_context(menu_geometry, 0); 
-    break;
-  case 2 :
-    WID->set_context(menu_mesh, 0); 
-    break;
-  case 3 :
-    WID->set_context(menu_solver, 0); 
-    break;
-  case 4 :
-    WID->set_context(menu_post, 0); 
-    break;
-  default : // automatic
-    if(List_Nbr(Post_ViewList))
-      WID->set_context(menu_post, 0);
-    else
-      WID->set_context(menu_geometry, 0); 
-    break;
-  }    
-
-  // Read background mesh on disk
-
-  if(TheBgmFileName){
-    MergeProblem(TheBgmFileName);
-    if(List_Nbr(Post_ViewList))
-      BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
-    else
-      Msg(GERROR, "Invalid background mesh (no view)");
-  }
-
-  // Draw the actual scene
-  Draw();
-  CTX.expose = 1 ;
-
-  // loop
-  WID->run();
-
-}
-  
diff --git a/Fltk/Makefile b/Fltk/Makefile
deleted file mode 100644
index c47a140677f1b4f5b67424e0a1872555fef81da8..0000000000000000000000000000000000000000
--- a/Fltk/Makefile
+++ /dev/null
@@ -1,130 +0,0 @@
-# $Id: Makefile,v 1.25 2001-08-11 23:32:19 geuzaine Exp $
-#
-# Makefile for "libFltk.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RM       = rm
-RANLIB   = ranlib
-
-LIB      = ../lib/libFltk.a
-INCLUDE  = -I../Common -I../DataStr -I../Graphics -I../Geo\
-           -I../Mesh -I../Parser -I../Fltk -I../Plugin
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = -D_NOTHREADS -D_FLTK
-
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = -I$(HOME)/SOURCES/fltk
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
-           $(GUI_INCLUDE) $(GL_INCLUDE)
-
-SRC = Main.cpp \
-      Message.cpp \
-      GUI.cpp\
-      Callbacks.cpp\
-      Opengl.cpp\
-      Opengl_Window.cpp\
-      Colorbar_Window.cpp\
-      Socket.cpp\
-      Solvers.cpp
-
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Main.o: Main.cpp ../Plugin/PluginManager.h ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/GmshUI.h ../Common/GmshVersion.h ../Geo/Geo.h \
- ../Geo/Verif.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h ../Common/Options.h ../Parser/Parser.h \
- ../Common/Static.h GUI.h Opengl_Window.h Colorbar_Window.h \
- ../Parser/OpenFile.h ../Common/GetOptions.h
-Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/GmshVersion.h ../Common/Context.h ../Common/Options.h GUI.h \
- Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h
-GUI.o: GUI.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
- ../Common/Options.h ../Common/Message.h ../Common/Gmsh.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Common/GmshVersion.h ../Common/Context.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
- Opengl_Window.h Colorbar_Window.h Callbacks.h ../Common/Bitmaps.h \
- ../Common/Icon.h ../Common/GetOptions.h
-Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Geo/Verif.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Timer.h ../Geo/Visibility.h ../Graphics/CreateFile.h \
- ../Parser/OpenFile.h ../Common/GetOptions.h ../Common/Context.h \
- ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h \
- Callbacks.h ../Plugin/Plugin.h Solvers.h
-Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Common/Context.h ../Geo/Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h GUI.h Opengl_Window.h \
- Colorbar_Window.h ../Graphics/gl2ps.h
-Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Common/GmshUI.h ../Common/Context.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
- Opengl_Window.h Colorbar_Window.h
-Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/GmshUI.h ../Common/Numeric.h GUI.h Opengl_Window.h \
- Colorbar_Window.h ../Common/ColorTable.h ../Common/Context.h
-Socket.o: Socket.cpp ../Common/Message.h
-Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Socket.h ../Parser/OpenFile.h \
- Solvers.h ../Common/GmshUI.h GUI.h Opengl_Window.h Colorbar_Window.h \
- ../Common/ColorTable.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/Context.h
diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp
deleted file mode 100644
index 71370a4ee65e1940f7bcbdc2895e916853940fdc..0000000000000000000000000000000000000000
--- a/Fltk/Message.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-// $Id: Message.cpp,v 1.23 2001-08-12 20:45:30 geuzaine Exp $
-
-#include <unistd.h>
-#include <signal.h>
-#if !defined(WIN32) || defined(__CYGWIN__)
-#include <sys/resource.h>
-#endif
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "GmshVersion.h"
-#include "Context.h"
-#include "Options.h"
-#include "GUI.h"
-
-extern GUI       *WID;
-extern Context_T  CTX;
-
-/* ------------------------------------------------------------------------ */
-/*  S i g n a l                                                             */
-/* ------------------------------------------------------------------------ */
-
-void Signal (int sig_num){
-
-  switch (sig_num){
-  case SIGSEGV : 
-    Msg(FATAL1, "Segmentation violation (invalid memory reference)");
-    Msg(FATAL2, "------------------------------------------------------");
-    Msg(FATAL2, "You have discovered a bug in Gmsh! You may report it");
-    Msg(FATAL2, "by e-mail (together with any helpful data permitting to");
-    Msg(FATAL3, "reproduce it) to <gmsh@geuz.org>"); 
-    break;
-  case SIGFPE : 
-    Msg(FATAL, "Floating point exception (division by zero?)"); 
-    break;
-  case SIGINT :
-    Msg(INFO, "Interrupt (generated from terminal special character)"); 
-    Exit(1);
-    break;
-  default :
-    Msg(FATAL, "Unknown signal");
-    break;
-  }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  M s g                                                                   */
-/* ------------------------------------------------------------------------ */
-
-void Debug(){
-}
-
-void Msg(int level, char *fmt, ...){
-  va_list  args;
-  int      abort = 0, verb = 0, window = -1, log = 1;
-  char     *str = NULL;
-
-  switch(level){
-  case DIRECT   : verb = 2; break ;
-
-  case STATUS1N : log = 0; //fallthrough
-  case STATUS1  : verb = 1; window = 0; break ;
-  case STATUS2N : log = 0; //fallthrough
-  case STATUS2  : verb = 1; window = 1; break ;
-  case STATUS3N : log = 0; //fallthrough
-  case STATUS3  : verb = 1; window = 2; break ;
-
-  case FATAL    : str = FATAL_STR; abort = 1; break ;
-  case FATAL1   : str = FATAL_STR; break ;
-  case FATAL2   : str = FATAL_NIL; break ;
-  case FATAL3   : str = FATAL_NIL; abort = 1; break ;
-				     		  
-  case GERROR   : 		     		  
-  case GERROR1  : str = ERROR_STR; break ;
-  case GERROR2  : 		     
-  case GERROR3  : str = ERROR_NIL; break ;
-				     	  
-  case WARNING  : 		     	  
-  case WARNING1 : str = WARNING_STR; verb = 1; break ;
-  case WARNING2 : 		     	  
-  case WARNING3 : str = WARNING_NIL; verb = 1; break ;
-				     	  
-  case INFO     :		     	  
-  case INFO1    : str = INFO_STR; verb = 2; break ;
-  case INFO2    :		     	  
-  case INFO3    : str = INFO_NIL; verb = 2; break ;
-				     	  
-  case DEBUG    :		     	  
-  case DEBUG1   : str = DEBUG_STR; verb = 3; break ;
-  case DEBUG2   :		     	  
-  case DEBUG3   : str = DEBUG_NIL; verb = 3; break ;
-
-  case PARSER_ERROR : str = PARSER_ERROR_STR ; break ;
-
-  case PARSER_INFO : str = PARSER_INFO_STR ; verb = 2; break ;
-
-  case LOG_INFO : verb = 2 ; window = 3; break ;
-
-  default : return;
-  }
-
-  static char buff1[1024], buff2[1024], buff[4][1024];
-
-  if(!WID)
-    window = -1;
-  else 
-    WID->check();
-
-  if(CTX.verbosity >= verb){
-    va_start (args, fmt);
-
-    if(window >= 0){
-      vsprintf(buff[window], fmt, args); 
-      if(window <= 2) WID->set_status(buff[window], window);
-      if(log && strlen(buff[window])) WID->add_message(buff[window]);
-    }
-    else{
-      strcpy(buff1, "@C1");
-      if(str) strcat(buff1, str);
-      vsprintf(buff2, fmt, args); 
-      strcat(buff1,buff2);
-      if(CTX.terminal) fprintf(stderr, "%s\n", &buff1[3]);
-      if(WID){
-	if(verb<2)
-	  WID->add_message(buff1);
-	else
-	  WID->add_message(&buff1[3]);
-	if(!verb) WID->create_message_window();
-      }
-    }
-    va_end (args);
-  }
-
-  if(abort){
-    Debug();
-    if(WID){
-      WID->save_message(CTX.error_filename);
-      WID->fatal_error(CTX.error_filename);
-    }
-    Exit(1);
-  }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  Exit                                                                    */
-/* ------------------------------------------------------------------------ */
-
-void Exit(int level){
-  if(WID && !CTX.batch){
-    if(CTX.session_save){
-      CTX.position[0] = WID->m_window->x();
-      CTX.position[1] = WID->m_window->y();
-      CTX.gl_position[0] = WID->g_window->x();
-      CTX.gl_position[1] = WID->g_window->y();
-      CTX.msg_position[0] = WID->msg_window->x();
-      CTX.msg_position[1] = WID->msg_window->y();
-      CTX.msg_size[0] = WID->msg_window->w();
-      CTX.msg_size[1] = WID->msg_window->h();
-      Print_Options(0, GMSH_SESSIONRC, CTX.sessionrc_filename);
-    }
-    if(CTX.options_save)
-      Print_Options(0, GMSH_OPTIONSRC, CTX.optionsrc_filename);
-  }
-  unlink(CTX.tmp_filename);//delete temp file
-  exit(level);
-}
-
-/* ------------------------------------------------------------------------ */
-/*  C p u                                                                   */
-/* ------------------------------------------------------------------------ */
-
-void GetResources(long *s, long *us, long *mem){
-#if !defined(WIN32) || defined(__CYGWIN__)
-  static struct rusage r;
-
-  getrusage(RUSAGE_SELF,&r);
-  *s   = (long)r.ru_utime.tv_sec ;
-  *us  = (long)r.ru_utime.tv_usec ;
-  *mem = (long)r.ru_maxrss ;
-#else
-  *s = *us = *mem = 0;
-#endif
-
-}
-
-void PrintResources(char *fmt, long s, long us, long mem){
-  Msg(DIRECT, "Resources = %scpu %ld.%ld s / mem %ld kb\n", fmt, s, us, mem);
-}
-
-double Cpu(void){
-  long s, us, mem;
-  GetResources(&s, &us, &mem);
-  return (double)s + (double)us/1.e6 ;
-}
-
-/* ------------------------------------------------------------------------ */
-/*  P r o g r e s s                                                         */
-/* ------------------------------------------------------------------------ */
-
-void Progress(int i){
-}
-
-/* ------------------------------------------------------------------------ */
-/*  E d i t G e o m e t r y                                                 */
-/* ------------------------------------------------------------------------ */
-
-void AddALineInTheEditGeometryForm (char* line){
-}
diff --git a/Fltk/Opengl.cpp b/Fltk/Opengl.cpp
deleted file mode 100644
index 4adbc4fa260fbf97caf31c56ee116de1ea818741..0000000000000000000000000000000000000000
--- a/Fltk/Opengl.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// $Id: Opengl.cpp,v 1.20 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Context.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "GUI.h"
-#include "gl2ps.h"
-
-extern GUI       *WID;
-extern Mesh       M;
-extern Context_T  CTX;
-
-void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj);
-void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
-                            Curve **thec, Surface **thes, Mesh *m);
-void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
-            GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2);
-
-/* ------------------------------------------------------------------------ */
-/*  Draw                                                               */
-/* ------------------------------------------------------------------------ */
-
-void InitOpengl(void){
-  WID->make_opengl_current();
-  Orthogonalize(0,0);
-}
-
-void InitOverlay(void){
-  WID->make_overlay_current();
-  Orthogonalize(0,0);
-}
-
-void ClearOpengl(void){
-  glClearColor(UNPACK_RED(CTX.color.bg)/255.,
-               UNPACK_GREEN(CTX.color.bg)/255.,
-               UNPACK_BLUE(CTX.color.bg)/255.,
-               0.);
-  glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
-}
-
-void Draw(void){
-  WID->redraw_opengl();
-}
-
-void DrawUI(void){
-  WID->check();
-}
-
-void Draw_String(char *s){
-
-  if(CTX.stream == TO_FILE){
-    if(!CTX.print.gl_fonts && CTX.print.eps_quality > 0){
-      gl2psText(s,CTX.print.font,CTX.print.font_size);
-      return ;
-    }
-  }
-
-  gl_font(FL_HELVETICA, CTX.gl_fontsize);
-  CTX.gl_fontheight = gl_height() ;
-  CTX.gl_fontascent = gl_height()-gl_descent() ;
-  gl_draw(s);
-
-}
-
-/* ------------------------------------------------------------------------ 
-    set_XXX
-   ------------------------------------------------------------------------ */
-
-void set_r(int i, double val){
-  if(!CTX.useTrackball){
-    if(!CTX.rlock[i]){
-      CTX.r[i] = val;
-    }
-  }
-}
-
-void set_t(int i, double val){
-  if(!CTX.tlock[i]){
-    CTX.t[i] = val;
-  }
-}
-
-void set_s(int i, double val){
-  if(!CTX.slock[i]){
-    CTX.s[i] = val;
-  }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  SelectEntity                                                            */
-/* ------------------------------------------------------------------------ */
-
-int check_type(int type, Vertex *v, Curve *c, Surface *s){
-  return ( (type==ENT_POINT   && v) ||
-           (type==ENT_LINE    && c) ||
-           (type==ENT_SURFACE && s) ) ;
-}
-
-int SelectEntity(int type, Vertex **v, Curve **c, Surface **s){
-  int     hits;
-  GLuint  ii[SELECTION_BUFFER_SIZE],jj[SELECTION_BUFFER_SIZE];
-
-  *v = NULL; *c = NULL; *s = NULL;
-
-  WID->selection = type;  
-  WID->try_selection = 0;
-  WID->quit_selection = 0;
-  WID->end_selection = 0;
-
-  while(1){
-    WID->wait();
-    if(WID->quit_selection){
-      WID->quit_selection = 0;
-      WID->selection = 0;
-      return 0;
-    }
-    if(WID->end_selection){
-      WID->end_selection = 0;
-      WID->selection = 0;
-      return -1;
-    }
-    if(WID->try_selection){
-      WID->try_selection = 0;
-      Process_SelectionBuffer(Fl::event_x(), Fl::event_y(), &hits, ii, jj);
-      Filter_SelectionBuffer(hits,ii,jj,v,c,s,&M);
-      if(check_type(type,*v,*c,*s)){
-        BeginHighlight();
-        HighlightEntity(*v,*c,*s,1);
-        EndHighlight(1);
-	WID->selection = 0;
-        return(1);
-      }
-    }
-  }
-
-}
-
-
diff --git a/Fltk/Opengl_Window.cpp b/Fltk/Opengl_Window.cpp
deleted file mode 100644
index e18556e66ea826d31ae3859d2fcc60c038e63115..0000000000000000000000000000000000000000
--- a/Fltk/Opengl_Window.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-// $Id: Opengl_Window.cpp,v 1.17 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "GmshUI.h"
-#include "Context.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "GUI.h"
-#include "Opengl_Window.h"
-
-// This file defines the Opengl_Window class (subclass of Fl_GL_Window)
-
-extern GUI *WID;
-extern Mesh M;
-extern Context_T CTX;
-
-void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj);
-void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
-                            Curve **thec, Surface **thes, Mesh *m);
-void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
-            GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2);
-int check_type(int type, Vertex *v, Curve *c, Surface *s);
-
-static int    ZOOM = 0 ;
-static double ZOOM_X0, ZOOM_Y0, ZOOM_X1, ZOOM_Y1;
-
-void Opengl_Window::draw() {
-  if(!valid()){
-    valid(1);
-    CTX.viewport[0] = 0 ; CTX.viewport[1] = 0 ;
-    CTX.viewport[2] = w() ; CTX.viewport[3] = h() ;
-    glViewport(CTX.viewport[0], CTX.viewport[1],
-	       CTX.viewport[2], CTX.viewport[3]);
-  }
-  if((w() != CTX.viewport[2]-CTX.viewport[0]) ||
-     (h() != CTX.viewport[3]-CTX.viewport[1])){
-    WID->set_size(CTX.viewport[2]-CTX.viewport[0],
-		  CTX.viewport[3]-CTX.viewport[1]);
-    glViewport(CTX.viewport[0], CTX.viewport[1],
-	       CTX.viewport[2], CTX.viewport[3]);
-  }
-  if(!ZOOM){
-    Orthogonalize(0,0);
-    ClearOpengl();
-    Draw3d();
-    Draw2d();
-  }
-  else{
-    glPopMatrix();
-    glDisable(GL_DEPTH_TEST);
-    glDisable(GL_LIGHTING);
-    glMatrixMode(GL_PROJECTION);
-    glPushMatrix();
-    glLoadIdentity();
-    gluOrtho2D(CTX.vxmin, CTX.vxmax, CTX.vymin, CTX.vymax);
-    glMatrixMode(GL_MODELVIEW);
-    glPushMatrix();
-    glLoadIdentity();
-    glDisable(GL_DEPTH_TEST);
-    glColor3f(1.,1.,1.);
-    glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
-    glEnable(GL_BLEND);
-    glBegin(GL_LINE_STRIP);
-    glVertex2d(ZOOM_X0, ZOOM_Y0);
-    glVertex2d(ZOOM_X1, ZOOM_Y0);
-    glVertex2d(ZOOM_X1, ZOOM_Y1);
-    glVertex2d(ZOOM_X0, ZOOM_Y1);
-    glVertex2d(ZOOM_X0, ZOOM_Y0);
-    glEnd();
-    ZOOM_X1 = CTX.vxmin + ((double)Fl::event_x()/(double)w()) * (CTX.vxmax - CTX.vxmin);
-    ZOOM_Y1 = CTX.vymax - ((double)Fl::event_y()/(double)h()) * (CTX.vymax - CTX.vymin);
-    glBegin(GL_LINE_STRIP);
-    glVertex2d(ZOOM_X0, ZOOM_Y0);
-    glVertex2d(ZOOM_X1, ZOOM_Y0);
-    glVertex2d(ZOOM_X1, ZOOM_Y1);
-    glVertex2d(ZOOM_X0, ZOOM_Y1);
-    glVertex2d(ZOOM_X0, ZOOM_Y0);
-    glEnd();
-    glDisable(GL_BLEND);
-    glEnable(GL_DEPTH_TEST);
-    glPopMatrix();
-    glMatrixMode(GL_PROJECTION);
-    glPopMatrix();
-    glMatrixMode(GL_MODELVIEW);
-    ZOOM = 0;
-  }
-}
-
-void Opengl_Window::draw_overlay() {
-}
-
-void Opengl_Window::clear_overlay() {
-}
-
-
-// le principe de FLTK est assez different des autres toolkits: les
-// events sont passes au handle du widget qui a le focus. Si ce handle
-// revoie 1, alors l'event est considere comme traite, et est
-// supprime. Si le handle retourne 0, l'event est passe au handle du
-// parent.
-
-int Opengl_Window::handle(int event) {
-  static int      xpos, ypos, xmov, ymov, ibut, hits;
-  static int      ZoomClick=0, FirstClick=0;
-  static GLdouble xc, yc, xc1, yc1, xc2, yc2, xt1, yt1, xscale1, yscale1;
-  static Vertex   *v=NULL, *ov;
-  static Curve    *c=NULL, *oc;
-  static Surface  *s=NULL, *os;
-
-  GLuint  ii[SELECTION_BUFFER_SIZE], jj[SELECTION_BUFFER_SIZE];
-
-  switch (event) {
-
-  case FL_PUSH:
-    FirstClick = 1;
-    ibut = Fl::event_button();
-    xpos = Fl::event_x();
-    ypos = Fl::event_y();
-
-    if(ibut == 1 && !Fl::event_state(FL_SHIFT)){
-      if(!ZoomClick && Fl::event_state(FL_CTRL)){
-        ZOOM_X0 = ZOOM_X1 = CTX.vxmin + ((double)xpos/(double)w()) * (CTX.vxmax - CTX.vxmin);
-        ZOOM_Y0 = ZOOM_Y1 = CTX.vymax - ((double)ypos/(double)h()) * (CTX.vymax - CTX.vymin);
-        xc1 = ZOOM_X0/CTX.s[0] - CTX.t[0];
-        yc1 = ZOOM_Y0/CTX.s[1] - CTX.t[1];
-        ZoomClick = 1;
-      }
-      else if(ZoomClick){
-        xc2 = ZOOM_X1/CTX.s[0] - CTX.t[0];
-        yc2 = ZOOM_Y1/CTX.s[1] - CTX.t[1];     
-        ZoomClick = 0;
-        clear_overlay();
-        if(ZOOM_X0 != ZOOM_X1 && ZOOM_Y0 != ZOOM_Y1)
-	  myZoom(ZOOM_X0,ZOOM_X1,ZOOM_Y0,ZOOM_Y1,xc1,xc2,yc1,yc2);
-      }
-      else{
-	WID->try_selection = 1 ;
-      }
-    }
-    else if(ibut == 2 || (ibut == 1 && Fl::event_state(FL_SHIFT))){
-      if(Fl::event_state(FL_CTRL) && !ZoomClick){
-        set_s(1, CTX.s[0]);
-        set_s(2, CTX.s[0]);
-        redraw();
-      }
-      else{
-        ZoomClick = 0;
-        clear_overlay();
-      }
-    }
-    else{
-      if(Fl::event_state(FL_CTRL) && !ZoomClick){
-	if(CTX.useTrackball)
-	  CTX.setQuaternion(0.,0.,0.,1.);
-	else{
-	  set_r(0,0.); set_r(1,0.); set_r(2,0.); 
-	}
-        set_t(0,0.); set_t(1,0.); set_t(2,0.);
-        set_s(0,1.); set_s(1,1.); set_s(2,1.);
-        redraw();
-      }
-      else{
-        ZoomClick = 0;
-        clear_overlay();
-      }
-    }
-    return 1;
-
-  case FL_RELEASE:
-    ibut = Fl::event_button();
-    xpos = Fl::event_x();
-    ypos = Fl::event_y();
-    if(!ZoomClick){
-      CTX.mesh.draw = 1 ;
-      CTX.post.draw = 1 ;
-      redraw();
-    }
-    return 1;
-
-  case FL_DRAG:
-    xmov = Fl::event_x() - xpos;
-    ymov = Fl::event_y() - ypos;
-
-    if(ZoomClick) {
-      ZOOM = 1;
-      redraw();
-    }
-    else {
-      clear_overlay();
-
-      if(FirstClick){
-	xc1 = (((double)xpos/(double)w()) * (CTX.vxmax-CTX.vxmin) + CTX.vxmin)
-	  / CTX.s[0] - CTX.t[0];
-	yc1 = (CTX.vymax - ((double)ypos/(double)h()) * (CTX.vymax-CTX.vymin))
-	  / CTX.s[1] - CTX.t[1];
-	xt1 = CTX.t[0];
-	yt1 = CTX.t[1];
-	xscale1 = CTX.s[0];
-	yscale1 = CTX.s[1];
-	FirstClick=0;
-      }
-
-      if(ibut == 1 && !Fl::event_state(FL_SHIFT)){
-	if(CTX.useTrackball)
-	  CTX.addQuaternion((2.0*xpos - w()) / w(),
-			    (h() - 2.0*ypos) / h(),
-			    (2.0*Fl::event_x() - w()) / w(),
-			    (h() - 2.0*Fl::event_y()) / h());
-	else{
-	  set_r(1, CTX.r[1] + ((abs(xmov) > abs(ymov))?180*(float)xmov/(float)w():0));
-	  set_r(0, CTX.r[0] + ((abs(xmov) > abs(ymov))?0:180*(float)ymov/(float)h()));
-	}
-      }
-      else if(ibut == 2 || (ibut == 1 && Fl::event_state(FL_SHIFT))){
-	if(!CTX.useTrackball)
-	  set_r(2, CTX.r[2] + ((abs(ymov) > abs(xmov))?0:-180*(float)xmov/(float)w()));         
-	set_s(0, CTX.s[0] * ( (abs(ymov) > abs(xmov)) ?
-			      ( (ymov>0) ? (float)(CTX.zoom_factor*(abs(ymov)+h()))/(float)h()
-				: (float)(h())/(float)(CTX.zoom_factor*(abs(ymov)+h())) )
-			      : 1.) );                    
-	set_s(1, CTX.s[0]);
-	set_s(2, CTX.s[0]);
-	if(abs(ymov) > abs(xmov)){
-	  set_t(0, xt1*(xscale1/CTX.s[0])-xc1*(1.-(xscale1/CTX.s[0])));
-	  set_t(1, yt1*(yscale1/CTX.s[1])-yc1*(1.-(yscale1/CTX.s[1])));
-	}
-      }
-      else{
-	xc = ( ((double)xpos/(double)w()) * (CTX.vxmax - CTX.vxmin) + CTX.vxmin )
-	  / CTX.s[0];
-	yc = ( CTX.vymax - ((double)ypos/(double)h()) * (CTX.vymax - CTX.vymin))
-	  / CTX.s[1];
-	set_t(0, xc-xc1);
-	set_t(1, yc-yc1);
-	set_t(2, 0.);
-      }
-
-      if(CTX.fast){
-	CTX.mesh.draw = 0 ;
-	CTX.post.draw = 0;
-      }
-      
-      redraw();
-    }
-
-    xpos += xmov; 
-    ypos += ymov; 
-    return 1;
-    
-
-  case FL_MOVE:
-    xmov = Fl::event_x()-xpos;
-    ymov = Fl::event_y()-ypos;
-
-    if(ZoomClick) {
-      ZOOM = 1;
-      redraw();
-    }
-    else {
-      WID->make_opengl_current();
-      Process_SelectionBuffer(Fl::event_x(), Fl::event_y(), &hits, ii, jj);
-      ov = v; oc = c; os = s; v = NULL; c = NULL; s = NULL;
-      Filter_SelectionBuffer(hits,ii,jj,&v,&c,&s,&M);
-      if(ov != v || oc != c || os != s) { 
-	if(check_type(WID->selection, v, c, s))
-	  WID->g_window->cursor(FL_CURSOR_CROSS,FL_BLACK,FL_WHITE);
-	else
-	  WID->g_window->cursor(FL_CURSOR_DEFAULT,FL_BLACK,FL_WHITE);
-	BeginHighlight();
-	HighlightEntity(v,c,s,0);
-	EndHighlight(0);
-      }
-    }
-
-    xpos += xmov; 
-    ypos += ymov; 
-    return 1;
-
-  default:
-    return Fl_Gl_Window::handle(event);
-
-  }
-
-}
-
diff --git a/Fltk/Opengl_Window.h b/Fltk/Opengl_Window.h
deleted file mode 100644
index ae48f4df5425ea781a199cd6a00a6fe86fe64216..0000000000000000000000000000000000000000
--- a/Fltk/Opengl_Window.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef _OPENGL_WINDOW_H_
-#define _OPENGL_WINDOW_H_
-
-class Opengl_Window : public Fl_Gl_Window {
-  void draw();
-  void draw_overlay();
-  int handle(int);
-
-  // new
-  void clear_overlay();
-
-public:
-  Opengl_Window(int x,int y,int w,int h,const char *l=0)
-    : Fl_Gl_Window(x, y, w, h, l) {}
-};
-
-#endif
diff --git a/Fltk/Socket.cpp b/Fltk/Socket.cpp
deleted file mode 100644
index 625f78ce977288e7e68f35f303fd4f02008054e7..0000000000000000000000000000000000000000
--- a/Fltk/Socket.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/* $Id: Socket.cpp,v 1.11 2001-05-21 13:01:13 geuzaine Exp $ */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef _AIX
-#include <strings.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/un.h>
-#include <sys/time.h>
-#include <unistd.h>
-
-#include "Message.h"
-
-int Socket_ReceiveData(int socket, void *buffer, int bytes){
-  int sofar, remaining, len;
-  char *buf;
-  
-  buf = (char*)buffer;
-  sofar = 0;
-  remaining = bytes;
-  do {
-    len = read(socket, buf + sofar, remaining);
-    if (len<=0) return 0;
-    sofar += len;
-    remaining -= len;
-  } while (remaining>0);
-  return bytes;
-}
-
-void Socket_SendData(int socket, void *buffer, int bytes){
-  int sofar, remaining, len;
-  char *buf;
-  
-  buf = (char*)buffer;
-  sofar = 0;
-  remaining = bytes;
-  do {
-    len = write(socket, buf + sofar, remaining);
-    sofar += len;
-    remaining -= len;
-  } while (remaining>0);
-}
-
-int Socket_ReceiveInt(int socket, int *i){
-  return Socket_ReceiveData(socket, i, sizeof(int));
-}
-
-void Socket_SendInt(int socket, int i){
-  Socket_SendData(socket, &i, sizeof(int));
-}
-
-int Socket_ReceiveDouble(int socket, double *x){
-  return Socket_ReceiveData(socket, x, sizeof(double));
-}
-
-void Socket_SendDouble(int socket, double x){
-  Socket_SendData(socket, &x, sizeof(double));
-}
-
-int Socket_ReceiveString(int socket, char str[]){
-   int len;
-
-   if (Socket_ReceiveInt(socket, &len)) {
-     if (Socket_ReceiveData(socket, str, len)==len) {
-       str[len] = '\0';
-       return 1;
-     }
-   }
-   return 0;
-}
-
-void Socket_SendString(int socket, char str[]){
-  int len;
-  
-  len = strlen(str);
-  Socket_SendInt(socket, len);
-  Socket_SendData(socket, str, len);
-}
-
-int Socket_UnlinkName(char *name){
-#ifdef _AIX
-   char name2[1000];
-   strcpy(name2,name);
-   name2[strlen(name2)-1] = '\0';
-   return unlink(name2);
-#else
-   return unlink(name);
-#endif
-}
-
-int Socket_StartProgram(char *progname, char *sockname){
-  int s, sock;
-#ifdef linux
-  socklen_t len ;
-#else
-  int len;
-#endif
-  struct sockaddr_un addr, from;
-  char command[1000];
-  fd_set rfds;
-  struct timeval tv;
-  int retval;
-
-  /* first delete the socket's name if it exists */
-  Socket_UnlinkName(sockname);
-  
-  /* make the socket */
-  s = socket(PF_UNIX, SOCK_STREAM, 0);
-  if (s<0) {
-    Msg(GERROR, "Couldn't create socket");
-    return -1;
-  }
-  
-  /* bind the socket to its name */
-  strcpy(addr.sun_path, sockname);
-  addr.sun_family = AF_UNIX;
-  if(bind(s, (struct sockaddr *)&addr, strlen(addr.sun_path)+sizeof(addr.sun_family)) < 0) {
-    Msg(GERROR, "Couldn't bind socket to name '%s'", sockname);
-    return -1;
-  }
-  
-  /* change permissions on the socket name in case it has to be rm'd later */
-  chmod(sockname, 0666);
-  
-  /* Start the external function via system() call */
-  sprintf(command, "%s -socket %s &", progname, sockname);
-  system(command);
-  
-  /* wait for external function to connect */
-  if(listen(s, 20)) Msg(GERROR, "Socket listen failed");
-  
-  /* Watch s to see when it has input. */
-  /* Wait up to 2 seconds */
-  tv.tv_sec = 2;
-  tv.tv_usec = 0;
-  FD_ZERO(&rfds);
-  FD_SET(s, &rfds);
-  retval = select(s+1, &rfds, NULL, NULL, &tv);
-  
-  if(!retval){
-    Msg(GERROR, "Socket listening timeout");	
-    return -1;
-  }
-  
-  len = sizeof(from);
-  if ( (sock = accept(s, (struct sockaddr *)&from, &len)) < 0) {
-    Msg(GERROR, "Socket accept failed");	
-    return -1;
-  }
-  
-  close(s); /* don't need this socket anymore */
-  
-  return sock;
-}
-
-int Socket_StopProgram(char *progname, char *sockname, int sock){
-  if(Socket_UnlinkName(sockname)==-1)
-    Msg(WARNING, "Impossible to unlink the socket '%s'", sockname);
-  close(sock);
-  return 0;
-}
-
-long Socket_GetTime(){
-  struct timeval tp;
-  gettimeofday(&tp, (struct timezone *)0);
-  return (long)tp.tv_sec * 1000000 + (long)tp.tv_usec;
-}
-
-void Socket_Idle(double delay){
-  long t1 = Socket_GetTime();
-  while(1){
-    if(Socket_GetTime() - t1 > 1.e6*delay) break;
-  }
-}
-
-int Socket_Connect(char *sockname){
-  struct sockaddr_un addr;
-  int len, sock;
-  int tries;
-
-  /* slight delay to be sure that the socket is bind by the
-     server before we attempt to connect to it... */
-  Socket_Idle(0.1);
-
-  /* create socket */
-  sock = socket(PF_UNIX, SOCK_STREAM, 0);
-  if (sock<0){
-    Msg(GERROR, "Couldn't create socket");
-    return -1;
-  }
-
-  /* try to connect socket to given name */
-  strcpy(addr.sun_path, sockname);
-  addr.sun_family = AF_UNIX;
-  len = strlen(addr.sun_path)+sizeof(addr.sun_family);
-  for (tries=0;tries<5;tries++) {
-    if (connect(sock, (struct sockaddr *)&addr, len) < 0) {
-      Msg(WARNING, "Socket connect failed on '%s'", sockname);
-    }
-    else {
-      return sock;
-    }
-  }
-   
-  return -1;
-}
-
-
-void Socket_Close(int sock){
-  close(sock);
-}
diff --git a/Fltk/Socket.h b/Fltk/Socket.h
deleted file mode 100644
index a25f56bb97bffa24c37c7a8b9cd80e3d4ae0f4f5..0000000000000000000000000000000000000000
--- a/Fltk/Socket.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef _SOCKET_H_
-#define _SOCKET_H_
-
-int  Socket_ReceiveData(int socket, void *buffer, int bytes);
-void Socket_SendData(int socket, void *buffer, int bytes);
-int  Socket_ReceiveInt(int socket, int *i);
-void Socket_SendInt(int socket, int i);
-int  Socket_ReceiveDouble(int socket, double *x);
-void Socket_SendDouble(int socket, double x);
-int  Socket_ReceiveString(int socket, char str[]);
-void Socket_SendString(int socket, char str[]);
-int  Socket_StartProgram(char *progname, char *sockname);
-int  Socket_StopProgram(char *progname, char *sockname, int sock);
-int  Socket_Connect(char *sockname);
-void Socket_Close(int sock);
-
-#endif
diff --git a/Fltk/Solvers.cpp b/Fltk/Solvers.cpp
deleted file mode 100644
index 36850d2b11853d1fc66a48c247aaa819f37dc1ba..0000000000000000000000000000000000000000
--- a/Fltk/Solvers.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// $Id: Solvers.cpp,v 1.7 2001-05-21 13:01:13 geuzaine Exp $
-
-#include "Gmsh.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/un.h>
-#include <unistd.h>
-
-#include "Socket.h"
-#include "OpenFile.h"
-#include "Solvers.h"
-#include "GmshUI.h"
-#include "GUI.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-
-extern Context_T  CTX;
-extern GUI       *WID;
-
-
-// interface to GetDP
-
-_GetDP_Info GetDP_Info ;
-
-int GetDP(char *args){
-  int sock, type, i, n;
-  char progname[1000], sockname[1000], str[1000];
-
-  strcpy(sockname, CTX.home_dir);
-  strcat(sockname, ".gmshsock");
-
-  sprintf(progname, "%s %s", GetDP_Info.command, args);
-  sock = Socket_StartProgram(progname, sockname);
-  if(sock<0){
-    Msg(GERROR, "Could not execute '%s'", progname);
-    WID->getdp_choice[0]->clear();
-    WID->getdp_choice[1]->clear();
-    return 0;
-  }
-
-  Socket_ReceiveInt(sock, &GetDP_Info.pid);
-
-  Msg(INFO, "GetDP start (%s)", progname);
-
-  GetDP_Info.nbres = 0;
-  GetDP_Info.nbpostop = 0;
-
-  while(1){
-    if(GetDP_Info.pid < 0) break;
-
-    Socket_ReceiveInt(sock, &type);
-
-    if(type == GETDP_END) break;
-
-    Socket_ReceiveString(sock, str);
-
-    switch(type){
-    case GETDP_PROGRESS :
-      Msg(STATUS3N, "GetDP %s", str);
-      break ;
-    case GETDP_RESOLUTION_NAME :
-      strcpy(GetDP_Info.res[GetDP_Info.nbres++],str);
-      break ;
-    case GETDP_POSTOPERATION_NAME :
-      strcpy(GetDP_Info.postop[GetDP_Info.nbpostop++],str);
-      break ;
-    case GETDP_LOAD_VIEW :
-      if(GetDP_Info.mergeviews){
-	n = List_Nbr(Post_ViewList);
-	MergeProblem(str);
-	Draw(); 
-	if(n != List_Nbr(Post_ViewList))
-	  WID->set_context(menu_post, 0);
-      }
-      break ;
-    case GETDP_INFO :
-      Msg(DIRECT, "GetDP > %s", str);
-      break;
-    default :
-      Msg(WARNING, "Unknown type of message received from GetDP");
-      Msg(DIRECT, "GetDP > %s", str);
-      break ;
-    }
-
-  }
-
-  if(GetDP_Info.nbres){
-    WID->getdp_choice[0]->clear();
-    for(i=0;i<GetDP_Info.nbres;i++) 
-      WID->getdp_choice[0]->add(GetDP_Info.res[i]);
-    WID->getdp_choice[0]->value(0);
-  }
-
-  if(GetDP_Info.nbpostop){
-    WID->getdp_choice[1]->clear();
-    for(i=0;i<GetDP_Info.nbpostop;i++) 
-      WID->getdp_choice[1]->add(GetDP_Info.postop[i]);
-    WID->getdp_choice[1]->value(0);
-  }
-
-  Msg(STATUS3N, "Ready");
-
-  Socket_StopProgram(progname, sockname, sock);
-
-  GetDP_Info.pid = -1;
-
-  Msg(INFO, "GetDP stop (%s)", progname);
-
-  return 1;
-}
-
-
-
diff --git a/Fltk/Solvers.h b/Fltk/Solvers.h
deleted file mode 100644
index 9cfdc646e907ea5f18e9c59d67db88c167bba4e2..0000000000000000000000000000000000000000
--- a/Fltk/Solvers.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _SOLVERS_H_
-#define _SOLVERS_H_
-
-// Message protocol for GetDP
-
-#define GETDP_END                 -1
-#define GETDP_INFO                 1
-#define GETDP_PROGRESS             2
-#define GETDP_RESOLUTION_NAME      3
-#define GETDP_POSTOPERATION_NAME   4
-#define GETDP_LOAD_VIEW            5
-
-typedef struct{
-  char command[256];
-  int popupmessages, mergeviews;
-  int pid;
-  int nbres, nbpostop;
-  char res[100][100];
-  char postop[100][100];
-} _GetDP_Info ;
-
-extern _GetDP_Info GetDP_Info ;
-
-int GetDP(char *args);
-
-
-#endif
-
diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp
deleted file mode 100644
index 85df308ff7e6b25b5c4d4a03f0f0247bc67d18e5..0000000000000000000000000000000000000000
--- a/Geo/CAD.cpp
+++ /dev/null
@@ -1,1740 +0,0 @@
-// $Id: CAD.cpp,v 1.27 2001-08-12 12:30:49 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "DataBase.h"
-#include "Interpolation.h"
-#include "Create.h"
-#include "CAD.h"
-#include "Edge.h"
-#include "Context.h"
-                                    
-extern Mesh      *THEM;
-extern Context_T  CTX;
-extern int        CurrentNodeNumber;
-
-static int      MAXREG,MAXPOINT;
-static List_T  *ListOfTransformedPoints=NULL;
-
-int compare2Lists (List_T *List1, List_T *List2,
-                   int (*fcmp)(const void *a, const void *b)){
-  int i,found;
-
-  if(List_Nbr(List1) != List_Nbr(List2))return  List_Nbr(List1) - List_Nbr(List2);
-  
-  List_T *List1Prime = List_Create(List_Nbr(List1),1,List1->size);
-  List_T *List2Prime = List_Create(List_Nbr(List2),1,List2->size);
-  List_Copy(List1,List1Prime);
-  List_Copy(List2,List2Prime);
-  List_Sort(List1Prime,fcmp);
-  List_Sort(List2Prime,fcmp);
-  
-  for(i=0;i<List_Nbr(List1Prime);i++){
-    found = fcmp(List_Pointer(List1Prime,i),
-                 List_Pointer(List2Prime,i));
-    if(found != 0){
-      List_Delete(List1Prime);
-      List_Delete(List2Prime);
-      return found;
-    }
-  }
-  List_Delete(List1Prime);
-  List_Delete(List2Prime);
-  return 0;
-}
-
-void MaxNumCurve(void *a, void *b){
-  Curve *c = *(Curve**)a;
-  MAXREG = (c->Num>MAXREG)?c->Num:MAXREG;
-}
-
-void MaxNumSurface(void *a, void *b){
-  Surface *s = *(Surface**)a;
-  MAXREG = (s->Num>MAXREG)?s->Num:MAXREG;
-}
-
-void MaxNumEdgeLoop(void *a, void *b){
-  EdgeLoop *s = *(EdgeLoop**)a;
-  MAXREG = (s->Num>MAXREG)?s->Num:MAXREG;
-}
-
-void MaxNumSurfaceLoop(void *a, void *b){
-  SurfaceLoop *s = *(SurfaceLoop**)a;
-  MAXREG = (s->Num>MAXREG)?s->Num:MAXREG;
-}
-
-void MaxNumPoint(void *a, void *b){
-  Vertex *v = *(Vertex**)a;
-  MAXPOINT = (v->Num>MAXPOINT)?v->Num:MAXPOINT;
-}
-
-void dist_ddg(double x1,double y1,double z1,
-              double x2,double y2,double z2,
-              double x3,double y3,double z3,
-              double x4,double y4,double z4,
-              double *x,double *y,double *z){
-
-  double v[3],u[3],d;
-
-  u[0] = x1-x3;
-  u[1] = y1-y3;
-  u[2] = z1-z3;
-
-  v[0] = x4-x3;
-  v[1] = y4-y3;
-  v[2] = z4-z3;
-
-  norme(v);
-  prosca(u,v,&d);
-
-  *x = d* x4 + x3 * (1.-d);
-  *y = d* y4 + y3 * (1.-d);
-  *z = d* z4 + z3 * (1.-d);
-}
-
-
-int NEWREG(void){
-  MAXREG = 0;
-  PhysicalGroup *p;
-  Tree_Action(THEM->Curves,MaxNumCurve);
-  Tree_Action(THEM->Surfaces,MaxNumSurface);
-  Tree_Action(THEM->EdgeLoops,MaxNumEdgeLoop);
-  Tree_Action(THEM->SurfaceLoops,MaxNumSurfaceLoop);
-  for(int i=0;i<List_Nbr(THEM->PhysicalGroups);i++){
-    List_Read( THEM->PhysicalGroups , i, &p);
-    MAXREG = IMAX(MAXREG,p->Num);
-  }
-  return MAXREG+1;
-}
-
-int NEWPOINT(void){
-  MAXPOINT = 0;
-  Tree_Action(THEM->Points,MaxNumPoint);
-  return MAXPOINT+1;
-}
-
-Vertex *FindPoint(int inum, Mesh *M){
-  Vertex  C,*pc;
-  pc = &C;
-  pc->Num = inum;
-  if(Tree_Query(M->Points,&pc)){
-    return pc;
-  }
-  return NULL;
-}
-
-Vertex *FindVertex(int inum, Mesh *M){
-  Vertex  C,*pc;
-  pc = &C;
-  pc->Num = inum;
-  if(Tree_Query(M->Vertices,&pc)){
-    return pc;
-  }
-  return NULL;
-}
-
-
-
-Curve *FindCurve(int inum, Mesh *M){
-  Curve C,*pc;
-  pc = &C;
-  pc->Num = inum;
-  if(Tree_Query(M->Curves,&pc)){
-    return pc;
-  }
-  return NULL;
-}
-
-Surface *FindSurface(int inum, Mesh *M){
-  Surface S,*ps;
-  ps = &S;
-  ps->Num = inum;
-  if(Tree_Query(M->Surfaces,&ps)){
-    return ps;
-  }
-  return NULL;
-}
-
-Volume *FindVolume(int inum, Mesh *M){
-  Volume V,*pv;
-  pv = &V;
-  pv->Num = inum;
-  if(Tree_Query(M->Volumes,&pv)){
-    return pv;
-  }
-  return NULL;
-}
-
-EdgeLoop *FindEdgeLoop(int inum, Mesh *M){
-  EdgeLoop S,*ps;
-  ps = &S;
-  ps->Num = inum;
-  if(Tree_Query(M->EdgeLoops,&ps)){
-    return ps;
-  }
-  return NULL;
-}
-
-SurfaceLoop *FindSurfaceLoop(int inum, Mesh *M){
-  SurfaceLoop S,*ps;
-  ps = &S;
-  ps->Num = inum;
-  if(Tree_Query(M->SurfaceLoops,&ps)){
-    return ps;
-  }
-  return NULL;
-}
-
-/*
-  S = (sx(u,v),sy(u,v),sz(u,v))
-  C = (cx(w),cy(w),cz(w))
-
-  sx - cx = 0
-  sy - cy = 0
-  sz - cz = 0
-  
-  3eqs 3incs
-*/
-
-static Curve *CURVE, *CURVE_2;
-static Surface *SURFACE;
-static Vertex *VERTEX;
-extern double min1d (int, double (*funct)(double), double *xmin);
-extern void newt(float x[], int n, int *check,
-                 void (*vecfunc)(int, float [], float []));
-
-static void intersectCS (int N, float x[], float res[]){
-  //x[1] = u x[2] = v x[3] = w
-  Vertex s,c;
-  s = InterpolateSurface(SURFACE,x[1],x[2],0,0);
-  c = InterpolateCurve (CURVE,x[3],0);
-  res[1] = s.Pos.X - c.Pos.X;
-  res[2] = s.Pos.Y - c.Pos.Y;
-  res[3] = s.Pos.Z - c.Pos.Z;
-}
-
-static void intersectCC (int N, float x[], float res[]){
-  //x[1] = u x[2] = v
-  Vertex c2,c;
-  c2 = InterpolateCurve(CURVE_2,x[2],0);
-  c = InterpolateCurve (CURVE,x[1],0);
-  res[1] = c2.Pos.X - c.Pos.X;
-  res[2] = c2.Pos.Y - c.Pos.Y;
-}
-
-static void projectPS (int N, float x[], float res[]){
-  //x[1] = u x[2] = v
-  Vertex du,dv,c;
-  c  = InterpolateSurface(SURFACE,x[1],x[2],0,0);
-  du = InterpolateSurface(SURFACE,x[1],x[2],1,1);
-  dv = InterpolateSurface(SURFACE,x[1],x[2],1,2);
-  res[1] =
-    (c.Pos.X - VERTEX->Pos.X)*du.Pos.X +
-    (c.Pos.Y - VERTEX->Pos.Y)*du.Pos.Y +
-    (c.Pos.Z - VERTEX->Pos.Z)*du.Pos.Z;
-  res[2] = 
-    (c.Pos.X - VERTEX->Pos.X)*dv.Pos.X +
-    (c.Pos.Y - VERTEX->Pos.Y)*dv.Pos.Y +
-    (c.Pos.Z - VERTEX->Pos.Z)*dv.Pos.Z;
-}
-
-static double projectPC (double u){
-  //x[1] = u x[2] = v
-  if(u<CURVE->ubeg)u = CURVE->ubeg;
-  if(u<CURVE->ubeg)u = CURVE->ubeg;
-  Vertex c;
-  c = InterpolateCurve(CURVE,u,0);
-  return sqrt(  DSQR(c.Pos.X -VERTEX->Pos.X)+
-                DSQR(c.Pos.Y -VERTEX->Pos.Y)+
-                DSQR(c.Pos.Z -VERTEX->Pos.Z));
-}
-
-static int UFIXED=0;
-static double FIX;
-static double projectPCS (double u){
-  //x[1] = u x[2] = v
-  double tmin,tmax;
-  if(UFIXED){
-    tmin = SURFACE->kv[0];
-    tmax = SURFACE->kv[SURFACE->Nv+SURFACE->OrderV];
-  }
-  else{
-    tmin = SURFACE->ku[0];
-    tmax = SURFACE->ku[SURFACE->Nu+SURFACE->OrderU];
-  }
-  
-  if(u<tmin)u = tmin;
-  if(u>tmax)u = tmax;
-  Vertex c;
-  if(UFIXED)
-    c = InterpolateSurface(SURFACE,FIX,u,0,0);
-  else
-    c = InterpolateSurface(SURFACE,u,FIX,0,0);
-  return sqrt(DSQR(c.Pos.X -VERTEX->Pos.X)+
-              DSQR(c.Pos.Y -VERTEX->Pos.Y)+
-              DSQR(c.Pos.Z -VERTEX->Pos.Z));
-}
-
-bool ProjectPointOnCurve (Curve *c, Vertex *v, Vertex *RES, Vertex *DER){
-  double xmin;
-  CURVE = c;
-  VERTEX = v;
-  min1d (0, projectPC, &xmin);
-  *RES = InterpolateCurve(CURVE,xmin,0);
-  *DER = InterpolateCurve(CURVE,xmin,1);
-  if(xmin > c->uend){
-    *RES = InterpolateCurve(CURVE,c->uend,0);
-    *DER = InterpolateCurve(CURVE,c->uend,1);
-  }
-  else if(xmin < c->ubeg){
-    *RES = InterpolateCurve(CURVE,c->ubeg,0);
-    *DER = InterpolateCurve(CURVE,c->ubeg,1);
-  }
-  return true;
-}
-
-bool search_in_boundary ( Surface *s, Vertex *p, double t, int Fixu, 
-                          double *uu, double *vv){
-  double l,umin,vmin,lmin = 1.e24;
-  int i,N;
-  Vertex vr;
-  double tmin, tmax,u,v;
-  
-  if(Fixu){
-    tmin = s->kv[0];
-    tmax = s->kv[s->Nv+s->OrderV];
-    N = 3*s->Nu;
-  }
-  else{
-    tmin = s->ku[0];
-    tmax = s->ku[s->Nu+s->OrderU];
-    N = 3*s->Nv;
-  }
-  for(i=0;i<N;i++){
-    if(Fixu){
-      u = t;
-      v = tmin + (tmax-tmin)*(double)(i)/(double)(N-1);
-    }
-    else {
-      v = t;
-      u = tmin + (tmax-tmin)*(double)(i)/(double)(N-1);
-    }
-    vr = InterpolateSurface(SURFACE,u,v,0,0);
-    l =  sqrt(DSQR(vr.Pos.X - p->Pos.X) +  
-              DSQR(vr.Pos.Y - p->Pos.Y) +
-              DSQR(vr.Pos.Z - p->Pos.Z));
-    if(l<lmin){
-      lmin = l;
-      umin = u;
-      vmin = v;
-    }
-  }
-
-  FIX = t;
-  UFIXED = Fixu;
-  double xm;
-  if(Fixu)xm = vmin;
-  else xm = umin;
-  if(lmin > 1.e-3) min1d (0, projectPCS, &xm);
-  if(Fixu){
-    *uu = t;
-    *vv = xm;
-  }
-  else{
-    *vv = t;
-    *uu = xm;
-  }
-  vr = InterpolateSurface(SURFACE,*uu,*vv,0,0);
-  l =  sqrt(DSQR(vr.Pos.X - p->Pos.X) +
-            DSQR(vr.Pos.Y - p->Pos.Y) +
-            DSQR(vr.Pos.Z - p->Pos.Z));
-  if(l<1.e-3)return true;
-  return false;
-}
-
-bool try_a_value(Surface *s, Vertex *p, double u, double v,double *uu, double *vv){
-  Vertex vr = InterpolateSurface(s,u,v,0,0);
-  double l =  sqrt(DSQR(vr.Pos.X - p->Pos.X) +  
-                   DSQR(vr.Pos.Y - p->Pos.Y) + 
-                   DSQR(vr.Pos.Z - p->Pos.Z));
-  *uu = u;*vv=v;
-  if(l<1.e-3)return true;
-  return false;
-}
-
-bool ProjectPointOnSurface (Surface *s, Vertex &p){
-  float x[3] = {0.5,0.5,0.5};
-  Vertex vv;
-  int check;
-  SURFACE = s;
-  VERTEX = &p;
-  double UMIN = 0.;
-  double UMAX = 1.;
-  double VMIN = 0.;
-  double VMAX = 1.;
-  while(1){
-    newt(x,2,&check,projectPS);
-    vv = InterpolateSurface(s,x[1],x[2],0,0);
-    if(x[1] >= UMIN && x[1] <= UMAX && x[2] >=VMIN && x[2] <= VMAX)break;
-    x[1] = UMIN + (UMAX-UMIN)*((rand() % 10000)/10000.);
-    x[2] = VMIN + (VMAX-VMIN)*((rand() % 10000)/10000.);
-  }
-  p.Pos.X = vv.Pos.X;
-  p.Pos.Y = vv.Pos.Y;
-  p.Pos.Z = vv.Pos.Z;
-  if(!check){
-    return false;
-  }
-  return true;
-}
-
-bool ProjectPointOnSurface (Surface *s, Vertex *p,double *u, double *v){
-  static float x[3];
-  int check;
-  static int deb = 1;
-  double VMIN,VMAX,UMIN,UMAX,l, lmin;
-  Vertex vv;
-
-  SURFACE = s;
-  VERTEX = p;
-  lmin = 1.e24;
-  UMAX = s->ku[s->Nu + s->OrderU];
-  UMIN = s->ku[0];
-  VMAX = s->kv[s->Nv + s->OrderV];
-  VMIN = s->kv[0];
-  if(deb){
-    x[1] = UMIN + (UMAX-UMIN)*((rand() % 10000)/10000.);
-    x[2] = VMIN + (VMAX-VMIN)*((rand() % 10000)/10000.);
-    deb = 0;
-  }
-
-  if(p->Num == 160){
-    lmin += 1.e90;
-    if(p->Num == 133)UMAX = s->ku[s->Nu + s->OrderU];
-  }
-  
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[0]+VERTEX->u,
-                 SURFACE->kv[0],u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[0]+VERTEX->u,
-                 SURFACE->kv[SURFACE->Nv+SURFACE->OrderV],u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[SURFACE->Nu+SURFACE->OrderU]-VERTEX->u,
-                 SURFACE->kv[0],u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[SURFACE->Nu+SURFACE->OrderU]-VERTEX->u,
-                 SURFACE->kv[SURFACE->Nv+SURFACE->OrderV],u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[0],SURFACE->kv[0]+VERTEX->u,u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[0],
-                 SURFACE->kv[SURFACE->Nv+SURFACE->OrderV]-VERTEX->u,u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[SURFACE->Nu+SURFACE->OrderU],
-                 SURFACE->kv[0]+VERTEX->u,u,v))
-    return true;
-  if(try_a_value(SURFACE,VERTEX,SURFACE->ku[SURFACE->Nu+SURFACE->OrderU],
-                 SURFACE->kv[SURFACE->Nv+SURFACE->OrderV]-VERTEX->u,u,v))
-    return true;
- 
-  
-  if(search_in_boundary(SURFACE,VERTEX,SURFACE->kv[0],0,u,v))
-    return true;
-  if(search_in_boundary(SURFACE,VERTEX,SURFACE->kv[SURFACE->Nv+SURFACE->OrderV],0,u,v))
-    return true;
-  if(search_in_boundary(SURFACE,VERTEX,SURFACE->ku[0],1,u,v))
-    return true;
-  if(search_in_boundary(SURFACE,VERTEX,SURFACE->ku[SURFACE->Nu+SURFACE->OrderU],1,u,v))
-    return true;
-  
-  while(1){
-    newt(x,2,&check,projectPS);
-    vv = InterpolateSurface(s,x[1],x[2],0,0);
-    l =  sqrt(DSQR(vv.Pos.X - p->Pos.X) +
-              DSQR(vv.Pos.Y - p->Pos.Y) +
-              DSQR(vv.Pos.Z - p->Pos.Z));
-    if(l < 1.e-1)break;
-    else {
-      x[1] = UMIN + (UMAX-UMIN)*((rand() % 10000)/10000.);
-      x[2] = VMIN + (VMAX-VMIN)*((rand() % 10000)/10000.);
-    }
-  }
-  *u = x[1];
-  *v = x[2];
-  
-  if(!check){
-    return false;
-  }
-  return true;
-}
-
-bool IntersectCurveSurface (Curve *c, Surface *s){
-  float x[4];
-  int check;
-  SURFACE = s;
-  CURVE = c;
-  newt(x,3,&check,intersectCS);
-  if(!check)return false;
-  return true;
-}
-
-void CopyVertex (Vertex *v, Vertex *vv){
-  vv->lc = v->lc;
-  vv->u = v->u;
-  vv->Pos.X = v->Pos.X;
-  vv->Pos.Y = v->Pos.Y;
-  vv->Pos.Z = v->Pos.Z;
-  vv->Freeze.X = v->Freeze.X;
-  vv->Freeze.Y = v->Freeze.Y;
-  vv->Freeze.Z = v->Freeze.Z;
-}
-
-Vertex *DuplicateVertex (Vertex *v){
-  Vertex *pv;
-  pv = Create_Vertex(MAXPOINT++,0,0,0,0,0);
-  
-  CopyVertex (v,pv);
-  CurrentNodeNumber = (CurrentNodeNumber>pv->Num)?CurrentNodeNumber:pv->Num;
-  Tree_Insert(THEM->Points,&pv);
-  return pv;
-}
-
-void CopyCurve (Curve *c, Curve *cc){
-  int i,j;
-  cc->Typ = c->Typ;
-  cc->Method = c->Method;
-  for(i=0;i<4;i++)cc->ipar[i] = c->ipar[i];
-  for(i=0;i<4;i++)cc->dpar[i] = c->dpar[i];
-  cc->l = c->l;
-  for(i=0;i<4;i++)for(j=0;j<4;j++)cc->mat[i][j] = c->mat[i][j];
-  cc->beg = c->beg;
-  cc->end = c->end;
-  cc->ubeg = c->ubeg;
-  cc->uend = c->uend;
-  cc->Control_Points = List_Create(List_Nbr(c->Control_Points),1,sizeof(Vertex*));
-  List_Copy(c->Control_Points,cc->Control_Points);
-  End_Curve(cc);
-  Tree_Insert(THEM->Curves,&cc);
-}
-
-Curve *DuplicateCurve (Curve *c){
-  Curve *pc;
-  Vertex *v,*newv;
-  pc = Create_Curve(MAXREG++,0,1,NULL,NULL,-1,-1,0.,1.);
-  CopyCurve(c,pc);
-  for(int i=0;i<List_Nbr(c->Control_Points);i++){
-    List_Read(pc->Control_Points,i,&v);
-    newv = DuplicateVertex(v);
-    List_Write(pc->Control_Points,i,&newv);
-  }
-  pc->beg = DuplicateVertex(c->beg);
-  pc->end = DuplicateVertex(c->end);
-  CreateReversedCurve (THEM,pc);
-  
-  return pc;
-}
-
-void CopySurface (Surface *s, Surface *ss){
-  int i,j;
-  ss->Typ = s->Typ;
-  ss->Mat = s->Mat;
-  ss->Method = s->Method;
-  ss->Recombine = s->Recombine;
-  ss->RecombineAngle = s->RecombineAngle;
-  for(i=0;i<4;i++)ss->ipar[i] = s->ipar[i];
-  ss->Nu = s->Nu;
-  ss->Nv = s->Nv;
-  ss->a = s->a;ss->b = s->b;ss->c = s->c; ss->d = s->d;
-  for(i=0;i<3;i++)for(j=0;j<3;j++)ss->plan[i][j] = s->plan[i][j];
-  for(i=0;i<3;i++)for(j=0;j<3;j++)ss->invplan[i][j] = s->invplan[i][j];
-  ss->Generatrices = List_Create(List_Nbr(s->Generatrices),1,sizeof(Curve*));
-  List_Copy(s->Generatrices,ss->Generatrices);
-  if( s->Control_Points ){
-    ss->Control_Points = List_Create(List_Nbr(s->Control_Points),1,sizeof(Vertex*));
-    List_Copy(s->Control_Points,ss->Control_Points);
-  }
-  End_Surface(ss);
-  Tree_Insert(THEM->Surfaces,&ss);
-}
-
-Surface *DuplicateSurface (Surface *s, int addthesurf){
-  Surface *ps;
-  Curve *c,*newc;
-  Vertex *v,*newv;
-  int i;
-
-  ps = Create_Surface(addthesurf?MAXREG++:-MAXREG,0,0);
-  CopySurface(s,ps);
-  for(i=0;i<List_Nbr(ps->Generatrices);i++){
-    List_Read(ps->Generatrices,i,&c);
-    newc = DuplicateCurve(c);
-    List_Write(ps->Generatrices,i,&newc);
-  }
-  
-  for(i=0;i<List_Nbr(ps->Control_Points);i++){
-    List_Read(ps->Control_Points,i,&v);
-    newv = DuplicateVertex(v);
-    List_Write(ps->Control_Points,i,&newv);
-  }
-
-  return ps;
-}
-
-static void vecmat4x4(double mat[4][4],double vec[4], double res[4]){
-  int i,j;
-  for(i=0;i<4;i++){
-    res[i] = 0.0;
-    for(j=0;j<4;j++){
-      res[i] += mat[i][j] * vec[j];
-    }
-  }
-}
-
-void ApplyTransformationToPoint ( double matrix[4][4], Vertex *v ){
-  double pos[4],vec[4];
-
-  if(!ListOfTransformedPoints)
-    ListOfTransformedPoints = List_Create(2,2,sizeof(int));
-  
-  if(!List_Search(ListOfTransformedPoints,&v->Num,fcmp_absint)){
-    List_Add(ListOfTransformedPoints,&v->Num);
-  }
-  else
-    return;
-  
-  vec[0] = v->Pos.X;
-  vec[1] = v->Pos.Y;
-  vec[2] = v->Pos.Z;
-  vec[3] = v->w;
-  vecmat4x4(matrix,vec,pos);
-  v->Pos.X = pos[0];
-  v->Pos.Y = pos[1];
-  v->Pos.Z = pos[2];
-  v->w = pos[3];
-}
-
-/* Linear Applications */
-
-void SetTranslationMatrix (double matrix[4][4],double T[3]){
-  int i, j;
-
-  for(i=0;i<4;i++){
-    for(j=0;j<4;j++){
-      matrix[i][j] = (i==j)? 1.0:0.0;
-    }
-  }
-  for(i=0;i<3;i++)matrix[i][3] = T[i];
-}
-
-void SetSymmetryMatrix (double matrix[4][4],double A, double B, double C, double D){
-  double F = -2.0 / (A*A+B*B+C*C);
-  matrix[0][0] = 1. + A*A*F;
-  matrix[0][1] =      A*B*F;
-  matrix[0][2] =      A*C*F;
-  matrix[0][3] =      A*D*F;
-  matrix[1][0] =      A*B*F;
-  matrix[1][1] = 1. + B*B*F;
-  matrix[1][2] =      B*C*F;
-  matrix[1][3] =      B*D*F;
-  matrix[2][0] =      A*C*F;
-  matrix[2][1] =      B*C*F;
-  matrix[2][2] = 1. + C*C*F;
-  matrix[2][3] =      C*D*F;
-  matrix[3][0] =      B*C*F;
-  matrix[3][1] =      0.0;
-  matrix[3][2] =      0.0;
-  matrix[3][3] =      1.0;
-}
-
-void SetDilatationMatrix (double matrix[4][4],double T[3],double A){
-  matrix[0][0] = A;
-  matrix[0][1] = 0.0;
-  matrix[0][2] = 0.0;
-  matrix[0][3] = T[0]*(1.0-A);
-  matrix[1][0] = 0.0;
-  matrix[1][1] = A;
-  matrix[1][2] = 0.0;
-  matrix[1][3] = T[1]*(1.0-A);
-  matrix[2][0] = 0.0;
-  matrix[2][1] = 0.0;
-  matrix[2][2] = A;
-  matrix[2][3] = T[2]*(1.0-A);
-  matrix[3][0] = 0.0;
-  matrix[3][1] = 0.0;
-  matrix[3][2] = 0.0;
-  matrix[3][3] = 1.0;
-}
-
-void GramSchmidt (double v1[3], double v2[3], double v3[3]){
-  double tmp[3];
-  norme(v1);
-  prodve(v3,v1,tmp);
-  norme(tmp);
-  v2[0] = tmp[0];v2[1] = tmp[1];v2[2] = tmp[2];
-  prodve(v1,v2,v3);
-  norme(v3);
-}
-
-void SetRotationMatrix( double matrix[4][4],double Axe[3], double alpha){
-  double t1[3],t2[3];
-  if(Axe[0] != 0.0){
-    t1[0] = 0.0;
-    t1[1] = 1.0;
-    t1[2] = 0.0;
-    t2[0] = 0.0;
-    t2[1] = 0.0;
-    t2[2] = 1.0;
-  }
-  else if(Axe[1] != 0.0){
-    t1[0] = 1.0;
-    t1[1] = 0.0;
-    t1[2] = 0.0;
-    t2[0] = 0.0;
-    t2[1] = 0.0;
-    t2[2] = 1.0;
-  }
-  else {
-    t1[0] = 1.0;
-    t1[1] = 0.0;
-    t1[2] = 0.0;
-    t2[0] = 0.0;
-    t2[1] = 1.0;
-    t2[2] = 0.0;
-  }
-  GramSchmidt(Axe,t1,t2);
-  double rot[3][3],plan[3][3],invplan[3][3];
-  plan[0][0] = Axe[0]; plan[0][1] = Axe[1]; plan[0][2] = Axe[2];
-  plan[1][0] = t1[0] ; plan[1][1] = t1[1];  plan[1][2] = t1[2];
-  plan[2][0] = t2[0] ; plan[2][1] = t2[1];  plan[2][2] = t2[2];
-  rot[2][2] = cos(alpha) ; rot[2][1] =  sin(alpha) ; rot[2][0] = 0.;
-  rot[1][2] = -sin(alpha); rot[1][1] =  cos(alpha) ; rot[1][0] = 0.;
-  rot[0][2] = 0.         ; rot[0][1] = 0.          ; rot[0][0] = 1.;
-  int i,j,k;
-  for(i=0;i<3;i++)for(j=0;j<3;j++)invplan[i][j] = plan[j][i];
-  double interm[3][3];
-  for(i=0;i<3;i++)for(j=0;j<3;j++){
-    interm[i][j] = 0.0;
-    for(k=0;k<3;k++)interm[i][j] += invplan[i][k] * rot[k][j];
-  }
-  for(i=0;i<4;i++)for(j=0;j<4;j++)matrix[i][j] = 0.0;
-  for(i=0;i<3;i++)for(j=0;j<3;j++){
-    for(k=0;k<3;k++)matrix[i][j] += interm[i][k] * plan[k][j];
-  }
-  matrix[3][3] = 1.0;
-}
-
-void SetRotationMatrixs(double matrix[4][4],double Axe[3], double alpha){
-  double phi,C,S,C2,S2;
-  double teta;
-  double a,b,c,d,e,f,g,h,ii;
-  double Ax=Axe[0],Ay=Axe[1],Az=Axe[2];
-  if(Ax != 0.0){
-    phi = atan2(Ay,Ax);
-    teta = atan2(Az,myhypot(Ax,Ay));
-    C = cos(phi);
-    S = sin(phi);
-    C2= cos(teta);
-    S2= sin(teta);
-  }
-  else if(Ay != 0.0){
-    teta = atan2(Az,myhypot(Ax,Ay));
-    C = 0.0;
-    S = 1.0;
-    C2= cos(teta);
-    S2= sin(teta);
-  }
-  else{
-    C = 1.0;
-    S = 0.0;
-    C2= 0.0;
-    S2= 1.0;
-  }
-
-  a = C2*C;
-  b = -C2*S;
-  c = S2;
-  d = cos(alpha)*S + sin(alpha)*S2*C;
-  e = cos(alpha)*C - sin(alpha)*S*S2;
-  f = -sin(alpha)*C2;
-  g = sin(alpha)*S - cos(alpha)*S2*C;
-  h = sin(alpha)*C + cos(alpha)*S*S2;
-  ii=cos(alpha)*C2;
-
-  matrix[0][0] = a*a + S*d -C*S2*g;
-  matrix[0][1] = a*b+S*e-C*S2*h;
-  matrix[0][2] = a*c+S*f-C*S2*ii;
-  matrix[0][3] = 0.0;
-  matrix[1][0] = -S*C2*a+C*d+S*S2*g;
-  matrix[1][1] = -S*C2*b+C*e+S*S2*h;
-  matrix[1][2] = -S*C2*c+C*f+S*S2*ii;
-  matrix[1][3] = 0.0;
-  matrix[2][0] = S2*a+C2*g;
-  matrix[2][1] = S2*b+C2*h;
-  matrix[2][2] = S2*c+C2*ii;
-  matrix[2][3] = 0.0;
-  matrix[3][0] = 0.;
-  matrix[3][1] = 0.;
-  matrix[3][2] = 0.;
-  matrix[3][3] = 1.0;
-}
-
-void ApplyTransformationToCurve (double matrix[4][4],Curve *c){
-  Vertex *v;
-  
-  ApplyTransformationToPoint (matrix,c->beg);
-  ApplyTransformationToPoint (matrix,c->end);
-  
-  for(int i=0;i<List_Nbr(c->Control_Points);i++){
-    List_Read(c->Control_Points,i,&v);
-    ApplyTransformationToPoint (matrix,v);
-  }
-  End_Curve(c);
-}
-
-void printCurve(Curve *c){
-  Vertex *v;
-  int N = List_Nbr(c->Control_Points);
-  Msg(DEBUG,"Curve %d %d cp (%d->%d)",c->Num,N,c->beg->Num,c->end->Num);
-  for(int i=0;i<N;i++){
-    List_Read(c->Control_Points,i,&v);
-    Msg(DEBUG,"Vertex %d (%g,%g,%g,%g)",v->Num,v->Pos.X,v->Pos.Y,v->Pos.Z,v->lc);
-  }
-}
-
-void printSurface(Surface*s){
-  Curve *c;
-  int N = List_Nbr(s->Generatrices);
-
-  Msg(DEBUG,"Surface %d, %d generatrices",s->Num,N);
-  for(int i=0;i<N;i++){
-    List_Read(s->Generatrices,i,&c);
-    printCurve(c);
-  }
-}
-
-
-void ApplyTransformationToSurface (double matrix[4][4],Surface *s){
-  Curve *c;
-  Vertex *v;
-  int i;
-
-  for(i=0;i<List_Nbr(s->Generatrices);i++){
-    List_Read(s->Generatrices,i,&c);
-    ApplyTransformationToCurve (matrix,c);
-  }
-  for(i=0;i<List_Nbr(s->Control_Points);i++){
-    List_Read(s->Control_Points,i,&v);
-    ApplyTransformationToPoint (matrix,v);
-  }
-  End_Surface(s);
-}
-
-
-void ProtudeXYZ ( double &x, double &y, double &z, ExtrudeParams *e){
-  double matrix[4][4];
-  double T[3];
-  Vertex v(x,y,z);
-  T[0] = -e->geo.pt[0];
-  T[1] = -e->geo.pt[1];
-  T[2] = -e->geo.pt[2];
-  List_Reset(ListOfTransformedPoints);
-  SetTranslationMatrix(matrix,T);
-  ApplyTransformationToPoint(matrix,&v);
-  List_Reset(ListOfTransformedPoints);
-  SetRotationMatrix(matrix,e->geo.axe,e->geo.angle);
-  ApplyTransformationToPoint(matrix,&v);
-  List_Reset(ListOfTransformedPoints);
-  T[0] = -T[0]; T[1] = -T[1]; T[2] = -T[2];
-  SetTranslationMatrix(matrix,T);
-  ApplyTransformationToPoint(matrix,&v);
-  List_Reset(ListOfTransformedPoints);
-  x = v.Pos.X;
-  y = v.Pos.Y;
-  z = v.Pos.Z;
-}
-
-void Extrude_ProtudePoint(int ep, int ip, double A, double B, double C,
-                          double X, double Y, double Z, double alpha,
-                          Curve **pc, Curve **prc, ExtrudeParams *e){
-  double xnew,ynew,znew,matrix[4][4],T[3],Ax[3];
-  Vertex V,*pv, *chapeau;
-  Curve *c;
-  
-  MAXREG = NEWREG();
-  MAXPOINT = NEWPOINT();
-  
-  pv= &V;
-  pv->Num = ip;
-  *pc = *prc = NULL;
-  if(!Tree_Query(THEM->Points, &pv) )return;
-
-  Msg(DEBUG, "Extrude Point %d", ip);
-
-  chapeau = DuplicateVertex(pv);
-  if(ep){
-    T[0] = A; T[1] = B; T[2] = C;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToPoint(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-  }
-  else{
-    T[0] = -X; T[1] = -Y; T[2] = -Z;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToPoint(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-
-    Ax[0] = A; Ax[1] = B; Ax[2] = C;
-    SetRotationMatrix(matrix,Ax,alpha);
-    ApplyTransformationToPoint(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-
-    T[0] = X; T[1] = Y; T[2] = Z;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToPoint(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-    Msg(DEBUG,"Angle %g Point (%g,%g,%g) Axis (%g,%g,%g)",alpha,X,Y,Z,A,B,C);
-  }
-
-  if(!comparePosition(&pv,&chapeau)) return ;
-
-  c = Create_Curve(MAXREG++,(ep)?MSH_SEGM_LINE:MSH_SEGM_CIRC,1,NULL,NULL,-1,-1,0.,1.);
-  c->Control_Points = List_Create((ep)?2:3,1,sizeof(Vertex*));
-
-  // je me souviens
-  c->Extrude = new ExtrudeParams;
-  c->Extrude->fill(ep,A,B,C,X,Y,Z,alpha);
-  if(e)c->Extrude->mesh = e->mesh;
-  
-  if(ep){
-    List_Add(c->Control_Points,&pv);
-    List_Add(c->Control_Points,&chapeau);
-    c->beg = pv;
-    c->end = chapeau;
-  }
-  else{
-    List_Add(c->Control_Points,&pv);
-    
-    dist_ddg(pv->Pos.X,pv->Pos.Y,pv->Pos.Z,
-             chapeau->Pos.X,chapeau->Pos.Y,chapeau->Pos.Z,
-             X,Y,Z,X+A,Y+B,Z+C,&xnew,&ynew,&znew);
-    Vertex *newp = DuplicateVertex(pv);
-    newp->Pos.X = xnew;
-    newp->Pos.Y = ynew;
-    newp->Pos.Z = znew;
-    List_Add(c->Control_Points,&newp);
-    List_Add(c->Control_Points,&chapeau);
-    c->beg = pv;
-    c->end = chapeau;
-    printCurve(c);
-  }
-  End_Curve(c);
-  Tree_Add(THEM->Curves,&c);
-  CreateReversedCurve (THEM,c);
-  *pc = c;
-  *prc = FindCurve(-c->Num,THEM);
-}
-
-Surface *Extrude_ProtudeCurve(int ep, int ic,
-                              double A, double B, double C,
-                              double X, double Y, double Z,
-                              double alpha, ExtrudeParams *e){
-  double matrix[4][4],T[3],Ax[3];
-  Curve *CurveBeg,*CurveEnd;
-  Curve *ReverseChapeau,*ReverseBeg,*ReverseEnd;
-  Curve *pc, *revpc, *chapeau;
-  Surface *s;
-  
-  MAXREG = NEWREG();
-  MAXPOINT = NEWPOINT();
-  
-  pc    = FindCurve(ic,THEM);
-  revpc = FindCurve(-ic,THEM);
-  
-  if(!pc || !revpc) return NULL;
-
-  Msg(DEBUG, "Extrude Curve %d", ic);
-
-  chapeau = DuplicateCurve(pc);
-  
-  chapeau->Extrude = new ExtrudeParams(COPIED_ENTITY);
-  chapeau->Extrude->fill(ep,A,B,C,X,Y,Z,alpha);
-  chapeau->Extrude->geo.Source = pc->Num;
-  if(e) chapeau->Extrude->mesh = e->mesh;
-  
-  if(ep){
-    T[0] = A; T[1] = B; T[2] = C;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToCurve(matrix,chapeau);
-  }
-  else{
-    T[0] = -X; T[1] = -Y; T[2] = -Z;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToCurve(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-    
-    Ax[0] = A; Ax[1] = B; Ax[2] = C;
-    SetRotationMatrix(matrix,Ax,alpha);
-    ApplyTransformationToCurve(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-    
-    T[0] = X; T[1] = Y; T[2] = Z;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToCurve(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-  }
-  Extrude_ProtudePoint(ep,pc->beg->Num,A,B,C,X,Y,Z,alpha,
-                       &CurveBeg,&ReverseBeg,e);
-  Extrude_ProtudePoint(ep,pc->end->Num,A,B,C,X,Y,Z,alpha,
-                       &CurveEnd,&ReverseEnd,e);
-  List_Reset(ListOfTransformedPoints);
-  
-  if(!CurveBeg && !CurveEnd) return NULL;
-
-  s = Create_Surface(MAXREG++,MSH_SURF_REGL,0);
-  s->Generatrices = List_Create(4,1,sizeof(Curve*));
-  
-  // je me souviens
-  s->Extrude = new ExtrudeParams;
-  s->Extrude->fill(ep,A,B,C,X,Y,Z,alpha);
-  s->Extrude->geo.Source = pc->Num;
-  if(e) s->Extrude->mesh = e->mesh;
-  
-  ReverseChapeau = FindCurve(-chapeau->Num,THEM);
-
-  if(!CurveBeg){
-    List_Add(s->Generatrices,&pc);
-    List_Add(s->Generatrices,&CurveEnd);
-    List_Add(s->Generatrices,&ReverseChapeau);
-  }
-  else if(!CurveEnd){
-    List_Add(s->Generatrices,&ReverseChapeau);
-    List_Add(s->Generatrices,&ReverseBeg);
-    List_Add(s->Generatrices,&pc);
-  }
-  else{
-    List_Add(s->Generatrices,&pc);
-    List_Add(s->Generatrices,&CurveEnd);
-    List_Add(s->Generatrices,&ReverseChapeau);
-    List_Add(s->Generatrices,&ReverseBeg);
-  }
-
-  End_Surface(s);
-  Tree_Add(THEM->Surfaces,&s);
-  return s;
-}
-
-void Extrude_ProtudeSurface(int ep, int is,
-                            double A, double B, double C,
-                            double X, double Y, double Z,
-                            double alpha,
-                            int NewVolume, ExtrudeParams *e){
-  double matrix[4][4],T[3],Ax[3];
-  Curve *c,*c2;
-  int i;
-  Surface *s,*ps, *chapeau;
-  Volume *pv = NULL;
-  
-  if(!(ps = FindSurface(is,THEM)) )return;
-
-  Msg(DEBUG, "Extrude Surface %d", is);
-  
-  if(NewVolume){
-    pv = Create_Volume(NewVolume,0,0);
-    pv->Extrude = new ExtrudeParams;
-    pv->Extrude->fill(ep,A,B,C,X,Y,Z,alpha);
-    pv->Extrude->geo.Source = is;
-    if(e)pv->Extrude->mesh = e->mesh;
-    if(pv)List_Add(pv->Surfaces,&ps);
-  }
-  
-  MAXREG = NEWREG();
-  MAXPOINT = NEWPOINT();
-  
-  chapeau = DuplicateSurface(ps,1);
-  chapeau->Extrude = new ExtrudeParams(COPIED_ENTITY);
-  chapeau->Extrude->fill(ep,A,B,C,X,Y,Z,alpha);
-  chapeau->Extrude->geo.Source = ps->Num;
-  if(e) chapeau->Extrude->mesh = e->mesh;
-  
-  for(i=0;i<List_Nbr(chapeau->Generatrices);i++) {
-    List_Read(ps->Generatrices,i,&c2);
-    List_Read(chapeau->Generatrices,i,&c);
-    if(c->Num<0)
-      if(!(c = FindCurve(-c->Num,THEM))){
-         Msg(GERROR, "Unknown Curve %d", -c->Num);
-	 return;
-      }
-    c->Extrude = new ExtrudeParams(COPIED_ENTITY);
-    c->Extrude->fill(ep,A,B,C,X,Y,Z,alpha);
-    //pas de abs()! il faut le signe pour copy_mesh dans ExtrudeMesh
-    c->Extrude->geo.Source = c2->Num; 
-    if(e)c->Extrude->mesh = e->mesh;
-  }
-  
-  if(pv)List_Add(pv->Surfaces,&chapeau);
-
-  // filling extrude params
-  
-  for(i=0;i<List_Nbr(ps->Generatrices);i++){
-    List_Read(ps->Generatrices,i,&c);
-    s = Extrude_ProtudeCurve(ep,c->Num,A,B,C,X,Y,Z,alpha,e);
-    if(pv && s)List_Add(pv->Surfaces,&s);
-    //printSurface(s);
-  }
-
-  if(ep){
-    T[0] = A; T[1] = B; T[2] = C;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToSurface(matrix,chapeau);
-  }
-  else{
-    T[0] = -X; T[1] = -Y; T[2] = -Z;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToSurface(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-    
-    Ax[0] = A; Ax[1] = B; Ax[2] = C;
-    SetRotationMatrix(matrix,Ax,alpha);
-    ApplyTransformationToSurface(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-    
-    T[0] = X; T[1] = Y; T[2] = Z;
-    SetTranslationMatrix(matrix,T);
-    ApplyTransformationToSurface(matrix,chapeau);
-    List_Reset(ListOfTransformedPoints);
-  }
-  Tree_Suppress(THEM->Surfaces,&chapeau);
-  chapeau->Num = NEWREG();
-  Tree_Add(THEM->Surfaces,&chapeau);
-  
-  if(pv)Tree_Add(THEM->Volumes,&pv);
-  
-  ReplaceAllDuplicates ( THEM );
-  List_Reset(ListOfTransformedPoints);
-  
-}
-
-void DivideCurve (Curve *c , double u, Vertex *v, Curve **c1, Curve **c2){
-  (*c1) = Create_Curve(MAXREG++,c->Typ,1,NULL,NULL,-1,-1,0.,1.);
-  (*c2) = Create_Curve(MAXREG++,c->Typ,1,NULL,NULL,-1,-1,0.,1.);
-  CopyCurve(c,*c1);
-  CopyCurve(c,*c2);
-  (*c1)->uend = u;
-  (*c2)->ubeg = u;
-  (*c1)->end = v;
-  (*c2)->beg = v;
-}
-
-bool IntersectCurves (Curve *c1, Curve *c2,
-                      Curve **c11, Curve **c12,
-                      Curve **c21, Curve **c22, Vertex **v){
-  float x[3];
-  Vertex v1,v2;
-  Vertex V,*pv;
-  int check;
-  
-  if(!compareVertex(&c1->beg,&c2->beg))return false;
-  if(!compareVertex(&c1->end,&c2->end))return false;
-  if(!compareVertex(&c1->beg,&c2->end))return false;
-  if(!compareVertex(&c2->beg,&c1->end))return false;
-
-  CURVE_2 = c2;
-  CURVE = c1;
-  x[1] = x[2] =  0.0;
-  newt(x,2,&check,intersectCC);
-  if(check)return false;
-  v1 = InterpolateCurve(c1,x[1],0);
-  v2 = InterpolateCurve(c2,x[2],0);
-  if(x[1] <= c1->ubeg)return false;
-  if(x[1] >= c1->uend)return false;
-  if(x[2] <= c2->ubeg)return false;
-  if(x[2] >= c2->uend)return false;
-  if(fabs(v1.Pos.Z - v2.Pos.Z) > 1.e-06 * CTX.lc)return false;
-  pv = &V;
-  pv->Num = MAXPOINT++;
-  Cdbpts101(pv->Num,v1.Pos.X,v1.Pos.Y,v1.Pos.Z,v1.lc,x[1]);
-  v = (Vertex**)Tree_PQuery(THEM->Points,&pv);
-  DivideCurve(c1,x[1],*v,c11,c12);
-  DivideCurve(c2,x[2],*v,c21,c22);
-  return true;
-}
-
-bool IntersectAllSegmentsTogether (void) {
-  bool intersectionfound = true;
-  List_T *TempList;
-  Curve *c1,*c2,*c11,*c12,*c21,*c22;
-  Vertex *v;
-  int i,j;
-
-  while(intersectionfound){
-    TempList = Tree2List(THEM->Curves);
-    if(!List_Nbr(TempList))return true;
-    for(i=0;i<List_Nbr(TempList);i++){
-      List_Read(TempList,i,&c1);
-      intersectionfound = false;
-      for(j=0;j<List_Nbr(TempList);j++){
-        List_Read(TempList,j,&c2);
-        if(c1->Num > 0 && c2->Num >0 && i!=j && intersectionfound == false){
-          if(IntersectCurves(c1,c2,&c11,&c12,&c21,&c22,&v)){
-            Msg(INFO, "Intersection Curve %d->%d",c1->Num,c2->Num);
-            intersectionfound = true;
-            DeleteCurve(c1->Num);
-            DeleteCurve(c2->Num);
-            Tree_Add(THEM->Curves,&c11);
-            Tree_Add(THEM->Curves,&c12);
-            Tree_Add(THEM->Curves,&c21);
-            Tree_Add(THEM->Curves,&c22);
-            
-            CreateReversedCurve(THEM,c11);
-            CreateReversedCurve(THEM,c12);
-            CreateReversedCurve(THEM,c21);
-            CreateReversedCurve(THEM,c22);
-            return true;
-          }
-        }
-      }
-      if(intersectionfound) break;
-    }
-    List_Delete(TempList);
-  }
-  return false;
-
-}
-
-void IntersectSurfaces (Surface *s1, Surface *s2){
-
-
-}
-
-int compareTwoCurves (const void *a, const void *b){
-  Curve *c1, *c2;
-  c1 = *(Curve**)a;
-  c2 = *(Curve**)b;
-  int comp;
-  
-  if(c1->Typ != c2->Typ)return c1->Typ - c2->Typ;
-  comp = compareVertex(&c1->beg,&c2->beg);
-  if(comp)return comp;
-  comp = compareVertex(&c1->end,&c2->end);
-  if(comp)return comp;
-  // a finir pour des splines !!
-  return 0;
-  //return c1->Num - c2->Num;
-}
-
-int compareAbsCurve (const void *a, const void *b){
-  Curve **q, **w;
-
-  q = (Curve **) a;
-  w = (Curve **) b;
-  return (abs((*q)->Num) - abs((*w)->Num));
-}
-
-int compareTwoSurfaces (const void *a, const void *b){
-  Surface *s1, *s2;
-  s1 = *(Surface**)a;
-  s2 = *(Surface**)b;
-  return compare2Lists(s1->Generatrices,
-                       s2->Generatrices,
-                       compareAbsCurve);
-}
-
-
-/* Fonction eliminant les doublons dans une
-   geometrie*/
-
-void Coherence_PS(void){
-  ReplaceAllDuplicates (THEM);
-}
-
-void ReplaceAllDuplicates ( Mesh *m ){
-  List_T *All;
-  Tree_T *allNonDulpicatedPoints;
-  Vertex *v;
-  Curve *c,*c2;
-  Surface *s;
-  Volume *vol;
-  int i,j,start,end;
-
-  List_T *points2delete = List_Create(100,100,sizeof(Vertex*));
-
-  /* Create unique points */
-
-  All = Tree2List(m->Points);
-  start = List_Nbr(All);
-
-  allNonDulpicatedPoints = Tree_Create(sizeof(Vertex*),comparePosition);
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&v);
-    if(!Tree_Search(allNonDulpicatedPoints,&v)){
-      Tree_Insert(allNonDulpicatedPoints,&v);
-    }
-    else{
-      Tree_Suppress(m->Points,&v);
-      Tree_Suppress(m->Vertices,&v);      
-      //      List_Add(points2delete,&v);      
-    }
-  }
-
-  List_Delete(All);
-
-  end = Tree_Nbr(m->Points);
-
-  if(start-end) Msg(DEBUG, "Removed %d duplicate points", start-end);
-
-  /* Replace old points in curves */
-
-  All = Tree2List(m->Curves);
-  start = List_Nbr(All);
-
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&c);
-    Tree_Query( allNonDulpicatedPoints,&c->beg);
-    Tree_Query( allNonDulpicatedPoints,&c->end);
-    for(j=0;j<List_Nbr(c->Control_Points);j++){
-      List_Write(c->Control_Points,j,
-                 Tree_PQuery( allNonDulpicatedPoints,
-                              List_Pointer(c->Control_Points,j)));
-    }
-  }
-  List_Delete(All);
-
-  /* Replace old points in surfaces */
-
-  All = Tree2List(m->Surfaces);
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&s);
-    for(j=0;j<List_Nbr(s->Control_Points);j++){
-      List_Write(s->Control_Points,j,
-                 Tree_PQuery( allNonDulpicatedPoints,
-                              List_Pointer(s->Control_Points,j)));
-    }
-  }
-  
-  List_Delete(All);
-
-  /* Create unique curves */
-
-  All = Tree2List(m->Curves);
-  Tree_T *allNonDulpicatedCurves;
-  allNonDulpicatedCurves = Tree_Create(sizeof(Curve*),compareTwoCurves);
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&c);
-    if(c->Num > 0){
-      if(!Tree_Search(allNonDulpicatedCurves,&c)){
-        Tree_Insert(allNonDulpicatedCurves,&c);
-        if(!(c2 = FindCurve(-c->Num,m))){
-          Msg(GERROR, "Unknown Curve %d", -c->Num);
-	  List_Delete(All);
-	  return;
-	}
-        Tree_Insert(allNonDulpicatedCurves,&c2);
-      }
-      else{
-        Tree_Suppress(m->Curves,&c);
-        if(!(c2 = FindCurve(-c->Num,m))){
-          Msg(GERROR, "Unknown Curve %d", -c->Num);
-	  List_Delete(All);
-	  return;
-	}
-        Tree_Suppress(m->Curves,&c2);
-      }
-    }
-  }
-  
-  List_Delete(All);
-
-  end = Tree_Nbr(m->Curves);
-
-  if(start-end) Msg(DEBUG, "Removed %d duplicate curves", start-end);
-
-  /* Replace old curves in surfaces */
-
-  All = Tree2List(m->Surfaces);
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&s);
-    for(j=0;j<List_Nbr(s->Generatrices);j++){
-      List_Write(s->Generatrices,j,
-                 Tree_PQuery( allNonDulpicatedCurves,
-                              List_Pointer(s->Generatrices,j)));
-
-      // Arghhh. Revoir compareTwoCurves !
-      End_Curve(*(Curve**)List_Pointer(s->Generatrices,j));
-    }
-  }
-  
-  /* Create unique surfaces */
-
-  start = List_Nbr(All);
-  
-  Tree_T *allNonDulpicatedSurfaces;
-  allNonDulpicatedSurfaces = Tree_Create(sizeof(Curve*),compareTwoSurfaces);
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&s);
-    if(s->Num > 0){
-      if(!Tree_Search(allNonDulpicatedSurfaces,&s)){
-        Tree_Insert(allNonDulpicatedSurfaces,&s);
-      }
-      else{
-        Tree_Suppress(m->Surfaces,&s);
-      }
-    }
-  }
-
-  List_Delete(All);
-
-  end = Tree_Nbr(m->Surfaces);
-
-  if(start-end) Msg(DEBUG, "Removed %d duplicate surfaces", start-end);
-
-  /* Replace old surfaces in volumes */
-
-  All = Tree2List(m->Volumes);
-  for(i=0;i<List_Nbr(All);i++){
-    List_Read(All,i,&vol);
-    for(j=0;j<List_Nbr(vol->Surfaces);j++){
-      List_Write(vol->Surfaces,j,
-                 Tree_PQuery( allNonDulpicatedSurfaces,
-                              List_Pointer(vol->Surfaces,j)));
-    }
-  }
-
-  for(int k = 0; k < List_Nbr(points2delete);k++)
-    {
-      List_Read(points2delete,i,&v);      
-      Free_Vertex(&v,0);
-    }
-
-
-}
-
-/* NEW CAD FUNCTIONS */
-
-void ModifyLcPoint(int ip, double lc){
-  Vertex *v = FindPoint(ip,THEM);
-  if(v)v->lc = lc;
-}
-
-void ApplicationOnPoint(int ip,double matrix[4][4]){
-  Vertex *v = FindPoint(ip,THEM);
-  if(v)ApplyTransformationToPoint ( matrix, v );
-}
-
-void ApplicationOnLine(int ip, double matrix[4][4]){
-  Curve *c = FindCurve(ip,THEM);
-  if(c)ApplyTransformationToCurve ( matrix, c );
-}
-
-void ApplicationOnSurface(int ip, double matrix[4][4]){
-  Surface *s = FindSurface(ip,THEM);
-  if(s)ApplyTransformationToSurface ( matrix, s );
-}
-
-void ApplicationOnShapes(double matrix[4][4], List_T *ListShapes){
-  int i;
-  Shape O;
-  
-  for(i=0;i<List_Nbr(ListShapes);i++){
-    List_Read(ListShapes,i,&O);
-    switch(O.Type){
-    case MSH_POINT:
-      ApplicationOnPoint(O.Num,matrix);
-      break;
-    case MSH_SEGM_LINE:
-    case MSH_SEGM_SPLN:
-    case MSH_SEGM_CIRC:
-    case MSH_SEGM_ELLI:
-    case MSH_SEGM_NURBS:
-      ApplicationOnLine(O.Num,matrix);
-      break;
-    case MSH_SURF_NURBS :
-    case MSH_SURF_REGL :
-    case MSH_SURF_TRIC :
-    case MSH_SURF_PLAN :
-      ApplicationOnSurface(O.Num,matrix);
-      break;
-    default:
-      Msg(GERROR, "Impossible to apply transformation on entity %d (of type %d)", 
-          O.Num, O.Type);
-      break;
-    }
-  }
-  List_Reset(ListOfTransformedPoints);
-}
-
-void TranslateShapes(double X,double Y,double Z,
-                     List_T *ListShapes, int isFinal){
-  double T[3],matrix[4][4];
-  T[0] = X;T[1] = Y;T[2] = Z;
-  SetTranslationMatrix(matrix,T);
-  ApplicationOnShapes(matrix,ListShapes);
-  if(isFinal)ReplaceAllDuplicates ( THEM );
-}
-
-void DilatShapes(double X,double Y,double Z, double A,
-                 List_T *ListShapes, int isFinal){
-  double T[3],matrix[4][4];
-  T[0] = X;T[1] = Y;T[2] = Z;
-  SetDilatationMatrix(matrix,T,A);
-  ApplicationOnShapes(matrix,ListShapes);
-  ReplaceAllDuplicates ( THEM );
-}
-
-
-void RotateShapes (double Ax,double Ay,double Az,
-                   double Px,double Py, double Pz,
-                   double alpha, List_T *ListShapes){
-  double A[3],matrix[4][4];
-  A[0] = Ax;A[1] = Ay;A[2] = Az;
-  TranslateShapes(-Px,-Py,-Pz,ListShapes,0);
-  List_Reset(ListOfTransformedPoints);
-  SetRotationMatrix(matrix,A,alpha);
-  ApplicationOnShapes(matrix,ListShapes);
-  TranslateShapes(Px,Py,Pz,ListShapes,0);
-  List_Reset(ListOfTransformedPoints);
-  ReplaceAllDuplicates ( THEM );
-}
-
-void SymmetryShapes (double A,double B,double C,
-                     double D, List_T *ListShapes, int x){
-  double matrix[4][4];
-  SetSymmetryMatrix(matrix,A,B,C,D);
-  ApplicationOnShapes(matrix,ListShapes);
-  ReplaceAllDuplicates ( THEM );
-}
-
-
-void CopyShape(int Type, int Num, int *New){
-  Surface *s,*news;
-  Curve *c, *newc;
-  Vertex *v,*newv;
-  
-  MAXREG = NEWREG();
-  MAXPOINT = NEWPOINT();
-
-  switch(Type){
-  case MSH_POINT:
-    if(!(v = FindPoint(Num,THEM))){
-      Msg(GERROR, "Unknown Vertex %d", Num);
-      return;
-    }
-    newv = DuplicateVertex(v);
-    *New = newv->Num;
-    break;
-  case MSH_SEGM_LINE:
-  case MSH_SEGM_SPLN:
-  case MSH_SEGM_CIRC:
-  case MSH_SEGM_ELLI:
-  case MSH_SEGM_NURBS:
-    if(!(c = FindCurve(Num,THEM))){
-      Msg(GERROR, "Unknown Curve %d", Num);
-      return;
-    }
-    newc = DuplicateCurve(c);
-    *New = newc->Num;
-    break;
-  case MSH_SURF_NURBS:
-  case MSH_SURF_TRIC:
-  case MSH_SURF_REGL:
-  case MSH_SURF_PLAN:
-    if(!(s = FindSurface(Num,THEM))){
-      Msg(GERROR, "Unknown Surface %d", Num);
-      return;
-    }
-    news = DuplicateSurface(s,1);
-    *New = news->Num;
-    break;
-  default:
-    Msg(GERROR, "Impossible to copy entity %d (of type %d)", Num, Type);
-    break;
-  }
-}
-
-void DeletePoint(int ip){
-  Vertex *v = FindPoint(ip,THEM);
-  if(!v) return;
-  List_T *Curves = Tree2List(THEM->Curves);
-  for(int i=0;i<List_Nbr(Curves);i++){
-    Curve *c;
-    List_Read(Curves,i,&c);
-    for(int j=0;j<List_Nbr(c->Control_Points);j++){
-      if(!compareVertex(List_Pointer(c->Control_Points,j),&v))return;
-    }
-  }
-  List_Delete(Curves);
-  Tree_Suppress(THEM->Points,&v);
-}
-
-void DeleteCurve(int ip){
-  Curve *c = FindCurve(ip,THEM);
-  if(!c) return;
-  List_T *Surfs = Tree2List(THEM->Surfaces);
-  for(int i=0;i<List_Nbr(Surfs);i++){
-    Surface *s;
-    List_Read(Surfs,i,&s);
-    for(int j=0;j<List_Nbr(s->Generatrices);j++){
-      if(!compareCurve(List_Pointer(s->Generatrices,j),&c))return;
-    }
-  }
-  List_Delete(Surfs);
-  Tree_Suppress(THEM->Curves,&c);
-}
-
-void DeleteSurf( int is ){
-
-  // Il faut absolument coder une
-  // structure coherente pour les volumes.
-  Surface *s = FindSurface(is,THEM);
-  if(!s) return;
-  List_T *Vols = Tree2List(THEM->Volumes);
-  for(int i=0;i<List_Nbr(Vols);i++){
-    Volume *v;
-    List_Read(Vols,i,&v);
-    for(int j=0;j<List_Nbr(v->Surfaces);j++){
-      if(!compareCurve(List_Pointer(v->Surfaces,j),&s))return;
-    }
-  }
-  List_Delete(Vols);
-  //s->Num = 1000000000;
-  Tree_Suppress(THEM->Surfaces,&s);
-}
-
-void DeleteLine(int ip, int i){DeleteCurve(ip);}
-
-void DeleteShape(int Type, int Num){
-
-  switch(Type){
-  case MSH_POINT:
-    DeletePoint(Num);
-    break;
-  case MSH_SEGM_LINE:
-  case MSH_SEGM_SPLN:
-  case MSH_SEGM_CIRC:
-  case MSH_SEGM_ELLI:
-  case MSH_SEGM_NURBS:
-    DeleteCurve(Num);
-    break;
-  case MSH_SURF_NURBS:
-  case MSH_SURF_TRIC:
-  case MSH_SURF_REGL:
-  case MSH_SURF_PLAN:
-    DeleteSurf(Num);
-    break;
-  default:
-    Msg(GERROR, "Impossible to delete entity %d (of type %d)", Num, Type);
-    break;
-  }
-}
-
-Curve * CreateReversedCurve (Mesh *M,Curve *c){
-  Curve *newc;
-  Vertex *e1,*e2,*e3,*e4;
-  int i;
-  newc = Create_Curve(-c->Num, c->Typ,1,NULL,NULL,-1,-1,0.,1.);
-  newc->Control_Points = List_Create(List_Nbr(c->Control_Points), 1, sizeof(Vertex*));
-  if (c->Typ == MSH_SEGM_ELLI || c->Typ == MSH_SEGM_ELLI_INV){
-    List_Read(c->Control_Points,0,&e1);
-    List_Read(c->Control_Points,1,&e2);
-    List_Read(c->Control_Points,2,&e3);
-    List_Read(c->Control_Points,3,&e4);
-    List_Add(newc->Control_Points,&e4);
-    List_Add(newc->Control_Points,&e2);
-    List_Add(newc->Control_Points,&e3);
-    List_Add(newc->Control_Points,&e1);
-  }
-  else
-    List_Invert(c->Control_Points, newc->Control_Points);
-  
-  if (c->Typ == MSH_SEGM_NURBS && c->k){
-    newc->k = (float*)malloc((c->degre + List_Nbr(c->Control_Points)+1)*sizeof(float));
-    for(i=0;i<c->degre + List_Nbr(c->Control_Points)+1;i++)
-      newc->k[c->degre + List_Nbr(c->Control_Points)-i] = c->k[i];
-  }
-  
-  if (c->Typ == MSH_SEGM_CIRC) newc->Typ =  MSH_SEGM_CIRC_INV;
-  if (c->Typ == MSH_SEGM_CIRC_INV) newc->Typ =  MSH_SEGM_CIRC;
-  if (c->Typ == MSH_SEGM_ELLI) newc->Typ =  MSH_SEGM_ELLI_INV;
-  if (c->Typ == MSH_SEGM_ELLI_INV) newc->Typ =  MSH_SEGM_ELLI;
-  newc->Vertices = List_Create(10 ,1 ,sizeof(Vertex*));
-  newc->Method = c->Method;
-  newc->degre  = c->degre;
-  newc->beg = c->end;
-  newc->end = c->beg;
-  newc->ubeg = 1. - c->uend;
-  newc->uend = 1. - c->ubeg;
-  End_Curve(newc);
-  
-  Curve **pc;
-
-  if((pc = (Curve**)Tree_PQuery(M->Curves,&newc)))
-    {
-      Free_Curve(&newc,0);
-      return *pc;
-    }
-  else Tree_Insert(M->Curves, &newc);
-  return newc;
-}
-
-int recognize_seg(int typ, List_T * liste, int *seg){
-  int i,beg,end;
-  Curve *pc;
-
-  List_T *temp = Tree2List(THEM->Curves);
-  List_Read(liste,0,&beg);
-  List_Read(liste,List_Nbr(liste)-1,&end);
-  for(i=0;i<List_Nbr(temp);i++){
-    List_Read(temp,i,&pc);
-    if(pc->Typ == typ &&
-       pc->beg->Num == beg &&
-       pc->end->Num == end){
-      List_Delete(temp);
-      *seg = pc->Num;
-      return 1;
-    }
-  }
-  List_Delete(temp);
-  return 0;
-}
-
-
-
-int recognize_loop(List_T * liste, int *loop){
-  int i,res;
-  EdgeLoop *pe;
-
-  res = 0;
-  *loop = 0;
-  List_T *temp = Tree2List(THEM->EdgeLoops);
-  for(i=0;i<List_Nbr(temp);i++){
-    List_Read(temp,i,&pe);
-    if(!compare2Lists(pe->Curves,liste,fcmp_absint)){
-      res = 1;
-      *loop = pe->Num;
-      break;
-    }
-  }
-  List_Delete(temp);
-  return res;
-}
-
-int recognize_surfloop(List_T * liste, int *loop){
-  int i,res;
-  EdgeLoop *pe;
-
-  res = 0;
-  *loop = 0;
-  List_T *temp = Tree2List(THEM->SurfaceLoops);
-  for(i=0;i<List_Nbr(temp);i++){
-    List_Read(temp,i,&pe);
-    if(!compare2Lists(pe->Curves,liste,fcmp_absint)){
-      res = 1;
-      *loop = pe->Num;
-      break;
-    }
-  }
-  List_Delete(temp);
-  return res;
-}
-
diff --git a/Geo/CAD.h b/Geo/CAD.h
deleted file mode 100644
index 05ec3e9bf48f18b719624a23c110fe832db7e12f..0000000000000000000000000000000000000000
--- a/Geo/CAD.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef _CAD_H_
-#define _CAD_H_
-
-#include "Mesh.h"
-
-int NEWREG(void);
-int NEWPOINT(void);
-
-Vertex *FindPoint(int inum, Mesh *M);
-Vertex *FindVertex(int inum, Mesh *M);
-Curve *FindCurve(int inum, Mesh *M);
-Surface *FindSurface(int inum, Mesh *M);
-Volume *FindVolume(int inum, Mesh *M);
-EdgeLoop *FindEdgeLoop(int inum, Mesh *M);
-SurfaceLoop *FindSurfaceLoop(int inum, Mesh *M);
-
-bool ProjectPointOnCurve (Curve *c, Vertex *v, Vertex *RES, Vertex *DER);
-bool ProjectPointOnSurface (Surface *s, Vertex &p);
-bool ProjectPointOnSurface (Surface *s, Vertex *p,double *u, double *v);
-
-void Extrude_ProtudePoint(int ep, int ip, double A, double B, double C,
-                          double X, double Y, double Z, double alpha,
-                          Curve **pc, Curve **prc, ExtrudeParams *e);
-Surface *Extrude_ProtudeCurve(int ep, int ic,
-                              double A, double B, double C,
-                              double X, double Y, double Z,
-                              double alpha, ExtrudeParams *e);
-void Extrude_ProtudeSurface(int ep, int is,
-                            double A, double B, double C,
-                            double X, double Y, double Z,
-                            double alpha,
-                            int NewVolume, ExtrudeParams *e);
-void ProtudeXYZ ( double &x, double &y, double &z, ExtrudeParams *e);
-void ReplaceAllDuplicates ( Mesh *m );
-void Coherence_PS(void);
-bool IntersectAllSegmentsTogether(void);
-
-void ModifyLcPoint(int ip, double lc);
-void TranslateShapes(double X,double Y,double Z,
-                     List_T *ListShapes, int isFinal);
-void DilatShapes(double X,double Y,double Z, double A,
-                 List_T *ListShapes, int isFinal);
-void RotateShapes (double Ax,double Ay,double Az,
-                   double Px,double Py, double Pz,
-                   double alpha, List_T *ListShapes);
-void SymmetryShapes (double A,double B,double C,
-                     double D, List_T *ListShapes, int x);
-void CopyShape(int Type, int Num, int *New);
-
-void DeletePoint(int ip);
-void DeleteCurve(int ip);
-void DeleteSurf( int is );
-void DeleteShape(int Type, int Num);
-
-Curve * CreateReversedCurve (Mesh *M,Curve *c);
-
-int recognize_seg(int typ, List_T * liste, int *seg);
-int recognize_loop(List_T * liste, int *loop);
-int recognize_surfloop(List_T * liste, int *loop);
-
-
-#endif
diff --git a/Geo/DataBase.cpp b/Geo/DataBase.cpp
deleted file mode 100644
index f8316ba966203cf6dc6701f3ba2520a3f7b5c43b..0000000000000000000000000000000000000000
--- a/Geo/DataBase.cpp
+++ /dev/null
@@ -1,567 +0,0 @@
-// $Id: DataBase.cpp,v 1.16 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "CAD.h"
-#include "Create.h"
-#include "Verif.h"
-#include "Context.h"
-
-
-extern Context_T  CTX ;
-extern int        CurrentNodeNumber;
-extern Mesh      *THEM;
-
-/* POINTS */
-
-void Cdbpts101(int ip, double x, double y, double z, double l, double w){
-  Vertex *v;
-  CurrentNodeNumber = IMAX(CurrentNodeNumber, ip);
-  v = Create_Vertex(ip,
-		    CTX.geom.scaling_factor*x,
-		    CTX.geom.scaling_factor*y,
-		    CTX.geom.scaling_factor*z,
-		    CTX.geom.scaling_factor*l,
-		    0.0);
-  v->w = w;
-  Tree_Insert(THEM->Points,&v);
-}
-
-/* CURVES */
-
-void AddCurveInDataBase (int NumCurve, int TypCurve, int Order,
-                         List_T *ControlPoints, List_T *Knots,
-                         int VertexBeg, int VertexEnd,
-                         double uBeg, double uEnd){
-  Curve *c;
-
-  if(NumCurve<0) return; /* Negative Curves are reversed from positive ones*/
-
-  c = Create_Curve(NumCurve,TypCurve,Order,ControlPoints,Knots,
-                   VertexBeg,VertexEnd,uBeg,uEnd);
-
-  /* Courbe dans l'autre sens */
-  
-  Curve *rc = CreateReversedCurve(THEM,c);
-  Tree_Insert(THEM->Curves,&c);
-  Tree_Insert(THEM->Curves,&rc);
-}
-
-void AddCircleInDataBase (int NumCurve, int TypCurve, List_T *ControlPoints,
-                          double n[3]){
-  Curve *c;
-  
-  if(NumCurve<0) return; /* Negative Curves are reversed from positive ones*/
-
-  c = Create_Curve(NumCurve,TypCurve,2,ControlPoints,NULL,-1,-1,0.,1.);
-
-  c->Circle.n[0] = n[0];
-  c->Circle.n[1] = n[1];
-  c->Circle.n[2] = n[2];
-  
-  End_Curve(c);
-
-  /* Courbe dans l'autre sens */
-  
-  Curve *rc = CreateReversedCurve(THEM,c);
-  
-  rc->Circle.n[0] = n[0];
-  rc->Circle.n[1] = n[1];
-  rc->Circle.n[2] = n[2];
-  End_Curve(rc);
-  
-  Tree_Insert(THEM->Curves,&c);
-  Tree_Insert(THEM->Curves,&rc);
-}
-
-void Cdbseg101(int iseg, int typseg, int degre, List_T *liste, List_T *listint,
-               int i1,int i2,double u1 ,double u2,char *c1, char *c2, char *c3){
-  int i,j;
-  double d;
-  List_T *Temp;
-  if(listint){
-    AddCurveInDataBase (iseg,typseg,degre,listint,NULL,i1,i2,u1,u2);
-  }
-  else{
-    Temp = List_Create(List_Nbr(liste),1,sizeof(int));
-    for(i=0;i<List_Nbr(liste);i++){
-      List_Read(liste,i,&d);
-      j = (int)d;
-      List_Add(Temp,&j);
-    }
-    AddCurveInDataBase (iseg,typseg,degre,Temp,NULL,i1,i2,u1,u2);
-    List_Delete(Temp);
-  }
-  
-}
-
-
-/* SURFACES AND VOLUMES */
-
-void AddQuadricSurfaceInDataBase (int Typ, int NumQuadric, double zaxis[3],
-                                  double xaxis[3], double center[3],
-                                  double radius1, double radius2, List_T *loops){
-  int ic,i,j,NbLoop,iLoop;
-  Surface *s;
-  Curve *c;
-  EdgeLoop *el;
-  
-  s = Create_Surface(NumQuadric,Typ,0);
-  s->Method = LIBRE;
-  for(i=0;i<3;i++)s->Cyl.xaxis[i] = xaxis[i];
-  for(i=0;i<3;i++)s->Cyl.zaxis[i] = zaxis[i];
-  for(i=0;i<3;i++)s->Cyl.center[i] = center[i];
-  s->Cyl.radius1 = radius1;
-  s->Cyl.radius2 = radius2;
-  s->Generatrices = List_Create(4, 1, sizeof(Curve*));
-
-  NbLoop = List_Nbr(loops);
-  s->Generatrices = List_Create(4, 1, sizeof(Curve*));
-  for(i=0;i<NbLoop;i++){
-    List_Read(loops,i,&iLoop);
-    if(!(el = FindEdgeLoop(iLoop,THEM))){
-      Msg(GERROR, "Unknown Line Loop %d", iLoop);
-      List_Delete(s->Generatrices);
-      Free(s);
-      return;
-    }
-    else{
-      for(j=0;j<List_Nbr(el->Curves);j++){
-        List_Read(el->Curves,j,&ic);
-        if(!(c = FindCurve(ic,THEM))){
-          Msg(GERROR, "Unknown Curve %d", ic);
-	  List_Delete(s->Generatrices);
-	  Free(s);
-	  return;
-	}
-        else
-          List_Add (s->Generatrices, &c);
-      }
-    }
-  }
-  s->Support = s;
-  End_Surface(s);
-  Tree_Insert (THEM->Surfaces , &s);
-}
-
-void CreateSurfaceFromOldCrappyDatabase (int izon, int typzon, int o1, int o2,
-                                         int nbu, int nbv, int sup,
-                                         List_T *liste, List_T *loops, Mesh *M){
-
-  int      ic,i,j,l,NbLoop,iLoop;
-  Surface *s,*pS;
-  Curve   *c;
-  Vertex V,*v;
-  EdgeLoop *el;
-
-  s = Create_Surface(izon,typzon,0);
-  s->Method = LIBRE;
-  
-  NbLoop = List_Nbr(loops);
-  s->Generatrices = List_Create(4, 1, sizeof(Curve*));
-  for(i=0;i<NbLoop;i++){
-    List_Read(loops,i,&iLoop);
-    if(!(el = FindEdgeLoop(iLoop,THEM))){
-      Msg(GERROR, "Unknown Line Loop %d", iLoop);
-      List_Delete(s->Generatrices);
-      Free(s);
-      return;
-    }	  
-    else{
-      for(j=0;j<List_Nbr(el->Curves);j++){
-        List_Read(el->Curves,j,&ic);
-        if(!(c = FindCurve(ic,THEM))){
-          Msg(GERROR, "Unknown Curve %d", ic);
-	  List_Delete(s->Generatrices);
-	  Free(s);
-	  return;
-	}
-        else
-          List_Add (s->Generatrices, &c);
-      }
-    }
-  }
-  
-  if((pS = FindSurface(sup,THEM))){
-    s->Support = pS;
-  }
-  else{
-    s->Support = s;
-  }
-
-  if(typzon == MSH_SURF_NURBS && !pS){
-    s->Control_Points = List_Create(4, 1, sizeof(Vertex*));
-    s->OrderU = o1;
-    s->OrderV = o2;
-    s->Nu = nbu;
-    s->Nv = nbv;
-    for(l=0;l<List_Nbr(liste);l++){
-      List_Read(liste,l,&iLoop);
-      v = &V;
-      v->Num = iLoop;
-      List_Add (s->Control_Points, Tree_PQuery(M->Points, &v));
-    }
-  }
-
-  End_Surface(s);
-  Tree_Insert (M->Surfaces , &s);
-}
-
-void CreateVolumeFromOldCrappyDatabase (int izon, List_T *loops, Mesh *M){
-  SurfaceLoop *sl;
-  int i,j,iLoop,is;
-  Surface *s;
-  Volume *v;
-  
-  v = Create_Volume(izon,MSH_VOLUME,0);
-  v->Surfaces = List_Create(4, 1, sizeof(Surface*));
-  for(i=0;i<List_Nbr(loops);i++){
-    List_Read(loops,i,&iLoop);
-    if(!(sl = FindSurfaceLoop(iLoop,THEM))){
-      Msg(GERROR, "Unknown Surface Loop %d", iLoop);
-      List_Delete(v->Surfaces);
-      Free(v);
-      return;
-    }
-    else{
-      for(j=0;j<List_Nbr(sl->Surfaces);j++){
-        List_Read(sl->Surfaces,j,&is);
-        if(!(s = FindSurface(abs(is),THEM))){
-          Msg(GERROR, "Unknown Surface %d", is);
-	  List_Delete(v->Surfaces);
-	  Free(v);
-	  return;
-	}
-        else
-          List_Add (v->Surfaces, &s);
-      }
-    }
-  }
-  Tree_Add(M->Volumes,&v);
-}
-
-
-void Cdbz101(int izon, int typzon,int o1, int o2, int nbu, int nbv,
-                int support, List_T *ListCP, List_T *liste,
-                List_T *intlist){
-
-  int      i,j;
-  double   f;
-  List_T  *templist;
-  Curve   *c, *c0, *c1, *c2;
-
-  if(liste){
-    templist = List_Create(List_Nbr(liste),1,sizeof(int));
-    for(i=0;i<List_Nbr(liste);i++){
-      List_Read (liste, i, &f);
-      j = (int)f;
-      List_Add(templist,&j);
-    }
-  }
-  else if (intlist){
-    templist = intlist;
-  }
-
-  if(typzon == MSH_SURF_REGL || typzon == MSH_SURF_TRIC ||
-     typzon == MSH_SURF_PLAN || typzon == MSH_SURF_TRIMMED ||
-     typzon == MSH_SURF_NURBS ){
-    CreateSurfaceFromOldCrappyDatabase (izon, typzon, o1,o2, nbu, nbv,
-                                        support, ListCP,templist,THEM);
-  }
-  else if(typzon == MSH_SURF_LOOP){
-    Add_SurfaceLoop(izon,templist,THEM);
-  }
-  else  if(typzon == MSH_SEGM_LOOP){
-
-    // We sort the lines in the line loops. Without this sort, it very
-    // difficult to write general scriptable surface generation in
-    // complex cases.
-
-    int NbCurves = List_Nbr(templist) ;
-    List_T *curves = List_Create(NbCurves,1,sizeof(Curve*));
-    for(i=0 ; i<NbCurves ; i++){
-      if((c = FindCurve(*(int*)List_Pointer(templist,i), THEM)))
-	List_Add(curves, &c);
-      else
-	Msg(GERROR, "Unknown Curve %d in Line Loop %d", 
-	    *(int*)List_Pointer(templist,i), izon);
-    }
-    List_Reset(templist);
-
-    int j = 0, k = 0;
-    c0 = c1 = *(Curve**)List_Pointer(curves, 0);
-    List_Add(templist, &c1->Num);
-    List_PSuppress(curves, 0);
-    while(List_Nbr(templist) < NbCurves){
-      for(i=0 ; i<List_Nbr(curves); i++){
-	c2 = *(Curve**)List_Pointer(curves, i);
-	if(c1->end == c2->beg){
-	  List_Add(templist, &c2->Num);
-	  List_PSuppress(curves, i);
-	  c1 = c2 ;
-	  if(c2->end == c0->beg){
-	    if(List_Nbr(curves)){
-	      Msg(INFO, "Starting subloop %d in Line Loop %d (are you sure about this?)",
-		  ++k, izon);
-	      c0 = c1 = *(Curve**)List_Pointer(curves, 0);
-	      List_Add(templist, &c1->Num);
-	      List_PSuppress(curves, 0);
-	    }
-	  }
-	  break;
-	}
-      }
-      if(j++ > NbCurves){
-	Msg(GERROR, "Line Loop %d is wrong", izon);
-	break;
-      }
-    }  
-    List_Delete(curves);
-
-    /*
-    printf("Line Loop %d = {", izon);
-    for(i=0 ; i<List_Nbr(templist); i++){
-      printf(" %d", *(int*)List_Pointer(templist, i));
-    }
-    printf("}\n");
-    */
-
-    Add_EdgeLoop(izon,templist,THEM);
-  }
-  else  if(typzon == MSH_VOLUME){
-    CreateVolumeFromOldCrappyDatabase (izon,templist,THEM);
-  }
-  else{
-    Add_PhysicalGroup(izon,typzon,templist,THEM);
-  }
-  
-  if(liste)List_Delete (templist);
-    
-
-}
-
-void CreateNurbsSurfaceSupport (int Num , int Order1, int Order2 ,
-                                List_T *List, List_T *ku, List_T *kv){
-  
-  List_T *ListOfDouble_L;
-  List_T *ListCP;
-  int i,j,Nv,Nu,N;
-  Surface *s;
-  double d;
-  float f;
-  ListCP  = List_Create(2,2,sizeof(int));
-  
-  for(j=0;j<List_Nbr(List);j++){
-    List_Read(List,j,&ListOfDouble_L);
-    for(i=0;i<List_Nbr(ListOfDouble_L);i++){
-      List_Read(ListOfDouble_L,i,&d);
-      N = (int)d;
-      List_Add(ListCP,&N);
-    }
-  }
-  List_Read(List,0,&ListOfDouble_L);
-  Nu = List_Nbr(List);
-  Nv = List_Nbr(ListOfDouble_L);
-  Cdbz101(Num,MSH_SURF_NURBS,Order1,Order2,Nv,Nu,0,ListCP,NULL,NULL);
-
-  if(!(s = FindSurface(Num,THEM))){
-    Msg(GERROR, "Unknown Surface Loop %d", Num);
-    return;
-  }
-  else{
-    s->ku = (float*)malloc(List_Nbr(ku)*sizeof(float));
-    s->kv = (float*)malloc(List_Nbr(kv)*sizeof(float));
-    s->Support = NULL;
-  
-    double kumin = 0., kumax = 1.;
-    double kvmin = 0., kvmax = 1.;
-    /*
-      List_Read(ku,0,&kumin);
-      List_Read(ku,List_Nbr(ku)-1,&kumax);
-      List_Read(kv,0,&kvmin);
-      List_Read(kv,List_Nbr(kv)-1,&kvmax);
-    */
-    
-    for(i=0;i<List_Nbr(ku);i++){
-      List_Read(ku,i,&d);
-      f = (float) ((d-kumin)/(kumax-kumin));
-      s->ku[i] = f;
-    }
-    for(i=0;i<List_Nbr(kv);i++) {
-      List_Read(kv,i,&d);
-      f = (float) ((d-kvmin)/(kvmax-kvmin));
-      s->kv[i] = f;
-    }
-  }
-
-  List_Delete(ListCP);
-}
-
-void CreateNurbsSurface (int Num , int Order1 , int Order2 , List_T *List,
-                         List_T *ku, List_T *kv ){
-  List_T *ListOfDouble_L;
-  List_T *Listint,*ListCP;
-  int i,j,Loop[4],N,Nu,Nv;
-  double d;
-  int TypLine = MSH_SEGM_NURBS;
-  Curve *cc;
-  
-  Listint = List_Create(2,2,sizeof(int));
-  ListCP  = List_Create(2,2,sizeof(int));
-
-  double kumin, kumax;
-  List_Read(ku,0,&kumin);
-  List_Read(ku,List_Nbr(ku)-1,&kumax);
-  double kvmin, kvmax;
-  List_Read(kv,0,&kvmin);
-  List_Read(kv,List_Nbr(kv)-1,&kvmax);
-  for(j=0;j<List_Nbr(List);j++){
-    List_Read(List,j,&ListOfDouble_L);
-    for(i=0;i<List_Nbr(ListOfDouble_L);i++){
-      List_Read(ListOfDouble_L,i,&d);
-      N = (int)d;
-      List_Add(ListCP,&N);
-    }
-  }
-  
-  List_Read(List,0,&ListOfDouble_L);
-  Nu = List_Nbr(List);
-  Nv = List_Nbr(ListOfDouble_L);
-  
-  for(i=0;i<List_Nbr(ListOfDouble_L);i++){
-    List_Read(ListOfDouble_L,i,&d);
-    j = (int)d;
-    List_Add(Listint,&j);
-  }
-  if(recognize_seg(TypLine,Listint,&Loop[0])){
-  }
-  else{
-    Loop[0] = NEWREG();
-    Cdbseg101(Loop[0],TypLine,Order1,ListOfDouble_L,NULL,-1,-1,kumin,kumax,NULL,NULL,NULL);
-    if(!(cc = FindCurve(Loop[0],THEM))){
-      Msg(GERROR, "Unknown Curve %d", Loop[0]);
-      List_Delete(Listint);
-      List_Delete(ListCP);
-      return;
-    }
-    else{
-      cc->k = (float*)malloc(4*List_Nbr(ku)*sizeof(float));
-      for(i=0;i<List_Nbr(ku);i++){
-        List_Read(ku,i,&d);
-        cc->k[i] = (float)d/*((d-kumin)/(kumax-kumin))*/;
-      }
-    }
-  }
-  List_Reset(Listint);
-  
-  List_Read(List,List_Nbr(List)-1,&ListOfDouble_L);
-  for(i=0;i<List_Nbr(ListOfDouble_L);i++){
-    List_Read(ListOfDouble_L,i,&d);
-    j = (int)d;
-    List_Add(Listint,&j);
-  }
-  if(recognize_seg(TypLine,Listint,&Loop[2])){
-  }
-  else{
-    Loop[2] = NEWREG();
-    Cdbseg101(Loop[2],TypLine,Order1,ListOfDouble_L,NULL,-1,-1,kumin,kumax,NULL,NULL,NULL);
-    if(!(cc = FindCurve(Loop[2],THEM))){
-      Msg(GERROR, "Unknown Curve %d", Loop[2]);
-      List_Delete(Listint);
-      List_Delete(ListCP);
-      return;
-    }
-    else{
-      cc->k = (float*)malloc(4*List_Nbr(ku)*sizeof(float));
-      for(i=0;i<List_Nbr(ku);i++){
-        List_Read(ku,i,&d);
-        cc->k[i] = (float)d/*((d-kumin)/(kumax-kumin))*/;
-      }
-    }
-  }
-  List_Reset(Listint);
-  
-  List_T *List1 = List_Create(List_Nbr(List),1,sizeof(double));
-  List_T *List2 = List_Create(List_Nbr(List),1,sizeof(double));
-  
-  for(i=0;i<List_Nbr(List);i++){
-    List_Read(List,i,&ListOfDouble_L);
-    List_Add(List1,List_Pointer(ListOfDouble_L,0));
-    List_Add(List2,List_Pointer(ListOfDouble_L,List_Nbr(ListOfDouble_L)-1));
-  }
-  
-  for(i=0;i<List_Nbr(List1);i++){
-    List_Read(List1,i,&d);
-    j = (int)d;
-    List_Add(Listint,&j);
-  }
-  if(recognize_seg(TypLine,Listint,&Loop[1])){
-  }
-  else{
-    Loop[1] = NEWREG();
-    Cdbseg101(Loop[1],TypLine,Order2,List1,NULL,-1,-1,kvmin,kvmax,NULL,NULL,NULL);
-    if(!(cc = FindCurve(Loop[1],THEM))){
-      Msg(GERROR, "Unknown Curve %d", Loop[1]);
-      List_Delete(List1);
-      List_Delete(List2);
-      List_Delete(Listint);
-      List_Delete(ListCP);
-      return;
-    }
-    else{
-      cc->k = (float*)malloc(4*List_Nbr(kv) * sizeof(float));
-      for(i=0;i<List_Nbr(kv);i++){
-        List_Read(kv,i,&d);
-        cc->k[i] = (float)d/*((d-kvmin)/(kvmax-kvmin))*/;
-      }
-    }
-  }
-  List_Reset(Listint);
-  
-  for(i=0;i<List_Nbr(List2);i++){
-    List_Read(List2,i,&d);
-    j = (int)d;
-    List_Add(Listint,&j);
-  }
-  if(recognize_seg(TypLine,Listint,&Loop[3])){
-  }
-  else{
-    Loop[3] = NEWREG();
-    Cdbseg101(Loop[3],TypLine,Order2,List2,NULL,-1,-1,kvmin,kvmax,NULL,NULL,NULL);
-    if(!(cc = FindCurve(Loop[3],THEM)))
-      Msg(GERROR, "Unknown Curve %d", Loop[3]);
-    else{
-      cc->k = (float*)malloc(4*List_Nbr(kv)*sizeof(float));
-      for(i=0;i<List_Nbr(kv);i++){
-        List_Read(kv,i,&d);
-        cc->k[i] = (float)d/*((d-kvmin)/(kvmax-kvmin))*/;
-      }
-    }
-  }
-  
-  List_Reset(Listint);
-  List_Delete(List1);
-  List_Reset(List2);
-  double f = (double)-Loop[0];
-  List_Add(List2,&f);
-  f = (double)Loop[1];
-  List_Add(List2,&f);
-  f = (double)Loop[2];
-  List_Add(List2,&f);
-  f = (double)-Loop[3];
-  List_Add(List2,&f);
-  
-  int topnew = NEWREG();
-  CreateNurbsSurfaceSupport (topnew,Order1 , Order2 ,List,ku,kv);
-  j = NEWREG();
-  Cdbz101(j,MSH_SEGM_LOOP,0,0,0,0,0,NULL,List2,NULL);
-  List_Delete(List2);
-  List_Add(Listint,&j);
-  j = NEWREG();
-  Cdbz101(j,MSH_SURF_TRIMMED,Order1,Order2,Nv,Nu,topnew,ListCP,NULL,Listint);
-  List_Delete(Listint);
-  List_Delete(ListCP);
-}
-
diff --git a/Geo/DataBase.h b/Geo/DataBase.h
deleted file mode 100644
index 2b4099027fd425e100dbd2c6a8fd06fc6cb0812d..0000000000000000000000000000000000000000
--- a/Geo/DataBase.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef _DATABASE_H_
-#define _DATABASE_H_
-
-void Cdbpts101 (int ip, double x, double y, double z, double l, double w);
-void Cdbpts105 (int ip, double x, double y, double z, double l, double w);
-void Cdbseg102 (int iseg, int ip, int newp);
-void Cdbz102 (int izon, int ip, int newp, int oldp);
-void Cdbseg101 (int iseg, int typseg, int degre, List_T * liste, List_T * listint,
-                int, int, double, double, char *, char *, char *);
-void Cdbpts201 (int ip);
-void Cdbseg201 (int ip);
-void Cdbz201 (int ip);
-void Cdbz101 (int izon, int typzon, int o1, int o2, int nbu, int nbv,
-              int support, List_T * ListCP, List_T * liste, List_T * intlist);
-void CreateNurbsSurface (int Num, int Order1, int Order2, List_T *, List_T *, List_T *);
-void CreateNurbsSurfaceSupport (int Num, int Order2, int Order1, 
-                                List_T * List, List_T *, List_T *);
-void Cdbseg301 (int ip);
-void Cdbz301 (int ip);
-void Cdbn101 (int in, double X, double Y, double Z);
-void Cdbe101 (int nElm, int iEnt, int nnoe[4]);
-
-void AddCurveInDataBase (int NumCurve, int TypCurve, int Order, List_T * ControlPoints,
-                         List_T * Knots, int VertexBeg, int VertexEnd, double uBeg,
-                         double uEnd);
-void AddCircleInDataBase (int NumCurve, int TypCurve, List_T * ControlPoints,
-                          double n[3]);
-void AddQuadricSurfaceInDataBase (int Typ, int NumCyl, double zaxis[3], 
-                                  double xaxis[3], double center[3],
-                                  double radius1, double radius2,
-                                  List_T * loops);
-
-#endif
diff --git a/Geo/ExtrudeParams.cpp b/Geo/ExtrudeParams.cpp
deleted file mode 100644
index a3404cab8e48565aa3ab1de2e6d4541a6bd724d6..0000000000000000000000000000000000000000
--- a/Geo/ExtrudeParams.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-// $Id: ExtrudeParams.cpp,v 1.4 2001-01-08 08:05:42 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "ExtrudeParams.h"
-
-void Projette (double p[3],double mat[3][3]) {
-  double X, Y, Z ;
-
-  X = p[0] * mat[0][0] + p[1] * mat[0][1] + p[2] * mat[0][2];
-  Y = p[0] * mat[1][0] + p[1] * mat[1][1] + p[2] * mat[1][2];
-  Z = p[0] * mat[2][0] + p[1] * mat[2][1] + p[2] * mat[2][2];
-  p[0] = X;
-  p[1] = Y;
-  p[2] = Z;
-}
-
-ExtrudeParams :: ExtrudeParams (int ModeEx){
-  mesh.ExtrudeMesh = false;
-  geo.Mode = ModeEx;
-  mesh.Simplexes = true;
-  mesh.Recombine = false;
-}
-
-
-void ExtrudeParams :: fill (int ep , double A, double B, double C,
-                            double X, double Y, double Z, double angle){
-  geo.axe[0] = A;
-  geo.axe[1] = B;
-  geo.axe[2] = C;
-  geo.pt[0] = X;
-  geo.pt[1] = Y;
-  geo.pt[2] = Z;
-  geo.angle = angle;
-  geo.Type = ep;
-}
-
-void ExtrudeParams :: Extrude ( int iLayer, int iElemLayer,
-                                double &x, double &y, double &z){
-
-  double dx0,dy0,dz0,dx1,dy1,dz1;
-  double dx,dy,dz;
-  if(!iLayer){
-    dx0=dy0=dz0=0.0;
-    dx1 = mesh.hLayer[0];
-    dy1 = mesh.hLayer[0];
-    dz1 = mesh.hLayer[0];
-  }
-  else{
-    dx0 = mesh.hLayer[iLayer-1];
-    dy0 = mesh.hLayer[iLayer-1];
-    dz0 = mesh.hLayer[iLayer-1];
-    dx1 = mesh.hLayer[iLayer];
-    dy1 = mesh.hLayer[iLayer];
-    dz1 = mesh.hLayer[iLayer];
-  }
-  double t = (double) iElemLayer /(double)mesh.NbElmLayer[iLayer];
-  if(geo.Type){
-    dx = geo.axe[0]*(dx0 + t * (dx1-dx0));
-    dy = geo.axe[1]*(dy0 + t * (dy1-dy0));
-    dz = geo.axe[2]*(dz0 + t * (dz1-dz0));
-    x+=dx;y+=dy;z+=dz;
-  }
-  else{
-    double angle = geo.angle;
-    geo.angle = geo.angle*(dx0 + t * (dx1-dx0));
-    ProtudeXYZ(x,y,z,this);
-    geo.angle = angle;
-  }
-}
-
-void ExtrudeParams :: Rotate(double matr[3][3]){
-  Projette(geo.axe,matr);
-  Projette(geo.pt,matr);
-  geo.angle = -geo.angle;
-}
-
-void ExtrudeParams :: Extrude (double t, double &x, double &y, double &z){
-
-  double dx,dy,dz;
-  if(geo.Type){
-    dx = geo.axe[0]*t;
-    dy = geo.axe[1]*t;
-    dz = geo.axe[2]*t;
-    x+=dx;y+=dy;z+=dz;
-  }
-  else{
-    double angle = geo.angle;
-    geo.angle = geo.angle*t;
-    ProtudeXYZ(x,y,z,this);
-    geo.angle = angle;
-  }
-}
-
diff --git a/Geo/ExtrudeParams.h b/Geo/ExtrudeParams.h
deleted file mode 100644
index faabfcf88ccf8c4d38da34a5c1195957c9c024f3..0000000000000000000000000000000000000000
--- a/Geo/ExtrudeParams.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef _EXTRUDE_PARAMS_H_
-#define _EXTRUDE_PARAMS_H_
-
-#define NB_LAYER_MAX 30
-
-#define EXTRUDED_ENTITY 1
-#define COPIED_ENTITY 2
-
-class ExtrudeParams{
-
-public :
-  ExtrudeParams(int Mode = EXTRUDED_ENTITY);
-  void fill (int ep,double A, double B, double C,
-             double X, double Y, double Z, double angle);
-  void Extrude (  int iLayer, int iElemLayer,
-                  double &dx, double &dy, double &dz);
-  void Extrude (double t, double &x, double &y, double &z);
-  void Rotate(double matr[3][3]);
-  struct{
-    bool    ExtrudeMesh;
-    bool    Simplexes, Recombine;
-    int     NbLayer;
-    int     NbElmLayer [NB_LAYER_MAX];
-    int     ZonLayer   [NB_LAYER_MAX];
-    double  hLayer     [NB_LAYER_MAX];
-  }mesh;
-  struct{
-    int Mode;
-    int Type;
-    int Source;
-    double axe[3];
-    double pt[3];
-    double angle;
-  }geo;
-
-};
-
-#endif
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
deleted file mode 100644
index 74dd149932d5272aacba0ea3d1ea696bad70aa07..0000000000000000000000000000000000000000
--- a/Geo/Geo.cpp
+++ /dev/null
@@ -1,492 +0,0 @@
-// $Id: Geo.cpp,v 1.22 2001-08-12 14:24:50 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "DataBase.h"
-#include "Parser.h"
-#include "Context.h"
-
-extern Context_T CTX ;
-
-#define BUFFSIZE 32000
-
-// Ceci, c'est horrible. Des que Motif est completement zingle, je
-// vire et je refais une routine generique.
-
-char x_text[100]  = "0.0", y_text[100]  = "0.0", z_text[100]  = "0.0";
-char l_text[100] = "1.0" ;
-char tx_text[100] = "0.0", ty_text[100] = "0.0", tz_text[100] = "0.0";
-char attrx_text[100] = "1.0", attry_text[100] = "1.0", attrz_text[100] = "1.0" ;
-char attrdec_text[100] = "2.0";
-char px_text[100] = "0.0", py_text[100] = "0.0", pz_text[100] = "0.0" ;
-char angle_text[100] = "3.14159/2" ;
-char ax_text[100] = "0.0", ay_text[100] = "0.0", az_text[100] = "1.0";
-char dx_text[100] = "0.0", dy_text[100] = "0.0", dz_text[100] = "0.0", df_text[100] = "1.0";
-char sa_text[100] = "0.0", sb_text[100] = "0.0", sc_text[100] = "0.0", sd_text[100] = "0.0";
-char trsf_pts_text[100] = "2", trsf_type_text[100] = "Progression 1.";
-char trsf_vol_text[100] = "1";
-char char_length_text[100] = "1.";
-
-double evaluate_scalarfunction (char *var, double val, char *funct){
-  FILE *tempf;
-  tempf = yyin;
-  
-  if(!(yyin = fopen(CTX.tmp_filename,"w"))){
-    Msg(GERROR, "Unable to open temporary file '%s'", CTX.tmp_filename);
-    return 0.;
-  }
-
-  /* On pose la variable = la fonction et on evalue la fonction */
-
-  fprintf(yyin,"%s = %g ;\n",var,val);
-  fprintf(yyin,"ValeurTemporaire__ = %s ;\n",funct);
-  fclose(yyin);
-  yyin = fopen(CTX.tmp_filename,"r");
-  while(!feof(yyin)){
-    yyparse();
-  }
-  fclose(yyin);
-  Symbol TheSymbol;
-  TheSymbol.Name = (char*)malloc(100);
-  strcpy(TheSymbol.Name,"ValeurTemporaire__");
-  yyin = tempf;
-  if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) {
-    free(TheSymbol.Name);
-    return 0.0;
-  }
-  free(TheSymbol.Name);
-  return *(double*)List_Pointer_Fast(TheSymbol.val,0);
-}
-
-void add_infile(char *text, char *fich){
-  FILE *file;
-
-  if(!(yyin = fopen(CTX.tmp_filename,"w"))){
-    Msg(GERROR, "Unable to open temporary file '%s'", CTX.tmp_filename);
-    return;
-  }
-  if(!(file = fopen(fich,"a"))){
-    Msg(GERROR, "Unable to open file '%s'", fich);
-    return;
-  }
-  fprintf(yyin,"%s\n",text);
-  Msg(STATUS1,"%s",text);
-  fclose(yyin);
-  yyin = fopen(CTX.tmp_filename,"r");
-  while(!feof(yyin)){
-    yyparse();
-  }
-  fclose(yyin);
-  fprintf(file,"%s\n",text);
-  fclose(file);
-  AddALineInTheEditGeometryForm (text);
-}
-
-void delet(int p1, char *fich, char *what){
-  char text[BUFFSIZE];
-
-  sprintf(text,"Delete {\n %s{%d};\n}",what,p1);
-  add_infile(text,fich);
-}
-
-void add_trsfsurf (int N, int *l, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-  sprintf(text,"Transfinite Surface {%d} = {",l[0]);
-  for(i=1;i<N;i++){
-    if(i==1)sprintf(text2,"%d",l[i]);
-    else sprintf(text2,",%d",l[i]);
-    strcat(text,text2);
-  }
-  sprintf(text2,"};");
-  strcat(text,text2);
-  add_infile(text,fich);
-}
-
-void add_ellipticsurf (int N, int *l, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-  sprintf(text,"Elliptic Surface {%d} = {",l[0]);
-  for(i=1;i<N;i++){
-    if(i==1)sprintf(text2,"%d",l[i]);
-    else sprintf(text2,",%d",l[i]);
-    strcat(text,text2);
-  }
-  sprintf(text2,"};");
-  strcat(text,text2);
-  add_infile(text,fich);
-}
-
-void add_charlength (int N, int *l, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-  sprintf(text,"Characteristic Length {");
-  for(i=0;i<N;i++){
-    if(i==0)sprintf(text2,"%d",l[i]);
-    else sprintf(text2,",%d",l[i]);
-    strcat(text,text2);
-  }
-  sprintf(text2,"} = %s;", char_length_text);
-  strcat(text,text2);
-  add_infile(text,fich);
-}
-
-void add_recosurf (int N, int *l, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-  sprintf(text,"Recombine Surface {");
-  for(i=0;i<N;i++){
-    if(i==0)sprintf(text2,"%d",l[i]);
-    else sprintf(text2,",%d",l[i]);
-    strcat(text,text2);
-  }
-  sprintf(text2,"};");
-  strcat(text,text2);
-  add_infile(text,fich);
-}
-
-
-void add_trsfline (int N, int *l, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-  sprintf(text,"Transfinite Line {");
-  for(i=0;i<N;i++){
-    if(!i)sprintf(text2,"%d",l[i]);
-    else sprintf(text2,",%d",l[i]);
-    strcat(text,text2);
-  }
-  if(strlen(trsf_type_text))
-    sprintf(text2,"} = %s Using %s;", trsf_pts_text, trsf_type_text);
-  else
-    sprintf(text2,"} = %s;", trsf_pts_text);
-  strcat(text,text2);
-  add_infile(text,fich);
-}
-
-
-void add_param (char *par, char *value, char *fich){
-  char text[BUFFSIZE];
-  sprintf(text,"%s = %s;",par,value);
-  add_infile(text,fich);
-}
-
-void add_point(char *fich){
-  char text[BUFFSIZE];
-  int ip;
-
-  ip = NEWPOINT();
-  sprintf(text,"Point(%d) = {%s,%s,%s,%s};",ip,x_text,y_text,z_text,l_text);
-  add_infile(text,fich);
-}
-
-void add_attractor(char *fich, int ip, int typ){
-  char text[BUFFSIZE];
-  if(typ == 0) {
-    sprintf(text,"Attractor Point {%d} = {%s,%s,%s} = ;",
-            ip,attrx_text,attry_text,attrdec_text);
-  }
-  else if(typ == 1){
-    sprintf(text,"Attractor Line {%d} = {%s,%s,%s};",
-            ip, attrx_text,attry_text,attrdec_text);
-  }
-  else if(typ == 2) {
-    sprintf(text,"Attractor Surface {%d} = {%s,%s,%s};",
-            ip,attrx_text,attry_text,attrdec_text);
-  }
-  add_infile(text,fich);
-}
-
-
-void add_line(int p1, int p2, char *fich){
-  char text[BUFFSIZE];
-  int iseg;
-  List_T *list = List_Create(2,2,sizeof(int));
-  List_Add(list,&p1);
-  List_Add(list,&p2);
-  if((recognize_seg(MSH_SEGM_LINE,list,&iseg))){
-    List_Delete(list);
-    return;
-  }
-  List_Delete(list);
-  
-  sprintf(text,"Line(%d) = {%d,%d};",NEWREG(),p1,p2);
-  add_infile(text,fich);
-}
-
-void add_circ(int p1, int p2, int p3, char *fich){
-  char text[BUFFSIZE];
-
-  sprintf(text,"Circle(%d) = {%d,%d,%d};",NEWREG(),p1,p2,p3);
-  add_infile(text,fich);
-}
-
-void add_ell(int p1, int p2, int p3, int p4, char *fich){
-  char text[BUFFSIZE];
-
-  sprintf(text,"Ellipsis(%d) = {%d,%d,%d,%d};",NEWREG(),p1,p2,p3,p4);
-  add_infile(text,fich);
-}
-
-void add_spline(int N, int *p, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-
-  sprintf(text,"CatmullRom(%d) = {",NEWREG());
-  for(i=0;i<N;i++){
-    if(i != N-1)
-      sprintf(text2,"%d,",p[i]);
-    else
-      sprintf(text2,"%d};",p[i]);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-void add_bezier(int N, int *p, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-
-  sprintf(text,"Bezier(%d) = {",NEWREG());
-  for(i=0;i<N;i++){
-    if(i != N-1)
-      sprintf(text2,"%d,",p[i]);
-    else
-      sprintf(text2,"%d};",p[i]);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-
-void add_bspline(int N, int *p, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-
-  sprintf(text,"BSpline(%d) = {",NEWREG());
-  for(i=0;i<N;i++){
-    if(i != N-1)
-      sprintf(text2,"%d,",p[i]);
-    else
-      sprintf(text2,"%d};",p[i]);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-void add_multline(int N, int *p, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i;
-
-  int iseg;
-  List_T *list = List_Create(N,2,sizeof(int));
-  for(i=0;i<N;i++)
-    List_Add(list,&p[i]);
-  if((recognize_seg(MSH_SEGM_LINE,list,&iseg))){
-    List_Delete(list);
-    return;
-  }
-  List_Delete(list);
-
-  sprintf(text,"Line(%d) = {",NEWREG());
-  for(i=0;i<N;i++){
-    if(i != N-1)
-      sprintf(text2,"%d,",p[i]);
-    else
-      sprintf(text2,"%d};",p[i]);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-void add_loop(List_T *list, char *fich, int *numloop){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i,seg;
-
-  if((recognize_loop(list,numloop))) return;
-
-  *numloop = NEWREG();
-  sprintf(text,"Line Loop(%d) = {",NEWREG());
-  for(i=0;i<List_Nbr(list);i++){
-      List_Read(list,i,&seg);
-    if(i != List_Nbr(list)-1)
-      sprintf(text2,"%d,",seg);
-    else
-      sprintf(text2,"%d};",seg);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-
-void add_surf(List_T *list, char *fich, int support, int typ){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i,seg;
-
-  if(typ ==1){
-    sprintf(text,"Ruled Surface(%d) = {",NEWREG());
-  }
-  else if (typ == 2){
-    sprintf(text,"Plane Surface(%d) = {",NEWREG());
-  }
-  else
-  {
-    sprintf(text,"Trimmed Surface(%d) = %d {",NEWREG(),support);
-  }
-  for(i=0;i<List_Nbr(list);i++){
-      List_Read(list,i,&seg);
-    if(i != List_Nbr(list)-1)
-      sprintf(text2,"%d,",seg);
-    else
-      sprintf(text2,"%d};",seg);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-void add_vol(List_T *list, char *fich, int *numvol){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i,seg;
-
-  if((recognize_surfloop(list,numvol))) return;
-
-  *numvol = NEWREG();
-  sprintf(text,"Surface Loop(%d) = {",*numvol);
-  for(i=0;i<List_Nbr(list);i++){
-    List_Read(list,i,&seg);
-    if(i != List_Nbr(list)-1)
-      sprintf(text2,"%d,",seg);
-    else
-      sprintf(text2,"%d};",seg);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-void add_multvol(List_T *list, char *fich){
-  char text[BUFFSIZE];
-  char text2[BUFFSIZE];
-  int i,seg;
-
-  sprintf(text,"Volume(%d) = {",NEWREG());
-  for(i=0;i<List_Nbr(list);i++){
-    List_Read(list,i,&seg);
-    if(i != List_Nbr(list)-1)
-      sprintf(text2,"%d,",seg);
-    else
-      sprintf(text2,"%d};",seg);
-    strcat(text,text2);
-  }
-  add_infile(text,fich);
-}
-
-void add_trsfvol(int N, int *l, char *fich){
-  char text[BUFFSIZE], text2[BUFFSIZE];
-  int i;
-
-  sprintf(text,"Transfinite Volume{%s} = {", trsf_vol_text);
-  for(i=0;i<N;i++){
-    if(i==0)sprintf(text2,"%d",l[i]);
-    else sprintf(text2,",%d",l[i]);
-    strcat(text,text2);
-  }
-  sprintf(text2,"};");
-  strcat(text,text2);
-  add_infile(text,fich);
-}
-
-
-void add_physical(List_T *list, char *fich, int type, int *num){
-  char text[BUFFSIZE], text2[BUFFSIZE];
-  int  i, elementary_entity;
-
-  *num = NEWREG();
-  switch(type){
-  case ENT_POINT : sprintf(text, "Physical Point(%d) = {", *num); break;
-  case ENT_LINE : sprintf(text, "Physical Line(%d) = {", *num); break;
-  case ENT_SURFACE : sprintf(text, "Physical Surface(%d) = {", *num); break;
-  case ENT_VOLUME : sprintf(text, "Physical Volume(%d) = {", *num); break;
-  }
-
-  for(i=0; i<List_Nbr(list); i++){
-    List_Read(list, i, &elementary_entity);
-    if(i != List_Nbr(list)-1)
-      sprintf(text2, "%d,", elementary_entity);
-    else
-      sprintf(text2, "%d};", elementary_entity);
-    strcat(text, text2);
-  }
-  add_infile(text, fich);
-}
-
-void translate(int add, int s, char *fich, char *what){
-  char text[BUFFSIZE];
-
-  if(add)
-    sprintf(text,"Translate {%s,%s,%s} {\n  Duplicata { %s{%d}; }\n}",
-            tx_text,ty_text,tz_text,what,s);
-  else
-    sprintf(text,"Translate {%s,%s,%s} {\n  %s{%d};\n}",
-            tx_text,ty_text,tz_text,what,s);
-  add_infile(text,fich);
-}
-void rotate(int add, int s, char *fich, char *quoi){
-  char text[BUFFSIZE];
-
-  if(add)
-    sprintf(text,"Rotate { {%s,%s,%s},{%s,%s,%s},%s } {\n  Duplicata { %s{%d}; }\n}",
-            ax_text,ay_text,az_text,px_text,py_text,pz_text,angle_text, quoi,s);
-  else
-    sprintf(text,"Rotate { {%s,%s,%s},{%s,%s,%s},%s } {\n   %s{%d};\n  }",
-            ax_text,ay_text,az_text,px_text,py_text,pz_text,angle_text, quoi,s);
-  add_infile(text,fich);
-}
-void dilate(int add, int s, char *fich, char *quoi){
-  char text[BUFFSIZE];
-
-  if(add)
-    sprintf(text,"Dilate { {%s,%s,%s},%s } {\n  Duplicata { %s{%d}; }\n}",
-            dx_text,dy_text,dz_text,df_text, quoi,s);
-  else
-    sprintf(text,"Dilate { {%s,%s,%s},%s } {\n   %s{%d};\n  }",
-            dx_text,dy_text,dz_text,df_text, quoi,s);
-  add_infile(text,fich);
-}
-void symmetry(int add, int s, char *fich, char *quoi){
-  char text[BUFFSIZE];
-
-  if(add)
-    sprintf(text,"Symmetry { %s,%s,%s,%s } {\n  Duplicata { %s{%d}; }\n}",
-            sa_text,sb_text,sc_text,sd_text, quoi,s);
-  else
-    sprintf(text,"Symmetry { %s,%s,%s,%s } {\n   %s{%d};\n  }",
-            sa_text,sb_text,sc_text,sd_text, quoi,s);
-  add_infile(text,fich);
-
-}
-void extrude(int s, char *fich, char *what){
-  char text[BUFFSIZE];
-
-  sprintf(text,"Extrude %s {%d, {%s,%s,%s}};",what,s,tx_text,ty_text,tz_text);
-  add_infile(text,fich);
-}
-void protude(int s, char *fich, char *what){
-  char text[BUFFSIZE];
-
-  sprintf(text,"Extrude %s {%d, {%s,%s,%s}, {%s,%s,%s}, %s};",what,s,ax_text,ay_text,
-          az_text,px_text,py_text,pz_text,angle_text);
-  add_infile(text,fich);
-}
diff --git a/Geo/Geo.h b/Geo/Geo.h
deleted file mode 100644
index cb421bc249d0cd46c9523664648066c45129ca6e..0000000000000000000000000000000000000000
--- a/Geo/Geo.h
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef _GEO_H_
-#define _GEO_H_
-
-#define ELEMENTARY 1
-#define PHYSICAL   2
-
-#define INFILE     1
-#define INSTRING   2
-#define STRINGMAX  1024
-
-#define NMAX_SPLINE   100
-
-#define ENT_POINT    1
-#define ENT_LINE     2
-#define ENT_SURFACE  3
-#define ENT_VOLUME   4
-
-#define MSH_TRSF_LINE        1
-#define MSH_TRSF_SURFACE     2
-#define MSH_TRSF_VOLUME      3
-
-#define MSH_ASSOCIATION      6
-
-#define MSH_RECOMBINE        5
-
-#define MSH_POINT            1
-
-#define MSH_SEGM_LINE        2
-#define MSH_SEGM_SPLN        3
-#define MSH_SEGM_CIRC        4
-#define MSH_SEGM_CIRC_INV    5
-#define MSH_SEGM_ELLI        6
-#define MSH_SEGM_ELLI_INV    7
-#define MSH_SEGM_LOOP        8
-#define MSH_SEGM_PARAMETRIC  888
-#define MSH_SEGM_MERGEDSEGS  889
-
-#define MSH_SURF_PLAN        9
-#define MSH_SURF_REGL        10
-#define MSH_SURF_TRIC        11
-#define MSH_SURF_NURBS       12
-#define MSH_SURF_LOOP        13
-#define MSH_SURF_CYLNDR      1299
-#define MSH_SURF_TORUS       1399
-#define MSH_SURF_CONE        1499
-#define MSH_SURF_TRIMMED     1599
-#define MSH_SURF_STL         1699
-#define MSH_SURF_DISCRETE    1799
-
-#define MSH_VOLUME                   14
-#define MSH_SEGM_BSPLN       15
-#define MSH_SEGM_URBS        16
-#define MSH_SEGM_NURBS       17
-#define MSH_SEGM_BEZIER      18
-#define MSH_SEGM_DISCRETE    19
-
-#define MSH_PHYSICAL_POINT   300
-#define MSH_PHYSICAL_LINE    310
-#define MSH_PHYSICAL_SURFACE 320
-#define MSH_PHYSICAL_VOLUME  330
-
-typedef struct {
-  int Type;
-  int Num;
-  union {
-    int I;
-    double F;
-    double V[4];
-    List_T *ListDouble;
-  } obj;
-} Shape;
-
-// static strings for parser interaction
-extern char x_text[100], y_text[100], z_text[100];
-extern char l_text[100];
-extern char tx_text[100], ty_text[100], tz_text[100];
-extern char attrx_text[100], attry_text[100], attrz_text[100];
-extern char attrdec_text[100];
-extern char px_text[100], py_text[100], pz_text[100];
-extern char angle_text[100] ;
-extern char ax_text[100], ay_text[100], az_text[100];
-extern char dx_text[100], dy_text[100], dz_text[100], df_text[100];
-extern char sa_text[100], sb_text[100], sc_text[100], sd_text[100];
-extern char nb_pts[100], mode_value[100];
-extern char trsf_pts_text[100], trsf_type_text[100];
-extern char trsf_vol_text[100];
-extern char char_length_text[100];
-
-double evaluate_scalarfunction (char *var, double val, char *funct);
-
-void delet(int p1, char *fich, char *what);
-void add_infile(char *text, char *fich);
-void add_trsfsurf (int N, int *l, char *fich);
-void add_trsfvol (int N, int *l, char *fich);
-void add_ellipticsurf (int N, int *l, char *fich);
-void add_charlength (int N, int *l, char *fich);
-void add_recosurf (int N, int *l, char *fich);
-void add_trsfline (int N, int *l, char *fich);
-void add_param (char *par, char *value, char *fich);
-void add_point(char *fich);
-void add_attractor(char *fich, int ip, int typ);
-void add_line(int p1, int p2, char *fich);
-void add_circ(int p1, int p2, int p3, char *fich);
-void add_ell(int p1, int p2, int p3, int p4, char *fich);
-void add_spline(int N, int *p, char *fich);
-void add_bezier(int N, int *p, char *fich);
-void add_bspline(int N, int *p, char *fich);
-void add_multline(int N, int *p, char *fich);
-void add_loop(List_T *list, char *fich, int *numloop);
-void add_surf(List_T *list, char *fich, int support, int typ);
-void add_vol(List_T *list, char *fich, int *numvol);
-void add_multvol(List_T *list, char *fich);
-void add_physical(List_T *list, char *fich, int type, int *num);
-void translate(int add, int s, char *fich, char*what);
-void rotate(int add, int s, char *fich, char *what);
-void dilate(int add, int s, char *fich, char *what);
-void symmetry(int add, int s, char *fich, char *what);
-void extrude(int s, char *fich, char *what);
-void protude(int s, char *fich, char *what);
-
-#endif
diff --git a/Geo/Makefile b/Geo/Makefile
deleted file mode 100644
index 460debceade2b8cff2cef73c187add3b5871f8c2..0000000000000000000000000000000000000000
--- a/Geo/Makefile
+++ /dev/null
@@ -1,106 +0,0 @@
-# $Id: Makefile,v 1.23 2001-08-11 23:32:20 geuzaine Exp $
-#
-# Makefile for "libGeo.a"
-#
-
-.IGNORE:
-
-CC      = c++
-AR      = ar ruvs
-RANLIB  = ranlib
-RM      = rm
-
-LIB       = ../lib/libGeo.a
-INCLUDE   = -I../Common -I../DataStr -I../Geo -I../Mesh -I../Parser\
-            -I../Motif -I../Fltk
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)
-
-SRC =  	CAD.cpp \
-        DataBase.cpp \
-        MinMax.cpp \
-        ExtrudeParams.cpp \
-        Geo.cpp \
-        StepGeomDatabase.cpp \
-	Verif.cpp \
-	Visibility.cpp \
-        Print_Geo.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ)
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-CAD.o: CAD.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h DataBase.h \
- ../Mesh/Interpolation.h ../Mesh/Create.h CAD.h ../Common/Context.h
-DataBase.o: DataBase.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h CAD.h ../Mesh/Create.h \
- Verif.h ../Common/Context.h
-MinMax.o: MinMax.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h \
- ../Mesh/Vertex.h ../Common/Context.h
-ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ExtrudeParams.h
-Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Geo.h CAD.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h DataBase.h ../Parser/Parser.h \
- ../Common/Context.h
-StepGeomDatabase.o: StepGeomDatabase.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h Geo.h StepGeomDatabase.h DataBase.h \
- ../Common/Context.h
-Verif.o: Verif.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h DataBase.h
-Visibility.o: Visibility.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h DataBase.h
-Print_Geo.o: Print_Geo.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h CAD.h ../Common/Context.h
diff --git a/Geo/MinMax.cpp b/Geo/MinMax.cpp
deleted file mode 100644
index a66d23f3e4a69a077ba8630f0148bce9de5701a7..0000000000000000000000000000000000000000
--- a/Geo/MinMax.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-// $Id: MinMax.cpp,v 1.6 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Vertex.h"
-#include "Context.h"
-
-extern Context_T    CTX ;
-
-/* ------------------------------------------------------------------------ */
-/*  m i n m a x                                                             */
-/* ------------------------------------------------------------------------ */
-
-void minmax(void *a , void*b){
-  Vertex *v;
-  v = *(Vertex**)a;
-  CTX.min[0] = (CTX.min[0] < v->Pos.X) ? CTX.min[0] : v->Pos.X;
-  CTX.max[0] = (CTX.max[0] > v->Pos.X) ? CTX.max[0] : v->Pos.X;
-  CTX.min[1] = (CTX.min[1] < v->Pos.Y) ? CTX.min[1] : v->Pos.Y;
-  CTX.max[1] = (CTX.max[1] > v->Pos.Y) ? CTX.max[1] : v->Pos.Y;
-  CTX.min[2] = (CTX.min[2] < v->Pos.Z) ? CTX.min[2] : v->Pos.Z;
-  CTX.max[2] = (CTX.max[2] > v->Pos.Z) ? CTX.max[2] : v->Pos.Z;
-}
-
-void CalculateMinMax (Tree_T *t, double *bbox){
-  Vertex   *v;
-  double   frac;
-  int      exp;
-
-  if(!Tree_Nbr(t)){
-    if(!bbox || (bbox[0] > bbox[1])){ //the bbox is wrong
-      CTX.min[0] = CTX.min[1] = CTX.min[2] = -1.;
-      CTX.max[0] = CTX.max[1] = CTX.max[2] =  1.;
-      CTX.range[0] = CTX.range[1] = CTX.range[2] = 0.;
-      CTX.lc = CTX.lc_middle = 1.;
-      return;
-    }
-    else{
-      CTX.min[0] = bbox[0] ; CTX.max[0] = bbox[1] ;
-      CTX.min[1] = bbox[2] ; CTX.max[1] = bbox[3] ;
-      CTX.min[2] = bbox[4] ; CTX.max[2] = bbox[5] ;
-    }
-  }
-  else{
-    Tree_Right(t,&v);
-    CTX.min[0] = CTX.max[0] = v->Pos.X;
-    CTX.min[1] = CTX.max[1] = v->Pos.Y;
-    CTX.min[2] = CTX.max[2] = v->Pos.Z;
-    Tree_Action(t,minmax);
-  }
-
-  CTX.range[0] = CTX.max[0]-CTX.min[0]; 
-  CTX.range[1] = CTX.max[1]-CTX.min[1]; 
-  CTX.range[2] = CTX.max[2]-CTX.min[2];
-
-  if(CTX.range[0] == 0. && CTX.range[1] == 0. && CTX.range[2] == 0.){
-    CTX.min[0] -= 1. ; 
-    CTX.min[1] -= 1. ; 
-    CTX.max[0] += 1. ; 
-    CTX.max[1] += 1. ;
-    CTX.lc = 1.;
-    CTX.lc_middle = 0.;
-  }
-  else if(CTX.range[0] == 0. && CTX.range[1] == 0.){
-    CTX.lc = CTX.lc_middle = CTX.range[2];
-    CTX.min[0] -= CTX.lc; 
-    CTX.min[1] -= CTX.lc; 
-    CTX.max[0] += CTX.lc; 
-    CTX.max[1] += CTX.lc;
-  }
-  else if(CTX.range[0] == 0. && CTX.range[2] == 0.){
-    CTX.lc = CTX.lc_middle = CTX.range[1];
-    CTX.min[0] -= CTX.lc; 
-    CTX.max[0] += CTX.lc;   
-  }
-  else if(CTX.range[1] == 0. && CTX.range[2] == 0.){
-    CTX.lc = CTX.lc_middle = CTX.range[0];
-    CTX.min[1] -= CTX.lc; 
-    CTX.max[1] += CTX.lc;   
-  }
-  else if(CTX.range[0] == 0.){ 
-    CTX.lc = sqrt(DSQR(CTX.range[1])+DSQR(CTX.range[2]));
-    CTX.lc_middle = DMIN(CTX.range[1], CTX.range[2]);
-    CTX.min[0] -= CTX.lc; 
-    CTX.max[0] += CTX.lc;
-  }
-  else if(CTX.range[1] == 0.){ 
-    CTX.lc = sqrt(DSQR(CTX.range[0])+DSQR(CTX.range[2]));
-    CTX.lc_middle = DMIN(CTX.range[0], CTX.range[2]);
-    CTX.min[1] -= CTX.lc; 
-    CTX.max[1] += CTX.lc;
-  }
-  else if(CTX.range[2] == 0.){ 
-    CTX.lc = sqrt(DSQR(CTX.range[0])+DSQR(CTX.range[1]));
-    CTX.lc_middle = DMIN(CTX.range[0], CTX.range[1]);
-  }
-  else{
-    CTX.lc = sqrt(DSQR(CTX.range[0])+DSQR(CTX.range[1])+DSQR(CTX.range[2]));
-    if((CTX.range[1] <= CTX.range[0] && CTX.range[0] <= CTX.range[2]) || 
-       (CTX.range[2] <= CTX.range[0] && CTX.range[0] <= CTX.range[1])) 
-      CTX.lc_middle = CTX.range[0];
-    else if((CTX.range[0] <= CTX.range[1] && CTX.range[1] <= CTX.range[2]) || 
-            (CTX.range[2] <= CTX.range[1] && CTX.range[1] <= CTX.range[0])) 
-      CTX.lc_middle = CTX.range[1];
-    else
-      CTX.lc_middle = CTX.range[2];
-  }
-
-  /* CTX.lc_order : CTX.lc == f * 10^CTX.lc_order with -1<f<1  */
-
-  frac = frexp(CTX.lc, &exp);     
-  CTX.lc_order = (int)floor(log10(ldexp(frac,exp)));
-}
-
diff --git a/Geo/MinMax.h b/Geo/MinMax.h
deleted file mode 100644
index 0cf17cf830aec529d3fc16c788795850f26116de..0000000000000000000000000000000000000000
--- a/Geo/MinMax.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _MINMAX_H_
-#define _MINMAX_H_
-
-void CalculateMinMax (Tree_T *t, double *bbox);
-
-#endif
diff --git a/Geo/Print_Geo.cpp b/Geo/Print_Geo.cpp
deleted file mode 100644
index e126fa39668ca30a8f8fffb9c45f9d3d685724e3..0000000000000000000000000000000000000000
--- a/Geo/Print_Geo.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-// $Id: Print_Geo.cpp,v 1.17 2001-08-13 07:22:15 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Vertex.h"
-#include "CAD.h"
-#include "Context.h"
-
-FILE *FOUT;
-
-void Print_Point(void *a, void *b){
-  Vertex *v;
-  v = *(Vertex**)a;
-  fprintf(FOUT, "Point(%d) = {%g, %g, %g, %g};\n",
-          v->Num,v->Pos.X,v->Pos.Y,v->Pos.Z,v->lc);
-}
-
-void Print_Nurbs (Curve *c, FILE *f){
-  int i,j;
-  Vertex *v;
-
-  fprintf(f,"Nurbs (%d) = {",c->Num);
-  for(i=0;i<List_Nbr(c->Control_Points);i++){
-    List_Read(c->Control_Points,i,&v);
-    if(!i)
-      fprintf(FOUT,"%d",v->Num);
-    else
-      fprintf(FOUT,", %d",v->Num);
-    if(i%8 == 7 && i!=List_Nbr(c->Control_Points)-1)fprintf(FOUT,"\n");
-  }
-  fprintf(f,"}\n");
-  fprintf(f,"Knots {");
-  for(j=0;j<List_Nbr(c->Control_Points)+c->degre+1;j++){
-    if(!j)fprintf(f,"%g",c->k[j]);
-    else fprintf(f,", %g",c->k[j]);
-    if(j%5 == 4 && j!=List_Nbr(c->Control_Points)+c->degre)fprintf(FOUT,"\n");
-  }
-  fprintf(f,"}");
-  fprintf(f,"Order %d;\n\n",c->degre);
-}
-
-void Print_Curve(void *a, void *b){
-  Curve *c;
-  Vertex *v;
-  int i;
-  c = *(Curve**)a;
-
-  if(c->Num < 0)return;
-
-  switch(c->Typ){
-  case MSH_SEGM_LINE:
-    fprintf(FOUT,"Line (%d) = ",c->Num);
-    break;
-  case MSH_SEGM_CIRC:
-  case MSH_SEGM_CIRC_INV:
-    fprintf(FOUT,"Circle (%d) = ",c->Num);
-    break;
-  case MSH_SEGM_ELLI:
-  case MSH_SEGM_ELLI_INV:
-    fprintf(FOUT,"Ellipsis (%d) = ",c->Num);
-    break;
-  case MSH_SEGM_NURBS:
-    Print_Nurbs(c,FOUT);
-    return;
-  case MSH_SEGM_SPLN:
-    fprintf(FOUT,"CatmullRom (%d) = ",c->Num);
-    break;
-  default:
-    Msg(GERROR, "Unknown Curve type %d", c->Typ);
-    return;
-  }
-  
-  for(i=0;i<List_Nbr(c->Control_Points);i++){
-    List_Read(c->Control_Points,i,&v);
-    if(i)
-      fprintf(FOUT,", %d",v->Num);
-    else
-      fprintf(FOUT,"{%d",v->Num);
-    if(i%6 == 7)fprintf(FOUT,"\n");
-  }
-
-  switch(c->Typ){
-  case MSH_SEGM_CIRC:
-  case MSH_SEGM_CIRC_INV:
-  case MSH_SEGM_ELLI:
-  case MSH_SEGM_ELLI_INV:
-    fprintf(FOUT,"} Plane{%g, %g, %g};\n",
-            c->Circle.n[0],c->Circle.n[1],c->Circle.n[2]);
-    break;
-  default :
-    fprintf(FOUT,"};\n");
-    break;
-  }
-  
-}
-
-void Print_Surface(void *a, void *b){
-  Curve *c;
-  Surface *s;
-  Vertex *v;
-  int i,j;
-  s = *(Surface**)a;
-
-  int NUMLOOP = s->Num + 1000000;
-
-  if(s->Typ != MSH_SURF_NURBS){
-    fprintf(FOUT,"Line Loop (%d) = ",NUMLOOP);
-    
-    for(i=0;i<List_Nbr(s->Generatrices);i++){
-      List_Read(s->Generatrices,i,&c);
-      if(i)
-        fprintf(FOUT,", %d",c->Num);
-      else
-        fprintf(FOUT,"{%d",c->Num);
-    }
-    fprintf(FOUT,"};\n");
-  }
-
-  switch(s->Typ){
-  case MSH_SURF_REGL:
-  case MSH_SURF_TRIC:
-    fprintf(FOUT,"Ruled Surface (%d) = {%d};\n",s->Num,NUMLOOP);
-    break;
-  case MSH_SURF_PLAN:
-    fprintf(FOUT,"Plane Surface (%d) = {%d};\n",s->Num,NUMLOOP);
-    break;
-  case MSH_SURF_TRIMMED:
-    fprintf(FOUT,"Trimmed Surface (%d) = %d {%d};\n",s->Num,s->Support->Num,NUMLOOP);
-    break;
-  case MSH_SURF_NURBS:
-    fprintf(FOUT,"Nurbs Surface (%d) = {\n",s->Num);
-    for(i=0;i<s->Nv;i++){
-      fprintf(FOUT,"\t\t{");
-      for(j=0;j<s->Nu;j++){
-        List_Read(s->Control_Points,j+s->Nu *i,&v);
-        if(!j)
-          fprintf(FOUT,"%d",v->Num);
-        else
-          fprintf(FOUT,", %d",v->Num);
-      }
-      if(i!=s->Nv-1)
-        fprintf(FOUT,"},\n");
-      else
-        fprintf(FOUT,"}}\n");
-    }
-    fprintf(FOUT,"\t\tKnots\n\t\t{");
-    for(j=0;j<s->Nu+s->OrderU+1;j++){
-      if(!j)fprintf(FOUT,"%g",s->ku[j]);
-      else fprintf(FOUT,", %g",s->ku[j]);
-      if(j%5 == 4 && j!=s->Nu + s->OrderU)fprintf(FOUT,"\n\t\t");
-    }
-    fprintf(FOUT,"}\n\t\t{");
-    for(j=0;j<s->Nv+s->OrderV+1;j++){
-      if(!j)fprintf(FOUT,"%g",s->kv[j]);
-      else fprintf(FOUT,", %g",s->kv[j]);
-      if(j%5 == 4 && j!=s->Nv + s->OrderV)fprintf(FOUT,"\n\t\t");
-    }
-    fprintf(FOUT,"}\n\t\tOrder %d %d;\n\n",s->OrderU,s->OrderV);
-    break;
-  }
-}
-
-void Print_Volume(void *a, void *b){
-  Surface *s;
-  Volume *vol;
-  int i;
-  vol = *(Volume**)a;
-
-  int NUMLOOP = vol->Num + 1000000;
-
-  if(!List_Nbr(vol->Surfaces)) return;
-
-  fprintf(FOUT,"Surface Loop (%d) = ",NUMLOOP);
-    
-  for(i=0;i<List_Nbr(vol->Surfaces);i++){
-    List_Read(vol->Surfaces,i,&s);
-    if(i)
-      fprintf(FOUT,", %d",s->Num);
-    else
-      fprintf(FOUT,"{%d",s->Num);
-  }
-  fprintf(FOUT,"};\n");
-
-  switch(vol->Typ){
-  case MSH_VOLUME:
-    fprintf(FOUT,"Volume (%d) = {%d};\n",vol->Num,NUMLOOP);
-    break;
-  }
-}
-
-void Print_PhysicalGroups(void *a, void *b){
-  PhysicalGroup *pg ;
-  int i, j;
-
-  pg = *(PhysicalGroup**)a;
-  
-  switch(pg->Typ){
-  case MSH_PHYSICAL_POINT :
-    fprintf(FOUT,"Physical Point (%d) = ",pg->Num);
-    break;
-  case MSH_PHYSICAL_LINE :
-    fprintf(FOUT,"Physical Line (%d) = ",pg->Num);
-    break;
-  case MSH_PHYSICAL_SURFACE :
-    fprintf(FOUT,"Physical Surface (%d) = ",pg->Num);
-    break;
-  case MSH_PHYSICAL_VOLUME :
-    fprintf(FOUT,"Physical Volume (%d) = ",pg->Num);
-    break;
-  }
-
-  for(i=0;i<List_Nbr(pg->Entities);i++){
-    List_Read(pg->Entities,i,&j);
-    if(i)
-      fprintf(FOUT,", %d",j);
-    else
-      fprintf(FOUT,"{%d",j);
-  }
-  fprintf(FOUT,"};\n");
-
-}
-
-void Print_Geo(Mesh *M, char *filename){
-  Coherence_PS();
-
-  if(filename){
-    FOUT = fopen(filename,"w");
-    if(!FOUT){
-      Msg(WARNING, "Unable to open file '%s'", filename);
-      return;
-    }
-  }
-  else
-    FOUT = stdout;
-
-  Tree_Action(M->Points,Print_Point);
-  Tree_Action(M->Curves,Print_Curve);
-  Tree_Action(M->Surfaces,Print_Surface);
-  Tree_Action(M->Volumes,Print_Volume);
-  List_Action(M->PhysicalGroups,Print_PhysicalGroups);
-
-  if(filename){
-    Msg(INFO, "Geo output complete '%s'", filename);
-    Msg(STATUS2, "Wrote '%s'", filename);
-    fclose(FOUT);
-  }
-
-}
-
diff --git a/Geo/StepGeomDatabase.cpp b/Geo/StepGeomDatabase.cpp
deleted file mode 100644
index 913f4c49ea16ca5c328477620b38398f160deeb0..0000000000000000000000000000000000000000
--- a/Geo/StepGeomDatabase.cpp
+++ /dev/null
@@ -1,672 +0,0 @@
-// $Id: StepGeomDatabase.cpp,v 1.6 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "StepGeomDatabase.h"
-#include "DataBase.h"
-#include "Context.h"
-
-extern Context_T CTX;
-
-static Step_Solid_BRep_t *BREP=NULL;
-
-
-Step_Solid_BRep_t *Create_Step_Solid_BRep(void){
-  Step_Solid_BRep_t *NEWBREP;
-  NEWBREP                       = (Step_Solid_BRep_t *)Malloc(sizeof(Step_Solid_BRep_t));
-  NEWBREP->AllDirections        = List_Create(10,10,sizeof(Step_Direction_t));
-  NEWBREP->AllVectors           = List_Create(10,10,sizeof(Step_Vector_t));
-  NEWBREP->AllCartesian_Points  = List_Create(10,10,sizeof(Step_Cartesian_Point_t));
-  NEWBREP->AllVertex_Points     = List_Create(10,10,sizeof(Step_Vertex_Point_t));
-  NEWBREP->AllCurves            = List_Create(10,10,sizeof(Step_Curve_t));
-  NEWBREP->AllSurfaces          = List_Create(10,10,sizeof(Step_Surface_t));
-  NEWBREP->AllClosed_Shells     = List_Create(10,10,sizeof(Step_Closed_Shell_t));
-  NEWBREP->AllFaces_Outer_Bound = List_Create(10,10,sizeof(Step_Face_Outer_Bound_t));
-  NEWBREP->AllOriented_Edges    = List_Create(10,10,sizeof(Step_Oriented_Edge_t));
-  NEWBREP->AllEdge_Loops        = List_Create(10,10,sizeof(Step_Edge_Loop_t));
-  NEWBREP->AllEdge_Curves       = List_Create(10,10,sizeof(Step_Edge_Curve_t));
-  NEWBREP->AllAdvanced_Faces    = List_Create(10,10,sizeof(Step_Advanced_Face_t));
-  NEWBREP->AllAxis2_Placement3D = List_Create(10,10,sizeof(Step_Axis2_Placement3D_t));
-  NEWBREP->AllClosed_Shells     = List_Create(10,10,sizeof(Step_Closed_Shell_t));
-  BREP = NEWBREP;
-  return NEWBREP;
-}
-
-/*---------------- Directions --------------------------------------------*/
-
-void Add_Direction (int Num , char *name , double x, double y, double z ){
-  Step_Direction_t Dir;
-  if(!BREP)return;
-  Dir.Pos.X = x;
-  Dir.Pos.Y = y;
-  Dir.Pos.Z = z;
-  Dir.Num = Num;
-  List_Add(BREP->AllDirections,&Dir);
-}
-
-static int comparedir  (const void *a, const void *b){
-  return (((Step_Direction_t *)a)->Num -
-          ((Step_Direction_t *)b)->Num);
-}
-
-Step_Direction_t *Get_Direction (int Num){
-  Step_Direction_t Dir;
-  if(!BREP)return NULL;
-  Dir.Num = Num;
-  return (Step_Direction_t*)List_PQuery ( BREP->AllDirections,&Dir, comparedir );
-}
-
-/*---------------- Axis2_Placement3D--------------------------------------*/
-
-void Add_Axis2_Placement3D (int Num, int dir1, int dir2, int ver){
-  Step_Axis2_Placement3D_t Axe;
-  if(!BREP)return;
-  Axe.Num = Num;
-  Axe.Step_Cartesian_Point = ver;
-  Axe.Step_Direction1 = dir1;
-  Axe.Step_Direction2 = dir2;
-  List_Add(BREP->AllAxis2_Placement3D,&Axe);
-}
-
-static int compareax  (const void *a, const void *b){
-  return (((Step_Axis2_Placement3D_t *)a)->Num -
-          ((Step_Axis2_Placement3D_t *)b)->Num);
-}
-
-Step_Axis2_Placement3D_t *Get_Axis2_Placement3D (int Num){
-  Step_Axis2_Placement3D_t Axe;
-  if(!BREP)return NULL;
-  Axe.Num = Num;
-  return (Step_Axis2_Placement3D_t*)List_PQuery ( BREP->AllAxis2_Placement3D,
-                                                  &Axe, compareax );
-}
-
-/*---------------- Vectors -----------------------------------------------*/
-
-void Add_Vector (int Num , char *name , int Dir, double l ){
-  Step_Vector_t Vec;
-  if(!BREP)return;
-  Vec.Lenght = l;
-  Vec.Step_Direction = Dir;
-  Vec.Num = Num;
-  List_Add(BREP->AllVectors,&Vec);
-}
-
-static int comparevec  (const void *a, const void *b){
-  return (((Step_Vector_t *)a)->Num -
-          ((Step_Vector_t *)b)->Num);
-}
-
-Step_Vector_t *Get_Vector (int Num){
-  Step_Vector_t Vec;
-  if(!BREP)return NULL;
-  Vec.Num = Num;
-  return (Step_Vector_t*)List_PQuery ( BREP->AllVectors,&Vec, comparevec );
-}
-
-/*---------------- Cartesian_Points --------------------------------------*/
-
-void Add_Cartesian_Point (int Num , char *name , double x, double y, double z){
-  Step_Cartesian_Point_t CP;
-
-  if(!BREP){
-    return;
-  }
-  CP.Pos.X = x;
-  CP.Pos.Y = y;
-  CP.Pos.Z = z;
-  CP.Num = Num;
-   
-  List_Add(BREP->AllCartesian_Points,&CP);
-}
-static int comparecp  (const void *a, const void *b){
-  return (((Step_Cartesian_Point_t *)a)->Num -
-          ((Step_Cartesian_Point_t *)b)->Num);
-}
-Step_Cartesian_Point_t *Get_Cartesian_Point (int Num){
-  Step_Cartesian_Point_t CP;
-  if(!BREP)return NULL;
-  CP.Num = Num;
-  return (Step_Cartesian_Point_t*)List_PQuery ( BREP->AllCartesian_Points,&CP, comparecp );
-}
-
-/*---------------- Vertex_Points -----------------------------------------*/
-
-void Add_Vertex_Point (int Num , char *name, int cp){
-  Step_Vertex_Point_t VP;
-  if(!BREP)return;
-  VP.Cartesian_Point = cp;
-  VP.Num = Num;
-  List_Add(BREP->AllVertex_Points,&VP);
-}
-static int comparevp  (const void *a, const void *b){
-  return (((Step_Vertex_Point_t *)a)->Num -
-          ((Step_Vertex_Point_t *)b)->Num);
-}
-Step_Vertex_Point_t *Get_Vertex_Point (int Num){
-  Step_Vertex_Point_t VP;
-  if(!BREP)return NULL;
-  VP.Num = Num;
-  return (Step_Vertex_Point_t*)List_PQuery ( BREP->AllVertex_Points,&VP, comparevp );
-}
-
-
-/*---------------- Curves ------------------------------------------------*/
-
-void Add_Line (int Num, char *name , int begin, int dir){
-  Step_Curve_t Curve;
-  if(!BREP)return;
-  Curve.Num = Num;
-  Curve.Typ = STEP_LINE;
-  Curve.Curve.Line.Step_Cartesian_Point = begin;
-  Curve.Curve.Line.Step_Vector = dir;
-  List_Add(BREP->AllCurves,&Curve);
-}
-
-void Add_Circle (int Num, char *name , int axis, double radius){
-  Step_Curve_t Curve;
-  if(!BREP)return;
-  Curve.Num = Num;
-  Curve.Typ = STEP_CIRC;
-  Curve.Curve.Circle.Radius1 = radius;
-  Curve.Curve.Circle.Radius2 = radius;
-  Curve.Curve.Circle.Step_Axis2_Placement3D = axis;
-  List_Add(BREP->AllCurves,&Curve);
-}
-
-void Add_Ellipsis (int Num, char *name , int axis, double radius1, double radius2){
-  Step_Curve_t Curve;
-  if(!BREP)return;
-  Curve.Num = Num;
-  Curve.Typ = STEP_ELLP;
-  Curve.Curve.Circle.Radius1 = radius1;
-  Curve.Curve.Circle.Radius2 = radius2;
-  Curve.Curve.Circle.Step_Axis2_Placement3D = axis;
-  List_Add(BREP->AllCurves,&Curve);
-}
-
-void Add_BSpline_Curve_With_Knots (int Num, char *name, int Order, List_T *lcp,
-                                   List_T *multk, List_T *knots, double udeb, double uend){
-  Step_Curve_t Curve;
-  int i,j,mult;
-  double d;
-
-  if(!BREP)return;
-  Curve.Num = Num;
-  Curve.Typ = STEP_BSPL;
-  Curve.Curve.BSpline.ListOf_Knots = List_Create (List_Nbr(lcp) + Order + 1
-                                                  ,1,sizeof(double));
-  /* Adding knots with their multiplicity */
-  for(i=0;i<List_Nbr(multk);i++){
-    List_Read(multk,i,&d);
-    mult = (int)d;
-    List_Read(knots,i,&d);
-    for(j=0;j<mult;j++){
-      List_Add(Curve.Curve.BSpline.ListOf_Knots,&d);
-    }
-  }
-  Curve.Curve.BSpline.ListOf_Cartesian_Points = List_Create(List_Nbr(lcp),1,sizeof(int));
-  for(i=0;i<List_Nbr(lcp);i++){
-    List_Read(lcp,i,&d);
-    j = (int)d;
-    List_Add(Curve.Curve.BSpline.ListOf_Cartesian_Points,&j);
-  }
-  Curve.Curve.BSpline.Order = Order;
-  Curve.Curve.BSpline.Ubeg = udeb;
-  Curve.Curve.BSpline.Uend = uend;
-  List_Add(BREP->AllCurves,&Curve);
-}
-
-static int comparecur  (const void *a, const void *b){
-  return (((Step_Curve_t *)a)->Num -
-          ((Step_Curve_t *)b)->Num);
-}
-Step_Curve_t *Get_Curve (int Num){
-  Step_Curve_t C;
-  if(!BREP)return NULL;
-  C.Num = Num;
-  return (Step_Curve_t*)List_PQuery ( BREP->AllCurves,&C, comparecur );
-}
-
-/*---------------- Edge_Curves -------------------------------------------*/
-
-void Add_Edge_Curve (int Num, char *name , int beg, int end, int curve ){
-  Step_Edge_Curve_t EC;
-  if(!BREP)return;
-  EC.Num = Num;
-  EC.Step_Vertex_Point_Begin = beg;
-  EC.Step_Vertex_Point_End   = end;
-  EC.Step_Curve = curve;
-  List_Add(BREP->AllEdge_Curves,&EC);
-}
-
-static int compareec  (const void *a, const void *b){
-  return (((Step_Edge_Curve_t *)a)->Num -
-          ((Step_Edge_Curve_t *)b)->Num);
-}
-Step_Edge_Curve_t *Get_Edge_Curve (int Num){
-  Step_Edge_Curve_t EC;
-  if(!BREP)return NULL;
-  EC.Num = Num;
-  return (Step_Edge_Curve_t*)List_PQuery ( BREP->AllEdge_Curves,&EC, compareec );
-}
-
-/*---------------- Oriented_Edges ----------------------------------------*/
-
-void Add_Oriented_Edge (int Num, char *name , int ec, bool dir ){
-  Step_Oriented_Edge_t OE;
-  if(!BREP)return;
-  OE.Num = Num;
-  OE.Step_Edge_Curve = ec;
-  OE.dir = dir;
-  List_Add(BREP->AllOriented_Edges,&OE);
-}
-
-static int compareoe  (const void *a, const void *b){
-  return (((Step_Oriented_Edge_t *)a)->Num -
-          ((Step_Oriented_Edge_t *)b)->Num);
-}
-Step_Oriented_Edge_t *Get_Oriented_Edge (int Num){
-  Step_Oriented_Edge_t OE;
-  if(!BREP)return NULL;
-  OE.Num = Num;
-  return (Step_Oriented_Edge_t*)List_PQuery ( BREP->AllOriented_Edges,&OE, compareoe );
-}
-
-/*---------------- Edge_Loops --------------------------------------------*/
-
-void Add_Edge_Loop (int Num, char *name , List_T *list ){
-  Step_Edge_Loop_t EL;
-  if(!BREP)return;
-  EL.Num = Num;
-  EL.ListOf_Step_Oriented_Edge = list;
-  List_Add(BREP->AllEdge_Loops,&EL);
-}
-
-static int compareel  (const void *a, const void *b){
-  return (((Step_Edge_Loop_t *)a)->Num -
-          ((Step_Edge_Loop_t *)b)->Num);
-}
-Step_Edge_Loop_t *Get_Edge_Loop (int Num){
-  Step_Edge_Loop_t EL;
-  if(!BREP)return NULL;
-  EL.Num = Num;
-  return (Step_Edge_Loop_t*)List_PQuery ( BREP->AllEdge_Loops,&EL, compareel );
-}
-
-/*---------------- Faces_Outer_Bounds ------------------------------------*/
-
-void Add_Face_Outer_Bound (int Num, char *name , int el, bool dir, bool outer ){
-  Step_Face_Outer_Bound_t F;
-  if(!BREP)return;
-  F.Num = Num;
-  F.Step_Edge_Loop = el;
-  F.dir = dir;
-  F.outer = outer;
-  List_Add(BREP->AllFaces_Outer_Bound,&F);
-}
-
-static int comparefab  (const void *a, const void *b){
-  return (((Step_Face_Outer_Bound_t *)a)->Num -
-          ((Step_Face_Outer_Bound_t *)b)->Num);
-}
-Step_Face_Outer_Bound_t *Get_Face_Outer_Bound (int Num){
-  Step_Face_Outer_Bound_t F;
-  if(!BREP)return NULL;
-  F.Num = Num;
-  return (Step_Face_Outer_Bound_t*)List_PQuery ( BREP->AllFaces_Outer_Bound,&F, comparefab );
-}
-
-/*---------------- Advanced_Faces ----------------------------------------*/
-
-void Add_Advanced_Face (int Num, char *name , List_T *el, int surf, bool dir ){
-  Step_Advanced_Face_t F;
-  if(!BREP)return;
-  F.Num = Num;
-  F.ListOf_Step_Face_Outer_Bound = el;
-  F.Step_Surface = surf;
-  F.dir = dir;
-  List_Add(BREP->AllAdvanced_Faces,&F);
-}
-
-static int compareaf  (const void *a, const void *b){
-  return (((Step_Advanced_Face_t *)a)->Num -
-          ((Step_Advanced_Face_t *)b)->Num);
-}
-Step_Advanced_Face_t *Get_Advanced_Face (int Num){
-  Step_Advanced_Face_t F;
-  if(!BREP)return NULL;
-  F.Num = Num;
-  return (Step_Advanced_Face_t*)List_PQuery ( BREP->AllAdvanced_Faces,&F, compareaf );
-}
-
-/*---------------- Surfaces ----------------------------------------------*/
-
-void Add_Plane (int Num, char *name , int axis){
-  Step_Surface_t Surface;
-  if(!BREP)return;
-  Surface.Num = Num;
-  Surface.Typ = STEP_PLAN;
-  Surface.Surface.Plane.Step_Axis2_Placement3D = axis;
-  List_Add(BREP->AllSurfaces,&Surface);
-}
-
-void Add_Cylinder (int Num, char *name , int axis, double radius){
-  Step_Surface_t S;
-  if(!BREP)return;
-  S.Num = Num;
-  S.Typ = STEP_CYLD;
-  S.Surface.Quadric.Radius1 = radius;
-  S.Surface.Quadric.Radius2 = 0.0;
-  S.Surface.Quadric.Step_Axis2_Placement3D = axis;
-  List_Add(BREP->AllSurfaces,&S);
-}
-
-void Add_Torus (int Num, char *name , int axis, double radius1, double radius2){
-  Step_Surface_t S;
-  if(!BREP)return;
-  S.Num = Num;
-  S.Typ = STEP_TORD;
-  S.Surface.Quadric.Radius1 = radius1;
-  S.Surface.Quadric.Radius2 = radius2;
-  S.Surface.Quadric.Step_Axis2_Placement3D = axis;
-  List_Add(BREP->AllSurfaces,&S);
-}
-
-void Add_Cone (int Num, char *name , int axis, double radius1, double radius2){
-  Step_Surface_t S;
-  if(!BREP)return;
-  S.Num = Num;
-  S.Typ = STEP_CONE;
-  S.Surface.Quadric.Radius1 = radius1;
-  S.Surface.Quadric.Radius2 = radius2;
-  S.Surface.Quadric.Step_Axis2_Placement3D = axis;
-  List_Add(BREP->AllSurfaces,&S);
-}
-
-
-void Add_BSpline_Surface_With_Knots (int Num,char *name, int OrderU,int OrderV,
-                                     List_T *lcp,List_T *lmu, List_T *lmv, List_T *lku,
-                                     List_T *lkv, double udeb, double uend, double vdeb,
-                                     double vend){
-  Step_Surface_t Surface;
-  int i,j,mult;
-  double d;
-
-  if(!BREP)return;
-
-  Surface.Surface.BSpline.ListOf_KnotsU = 
-    List_Create (List_Nbr(lku) + OrderU + 1,1,sizeof(double));
-  Surface.Surface.BSpline.ListOf_KnotsV =
-    List_Create (List_Nbr(lkv) + OrderV + 1,1,sizeof(double));
-
-  /* Adding knots with their multiplicity */
-  for(i=0;i<List_Nbr(lmu);i++){
-    List_Read(lmu,i,&d);
-    mult = (int)d;
-    List_Read(lku,i,&d);
-    for(j=0;j<mult;j++){
-      List_Add(Surface.Surface.BSpline.ListOf_KnotsU,&d);
-    }
-  }
-  for(i=0;i<List_Nbr(lmv);i++){
-    List_Read(lmv,i,&d);
-    mult = (int)d;
-    List_Read(lkv,i,&d);
-    for(j=0;j<mult;j++){
-      List_Add(Surface.Surface.BSpline.ListOf_KnotsV,&d);
-    }
-  }
-
-  /*Adding the points !*/
-  Surface.Surface.BSpline.ListOf_Cartesian_Points = lcp;
-    
-  Surface.Num = Num;
-  Surface.Typ = STEP_BSPL;
-  Surface.Surface.BSpline.OrderU = OrderU;
-  Surface.Surface.BSpline.OrderV = OrderV;
-  Surface.Surface.BSpline.Ubeg = udeb;
-  Surface.Surface.BSpline.Uend = uend;
-  Surface.Surface.BSpline.Vbeg = vdeb;
-  Surface.Surface.BSpline.Vend = vend;
-  List_Add(BREP->AllSurfaces,&Surface);
-}
-
-static int comparesur  (const void *a, const void *b){
-  return (((Step_Surface_t *)a)->Num -
-          ((Step_Surface_t *)b)->Num);
-}
-Step_Surface_t *Get_Surface (int Num){
-  Step_Surface_t S;
-  if(!BREP)return NULL;
-  S.Num = Num;
-  return (Step_Surface_t*)List_PQuery ( BREP->AllSurfaces,&S, comparesur );
-}
-
-/*---------------- Closed_Shells ----------------------------------------*/
-
-void Add_Closed_Shell (int Num, char *name , List_T *list ){
-  Step_Closed_Shell_t S;
-  if(!BREP)return;
-  S.Num = Num;
-  S.ListOf_Step_Advanced_Face = list;
-  List_Add(BREP->AllClosed_Shells,&S);
-}
-
-static int comparecs  (const void *a, const void *b){
-  return (((Step_Closed_Shell_t *)a)->Num -
-          ((Step_Closed_Shell_t *)b)->Num);
-}
-Step_Closed_Shell_t *Get_Closed_Shell (int Num){
-  Step_Closed_Shell_t F;
-  if(!BREP)return NULL;
-  F.Num = Num;
-  return (Step_Closed_Shell_t*)List_PQuery ( BREP->AllClosed_Shells,&F, comparecs );
-}
-
-/*---------------- Closed_Shells ----------------------------------------*/
-
-void Resolve_BREP (void){
-  int i,j,k,l;
-  double d;
-  int obj,err,typ;
-  Step_Vertex_Point_t      vp;
-  Step_Direction_t         *d1,*d2;
-  Step_Cartesian_Point_t   *pcp,cp;
-  Step_Edge_Curve_t        ec;
-  Step_Curve_t             *pc;
-  Step_Advanced_Face_t     af, *paf;
-  Step_Surface_t           s;
-  Step_Surface_t           *ps;
-  Step_Face_Outer_Bound_t  *pfab;
-  Step_Edge_Loop_t         *pel;
-  Step_Oriented_Edge_t     *poe;
-  Step_Axis2_Placement3D_t *axs;
-  Step_Closed_Shell_t      cs;
-  List_T  *ListInt,*ListIntBis;
-  double ubeg,uend,n[3],t[3],p[3],XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX,L;
-  int fob;
-
-  ListInt    = List_Create(2,2,sizeof(int));
-  ListIntBis = List_Create(2,2,sizeof(int));
-
-  for(i=0;i<List_Nbr(BREP->AllCartesian_Points);i++){
-    List_Read(BREP->AllCartesian_Points,i,&cp);
-    XMAX = MAX(cp.Pos.X,XMAX);
-    YMAX = MAX(cp.Pos.Y,YMAX);
-    ZMAX = MAX(cp.Pos.Z,ZMAX);
-    XMIN = MIN(cp.Pos.X,XMIN);
-    YMIN = MIN(cp.Pos.Y,YMIN);
-    ZMIN = MIN(cp.Pos.Z,ZMIN);
-  }
-  CTX.lc = L = sqrt(SQR(XMIN-XMAX) + SQR(YMIN-YMAX) + SQR(ZMIN-ZMAX));
-
-  /* resolving cartesian_points */
-  for(i=0;i<List_Nbr(BREP->AllCartesian_Points);i++){
-    List_Read(BREP->AllCartesian_Points,i,&cp);
-    Cdbpts101(cp.Num,cp.Pos.X,cp.Pos.Y,cp.Pos.Z,L*.01,1);
-  }
-
-  /* resolving vertex_points */
-  for(i=0;i<List_Nbr(BREP->AllVertex_Points);i++){
-    List_Read(BREP->AllVertex_Points,i,&vp);
-    if((pcp = Get_Cartesian_Point(vp.Cartesian_Point))){
-      Cdbpts101(vp.Num,pcp->Pos.X,pcp->Pos.Y,pcp->Pos.Z,L*.01,1);
-    }
-  }
-
-  /* resolving Edge_Curves*/
-  for(i=0;i<List_Nbr(BREP->AllEdge_Curves);i++){
-    List_Read(BREP->AllEdge_Curves,i,&ec);
-    if((pc = Get_Curve(ec.Step_Curve))){
-      if(pc->Typ == STEP_LINE){
-        List_Add(ListInt,&ec.Step_Vertex_Point_Begin);
-        List_Add(ListInt,&ec.Step_Vertex_Point_End);
-        Cdbseg101(ec.Num,MSH_SEGM_LINE,1,NULL,ListInt,-1,-1,0.,1.,NULL,NULL,NULL);
-        List_Reset(ListInt);
-      }
-      else if(pc->Typ == STEP_BSPL){
-        List_Read( pc->Curve.BSpline.ListOf_Knots , 0, &ubeg);
-        List_Read( pc->Curve.BSpline.ListOf_Knots ,
-                   List_Nbr(pc->Curve.BSpline.ListOf_Knots)-1, &uend);
-        AddCurveInDataBase (ec.Num,
-                            MSH_SEGM_NURBS,
-                            pc->Curve.BSpline.Order,
-                            pc->Curve.BSpline.ListOf_Cartesian_Points,
-                            pc->Curve.BSpline.ListOf_Knots,
-                            ec.Step_Vertex_Point_Begin,
-                            ec.Step_Vertex_Point_End,
-                            ubeg,
-                            uend);
-      }
-      else if(pc->Typ == STEP_CIRC || pc->Typ == STEP_ELLP){
-        axs =  Get_Axis2_Placement3D(pc->Curve.Circle.Step_Axis2_Placement3D);
-        pcp =  Get_Cartesian_Point(axs->Step_Cartesian_Point);
-        d1 =  Get_Direction(axs->Step_Direction1);
-        d2 =  Get_Direction(axs->Step_Direction2);
-        n[0] = d1->Pos.X;
-        n[1] = d1->Pos.Y;
-        n[2] = d1->Pos.Z;
-
-        List_Add(ListInt,&ec.Step_Vertex_Point_Begin);
-        List_Add(ListInt,&pcp->Num);
-        List_Add(ListInt,&ec.Step_Vertex_Point_End);
-        AddCircleInDataBase ( ec.Num,MSH_SEGM_CIRC ,
-                              ListInt,n);
-        /*Cdbseg101(ec.Num,MSH_SEGM_CIRC,1,NULL,
-          ListInt,-1,-1,0.,1.,NULL,NULL,NULL);
-          */
-        List_Reset(ListInt);
-      }
-    }
-  }
-
-  /* resolving Surfaces */
-  for(i=0;i<List_Nbr(BREP->AllSurfaces);i++){
-    List_Read(BREP->AllSurfaces,i,&s);
-    if(s.Typ == STEP_BSPL){
-      CreateNurbsSurfaceSupport (
-                                 s.Num ,
-                                 s.Surface.BSpline.OrderV ,
-                                 s.Surface.BSpline.OrderU ,
-                                 s.Surface.BSpline.ListOf_Cartesian_Points ,
-                                 s.Surface.BSpline.ListOf_KnotsV ,
-                                 s.Surface.BSpline.ListOf_KnotsU );
-
-    }
-  }
-
-  /*resolving Advanced_Faces*/
-
-  for(i=0;i<List_Nbr(BREP->AllAdvanced_Faces);i++){
-    err = 0;
-    List_Read(BREP->AllAdvanced_Faces,i,&af);
-    fob = 0;
-    for(j=0;j<List_Nbr(af.ListOf_Step_Face_Outer_Bound);j++){
-      List_Read(af.ListOf_Step_Face_Outer_Bound,j,&d);
-      obj = (int)d;
-      if((pfab = Get_Face_Outer_Bound(obj)) &&
-         (!j || fob)){
-        if(pfab->outer)fob = 1;
-        if((pel = Get_Edge_Loop(pfab->Step_Edge_Loop))){
-          for(k=0;k<List_Nbr(pel->ListOf_Step_Oriented_Edge);k++){
-            List_Read(pel->ListOf_Step_Oriented_Edge,k,&d);
-            obj = (int)d;
-            if((poe = Get_Oriented_Edge(obj))){
-              l = (poe->dir)?poe->Step_Edge_Curve:-poe->Step_Edge_Curve;
-              List_Add(ListInt,&l);
-            }
-            else err = 1;
-          }
-        }
-        else err = 1;
-        if(!err){
-          Cdbz101(pfab->Num,MSH_SEGM_LOOP,0,0,0,0,0,NULL,NULL,ListInt);
-          List_Add(ListIntBis,& pfab->Num);
-        }
-        List_Reset(ListInt);
-      }
-      else err = 0;
-    }
-    if(!err && (ps = Get_Surface(af.Step_Surface))){
-      if(ps->Typ == STEP_PLAN){
-        Cdbz101(af.Num,MSH_SURF_PLAN,0,0,0,0,0,NULL,NULL,ListIntBis);
-      }
-      else if(ps->Typ == STEP_CYLD || ps->Typ == STEP_CONE
-              /*|| ps->Typ == STEP_TORD || ps->Typ == STEP_CONE*/){
-        axs =  Get_Axis2_Placement3D(ps->Surface.Quadric.Step_Axis2_Placement3D);
-        pcp =  Get_Cartesian_Point(axs->Step_Cartesian_Point);
-        d1 =  Get_Direction(axs->Step_Direction1);
-        d2 =  Get_Direction(axs->Step_Direction2);
-        n[0] = d1->Pos.X;n[1] = d1->Pos.Y;n[2] = d1->Pos.Z;
-        t[0] = d2->Pos.X;t[1] = d2->Pos.Y;t[2] = d2->Pos.Z;
-        p[0] = pcp->Pos.X;p[1] = pcp->Pos.Y;p[2] = pcp->Pos.Z;
-        switch(ps->Typ){
-        case STEP_CYLD:
-          typ = MSH_SURF_CYLNDR;
-          break;
-        case STEP_TORD:
-          typ = MSH_SURF_TORUS;
-          break;
-        case STEP_CONE:
-          typ = MSH_SURF_CONE;
-          break;
-        }
-        AddQuadricSurfaceInDataBase (typ,
-                                     af.Num,
-                                     n,t,p,
-                                     ps->Surface.Quadric.Radius1,
-                                     ps->Surface.Quadric.Radius2,
-                                     ListIntBis);
-
-        //Cdbz101(af.Num,MSH_SURF_REGL,0,0,0,0,0,NULL,NULL,ListIntBis);
-      }
-
-      else if(ps->Typ == STEP_BSPL){
-        Cdbz101(af.Num,MSH_SURF_TRIMMED,0,0,0,0,af.Step_Surface,NULL,NULL,ListIntBis);
-      }
-    }
-    List_Reset(ListIntBis);
-  }
-    
-  /*resolving closed shells (sheila)*/
-  for(i=0;i<List_Nbr(BREP->AllClosed_Shells);i++){
-    List_Reset(ListInt);
-    List_Read(BREP->AllClosed_Shells,i,&cs);
-    for(j=0;j<List_Nbr(cs.ListOf_Step_Advanced_Face);j++){
-      List_Read(cs.ListOf_Step_Advanced_Face,j,&d);
-      obj = (int)d;
-      if((paf = Get_Advanced_Face(obj))){
-        List_Add(ListInt,&paf->Num);
-      }
-    }
-    Cdbz101(cs.Num+1000000,MSH_SURF_LOOP,0,0,0,0,0,NULL,NULL,ListInt);
-    List_Reset(ListInt);
-    j = cs.Num+1000000;
-    List_Add(ListInt,&j);
-    Cdbz101(cs.Num,MSH_VOLUME,0,0,0,0,0,NULL,NULL,ListInt);
-  }
-}
-
-
diff --git a/Geo/StepGeomDatabase.h b/Geo/StepGeomDatabase.h
deleted file mode 100644
index f01f018c62452fd32079192f2f1b95ac208b7fdd..0000000000000000000000000000000000000000
--- a/Geo/StepGeomDatabase.h
+++ /dev/null
@@ -1,202 +0,0 @@
-#ifndef _STEP_GEOM_DATABASE_H_
-#define _STEP_GEOM_DATABASE_H_
-
-typedef struct{
-  double X, Y, Z;
-} Step_Coord_t;
-
-typedef struct{
-  int Num;
-  char *Name;
-  Step_Coord_t Pos;
-}Step_Direction_t;
-
-typedef struct{
-  int Num;
-  char *Name;
-  int Step_Direction;
-  double Lenght;
-}Step_Vector_t;
-
-typedef struct{
-  int Num;
-  char *Name;
-  int Cartesian_Point;
-}Step_Vertex_Point_t;
-
-typedef struct{
-  int Num;
-  char *Name;
-  Step_Coord_t Pos;
-}Step_Cartesian_Point_t;
-
-
-#define STEP_LINE 1
-#define STEP_CIRC 3
-#define STEP_ELLP 6
-#define STEP_PARA 7
-#define STEP_HYPB 8
-
-typedef struct{
-  int Step_Cartesian_Point;
-  int Step_Vector;
-}Step_Line_t;
-
-typedef struct{
-  int Step_Axis2_Placement3D;
-  double Radius1;
-  double Radius2;
-}Step_Circle_t;
-
-typedef struct{
-  int Order;
-  List_T *ListOf_Cartesian_Points;
-  List_T *ListOf_Knots;
-  double Ubeg, Uend;
-}Step_BSpline_Curve_With_Knots_t;
-
-typedef struct{
-  int Num;
-  int Typ;
-  char *Name;
-  union{
-    Step_BSpline_Curve_With_Knots_t BSpline;
-    Step_Line_t Line;
-    Step_Circle_t Circle;
-  }Curve;
-}Step_Curve_t;
-
-
-#define STEP_PLAN 1
-#define STEP_CYLD 2
-#define STEP_TORD 3
-#define STEP_CONE 4
-#define STEP_BSPL 5
-
-typedef struct{
-  int Num;
-  int Step_Cartesian_Point;
-  int Step_Direction1;
-  int Step_Direction2;
-}Step_Axis2_Placement3D_t;
-
-typedef struct{
-  int Step_Axis2_Placement3D;
-}Step_Plane_t;
-
-typedef struct{
-  int Step_Axis2_Placement3D;
-  double Radius1;
-  double Radius2;
-}Step_Quadric_t;
-
-typedef struct{
-  int OrderU, OrderV;
-  List_T *ListOf_Cartesian_Points;
-  List_T *ListOf_KnotsU;
-  List_T *ListOf_KnotsV;
-  double Ubeg, Uend, Vbeg, Vend;
-}Step_BSpline_Surface_With_Knots_t;
-
-typedef struct{
-  int Num;
-  int Typ;
-  char *Name;
-  union{
-    Step_BSpline_Surface_With_Knots_t BSpline;
-    Step_Plane_t Plane;
-    Step_Quadric_t Quadric;
-  }Surface;
-}Step_Surface_t;
-
-typedef struct{
-  int Num;
-  char *Name;
-  int Step_Vertex_Point_Begin;
-  int Step_Vertex_Point_End;
-  int Step_Curve;
-}Step_Edge_Curve_t;
-
-typedef struct{
-  int Num;
-  char Name;
-  int Step_Edge_Curve;
-  bool dir;
-}Step_Oriented_Edge_t;
-
-typedef struct{
-  int Num;
-  char Name;
-  List_T *ListOf_Step_Oriented_Edge;
-}Step_Edge_Loop_t;
-
-typedef struct{
-  int Num;
-  char Name;
-  int Step_Edge_Loop;
-  bool dir;
-  bool outer;
-}Step_Face_Outer_Bound_t;
-
-typedef struct{
-  int Num;
-  char Name;
-  List_T *ListOf_Step_Face_Outer_Bound;
-  int Step_Surface;
-  bool dir;
-}Step_Advanced_Face_t;
-
-typedef struct{
-  int Num;
-  char Name;
-  List_T *ListOf_Step_Advanced_Face;
-}Step_Closed_Shell_t;
-
-typedef struct{
-  List_T *AllDirections;
-  List_T *AllVectors;
-  List_T *AllCartesian_Points;
-  List_T *AllVertex_Points;
-  List_T *AllCurves;
-  List_T *AllEdge_Curves;
-  List_T *AllSurfaces;
-  List_T *AllAxis2_Placement3D;
-  List_T *AllClosed_Shells;
-  List_T *AllFaces_Outer_Bound;
-  List_T *AllOriented_Edges;
-  List_T *AllEdge_Loops;
-  List_T *AllAdvanced_Faces;
-}Step_Solid_BRep_t;
-
-Step_Solid_BRep_t *Create_Step_Solid_BRep(void);
-
-void Add_Direction (int Num, char *name, double x, double y, double z);
-void Add_Vector (int Num, char *name, int Dir, double l);
-void Add_Cartesian_Point (int Num, char *name, double x, double y, double z);
-void Add_Vertex_Point (int Num, char *name, int cp);
-void Add_Line (int Num, char *name, int begin, int dir);
-void Add_Circle (int Num, char *name, int axis, double Radius);
-void Add_Ellipsis (int Num, char *name, int axis, double Radius, double r2);
-void Add_Cylinder (int Num, char *name, int axis, double Radius);
-void Add_Torus (int Num, char *name, int axis, double radius1, double radius2);
-void Add_Cone (int Num, char *name, int axis, double radius1, double radius2);
-void Add_Edge_Curve (int Num, char *name, int beg, int end, int curve);
-void Add_Vertex_Point (int num, char *name, int cp);
-void Add_Oriented_Edge (int Num, char *name, int ec, bool dir);
-void Add_Edge_Loop (int Num, char *name, List_T * list);
-void Add_Face_Outer_Bound (int Num, char *name, int el, bool dir, bool outer);
-void Add_Advanced_Face (int Num, char *name, List_T * lfob, int surf, bool dir);
-void Add_Closed_Shell (int Num, char *name, List_T * laf);
-void Add_BSpline_Curve_With_Knots (int Num, char *name, int Order, List_T * lcp,
-                                   List_T * lm, List_T * lk, double udeb, double uend);
-void Add_Plane (int Num, char *name, int axis);
-void Add_Axis2_Placement3D (int Num, int cp, int dir1, int dir2);
-void Add_Closed_Shell (int Num, char *name, List_T * list);
-void Resolve_BREP (void);
-void Add_BSpline_Surface_With_Knots (int Num,char *name,int OrderU,int OrderV,
-                                     List_T * lcp, List_T * lmu, List_T * lmv,
-                                     List_T * lku,List_T * lkv,
-                                     double udeb,double uend,
-                                     double vdeb,double vend);
-
-#endif
diff --git a/Geo/Verif.cpp b/Geo/Verif.cpp
deleted file mode 100644
index 4f187a409e239071fadd367111d9def4c38ef10c..0000000000000000000000000000000000000000
--- a/Geo/Verif.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-// $Id: Verif.cpp,v 1.9 2001-06-02 16:24:51 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "DataBase.h"
-
-extern Mesh *THEM;
-
-/* Contour extraction by a tree method */
-
-static Tree_T *treelink;
-static Tree_T *treeedges;
-static Tree_T *treefaces;
-
-typedef struct {
-  int n,a,arbre;
-}nxa;
-
-typedef struct {
-  int n,visited;
-  List_T *l;
-}lnk;
-
-int complink(const void*a, const void*b){
-  lnk *q,*w;
-  q = (lnk*)a;
-  w = (lnk*)b;
-  return q->n-w->n;
-}
-
-static int POINT_FINAL;
-static int CONTOUR_TROUVE;
-static List_T *VisitedNodes ; //geuz
-
-void recur_trouvecont(int ip , int ed , List_T *Liste, int gauche , List_T *old ){
-  lnk lk;
-  nxa a;
-  int i,rev;
-
-  lk.n = ip;
-  Tree_Query(treelink,&lk);
-  if(List_Nbr(lk.l) != 2 && !old)return;
-  for(i=0;i<List_Nbr(lk.l);i++){
-    List_Read(lk.l,i,&a);
-    if(abs(a.a) != abs(ed)){
-      if(!old || List_Search(old,&a.a,fcmp_absint) || List_Nbr(lk.l) == 2){
-        if(!gauche){
-          List_Add(Liste,&a.a);
-          if(List_Search(VisitedNodes, &a.n, fcmp_absint)){//geuz
-            CONTOUR_TROUVE =1;//end geuz
-            return;//end geuz
-          }//geuz
-        }
-        if(a.n == POINT_FINAL){
-          CONTOUR_TROUVE = 1;
-        }
-        else{
-          recur_trouvecont(a.n,abs(a.a),Liste,gauche,old);
-        }
-        if(gauche){
-          rev = -a.a;
-          List_Add(Liste,&rev);
-          List_Add(VisitedNodes, &a.n); //geuz
-        }
-      }
-    }
-  }
-}
-
-
-void recur_trouvevol(int ifac , int iedge, List_T *Liste, List_T *old ,
-                     Tree_T *treeedges, Tree_T *treefaces){
-
-  lnk lk;
-  nxa a;
-  int i,is,rev,l;
-  Curve *c;
-  Surface *s = FindSurface(abs(ifac),THEM);
-
-  for(l=0;l<List_Nbr(s->Generatrices);l++){
-    List_Read(s->Generatrices,l,&c);
-    lk.n = abs(c->Num);
-    is = lk.n;
-    if(!Tree_Search(treeedges,&is)){
-      Tree_Add(treeedges,&is);
-    }
-    else{
-      Tree_Suppress(treeedges,&is);
-    }
-    Tree_Query(treelink,&lk);
-    if(List_Nbr(lk.l) == 2 || old){
-      for(i=0;i<List_Nbr(lk.l);i++){
-        List_Read(lk.l,i,&a);
-        if(abs(a.a) != abs(ifac)){
-          if(!Tree_Search(treefaces,&a.a)){
-            Tree_Add(treefaces,&a.a);
-            if(!old || List_Search(old,&a.a,fcmp_absint) || List_Nbr(lk.l) == 2){
-              rev = abs(a.a);
-              List_Add(Liste,&rev);
-              recur_trouvevol(rev,is,Liste,old,treeedges,treefaces);
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-
-void BegEndCurve (Curve *c, int *ip1, int *ip2){
-    *ip1 = c->beg->Num;
-    *ip2 = c->end->Num;
-}
-
-void CreeLiens ( void ) {
-  int i,is,ip1,ip2;
-  lnk li,*pli;
-  nxa  na1,na2;
-  Curve *ic;
-
-  treelink = Tree_Create(sizeof(lnk),complink);
-
-  List_T *temp = Tree2List(THEM->Curves);
-  for(i=0;i<List_Nbr(temp);i++){
-    List_Read(temp,i,&ic);
-    if(ic->Num > 0){
-     is = ic->Num;
-     BegEndCurve(ic,&ip1,&ip2);
-
-     na1.a = -is;
-     na2.a = is;
-     na2.arbre = na1.arbre = li.visited =  0;
-     na1.n = li.n = ip1;
-     na2.n = ip2;
-     if((pli = (lnk*)Tree_PQuery(treelink,&li))){
-       List_Add(pli->l,&na2);
-     }
-     else{
-       li.l = List_Create(20,1,sizeof(nxa));
-       List_Add(li.l,&na2);
-       Tree_Add(treelink,&li);
-     }
-     li.n = ip2;
-     if((pli = (lnk*)Tree_PQuery(treelink,&li))){
-       List_Add(pli->l,&na1);
-     }
-     else{
-       li.l = List_Create(20,1,sizeof(nxa));
-       List_Add(li.l,&na1);
-       Tree_Add(treelink,&li);
-     }
-   }
-  }
-}
-
-
-void CreeLiens2 ( void ) {
-  int i,k;
-  lnk li,*pli;
-  nxa  na;
-  Surface *s;
-  Curve *c;
-
-  treelink = Tree_Create(sizeof(lnk),complink);
-  List_T *temp = Tree2List(THEM->Surfaces);
-
-  for(i=0;i<List_Nbr(temp);i++){
-    List_Read(temp,i,&s);
-    if(s->Num > 0)
-      na.a = s->Num;
-    for(k=0;k<List_Nbr(s->Generatrices);k++){
-      List_Read(s->Generatrices,k,&c);
-      li.n = abs(c->Num);
-      if((pli = (lnk*)Tree_PQuery(treelink,&li))){
-        List_Add(pli->l,&na);
-      }
-      else{
-        li.l = List_Create(20,1,sizeof(nxa));
-        List_Add(li.l,&na);
-        Tree_Add(treelink,&li);
-      }
-    }
-  }
-  List_Delete(temp);
-}
-
-
-int alledgeslinked ( int ed , List_T *Liste , List_T *old){
-
-  int ip1,ip2,i,rev;
-  lnk lk;
-  nxa a;
-
-  VisitedNodes = List_Create(20,20,sizeof(int)); //geuz
-
-  CreeLiens();
-
-  Curve *c,C;
-  c = &C;
-  c->Num = ed;
-  Tree_Query(THEM->Curves,&c);
-
-  BegEndCurve(c,&ip1,&ip2);
-
-  CONTOUR_TROUVE = 0;
-
-  POINT_FINAL = ip2;
-  recur_trouvecont(ip1,ed,Liste,1,old);
-
-  if(old){
-    List_Sort(old,fcmp_absint);
-  }
-
-  lk.n = ip2;
-  Tree_Query(treelink,&lk);
-  for(i=0;i<List_Nbr(lk.l);i++){
-    List_Read(lk.l,i,&a);
-    if(abs(a.a) == abs(ed)){
-      rev = -a.a;
-      List_Add(Liste,&rev);
-    }
-  }
-
-
-  if(!CONTOUR_TROUVE){
-    POINT_FINAL = ip1;
-    recur_trouvecont(ip2,ed,Liste,0,old);
-  }
-
-  List_Delete(VisitedNodes); //geuz
-
-  return(CONTOUR_TROUVE);
-}
-
-
-int allfaceslinked (int iz , List_T *Liste , List_T *old){
-
-  CreeLiens2();
-  treeedges = Tree_Create(sizeof(int),fcmp_absint);
-  treefaces = Tree_Create(sizeof(int),fcmp_absint);
-
-  Tree_Add(treefaces,&iz);
-  List_Add(Liste,&iz);
-  recur_trouvevol(iz,0,Liste,old,treeedges,treefaces);
-
-  if(!Tree_Nbr(treeedges)){
-    CONTOUR_TROUVE = 1;
-  }
-  else{
-    CONTOUR_TROUVE = 0;
-  }
-
-  Tree_Delete(treeedges);
-  Tree_Delete(treefaces);
-
-  return(CONTOUR_TROUVE);
-}
-
diff --git a/Geo/Verif.h b/Geo/Verif.h
deleted file mode 100644
index 24175399f0d346b38a035389cbd49f46c266c7ca..0000000000000000000000000000000000000000
--- a/Geo/Verif.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _VERIF_H_
-#define _VERIF_H_
-
-int alledgeslinked (int ed, List_T * Liste, List_T * old);
-int allfaceslinked (int iz, List_T * Liste, List_T * old);
-
-#endif
diff --git a/Geo/Visibility.cpp b/Geo/Visibility.cpp
deleted file mode 100644
index 0f4f86b37935f8fcb4014f29f3a799d1c1896de2..0000000000000000000000000000000000000000
--- a/Geo/Visibility.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "DataBase.h"
-
-extern Mesh *THEM;
-
-/* Gestion des entites visibles */
-
-Tree_T  *EntitesVisibles=NULL;
-int      SHOW_ALL_ENTITIES;
-
-typedef struct{
- int Entite;
- int Visible;
-}EntiteVisible;
-
-int compareEntiteVisible(const void *a, const void *b){
-  EntiteVisible *q,*w;
-  q = (EntiteVisible*)a;
-  w = (EntiteVisible*)b;
-  return(q->Entite-w->Entite);
-}
-
-int EntiteEstElleVisible(int iEnt){
-  EntiteVisible e;
-  e.Entite = iEnt;
-  if(Tree_Query(EntitesVisibles,&e))
-    return e.Visible;
-  return 1;
-}
-
-void ToutesLesEntitesRelatives(int iEnt, Tree_T *Tree, int add_rem){
-  int i;
-  EntiteVisible e;
-
-  Surface *s;
-  Volume *v;
-  Curve *c;
-
-  if((c = FindCurve(iEnt,THEM))){
-  }
-  else if((s = FindSurface(iEnt,THEM))){
-    for(i=0;i<List_Nbr(s->Generatrices);i++){
-      List_Read(s->Generatrices,i,&c);
-      e.Entite = abs(c->Num);
-      e.Visible = add_rem;
-      Tree_Replace(Tree,&e);
-    }
-  }
-  else if((v = FindVolume(iEnt,THEM))){
-    for(i=0;i<List_Nbr(v->Surfaces);i++){
-      List_Read(v->Surfaces,i,&s);
-      e.Entite = abs(s->Num);
-      e.Visible = add_rem;
-      Tree_Replace(Tree,&e);
-    }
-  }
-
-  e.Entite = abs(iEnt);
-  e.Visible = add_rem;
-  Tree_Replace(Tree,&e);
-}
-
-void RemplirEntitesVisibles (int add_rem){
-  int i;
-  Volume *v;
-  Surface *s;
-  Curve *c;
-
-  List_T *ListVolumes = Tree2List (THEM->Volumes);
-  List_T *ListSurfaces = Tree2List (THEM->Surfaces);
-  List_T *ListCurves = Tree2List (THEM->Curves);
-  EntitesVisibles = Tree_Create(sizeof(EntiteVisible),compareEntiteVisible);
-  for(i=0;i<List_Nbr(ListVolumes);i++){
-    List_Read(ListVolumes,i,&v);
-    ToutesLesEntitesRelatives(v->Num,EntitesVisibles,add_rem);
-  }
-  for(i=0;i<List_Nbr(ListSurfaces);i++){
-    List_Read(ListSurfaces,i,&s);
-    ToutesLesEntitesRelatives(s->Num,EntitesVisibles,add_rem);
-  }
-  for(i=0;i<List_Nbr(ListCurves);i++){
-    List_Read(ListCurves,i,&c);
-    ToutesLesEntitesRelatives(c->Num,EntitesVisibles,add_rem);
-  }
-  List_Delete(ListVolumes);
-  List_Delete(ListSurfaces);
-  List_Delete(ListCurves);
-}
diff --git a/Geo/Visibility.h b/Geo/Visibility.h
deleted file mode 100644
index 9be0d6db62292403e658227c11c6027f695c9aa5..0000000000000000000000000000000000000000
--- a/Geo/Visibility.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _VISIBILITY_H_
-#define _VISIBILITY_H_
-
-int EntiteEstElleVisible(int iEnt);
-void ToutesLesEntitesRelatives(int iEnt, Tree_T *Tree, int add_rem);
-void RemplirEntitesVisibles (int add_rem);
-
-extern Tree_T *EntitesVisibles;
-extern int     SHOW_ALL_ENTITIES;
-
-#endif
diff --git a/Graphics/Axes.cpp b/Graphics/Axes.cpp
deleted file mode 100644
index 07a21d7c8117bd649750be28c3cf6961c1444962..0000000000000000000000000000000000000000
--- a/Graphics/Axes.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-// $Id: Axes.cpp,v 1.5 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "gl2ps.h"
-
-extern Context_T   CTX;
-
-
-void Draw_Axes (double s) {
-  double  f, g, b, c;
-  
-  if(s == 0.) return;
-
-  if(!CTX.range[0] && !CTX.range[1] && !CTX.range[2]) return ;
-
-  f = 0.666 * s;
-  g = 1.233 * s;
-  b = .1 * s;
-  c = 0.666 * b;
-
-  glLineWidth(1.); gl2psLineWidth(1.);
-  glColor4ubv((GLubyte*)&CTX.color.axes);
-
-  glBegin(GL_LINES);
-  if(CTX.range[2] != 0.){
-    /* X */
-    glVertex3d(0.,   0.,   0.);  
-    glVertex3d(s,    0.,   0.);  
-    glVertex3d(g-b,  b,    0.);  
-    glVertex3d(g+b, -b,    0.);  
-    glVertex3d(g,   -b,    b);  
-    glVertex3d(g,    b,   -b);  
-    /* Y */
-    glVertex3d(0.,   0.,   0.);  
-    glVertex3d(0.,   s,    0.);  
-    glVertex3d(-b,   g+b,  0.);  
-    glVertex3d(0.,   g,    0.);  
-    glVertex3d(0.,   g,    0.);  
-    glVertex3d(0.,   g+b, -b);  
-    glVertex3d(0.,   g,    0.);  
-    glVertex3d(.5*b, g-b, .5*b);  
-    /* Z */
-    glVertex3d(0.,   0.,   0.);  
-    glVertex3d(0.,   0.,   s);  
-    glVertex3d(-b,   b,    g);  
-    glVertex3d(0.,   b,    g-b);  
-    glVertex3d(0.,   b,    g-b);  
-    glVertex3d(0.,  -b,    g+b);  
-    glVertex3d(0.,  -b,    g+b);  
-    glVertex3d(b,   -b,    g);  
-  }
-  else{
-    /* X */
-    glVertex3d(0.,   0.,   0.);  
-    glVertex3d(s,    0.,   0.);  
-    glVertex3d(g-c,  b,    0.);  
-    glVertex3d(g+c, -b,    0.);  
-    glVertex3d(g-c, -b,    0.);  
-    glVertex3d(g+c,  b,    0.);  
-    /* Y */
-    glVertex3d(0.,   0.,   0.);  
-    glVertex3d(0.,   s,    0.);  
-    glVertex3d(-c,   g+b,  0.);  
-    glVertex3d(0.,   g,    0.);  
-    glVertex3d(0.,   g,    0.);  
-    glVertex3d(c,    g+b,  0.);  
-    glVertex3d(0.,   g,    0.);  
-    glVertex3d(0.,   g-b,  0.);
-  }
-  glEnd();
-  
-  glEnable(GL_LINE_STIPPLE);
-  glLineStipple(2,0x0F0F);
-  glBegin(GL_LINES);
-  if(CTX.range[2] != 0.){
-    glVertex3d(f,  0., 0.);  
-    glVertex3d(f,  0., f );  
-    glVertex3d(f,  0., f );  
-    glVertex3d(0., 0., f );  
-    glVertex3d(0., 0., f );  
-    glVertex3d(0., f,  f );  
-    glVertex3d(0., f,  f );  
-    glVertex3d(0., f,  0.);  
-  }
-  glVertex3d(0., f,  0.);  
-  glVertex3d(f,  f,  0.);  
-  glVertex3d(f,  f,  0.);  
-  glVertex3d(f,  0., 0.);  
-  glEnd();
-  glDisable(GL_LINE_STIPPLE);
-
-}
-
-void Draw_SmallAxes(void){
-  double l,o,xx,xy,yx,yy,zx,zy,cx,cy;
-
-  l  = 30  ;
-  o  = 2  ;
-  cx = CTX.viewport[2] - 45;
-  cy = CTX.viewport[1] + 35;
-
-  xx = l*CTX.rot[0][0] ; xy = l*CTX.rot[0][1] ;
-  yx = l*CTX.rot[1][0] ; yy = l*CTX.rot[1][1] ;
-  zx = l*CTX.rot[2][0] ; zy = l*CTX.rot[2][1] ;
-
-  glColor4ubv((GLubyte*)&CTX.color.small_axes);
-
-  glBegin(GL_LINES);
-  glVertex2d(cx,cy); glVertex2d(cx+xx,cy+xy);
-  glVertex2d(cx,cy); glVertex2d(cx+yx,cy+yy);
-  glVertex2d(cx,cy); glVertex2d(cx+zx,cy+zy);  
-  glEnd();
-  glRasterPos2d(cx+xx+o,cy+xy+o); Draw_String("X");
-  glRasterPos2d(cx+yx+o,cy+yy+o); Draw_String("Y");
-  glRasterPos2d(cx+zx+o,cy+zy+o); Draw_String("Z");
-
-}
-
diff --git a/Graphics/CreateFile.cpp b/Graphics/CreateFile.cpp
deleted file mode 100644
index e0e6ba6b5d1eeb9a029fac6500860df7a8188a69..0000000000000000000000000000000000000000
--- a/Graphics/CreateFile.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-// $Id: CreateFile.cpp,v 1.20 2001-07-25 13:11:07 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Mesh.h"
-#include "OpenFile.h"
-#include "Draw.h"
-#include "Context.h"
-
-extern Context_T   CTX;
-extern Mesh        M;
-
-#ifdef _XMOTIF
-#include <unistd.h>
-#include "Widgets.h"
-#include "XContext.h"
-#include "XDump.h"
-extern Widgets_T   WID;
-extern XContext_T  XCTX;
-#endif
-
-#include "gl2ps.h"
-#include "gl2gif.h"
-#include "gl2jpeg.h"
-#include "gl2ppm.h"
-#include "gl2yuv.h"
-
-void FillBuffer(void){
-  InitOpengl();
-  ClearOpengl();
-  Draw3d();
-  Draw2d();
-}
-
-void CreateOutputFile (char *name, int format) {
-  FILE    *fp;
-  GLint    size3d;
-  char     ext[256];
-  int      res, i;
-
-#ifdef _XMOTIF
-  FILE    *tmp;
-  char     cmd[1000], *tmpFileName="tmp.xwd";
-#endif
-
-  if(!name || !strlen(name)) return;
-
-  CTX.print.gl_fonts = 1;
-
-  switch(format){
-
-  case FORMAT_AUTO :
-    for(i=strlen(name)-1; i>=0; i--){
-      if(name[i] == '.'){
-	strcpy(ext,&name[i]);
-	break;
-      }
-    }
-    if(i<=0) strcpy(ext,"");
-
-    if     (!strcmp(ext,".geo")) CreateOutputFile(name, FORMAT_GEO);
-    else if(!strcmp(ext,".msh")) CreateOutputFile(name, FORMAT_MSH);
-    else if(!strcmp(ext,".unv")) CreateOutputFile(name, FORMAT_UNV);
-    else if(!strcmp(ext,".gif")) CreateOutputFile(name, FORMAT_GIF);
-    else if(!strcmp(ext,".jpg")) CreateOutputFile(name, FORMAT_JPEG);
-    else if(!strcmp(ext,".jpeg")) CreateOutputFile(name, FORMAT_JPEG);
-    else if(!strcmp(ext,".ps")) CreateOutputFile(name, FORMAT_EPS);
-    else if(!strcmp(ext,".eps")) CreateOutputFile(name, FORMAT_EPS);
-    else if(!strcmp(ext,".xpm")) CreateOutputFile(name, FORMAT_XPM);
-    else if(!strcmp(ext,".ppm")) CreateOutputFile(name, FORMAT_PPM);
-    else if(!strcmp(ext,".yuv")) CreateOutputFile(name, FORMAT_YUV);
-    else if(!strcmp(ext,".gref")) CreateOutputFile(name, FORMAT_GREF);
-    else if(!strcmp(ext,".Gref")) CreateOutputFile(name, FORMAT_GREF);
-    else Msg(GERROR, "Unknown extension '%s' for automatic format detection", ext);
-    break;
-
-  case FORMAT_GEO :
-    Print_Geo(&M, name);
-    break;
-    
-  case FORMAT_MSH :
-    Print_Mesh(&M, name, FORMAT_MSH); 
-    break;
-
-  case FORMAT_UNV :
-    Print_Mesh(&M, name, FORMAT_UNV); 
-    break;
-    
-  case FORMAT_GREF :
-    Print_Mesh(&M, name, FORMAT_GREF); 
-    break;
-
-#ifdef _XMOTIF
-  case FORMAT_XPM :
-    if(!(fp = fopen(name,"wb"))) {
-      Msg(WARNING, "Unable to open file '%s'", name); 
-      return;
-    }
-    Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), fp);    
-    Msg(INFO, "XPM creation complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-    fclose(fp);
-    break;
-#endif
-
-  case FORMAT_JPEG :
-    if(!(fp = fopen(name,"wb"))) {
-      Msg(WARNING, "Unable to open file '%s'", name); 
-      return;
-    }
-    FillBuffer();
-    create_jpeg(fp, CTX.viewport[2]-CTX.viewport[0],
-		CTX.viewport[3]-CTX.viewport[1],
-		CTX.print.jpeg_quality);
-    Msg(INFO, "JPEG creation complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-    fclose(fp);
-    break;
-
-  case FORMAT_GIF :
-    if(!(fp = fopen(name,"wb"))) {
-      Msg(WARNING, "Unable to open file '%s'", name); 
-      return;
-    }
-    FillBuffer();
-    create_gif(fp, CTX.viewport[2]-CTX.viewport[0],
-               CTX.viewport[3]-CTX.viewport[1], 
-	       CTX.print.gif_dither,
-	       CTX.print.gif_sort, 
-	       CTX.print.gif_interlace,
-	       CTX.print.gif_transparent,
-	       UNPACK_RED(CTX.color.bg),
-	       UNPACK_GREEN(CTX.color.bg),
-	       UNPACK_BLUE(CTX.color.bg));
-    Msg(INFO, "GIF creation complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-    fclose(fp);
-    break;
-
-  case FORMAT_PPM :
-    if(!(fp = fopen(name,"wb"))) {
-      Msg(WARNING, "Unable to open file '%s'", name); 
-      return;
-    }
-    FillBuffer();
-    create_ppm(fp, CTX.viewport[2]-CTX.viewport[0],
-	       CTX.viewport[3]-CTX.viewport[1]);
-    Msg(INFO, "PPM creation complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-    fclose(fp);
-    break;
-
-  case FORMAT_YUV :
-    if(!(fp = fopen(name,"wb"))) {
-      Msg(WARNING, "Unable to open file '%s'", name); 
-      return;
-    }
-    FillBuffer();
-    create_yuv(fp, CTX.viewport[2]-CTX.viewport[0],
-	       CTX.viewport[3]-CTX.viewport[1]);
-    Msg(INFO, "YUV creation complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-    fclose(fp);
-    break;
-
-  case FORMAT_EPS :
-
-    switch(CTX.print.eps_quality){
-
-#ifdef _XMOTIF
-    case 0 : // Bitmap EPS
-      if(!(fp = fopen(name,"w"))) {
-	Msg(WARNING, "Unable to open file '%s'", name); 
-	return;
-      }
-      if(!(tmp = fopen(tmpFileName,"w"))){
-	Msg(WARNING, "Unable to open file '%s'", tmpFileName); 
-	return;
-      }
-      Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), tmp);
-      fclose(tmp);
-      sprintf(cmd, "xpr -device ps -gray 4 %s >%s", tmpFileName, name);
-      Msg(INFO, "Executing '%s'", cmd);
-      system(cmd);
-      unlink(tmpFileName);
-      Msg(INFO, "Bitmap EPS creation complete '%s'", name);
-      Msg(STATUS2, "Wrote '%s'", name);
-      fclose(fp);
-      break;
-#endif
-      
-    default : // Vector EPS
-      if(!(fp = fopen(name,"w"))) {
-	Msg(WARNING, "Unable to open file '%s'", name); 
-	return;
-      }
-      CTX.print.gl_fonts = 0;
-      size3d = 0 ;
-      res = GL2PS_OVERFLOW ;
-      while(res == GL2PS_OVERFLOW){
-	size3d += 2048*2048 ;
-	gl2psBeginPage(CTX.base_filename, "Gmsh", 
-		       (CTX.print.eps_quality == 1 ? GL2PS_SIMPLE_SORT : GL2PS_BSP_SORT),
-		       GL2PS_SIMPLE_LINE_OFFSET | 
-		       (CTX.print.eps_background ? GL2PS_DRAW_BACKGROUND : 0),
-		       GL_RGBA, 0, NULL, size3d, fp);
-	CTX.stream = TO_FILE ;
-	FillBuffer();
-	CTX.stream = TO_SCREEN ;
-	res = gl2psEndPage();
-      }
-      Msg(INFO, "EPS creation complete '%s'", name);
-      Msg(STATUS2, "Wrote '%s'", name);
-      fclose(fp);
-      CTX.print.gl_fonts = 1;
-      break;
-      
-    }
-    break ;
-    
-  default :
-    Msg(WARNING, "Unknown print format");
-    break;
-  }
-
-
-}
-
diff --git a/Graphics/CreateFile.h b/Graphics/CreateFile.h
deleted file mode 100644
index ed1b5660bb27e35078bd8ce05f262f91b04277bc..0000000000000000000000000000000000000000
--- a/Graphics/CreateFile.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _CREATE_FILE_H_
-#define _CREATE_FILE_H_
-
-void CreateOutputFile (char *name, int format) ;
-
-#endif
diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
deleted file mode 100644
index 7eef57c33aaad2b88ee94dc57e702c0b3f7b5c4c..0000000000000000000000000000000000000000
--- a/Graphics/Draw.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-// $Id: Draw.cpp,v 1.25 2001-08-06 16:47:57 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "MinMax.h"
-
-extern Context_T    CTX ;
-extern Mesh         M;
-
-/* ------------------------------------------------------------------------ */
-/*  d r a w                                                                 */
-/* ------------------------------------------------------------------------ */
-
-void Draw3d(void){
-  int i;
-
-  if(CTX.alpha){
-    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-    glEnable(GL_BLEND);
-    glEnable(GL_ALPHA);
-  }
-  else{
-    glDisable(GL_BLEND);
-#ifndef WIN32
-    // Merde de bug dans les nouvelles dll opengl Windows (ATI Rage
-    // Mobility, NVIDIA, etc.)
-    glDisable(GL_ALPHA);
-#endif
-  }
-  glPolygonOffset(1.0, 1);
-
-  for(i = 0 ; i < 6 ; i++)
-    if(CTX.clip[i]) glEnable((GLenum)(GL_CLIP_PLANE0 + i));
-
-  glShadeModel(GL_SMOOTH);
-  glDepthFunc(GL_LESS);
-  glEnable(GL_DEPTH_TEST);
-  glDisable(GL_CULL_FACE); 
-
-  glPushMatrix();
-  Draw_Mesh(&M);
-  glPopMatrix();  
-}
-
-void Draw2d(void){
-  int i;
-
-  glDisable(GL_DEPTH_TEST);
-  glDisable(GL_LIGHTING);
-  glShadeModel(GL_FLAT);
-
-  for(i = 0 ; i < 6 ; i++)
-    glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-  /* to draw directly in screen coords */
-  glOrtho((double)CTX.viewport[0],
-          (double)CTX.viewport[2],
-          (double)CTX.viewport[1],
-          (double)CTX.viewport[3],-1.,1.);
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-
-  glPushMatrix();
-  if(CTX.post.draw && CTX.post.scales) Draw_Scales();
-  if(CTX.small_axes) Draw_SmallAxes();
-  glPopMatrix();
-}
-
-/* ------------------------------------------------------------------------ */
-/*  o r t h o                                                               */
-/* ------------------------------------------------------------------------ */
-
-void Orthogonalize(int x, int y){
-  double Va,Wa;
-  
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity();
-
-  if(CTX.render_mode == GMSH_SELECT)
-    gluPickMatrix ((GLdouble)x, 
-                   (GLdouble)(CTX.viewport[3]-y),
-                   5.0,
-                   5.0,
-                   CTX.viewport);
-
-  Va = (GLdouble)(CTX.viewport[3]-CTX.viewport[1]) / 
-       (GLdouble)(CTX.viewport[2]-CTX.viewport[0]) ;
-  
-  Wa = (CTX.max[1]-CTX.min[1]) / (CTX.max[0]-CTX.min[0]);
-  
-  if(Va>Wa){
-    CTX.vxmin = CTX.min[0];
-    CTX.vxmax = CTX.max[0];
-    CTX.vymin = 0.5*(CTX.min[1]+CTX.max[1]-Va*(CTX.max[0]-CTX.min[0]));
-    CTX.vymax = 0.5*(CTX.min[1]+CTX.max[1]+Va*(CTX.max[0]-CTX.min[0]));
-  }
-  else{
-    CTX.vxmin = 0.5*(CTX.min[0]+CTX.max[0]-(CTX.max[1]-CTX.min[1])/Va);
-    CTX.vxmax = 0.5*(CTX.min[0]+CTX.max[0]+(CTX.max[1]-CTX.min[1])/Va);
-    CTX.vymin = CTX.min[1];
-    CTX.vymax = CTX.max[1];
-  }
-  CTX.vxmin -= (CTX.vxmax-CTX.vxmin)/3.; CTX.vxmax += 0.25*(CTX.vxmax-CTX.vxmin);
-  CTX.vymin -= (CTX.vymax-CTX.vymin)/3.; CTX.vymax += 0.25*(CTX.vymax-CTX.vymin);
-
-  CTX.pixel_equiv_x = (CTX.vxmax-CTX.vxmin)/(CTX.viewport[2]-CTX.viewport[0]);
-  CTX.pixel_equiv_y = (CTX.vymax-CTX.vymin)/(CTX.viewport[3]-CTX.viewport[1]);
-  
-  if(CTX.ortho) {
-    glOrtho(CTX.vxmin,CTX.vxmax,CTX.vymin,CTX.vymax,0,100*CTX.lc);
-    glMatrixMode(GL_MODELVIEW);
-    glLoadIdentity();    
-    glTranslated(0.0, 0.0, -50*CTX.lc);
-  }
-  else{
-    glFrustum(CTX.vxmin,CTX.vxmax,CTX.vymin,CTX.vymax,CTX.lc,100*CTX.lc);
-    glMatrixMode(GL_MODELVIEW);
-    glLoadIdentity();    
-    glTranslated(0.0, 0.0, -10*CTX.lc);
-    glScaled(10.,10.,10.);
-  }
-
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  i n i t                                                                 */
-/* ------------------------------------------------------------------------ */
-
-
-void InitRenderModel(void)
-{
-  int i;
-  float specular[4];
-
-  for(i = 0 ; i < 6 ; i++){
-    if(CTX.light[i]){
-      glLightfv((GLenum)(GL_LIGHT0 + i), GL_POSITION, CTX.light_position[i]);
-      glEnable((GLenum)(GL_LIGHT0 + i));
-    }
-  }
-  glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
-  glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 40.);
-  glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-  /* let's add some shininess to all these automatically created materials */
-  specular[0] = CTX.shine;
-  specular[1] = CTX.shine;
-  specular[2] = CTX.shine;
-  specular[3] = 1.0;
-  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
-}
-
-void InitShading()
-{
-  glEnable(GL_LIGHTING);
-  glEnable(GL_NORMALIZE);
-  glEnable(GL_COLOR_MATERIAL);
-}
-
-
-void InitNoShading(void){
-  glDisable(GL_LIGHTING);
-}
-
-void InitPosition(void){
-  glScaled    (CTX.s[0], CTX.s[1], CTX.s[2]);
-  glTranslated(CTX.t[0], CTX.t[1], CTX.t[2]);
-
-  CTX.buildRotmatrix();
-  glMultMatrixf(&(CTX.rot[0][0]));
-}
-
-/* ------------------------------------------------------------------------ */
-/*  r e p l o t                                                             */
-/* ------------------------------------------------------------------------ */
-
-/* n'est plus utilise que dans les cas ou des points peuvent etre
-   ajoutes dans la base de donnee -> dans cb_geom */
-void Replot(void){
-  CalculateMinMax(M.Points,NULL);
-  Draw();
-}
-
-/* ------------------------------------------------------------------------ */
-/*  e n t i t y   s e l e c t i o n                                         */
-/* ------------------------------------------------------------------------ */
-
-void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj){
-  GLuint selectBuf[SELECTION_BUFFER_SIZE];
-  GLint  i,j,hits,names,*ptr;
-
-  glSelectBuffer(SELECTION_BUFFER_SIZE, selectBuf);
-
-  glRenderMode(GL_SELECT); 
-  CTX.render_mode = GMSH_SELECT;
-
-  glInitNames();
-  glPushName(0);
-
-  glPushMatrix();
-  Orthogonalize(x,y);
-  Draw_Mesh(&M);
-  glPopMatrix ();
-
-  hits = glRenderMode(GL_RENDER);
-  CTX.render_mode = GMSH_RENDER ;
-  
-  if(hits<0) return; /* Selection Buffer Overflow */
-
-  ptr = (GLint*)selectBuf;
-  
-  for(i=0; i<hits; i++){ 
-    names = *ptr;
-    ptr++; ptr++; ptr++;
-    for(j=0; j<names; j++){
-      if (j==0) ii[i] = *ptr;
-      else if (j==1) jj[i] = *ptr;
-      ptr++;
-    }
-  }
-  *n = hits;
-}
-
-void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
-                            Curve **thec, Surface **thes, Mesh *m){
-
-  Vertex   *v=NULL, V;
-  Curve    *c=NULL, C;
-  Surface  *s=NULL, S;
-
-  int      i;
-  GLuint   typmin;
-
-  typmin = 4;
-  for(i=0;i<n;i++){
-    if(typ[i]<typmin) typmin = typ[i];
-  }
-  
-  for(i=0;i<n;i++){
-    if(typ[i] == typmin){
-      switch(typ[i]){
-      case 0: 
-        v = &V; 
-        v->Num = ient[i];
-        if(Tree_Query(m->Points,&v)) *thev = v;
-        break;
-      case 1:
-        c = &C;
-        c->Num = ient[i];
-        if(Tree_Query(m->Curves,&c)) *thec = c;
-        break;
-      case 2:
-        s = &S;
-        s->Num = ient[i];
-        if(Tree_Query(m->Surfaces,&s)) *thes = s;
-        break;
-      }
-    }
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  z o o m                                                                 */
-/* ------------------------------------------------------------------------ */
-
-
-void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
-            GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2){
-  GLdouble  xscale1, yscale1;
-
-  xscale1 = CTX.s[0];
-  yscale1 = CTX.s[1];
-  set_s(0, CTX.s[0] * (CTX.vxmax-CTX.vxmin)/(X2-X1));
-  set_s(1, CTX.s[1] * (CTX.vymax-CTX.vymin)/(Y1-Y2));
-  /* bif bif bif */
-  set_s(2, 0.5*(CTX.s[0]+CTX.s[1]));
-  set_t(0, CTX.t[0] * (xscale1/CTX.s[0]) - ((Xc1+Xc2)/2.)*(1.-(xscale1/CTX.s[0])));
-  set_t(1, CTX.t[1] * (yscale1/CTX.s[1]) - ((Yc1+Yc2)/2.)*(1.-(yscale1/CTX.s[1])));
-  Draw();
-}
-
diff --git a/Graphics/Draw.h b/Graphics/Draw.h
deleted file mode 100644
index 9e40de96b7d8947ae594240cd5df0f80919f26a5..0000000000000000000000000000000000000000
--- a/Graphics/Draw.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef _DRAW_H_
-#define _DRAW_H_
-
-#include "Views.h"
-
-#define GMSH_RENDER    1
-#define GMSH_SELECT    2
-#define GMSH_FEEDBACK  3
-
-#define SELECTION_BUFFER_SIZE  1024
-
-#define TO_SCREEN  1
-#define TO_FILE    2
-
-void InitOpengl(void);
-void InitOverlay(void);
-void InitShading(void);
-void InitRenderModel(void);
-void InitNoShading(void);
-void InitPosition(void);
-
-void Orthogonalize(int x, int y);
-void ClearOpengl(void);
-
-void set_r(int i, double val);
-void set_t(int i, double val);
-void set_s(int i, double val);
-
-void Replot(void);
-
-void RaiseFill (int i, double Val, double ValMin, double Raise[3][5]);
-void Palette (Post_View * View, int nbi, int i);
-void Palette2 (Post_View * View, double min, double max, double val);
-void ColorSwitch(int i);
-
-int  SelectEntity(int type, Vertex **v, Curve **c, Surface **s);
-void ZeroHighlight(Mesh *m);
-void BeginHighlight(void);
-void EndHighlight(int permanent);
-void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent);
-void HighlightEntityNum(int v, int c, int s, int permanant);
-
-void Draw3d(void);
-void Draw2d(void);
-void DrawUI(void);
-void Draw(void);
-
-void Draw_String(char *s);
-void Draw_Geom (Mesh *m);
-void Draw_Mesh(Mesh *M);
-void Draw_Post(void);
-void Draw_Scales(void);
-void Draw_Axes (double s);
-void Draw_SmallAxes(void);
-void Draw_Point(double *x, double *y, double *z, double Raise[3][5]);
-void Draw_Line (double *x, double *y, double *z, double Raise[3][5]);
-void Draw_Triangle (double *x, double *y, double *z,double *n,
-                    double Raise[3][5], int shade);
-void Draw_Quadrangle (double *x, double *y, double *z, double *n,
-                      double Raise[3][5], int shade);
-void Draw_Polygon (int n, double *x, double *y, double *z, double Raise[3][5]);
-void Draw_Vector (int Type, int Fill,
-                  double x, double y, double z,
-                  double d, double dx, double dy, double dz,
-                  double Raise[3][5]);
-
-void Draw_Mesh_Volumes(void *a, void *b);
-void Draw_Mesh_Surfaces(void *a, void *b);
-void Draw_Mesh_Extruded_Surfaces(void *a, void *b);
-void Draw_Mesh_Curves(void *a, void *b);
-void Draw_Mesh_Points(void *a, void *b);
-
-void Draw_Simplex_Volume (void *a, void *b);
-void Draw_Simplex_Surfaces (void *a, void *b);
-void Draw_Simplex_Curves(void *a,void *b);
-
-void Draw_Hexahedron_Volume (void *a, void *b);
-void Draw_Prism_Volume (void *a, void *b);
-
-void Draw_ScalarPoint(Post_View *View, 
-		      double ValMin, double ValMax, double Raise[3][5],
-		      double *X, double *Y, double *Z, double *V);
-void Draw_VectorPoint(Post_View *View, 
-		      double ValMin, double ValMax, double Raise[3][5],
-		      double *X, double *Y, double *Z, double *V);
-void Draw_TensorPoint(Post_View *View, 
-		      double ValMin, double ValMax, double Raise[3][5],
-		      double *X, double *Y, double *Z, double *V);
-void Draw_ScalarLine(Post_View *View, 
-		     double ValMin, double ValMax, double Raise[3][5],
-		     double *X, double *Y, double *Z, double *V);
-void Draw_VectorLine(Post_View *View, 
-		     double ValMin, double ValMax, double Raise[3][5],
-		     double *X, double *Y, double *Z, double *V);
-void Draw_TensorLine(Post_View *View, 
-		     double ValMin, double ValMax, double Raise[3][5],
-		     double *X, double *Y, double *Z, double *V);
-void Draw_ScalarTriangle(Post_View *View, int preproNormals,
-			 double ValMin, double ValMax, double Raise[3][5],
-			 double *X, double *Y, double *Z, double *V);
-void Draw_VectorTriangle(Post_View *View, 
-			 double ValMin, double ValMax, double Raise[3][5],
-			 double *X, double *Y, double *Z, double *V);
-void Draw_TensorTriangle(Post_View *View, 
-			 double ValMin, double ValMax, double Raise[3][5],
-			 double *X, double *Y, double *Z, double *V);
-void Draw_ScalarTetrahedron(Post_View *View, int preproNormals,
-			    double ValMin, double ValMax, double Raise[3][5],
-			    double *X, double *Y, double *Z, double *V);
-void Draw_VectorTetrahedron(Post_View *View, 
-			    double ValMin, double ValMax, double Raise[3][5],
-			    double *X, double *Y, double *Z, double *V);
-void Draw_TensorTetrahedron(Post_View *View, 
-			    double ValMin, double ValMax, double Raise[3][5],
-			    double *X, double *Y, double *Z, double *V);
-
-#endif
diff --git a/Graphics/Entity.cpp b/Graphics/Entity.cpp
deleted file mode 100644
index fc49732fb567abd6619a8d55d6fd269b29cddd79..0000000000000000000000000000000000000000
--- a/Graphics/Entity.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-// $Id: Entity.cpp,v 1.12 2001-08-11 23:28:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-
-extern Context_T   CTX;
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P o i n t                                                     */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Point (double *x, double *y, double *z, double Raise[3][5]){
-  glBegin(GL_POINTS);
-  glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
-  glEnd();
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ L i n e                                                       */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){
-  glBegin(GL_LINES);
-  glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
-  glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]);
-  glEnd();
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ T r i a n g l e                                               */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Triangle (double *x, double *y, double *z, double *n,
-                    double Raise[3][5], int shade){
-
-  double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3];
-
-  glBegin(GL_TRIANGLES);
-  if (shade){
-    if(!n){
-      x1x0 = (x[1]+Raise[0][1]) - (x[0]+Raise[0][0]); 
-      y1y0 = (y[1]+Raise[1][1]) - (y[0]+Raise[1][0]);
-      z1z0 = (z[1]+Raise[2][1]) - (z[0]+Raise[2][0]); 
-      x2x0 = (x[2]+Raise[0][2]) - (x[0]+Raise[0][0]);
-      y2y0 = (y[2]+Raise[1][2]) - (y[0]+Raise[1][0]); 
-      z2z0 = (z[2]+Raise[2][2]) - (z[0]+Raise[2][0]);
-      nn[0]  = y1y0 * z2z0 - z1z0 * y2y0 ;
-      nn[1]  = z1z0 * x2x0 - x1x0 * z2z0 ;
-      nn[2]  = x1x0 * y2y0 - y1y0 * x2x0 ;
-      //norme(nn); not necessary if GL_NORMALIZE is enabled
-      glNormal3dv(nn);
-    }
-    else
-      glNormal3dv(&n[0]);
-  }
-  
-  glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
-
-  if (shade && n)
-    glNormal3dv(&n[3]);
-
-  glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]);
-
-  if (shade && n)
-    glNormal3dv(&n[6]);
-
-  glVertex3d(x[2]+Raise[0][2], y[2]+Raise[1][2], z[2]+Raise[2][2]);
-  glEnd();
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ Q u a d r a n g l e                                           */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Quadrangle (double *x, double *y, double *z, double *n,
-                      double Raise[3][5], int shade){
-  double x2[3]={x[2],x[3],x[0]};
-  double y2[3]={y[2],y[3],y[0]};
-  double z2[3]={z[2],z[3],z[0]};
-
-  Draw_Triangle(x,y,z,n,Raise,shade);
-  if (n){
-    double n2[9]; 
-    n2[0] = n[6];
-    n2[1] = n[7];
-    n2[2] = n[8];
-    n2[3] = n[9];
-    n2[4] = n[10];
-    n2[5] = n[11];
-    n2[6] = n[0];
-    n2[7] = n[1];
-    n2[8] = n[2];
-    Draw_Triangle(x2,y2,z2,n2,Raise,shade);
-  }
-  else
-    Draw_Triangle(x2,y2,z2,n,Raise,shade);
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P o l y g o n                                                 */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Polygon (int n, double *x, double *y, double *z,
-                   double Raise[3][5]){
-  int i;
-  
-  glBegin(GL_POLYGON);
-  for(i=0;i<n;i++) glVertex3d(x[i]+Raise[0][i],
-                              y[i]+Raise[1][i],
-                              z[i]+Raise[2][i]);
-  glEnd();
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ V e c t o r                                                   */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Vector (int Type, int Fill, 
-                  double x, double y, double z, 
-                  double d, double dx, double dy, double dz,
-                  double Raise[3][5]){
-
-  double  n[3],t[3],u[3];
-  double  l,b,c, f1, f2;
-
-  if(d == 0.0) return;
-  
-  if(Raise != NULL){
-    x += Raise[0][0] ; 
-    y += Raise[1][0] ; 
-    z += Raise[2][0] ; 
-  }
-
-  if(Type ==  DRAW_POST_SEGMENT){
-    glBegin(GL_LINES);
-    glVertex3d(x,    y,    z);
-    glVertex3d(x+dx, y+dy, z+dz);
-    glEnd();
-    return;
-  }
-
-  n[0] = dx/d ; n[1] = dy/d ; n[2] = dz/d ;
-  
-  if( (fabs(n[0]) >= fabs(n[1]) && fabs(n[0]) >= fabs(n[2])) || 
-      (fabs(n[1]) >= fabs(n[0]) && fabs(n[1]) >= fabs(n[2])) ){
-    t[0] = n[1] ; t[1] = -n[0] ; t[2] = 0. ;
-  }
-  else{
-    t[0] = 0. ; t[1] = n[2] ; t[2] = -n[1] ;
-  }
-
-  l = sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);
-  t[0] /= l ; t[1] /= l ; t[2] /= l ;
-
-  u[0] = n[1]*t[2]-n[2]*t[1];
-  u[1] = n[2]*t[0]-n[0]*t[2];
-  u[2] = n[0]*t[1]-n[1]*t[0];
-
-  l = sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2]);
-  u[0] /= l ; u[1] /= l ; u[2] /= l ;
-
-  switch(Type){
-
-  case DRAW_POST_ARROW :
-
-    b = 0.0666 * d;
-
-    f1 = 0.85 ;
-    f2 = 0.8 ;
-
-
-    b *= 2 ;
-    f1 /= 1.5 ;
-    f2 /= 1.5 ;
-    
-    if(Fill){
-      glBegin(GL_LINES);
-      glVertex3d(x,                  y,                  z);
-      glVertex3d(x+dx,               y+dy,               z+dz);
-      glEnd();
-      
-      glBegin(GL_TRIANGLES);
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      glVertex3d(x+f2*dx+b*(t[0]), y+f2*dy+b*(t[1]), z+f2*dz+b*(t[2]));
-      glVertex3d(x+f1*dx,          y+f1*dy,          z+f1*dz);
-      
-      glVertex3d(x+dx,              y+dy,              z+dz);
-      glVertex3d(x+f2*dx+b*(-t[0]), y+f2*dy+b*(-t[1]), z+f2*dz+b*(-t[2]));
-      glVertex3d(x+f1*dx,           y+f1*dy,           z+f1*dz);
-      
-      glVertex3d(x+dx,              y+dy,              z+dz);
-      glVertex3d(x+f2*dx+b*(-u[0]), y+f2*dy+b*(-u[1]), z+f2*dz+b*(-u[2]));
-      glVertex3d(x+f1*dx,           y+f1*dy,           z+f1*dz);
-      
-      glVertex3d(x+dx,              y+dy,             z+dz);
-      glVertex3d(x+f2*dx+b*(u[0]),  y+f2*dy+b*(u[1]), z+f2*dz+b*(u[2]));
-      glVertex3d(x+f1*dx,           y+f1*dy,          z+f1*dz);
-      glEnd();
-    }
-    else{
-      glBegin(GL_LINE_STRIP);
-      glVertex3d(x,                 y,                 z);
-      glVertex3d(x+dx,              y+dy,              z+dz);
-      glVertex3d(x+f2*dx+b*(t[0]),  y+f2*dy+b*(t[1]),  z+f2*dz+b*(t[2]));
-      glVertex3d(x+f1*dx,           y+f1*dy,           z+f1*dz);
-      glVertex3d(x+f2*dx+b*(-t[0]), y+f2*dy+b*(-t[1]), z+f2*dz+b*(-t[2]));
-      glVertex3d(x+dx,              y+dy,              z+dz);
-      glVertex3d(x+f2*dx+b*(-u[0]), y+f2*dy+b*(-u[1]), z+f2*dz+b*(-u[2]));
-      glVertex3d(x+f1*dx,           y+f1*dy,           z+f1*dz);
-      glVertex3d(x+f2*dx+b*(u[0]),  y+f2*dy+b*(u[1]),  z+f2*dz+b*(u[2]));
-      glVertex3d(x+dx,              y+dy,              z+dz);
-      glEnd();
-    }
-    break ;
-    
-  case DRAW_POST_ARROW_HEAD :
-    Msg(GERROR, "Arrow Head not done");
-    break ;
-
-  case DRAW_POST_PYRAMID :
-
-    b = .1333 * d;
-    
-    if(Fill){
-      glBegin(GL_TRIANGLES);
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      glVertex3d(x+b*(t[0]),  y+b*(t[1]),  z+b*(t[2]));
-      glVertex3d(x+b*(-u[0]), y+b*(-u[1]), z+b*(-u[2]));
-      
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      glVertex3d(x+b*(-u[0]), y+b*(-u[1]), z+b*(-u[2]));
-      glVertex3d(x+b*(-t[0]), y+b*(-t[1]), z+b*(-t[2]));
-      
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      glVertex3d(x+b*(-t[0]), y+b*(-t[1]), z+b*(-t[2]));
-      glVertex3d(x+b*(u[0]),  y+b*(u[1]),  z+b*(u[2]));
-      
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      glVertex3d(x+b*(u[0]),  y+b*(u[1]),  z+b*(u[2]));
-      glVertex3d(x+b*(t[0]),  y+b*(t[1]),  z+b*(t[2]));
-      glEnd();
-    }
-    else{
-      glBegin(GL_LINE_LOOP);
-      glVertex3d(x+b*(t[0]),  y+b*(t[1]),  z+b*(t[2]));
-      glVertex3d(x+b*(-u[0]), y+b*(-u[1]), z+b*(-u[2]));
-      glVertex3d(x+b*(-t[0]), y+b*(-t[1]), z+b*(-t[2]));
-      glVertex3d(x+b*(u[0]),  y+b*(u[1]),  z+b*(u[2]));
-      glEnd();
-      
-      glBegin(GL_LINES);
-      glVertex3d(x+b*(t[0]),  y+b*(t[1]),  z+b*(t[2]));
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      
-      glVertex3d(x+b*(-u[0]), y+b*(-u[1]), z+b*(-u[2]));
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      
-      glVertex3d(x+b*(-t[0]), y+b*(-t[1]), z+b*(-t[2]));
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      
-      glVertex3d (x+b*(u[0]), y+b*(u[1]),  z+b*(u[2]));
-      glVertex3d(x+dx,        y+dy,        z+dz);
-      glEnd();
-    }
-    break ;
-
-  case DRAW_POST_CONE :
-
-    b = .1333 * d;
-    c = .7071 * b; 
-
-    if(Fill){
-      glBegin(GL_TRIANGLES);
-      glVertex3d(x+b*(t[0]),       y+b*(t[1]),       z+b*(t[2]));
-      glVertex3d(x+c*(t[0]-u[0]),  y+c*(t[1]-u[1]),  z+c*(t[2]-u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(t[0]-u[0]),  y+c*(t[1]-u[1]),  z+c*(t[2]-u[2]));
-      glVertex3d(x+b*(-u[0]),      y+b*(-u[1]),      z+b*(-u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+b*(-u[0]),      y+b*(-u[1]),      z+b*(-u[2]));
-      glVertex3d(x+c*(-t[0]-u[0]), y+c*(-t[1]-u[1]), z+c*(-t[2]-u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(-t[0]-u[0]), y+c*(-t[1]-u[1]), z+c*(-t[2]-u[2]));
-      glVertex3d(x+b*(-t[0]),      y+b*(-t[1]),      z+b*(-t[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+b*(-t[0]),      y+b*(-t[1]),      z+b*(-t[2]));
-      glVertex3d(x+c*(u[0]-t[0]),  y+c*(u[1]-t[1]),  z+c*(u[2]-t[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(u[0]-t[0]),  y+c*(u[1]-t[1]),  z+c*(u[2]-t[2]));
-      glVertex3d(x+b*(u[0]),       y+b*(u[1]),       z+b*(u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+b*(u[0]),       y+b*(u[1]),       z+b*(u[2]));
-      glVertex3d(x+c*(t[0]+u[0]),  y+c*(t[1]+u[1]),  z+c*(t[2]+u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(t[0]+u[0]),  y+c*(t[1]+u[1]),  z+c*(t[2]+u[2]));
-      glVertex3d(x+b*(t[0]),       y+b*(t[1]),       z+b*(t[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      glEnd();
-    }
-    else{
-      glBegin(GL_LINE_LOOP);
-      glVertex3d(x+b*(t[0]),       y+b*(t[1]),       z+b*(t[2]));
-      glVertex3d(x+c*(t[0]-u[0]),  y+c*(t[1]-u[1]),  z+c*(t[2]-u[2]));
-      glVertex3d(x+b*(-u[0]),      y+b*(-u[1]),      z+b*(-u[2]));
-      glVertex3d(x+c*(-t[0]-u[0]), y+c*(-t[1]-u[1]), z+c*(-t[2]-u[2]));
-      glVertex3d(x+b*(-t[0]),      y+b*(-t[1]),      z+b*(-t[2]));
-      glVertex3d(x+c*(u[0]-t[0]),  y+c*(u[1]-t[1]),  z+c*(u[2]-t[2]));
-      glVertex3d(x+b*(u[0]),       y+b*(u[1]),       z+b*(u[2]));
-      glVertex3d(x+c*(t[0]+u[0]),  y+c*(t[1]+u[1]),  z+c*(t[2]+u[2]));
-      glEnd();
-      
-      glBegin(GL_LINES);
-      glVertex3d(x+b*(t[0]),       y+b*(t[1]),       z+b*(t[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(t[0]-u[0]),  y+c*(t[1]-u[1]),  z+c*(t[2]-u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+b*(-u[0]),      y+b*(-u[1]),      z+b*(-u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(-t[0]-u[0]), y+c*(-t[1]-u[1]), z+c*(-t[2]-u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+b*(-t[0]),      y+b*(-t[1]),      z+b*(-t[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(u[0]-t[0]),  y+c*(u[1]-t[1]),  z+c*(u[2]-t[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+b*(u[0]),       y+b*(u[1]),       z+b*(u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      
-      glVertex3d(x+c*(t[0]+u[0]),  y+c*(t[1]+u[1]),  z+c*(t[2]+u[2]));
-      glVertex3d(x+dx,             y+dy,             z+dz);
-      glEnd();
-    }
-    break ;
-
-  default :
-    Msg(GERROR, "Unknown type of vector to draw");
-    break;
-  }
-  
-}
-
diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp
deleted file mode 100644
index beadd9c9f24da577b8cc2283d8dd9f5518a9c36b..0000000000000000000000000000000000000000
--- a/Graphics/Geom.cpp
+++ /dev/null
@@ -1,739 +0,0 @@
-// $Id: Geom.cpp,v 1.27 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "Draw.h"
-#include "Context.h"
-#include "Verif.h"
-#include "Interpolation.h"
-#include "Visibility.h"
-#include "STL.h"
-#include "gl2ps.h"
-
-extern Context_T  CTX;
-extern Mesh      *THEM;
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P o i n t                                                     */
-/* ------------------------------------------------------------------------ */
-
-static int   Highlighted = 0; 
-
-void Draw_GeoPoint (void *a, void *b){
-  Vertex **v;
-  char Num[100];
-
-  v = (Vertex**)a;
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glLoadName(0);
-    glPushName((*v)->Num);
-  }
-
-  if((*v)->Frozen){
-    glPointSize(5); gl2psPointSize(5);
-    glColor4ubv((GLubyte*)&CTX.color.geom.point_sel);
-  }
-  else if(Highlighted){
-    glPointSize(5); gl2psPointSize(5);
-    glColor4ubv((GLubyte*)&CTX.color.geom.point_hlt);
-  }
-  else{
-    glPointSize(3); gl2psPointSize(3);
-    glColor4ubv((GLubyte*)&CTX.color.geom.point);
-  }
-
-  if(CTX.geom.points){
-    glBegin(GL_POINTS);
-    glVertex3d((*v)->Pos.X, (*v)->Pos.Y, (*v)->Pos.Z);
-    glEnd();
-  }
-
-  if(CTX.geom.points_num){
-    sprintf(Num,"%d",(*v)->Num);
-    glRasterPos3d((*v)->Pos.X+3*CTX.pixel_equiv_x/CTX.s[0],
-                  (*v)->Pos.Y+3*CTX.pixel_equiv_x/CTX.s[1], 
-                  (*v)->Pos.Z+3*CTX.pixel_equiv_x/CTX.s[2]);
-    Draw_String(Num);
-  }
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glPopName();
-  }
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ C u r v e                                                     */
-/* ------------------------------------------------------------------------ */
-
-
-void Draw_Curve (void *a, void *b){
-  int     i,N;
-  double  mod,dd;
-  char    Num[100];
-  Curve  *c;
-  Vertex  v,dv;
-
-  c = *(Curve**)a;
-
-  if(c->Dirty || c->Num<0 || !EntiteEstElleVisible(c->Num)) return;
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glLoadName(1);
-    glPushName(c->Num);
-  }
-
-  if((c)->ipar[3]){
-    glLineWidth(2.); gl2psLineWidth(2.*CTX.print.geom_line_width);
-    glColor4ubv((GLubyte*)&CTX.color.geom.line_sel);
-  }
-  else if(Highlighted){
-    glLineWidth(2.); gl2psLineWidth(2.*CTX.print.geom_line_width);
-    glColor4ubv((GLubyte*)&CTX.color.geom.line_hlt);
-  }
-  else{
-    glLineWidth(1.); gl2psLineWidth(1.*CTX.print.geom_line_width);
-    glColor4ubv((GLubyte*)&CTX.color.geom.line);
-  }
-
-  if(CTX.geom.lines){
-  
-    if(c->Typ == MSH_SEGM_LINE)
-      N = List_Nbr(c->Control_Points);
-    else
-      N = 50;
-    if(c->Typ == MSH_SEGM_DISCRETE)
-      {
-	Simplex *s;
-	List_T *temp = Tree2List(c->Simplexes);
-	for(i=0;i<List_Nbr(temp);i++)
-	  {
-	    List_Read(temp,i,&s);
-	    glBegin(GL_LINE_STRIP);
-	    glVertex3d(s->V[0]->Pos.X,s->V[0]->Pos.Y,s->V[0]->Pos.Z);
-	    glVertex3d(s->V[1]->Pos.X,s->V[1]->Pos.Y,s->V[1]->Pos.Z);
-	    glEnd();
-	  }
-	List_Delete(temp);
-      }
-    else
-      {
-	glBegin(GL_LINE_STRIP);
-	for(i=0;i<N;i++){
-	  v = InterpolateCurve(c,(double)i/(double)(N-1),0);
-	  glVertex3d(v.Pos.X,v.Pos.Y,v.Pos.Z);
-	}
-	glEnd();
-      }
-  }
-
-  if(CTX.geom.lines_num){
-    v = InterpolateCurve(c,0.5,0);
-    sprintf(Num,"%d",c->Num);
-    glRasterPos3d(v.Pos.X+3*CTX.pixel_equiv_x/CTX.s[0],
-                  v.Pos.Y+3*CTX.pixel_equiv_x/CTX.s[1], 
-                  v.Pos.Z+3*CTX.pixel_equiv_x/CTX.s[2]);
-    Draw_String(Num);
-  }
-  
-  if(CTX.geom.tangents){
-    v  = InterpolateCurve(c,0.5,0);
-    dv = InterpolateCurve(c,0.5,1);
-    mod = sqrt(dv.Pos.X*dv.Pos.X+dv.Pos.Y*dv.Pos.Y+dv.Pos.Z*dv.Pos.Z);
-    dv.Pos.X = dv.Pos.X / mod * CTX.geom.tangents * CTX.pixel_equiv_x/CTX.s[0] ;
-    dv.Pos.Y = dv.Pos.Y / mod * CTX.geom.tangents * CTX.pixel_equiv_x/CTX.s[1] ;
-    dv.Pos.Z = dv.Pos.Z / mod * CTX.geom.tangents * CTX.pixel_equiv_x/CTX.s[2] ;
-    dd = sqrt(dv.Pos.X*dv.Pos.X+dv.Pos.Y*dv.Pos.Y+dv.Pos.Z*dv.Pos.Z);
-    glColor4ubv((GLubyte*)&CTX.color.geom.tangents);
-    Draw_Vector(DRAW_POST_ARROW, 0, v.Pos.X,v.Pos.Y,v.Pos.Z,
-                dd, dv.Pos.X,dv.Pos.Y,dv.Pos.Z, NULL);
-  }
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glPopName ();
-  }
-
-}
-
-
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ S u r f a c e                                                 */
-/* ------------------------------------------------------------------------ */
-
-void put_Z (Vertex *v, Surface *s){
-  Vertex V;
-  V.Pos.X = s->a;
-  V.Pos.Y = s->b;
-  V.Pos.Z = s->c; 
-  Projette(&V,s->plan);
-  if(V.Pos.Z != 0.0)
-    v->Pos.Z = (s->d - V.Pos.X * v->Pos.X - V.Pos.Y * v->Pos.Y)/V.Pos.Z;
-  else v->Pos.Z = 0.0;
-
-  Projette(v,s->invplan);
-}
-
-int isPointOnPlanarSurface (Surface *S, double X, double Y, double Z, double n[3]){
-  Curve *C;
-  Vertex V,P1,P2;
-  int i,j,N;
-  double Angle,u1,u2;
-
-  Angle = 0.0;
-  V.Pos.X = X;
-  V.Pos.Y = Y;
-  V.Pos.Z = Z;
-
-  for(i=0;i<List_Nbr(S->Generatrices);i++){
-
-    List_Read(S->Generatrices,i,&C);
-
-    if(C->Typ == MSH_SEGM_LINE)
-      N = 1;
-    else
-      N = 10;
-
-    for(j=0;j<N;j++){
-      u1 = (double)j/(double)(N);
-      u2 = (double)(j+1)/(double)(N);
-      P1 = InterpolateCurve(C,u1,0);
-      P2 = InterpolateCurve(C,u2,0);
-      Angle += angle_plan(&V,&P1,&P2,n);
-    }
-
-  }
-
-  //printf(" %d -> angle %g\n", S->Num, fabs(Angle));
-
-  if(fabs(Angle) > 6.0 && fabs(Angle) < 7.0) // Should be 2 * Pi or 0
-    return 1;
-  return 0;
-
-}
-
-void Draw_Plane_Surface (Surface *s){
-  int     i, j, k;
-  Curve  *c;
-  double  minx, miny, maxx, maxy, t, n[3], nn;
-  Vertex  P1, P2, P3, V[4], vv, vv1, vv2;
-  char    Num[100];
-
-  static List_T  *points;
-  static int      deb=1;
-
-  if(!s->Orientations){
-
-    s->Orientations = List_Create(20,2,sizeof(Vertex));
-
-    if(deb){
-      points = List_Create(10,10,sizeof(Vertex*));
-      deb = 0;
-    }
-    else
-      List_Reset(points);
-
-    for(i=0;i<List_Nbr(s->Generatrices);i++){
-      List_Read(s->Generatrices,i,&c);
-      for(j=0;j<List_Nbr(c->Control_Points);j++){
-	List_Add(points,List_Pointer(c->Control_Points,j));
-      }
-    }
-
-    MeanPlane(points, s);
-
-    k = 0;
-    
-    for(i=0;i<List_Nbr(s->Generatrices);i++){
-      List_Read (s->Generatrices,i,&c);
-      P1 = InterpolateCurve(c,0.0,0);
-      P2 = InterpolateCurve(c,0.5,0);
-      P3 = InterpolateCurve(c,1.0,0);
-      Projette(&P1,s->plan);
-      Projette(&P2,s->plan);
-      Projette(&P3,s->plan);
-      if(!k){
-        k = 1;
-        minx = maxx = P1.Pos.X;
-        miny = maxy = P1.Pos.Y;
-      }
-      minx = DMIN(DMIN(DMIN(minx,P1.Pos.X),P2.Pos.X),P3.Pos.X);      
-      miny = DMIN(DMIN(DMIN(miny,P1.Pos.Y),P2.Pos.Y),P3.Pos.Y);      
-      maxx = DMAX(DMAX(DMAX(maxx,P1.Pos.X),P2.Pos.X),P3.Pos.X);      
-      maxy = DMAX(DMAX(DMAX(maxy,P1.Pos.Y),P2.Pos.Y),P3.Pos.Y);      
-    }
-
-    V[0].Pos.X = minx; V[0].Pos.Y = miny;
-    V[1].Pos.X = maxx; V[1].Pos.Y = miny;
-    V[2].Pos.X = maxx; V[2].Pos.Y = maxy;
-    V[3].Pos.X = minx; V[3].Pos.Y = maxy;
-
-    for(i=0;i<4;i++){
-      V[i].Pos.Z = 0.0;
-      put_Z(&V[i],s);
-    }
-
-    n[0] = s->plan[2][0];
-    n[1] = s->plan[2][1];
-    n[2] = s->plan[2][2];
-    norme(n);
-
-    k = 0;
-    for(i=0;i<100;i++){
-      t = (double)i/(double)(100);
-      vv.Pos.X = t * 0.5 * (V[0].Pos.X + V[1].Pos.X) + (1.-t) * 
-        0.5 * (V[2].Pos.X + V[3].Pos.X); 
-      vv.Pos.Y = t * 0.5 * (V[0].Pos.Y + V[1].Pos.Y) + (1.-t) * 
-        0.5 * (V[2].Pos.Y + V[3].Pos.Y); 
-      vv.Pos.Z = t * 0.5 * (V[0].Pos.Z + V[1].Pos.Z) + (1.-t) * 
-        0.5 * (V[2].Pos.Z + V[3].Pos.Z); 
-
-      if(isPointOnPlanarSurface(s,vv.Pos.X,vv.Pos.Y,vv.Pos.Z,n)){
-        if(!k){
-          List_Add(s->Orientations,&vv);
-          k = 1;
-        }
-      }
-      else{
-        if(k){
-          List_Add(s->Orientations,&vv);
-          k = 0;
-        }    
-      }
-    }
-    if(k) List_Add(s->Orientations,&vv);
-    
-    k = 0;
-    for(i=0;i<100;i++){
-      t = (double)i/(double)(100);
-      vv.Pos.X = t*.5*(V[0].Pos.X+V[3].Pos.X)+(1.-t)*.5*(V[2].Pos.X+V[1].Pos.X); 
-      vv.Pos.Y = t*.5*(V[0].Pos.Y+V[3].Pos.Y)+(1.-t)*.5*(V[2].Pos.Y+V[1].Pos.Y);
-      vv.Pos.Z = t*.5*(V[0].Pos.Z+V[3].Pos.Z)+(1.-t)*.5*(V[2].Pos.Z+V[1].Pos.Z); 
-      if(isPointOnPlanarSurface(s,vv.Pos.X,vv.Pos.Y,vv.Pos.Z,n)){
-        if(!k){
-          List_Add(s->Orientations,&vv);
-          k = 1;
-        }
-      }
-      else{
-        if(k){
-          List_Add(s->Orientations,&vv);
-          k = 0;
-        }    
-      }
-    }
-    if(k)List_Add(s->Orientations,&vv);
-
-    Msg(STATUS2, "Plane Surface %d (%d points)",s->Num,List_Nbr(s->Orientations)); 
-  }
-
-  if(CTX.geom.surfaces){
-    glBegin(GL_LINES);
-    for(i=0;i<List_Nbr(s->Orientations);i++){
-      List_Read(s->Orientations,i,&vv);
-      glVertex3d(vv.Pos.X,vv.Pos.Y,vv.Pos.Z);
-    }
-    glEnd();
-  }
-
-                              //BUG JapanDef.geo
-  if(CTX.geom.surfaces_num && List_Nbr(s->Orientations)>1){
-    List_Read(s->Orientations,0,&vv1);
-    List_Read(s->Orientations,1,&vv2);
-    sprintf(Num,"%d",s->Num);
-    glRasterPos3d((vv2.Pos.X+vv1.Pos.X)/2. + 3*CTX.pixel_equiv_x/CTX.s[0],
-                  (vv2.Pos.Y+vv1.Pos.Y)/2. + 3*CTX.pixel_equiv_x/CTX.s[1], 
-                  (vv2.Pos.Z+vv1.Pos.Z)/2. + 3*CTX.pixel_equiv_x/CTX.s[2]);
-    Draw_String(Num);
-  }
-  
-  if(CTX.geom.normals) {
-    glDisable(GL_LINE_STIPPLE) ;
-    List_Read(s->Orientations,0,&vv1);
-    List_Read(s->Orientations,1,&vv2);
-    n[0] = s->plan[2][0];
-    n[1] = s->plan[2][1];
-    n[2] = s->plan[2][2];
-    norme(n);
-    n[0] *= CTX.geom.normals * CTX.pixel_equiv_x/CTX.s[0] ;
-    n[1] *= CTX.geom.normals * CTX.pixel_equiv_x/CTX.s[1] ;
-    n[2] *= CTX.geom.normals * CTX.pixel_equiv_x/CTX.s[2] ;
-    nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);
-    glColor4ubv((GLubyte*)&CTX.color.geom.normals);
-    Draw_Vector(DRAW_POST_ARROW, 0, (vv2.Pos.X+vv1.Pos.X)/2., (vv2.Pos.Y+vv1.Pos.Y)/2., 
-                (vv2.Pos.Z+vv1.Pos.Z)/2., nn, n[0],n[1],n[2],NULL);
-  }
-}
-
-
-void Draw_NonPlane_Surface (Surface *s){
-  Vertex   v,n1,n2,n3;
-  int      i,NbTics,N;
-  double   u,n[3],nn,nx[3],ny[3];
-  double  tics[20];
-  double u0, un,v0,vn;
-  int kk;
-  char Num[100];
-
-  u0 = v0 = 0;
-  un = vn = 1;
-
-  if(s->Typ == MSH_SURF_NURBS){
-    NbTics = 5;
-    u0 = s->ku[0];
-    un = s->ku[s->OrderU + s->Nu];
-    v0 = s->kv[0];
-    vn = s->kv[s->OrderV + s->Nv];
-    for(i=0;i<NbTics;i++)
-      tics[i] = v0 + ((double)(i+1)/(double)NbTics) * (vn - v0);
-    if(CTX.geom.shade){
-      GLUnurbsObj *nurb;
-      nurb=gluNewNurbsRenderer();
-      gluNurbsProperty(nurb,(GLenum)GLU_SAMPLING_TOLERANCE,50.0);
-      gluNurbsProperty(nurb,(GLenum)GLU_DISPLAY_MODE,GLU_FILL );
-      gluBeginSurface(nurb);
-      gluNurbsSurface(nurb, s->Nu+s->OrderU+1,s->ku, s->Nv+s->OrderV+1,s->kv,
-                      4, 4*s->Nu, s->cp, s->OrderU+1,s->OrderV+1,
-                      GL_MAP2_VERTEX_4);
-      gluEndSurface(nurb);
-      gluDeleteNurbsRenderer(nurb);
-      return;
-    }
-  }
-  else {
-    NbTics = 1;
-    tics[0] = 0.5;
-  }
-
-  if(CTX.geom.surfaces){
-    for(kk = 0;kk<NbTics;kk++){
-      N = 50;
-      glBegin(GL_LINE_STRIP);
-      for(i=0;i<N+1;i++){
-        u = u0 + (un-u0)*(double)i/(double)N;
-        v = InterpolateSurface(s,u,tics[kk],0,0);
-        glVertex3d(v.Pos.X,v.Pos.Y,v.Pos.Z);
-      }
-      glEnd();
-    }
-  }
-
-  if(s->Typ == MSH_SURF_NURBS){
-    for(i=0;i<NbTics;i++){
-      tics[i] = u0+((double)(i+1)/(double)NbTics) * (un - u0);
-    }
-  }
-
-  if(CTX.geom.surfaces){
-    for( kk = 0;kk<NbTics;kk++){
-      glBegin(GL_LINE_STRIP);
-      for(i=0;i<N+1;i++){
-        u = v0 + (vn-v0)*(double)i/(double)N;
-        v = InterpolateSurface(s,tics[kk],u,0,0);
-        glVertex3d(v.Pos.X,v.Pos.Y,v.Pos.Z);
-      }
-      glEnd();
-    }
-  }
-
-  if(CTX.geom.surfaces_num){
-    v = InterpolateSurface(s,0.5,0.5,0,0);
-    sprintf(Num,"%d",s->Num);
-    glRasterPos3d(v.Pos.X+3*CTX.pixel_equiv_x/CTX.s[0],
-                  v.Pos.Y+3*CTX.pixel_equiv_x/CTX.s[1], 
-                  v.Pos.Z+3*CTX.pixel_equiv_x/CTX.s[2]);
-    Draw_String(Num);
-  }
-
-  if(CTX.geom.normals){
-    glDisable(GL_LINE_STIPPLE);
-    n1 = InterpolateSurface(s,0.5,0.5,0,0);
-    n2 = InterpolateSurface(s,0.6,0.5,0,0);
-    n3 = InterpolateSurface(s,0.5,0.6,0,0);
-    nx[0] = n2.Pos.X - n1.Pos.X;
-    nx[1] = n2.Pos.Y - n1.Pos.Y;
-    nx[2] = n2.Pos.Z - n1.Pos.Z;
-    ny[0] = n3.Pos.X - n1.Pos.X;
-    ny[1] = n3.Pos.Y - n1.Pos.Y;
-    ny[2] = n3.Pos.Z - n1.Pos.Z;
-    prodve(nx,ny,n);
-    norme(n);
-    n[0] *= CTX.geom.normals * CTX.pixel_equiv_x/CTX.s[0] ;
-    n[1] *= CTX.geom.normals * CTX.pixel_equiv_x/CTX.s[1] ;
-    n[2] *= CTX.geom.normals * CTX.pixel_equiv_x/CTX.s[2] ;
-    nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);
-    glColor4ubv((GLubyte*)&CTX.color.geom.normals);
-    Draw_Vector(DRAW_POST_ARROW, 0, n1.Pos.X, n1.Pos.Y, n1.Pos.Z,
-                nn, n[0],n[1],n[2],NULL);
-  }
-
-}
-
-void Draw_Surface (void *a, void *b){
-  Surface *s;
-
-  s = *(Surface**)a;
-
-  if(s->Dirty || !s || !s->Support || !EntiteEstElleVisible(s->Num)) return;
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glLoadName(2);
-    glPushName(s->Num);
-  }
-
-  if(!CTX.geom.shade){
-    if(s->Mat){
-      glLineWidth(2.); gl2psLineWidth(2.);
-      glColor4ubv((GLubyte*)&CTX.color.geom.surface_sel);
-    }
-    else if (Highlighted){
-      glLineWidth(2.); gl2psLineWidth(2.);
-      glColor4ubv((GLubyte*)&CTX.color.geom.surface_hlt);
-    }
-    else{
-      glLineWidth(1.); gl2psLineWidth(1.);
-      glColor4ubv((GLubyte*)&CTX.color.geom.surface);
-    }
-    glEnable(GL_LINE_STIPPLE);
-    glLineStipple(1,0x0F0F);
-  }
-  else{
-    ColorSwitch(abs(s->Num));
-  }
-
-  if(s->Typ == MSH_SURF_STL){
-    glDisable(GL_LINE_STIPPLE);
-    Tree_Action(s->STL->Simplexes,Draw_Simplex_Surfaces);
-  }
-  else if(s->Typ == MSH_SURF_DISCRETE){
-    glDisable(GL_LINE_STIPPLE);
-    Tree_Action(s->Simplexes,Draw_Simplex_Surfaces);
-  }
-  else if(s->Typ == MSH_SURF_PLAN)
-    Draw_Plane_Surface(s);
-  else
-    Draw_NonPlane_Surface(s);
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glPopName ();
-  }
-
-  glDisable(GL_LINE_STIPPLE);
-
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ V o l u m e                                                   */
-/* ------------------------------------------------------------------------ */
-
-int TheVolume;
-
-void Draw_Curve_For_Volume (void *a, void *b){
-  int     i,N;
-  Curve  *c;
-  Vertex  v;
-
-  glLineWidth(2.); gl2psLineWidth(2.);
-
-  c = *(Curve**)a;
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glLoadName(3);
-    glPushName(TheVolume);
-  }
-
-  if(c->Typ == MSH_SEGM_LINE)
-    N = List_Nbr(c->Control_Points);
-  else
-    N = 10;
-
-  glBegin(GL_LINE_STRIP);
-  for(i=0;i<N;i++){
-    v = InterpolateCurve(c,0.2*(double)i/(double)(N-1),0);
-    glVertex3d(v.Pos.X,v.Pos.Y,v.Pos.Z);
-  }
-  glEnd();
-
-  glBegin(GL_LINE_STRIP);
-  for(i=N-1;i>=0;i--){
-    v = InterpolateCurve(c,1.-0.2*(double)i/(double)(N-1),0);
-    glVertex3d(v.Pos.X,v.Pos.Y,v.Pos.Z);
-  }
-  glEnd();
-
-
-  if(CTX.render_mode == GMSH_SELECT){
-    glPopName ();
-  }
-
-  if((c)->ipar[3]){
-    glLineWidth(1.); gl2psLineWidth(1.);
-  }
-
-}
-
-
-void DrawVolumes (Mesh *m){
-
-
-}
-
-
-
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ G e o m                                                       */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Geom (Mesh *m) {
-
-  if(m->status == -1) return;
-
-  if(CTX.geom.points || CTX.geom.points_num)
-    Tree_Action(m->Points, Draw_GeoPoint);
-  if(CTX.geom.lines || CTX.geom.lines_num)
-    Tree_Action(m->Curves,  Draw_Curve  );
-  if(CTX.geom.surfaces || CTX.geom.surfaces_num)
-    Tree_Action(m->Surfaces,Draw_Surface);
-  if(CTX.geom.volumes || CTX.geom.volumes_num)
-    DrawVolumes(m);
-
-}
-
-void ZeroCurve(void *a,void *b){
-  Curve *c;
-  c = *(Curve**)a;
-  c->ipar[3] = 0;
-}
-
-void ZeroPoint(void *a,void *b){
-  Vertex *v;
-  v = *(Vertex**)a;
-  v->Frozen = 0;
-}
-
-void ZeroSurface(void *a,void *b){
-  Surface *s;
-  s = *(Surface**)a;
-  s->Mat = 0;
-}
-
-void ZeroHighlight(Mesh *m){
-  Tree_Action(m->Points,ZeroPoint);
-  Tree_Action(m->Curves,ZeroCurve);
-  Tree_Action(m->Surfaces,ZeroSurface);
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  H i g h l i g h t                                                       */
-/* ------------------------------------------------------------------------ */
-
-void BeginHighlight(void){
-  if(CTX.geom.highlight){
-    if(CTX.overlay)
-      InitOverlay();
-    else
-      InitOpengl();
-    Highlighted = 1;
-    glPushMatrix();
-    InitPosition();    
-#ifdef _XMOTIF
-    if(CTX.db) glDrawBuffer(GL_FRONT);
-#endif
-  }
-}
-
-
-void EndHighlight(int permanent){
-  Highlighted = 0;
-  if(permanent) 
-    Draw();
-  else{
-    if(CTX.geom.highlight) {
-      glPopMatrix();
-#ifdef _XMOTIF
-      if(CTX.db) glDrawBuffer(GL_BACK);
-#endif
-    }
-  }
-}
-
-void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent){
-
-  Curve *cc;
-  char Message[256],temp[256];
-  int i,nbg;
-
-  if(v){
-    if(permanent) v->Frozen = 1;
-    if(CTX.geom.highlight) Draw_GeoPoint(&v,NULL);
-    Msg(STATUS1N,"Point %d {%.5g,%.5g,%.5g} (%.5g)", v->Num,v->Pos.X,v->Pos.Y,v->Pos.Z,v->lc);
-  }
-  else if(c){
-    if(permanent) c->ipar[3] = 1;
-    if(CTX.geom.highlight) Draw_Curve(&c,NULL);
-    Msg(STATUS1N,"Curve %d  {%d->%d}",c->Num,c->beg->Num,c->end->Num);
-  }
-  else if(s){
-    if(permanent && s->Mat == 1) return;
-    if(permanent) s->Mat = 1;
-    if(CTX.geom.highlight) Draw_Surface(&s,NULL);
-    sprintf(Message,"Surface %d {",s->Num);
-
-    nbg = List_Nbr(s->Generatrices) ;
-
-    if(nbg < 10){
-      for(i=0;i<nbg;i++){
-        List_Read(s->Generatrices,i,&cc);
-        if(!i)sprintf(temp,"%d",cc->Num);
-        else sprintf(temp,",%d",cc->Num);
-        strcat(Message,temp);
-      }
-    }
-    else{
-      strcat(Message,"...");
-    }
-    strcat(Message,"}");
-    Msg(STATUS1N,Message);
-  }
-  else{
-    Msg(STATUS1N," ");
-  }
-  glFlush();
-}
-
-
-void HighlightEntityNum(int v, int c, int s, int permanant){
-  Vertex *pv,V;
-  Curve *pc,C;
-  Surface *ps,S;
-  if(v){
-    pv = &V;
-    pv->Num = v;
-    if(Tree_Query(THEM->Vertices,&pv)){
-      HighlightEntity(pv,NULL,NULL,permanant);
-    }
-  }
-  if(c){
-    pc = &C;
-    pc->Num = c;
-    if(Tree_Query(THEM->Curves,&pc)){
-      HighlightEntity(NULL,pc,NULL,permanant);
-    }
-  }
-  if(s){
-    ps = &S;
-    ps->Num = s;
-    if(Tree_Query(THEM->Surfaces,&ps)){
-      HighlightEntity(NULL,NULL,ps,permanant);
-    }
-  }
-}
-
diff --git a/Graphics/IsoSimplex.cpp b/Graphics/IsoSimplex.cpp
deleted file mode 100644
index e2fdfa36e71de3028e845796af4b88c76eebdac5..0000000000000000000000000000000000000000
--- a/Graphics/IsoSimplex.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Iso.h"
-#include "Context.h"
-#include "Views.h"
-#include "Numeric.h"
-
-extern Context_T   CTX;
-
-// compute the gradient of a linear interpolation in a tetrahedron
-
-
-void EnhanceSimplexPolygon (Post_View *View,
-			    int nb, // nb of points in polygon 
-			    double *Xp, // x positions
-			    double *Yp, // y positions
-			    double *Zp, // z positions
-			    double *Valp, // values at points
-			    double *X, // x positions of the simplex
-			    double *Y, // y positions of the simplex
-			    double *Z, // z posistions of the simplex
-			    double *Val, // values at simplex points
-			    double *norms, // output : normals at points
-			    int preproNormals  // do we compute normals or do we get them
-			    ){
-  /*
-    3 possibilities for quads
-      -) 0,2,5,3
-      -) 0,1,5,4
-      -) 1,2,4,3
-      in all cases, simply invert the 2 last ones
-      for having the quads ordered      
-   */
-  int i;
-  double Xpi[6],Ypi[6],Zpi[6];
-
-  if(nb == 4){
-    double xx =  Xp[3];
-    double yy =  Yp[3];
-    double zz =  Zp[3];
-    Xp[3] = Xp[2]; 
-    Yp[3] = Yp[2]; 
-    Zp[3] = Zp[2];
-    Xp[2] = xx;
-    Yp[2] = yy;
-    Zp[2] = zz;
-  }
-
-  /*
-    for having a nice isosurface, we should have n . grad v > 0
-    n = normal to the polygon
-    v = unknown field we wanna draw
-   */
-
-  if(!View->Light){
-    norms = NULL; // we don't need to compute these
-    return;
-  }
-
-  double v1[3] = {Xp[2]-Xp[0],Yp[2]-Yp[0],Zp[2]-Zp[0]};
-  double v2[3] = {Xp[1]-Xp[0],Yp[1]-Yp[0],Zp[1]-Zp[0]};
-  double gr[3];
-  double n[3],xx;
-  prodve(v1,v2,n);
-  //norme(n);  not necessary since GL_NORMALIZE is enabled
-  gradSimplex(X,Y,Z,Val,gr);      
-  prosca(gr,n,&xx);
-  
-  if(xx > 0){
-    for(i=0;i<nb;i++){
-      Xpi[i] = Xp[i];
-      Ypi[i] = Yp[i];
-      Zpi[i] = Zp[i];
-    }
-    for(i=0;i<nb;i++){
-      Xp[i] = Xpi[nb-i-1];
-      Yp[i] = Ypi[nb-i-1];
-      Zp[i] = Zpi[nb-i-1];	      
-    }
-  }
-  else{
-    n[0] = -n[0];
-    n[1] = -n[1];
-    n[2] = -n[2];
-  }
-  
-  if(View->SmoothNormals){
-    if(preproNormals){
-      for(i=0;i<nb;i++){
-	View->add_normal(Xp[i],Yp[i],Zp[i],n[0],n[1],n[2]);
-      }
-      return;
-    }
-    else{
-      for(i=0;i<nb;i++){
-	if(!View->get_normal(Xp[i],Yp[i],Zp[i],norms[3*i],norms[3*i+1],norms[3*i+2])){
-	  //Msg(WARNING, "Oups, did not find smoothed normal");
-	  norms[3*i] = n[0];
-	  norms[3*i+1] = n[1];
-	  norms[3*i+2] = n[2];
-	}	      
-      }	  
-    }
-  }
-  else{
-    for(i=0;i<nb;i++){
-      norms[3*i] = n[0];
-      norms[3*i+1] = n[1];
-      norms[3*i+2] = n[2];
-    }
-  }
-
-}
-
-
-void IsoSimplex( Post_View *View, 
-		 int preproNormals,
-		 double *X, double *Y, double *Z, double *Val, 
-		 double V, double Vmin, double Vmax, 
-		 double Raise[3][5]){
-  int    nb;
-  double Xp[6],Yp[6],Zp[6],PVals[6];
-  double norms[12];
-
-  if(V != Vmax){
-    nb = 0;
-    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] > V && Val[3] <= V) || (Val[3] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] > V && Val[3] <= V) || (Val[3] > V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[2] > V && Val[3] <= V) || (Val[3] > V && Val[2] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-  }
-  else{
-    nb=0;
-    if((Val[0] < V && Val[1] <= V) || (Val[1] < V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] < V && Val[2] <= V) || (Val[2] < V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] < V && Val[3] <= V) || (Val[3] < V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] < V && Val[2] <= V) || (Val[2] < V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] < V && Val[3] <= V) || (Val[3] < V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[2] < V && Val[3] <= V) || (Val[3] < V && Val[2] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-  }
-
-  if(nb < 3)return;
-
-  EnhanceSimplexPolygon (View, nb, Xp, Yp, Zp, PVals, X, Y, Z, Val, norms, preproNormals);
-
-  if(preproNormals)return;
-
-  if(nb == 3) 
-    Draw_Triangle(Xp,Yp,Zp,norms,Raise,View->Light);
-  else if(nb == 4)
-    Draw_Quadrangle(Xp,Yp,Zp,norms,Raise,View->Light);  
-}
-
diff --git a/Graphics/IsoSimplex.h b/Graphics/IsoSimplex.h
deleted file mode 100644
index 31eaab57bb85899a519faf4c8b49817c96be3001..0000000000000000000000000000000000000000
--- a/Graphics/IsoSimplex.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _ISOSIMPLEX_H_
-#define _ISOSIMPLEX_H_
-
-struct Post_View;
-void IsoSimplex (Post_View *View, 
-		 int preproNormals,
-		 double *X, double *Y, double *Z, double *Val,
-                 double V, double Vmin, double Vmax,
-                 double Raise[3][5]);
-#endif
diff --git a/Graphics/Makefile b/Graphics/Makefile
deleted file mode 100644
index c32e625f13bbd0aa3a52f4ed4a0adcd448c05d43..0000000000000000000000000000000000000000
--- a/Graphics/Makefile
+++ /dev/null
@@ -1,158 +0,0 @@
-# $Id: Makefile,v 1.29 2001-08-11 23:32:21 geuzaine Exp $
-#
-# Makefile for "libGraphics.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RANLIB   = ranlib
-RM       = rm
-LIB      = ../lib/libGraphics.a
-INCLUDE  = -I../Common -I../DataStr -I../Geo -I../Graphics\
-           -I../Motif -I../Fltk -I../Mesh -I../Parser -I../jpeg
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = -D_XMOTIF
-
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = -I/usr/X11R6/LessTif/Motif1.2/include
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
-           $(GL_INCLUDE) $(GUI_INCLUDE)
-
-SRC = Draw.cpp \
-      Mesh.cpp \
-      Geom.cpp \
-      Post.cpp \
-      PostSimplex.cpp \
-      IsoSimplex.cpp \
-      Entity.cpp \
-      Scale.cpp \
-      Axes.cpp \
-      CreateFile.cpp \
-      XDump.cpp\
-      gl2ps.cpp\
-      gl2gif.cpp\
-      gl2jpeg.cpp\
-      gl2ppm.cpp\
-      gl2yuv.cpp
-
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Context.h ../Geo/MinMax.h
-Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Context.h ../Geo/MinMax.h gl2ps.h \
- ../Geo/Verif.h ../Common/Numeric.h ../Geo/Visibility.h
-Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Mesh/Utils.h Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Context.h ../Geo/Verif.h \
- ../Mesh/Interpolation.h ../Geo/Visibility.h ../Mesh/STL.h gl2ps.h
-Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h gl2ps.h
-PostSimplex.o: PostSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Iso.h IsoSimplex.h \
- ../Common/Context.h ../Common/Numeric.h
-IsoSimplex.o: IsoSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Iso.h ../Common/Context.h \
- ../Common/Numeric.h
-Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h
-Scale.o: Scale.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../Motif/XContext.h
-Axes.o: Axes.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h gl2ps.h
-CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Parser/OpenFile.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../Motif/Widgets.h ../Motif/XContext.h XDump.h gl2ps.h gl2gif.h \
- gl2jpeg.h gl2ppm.h gl2yuv.h
-XDump.o: XDump.cpp
-gl2ps.o: gl2ps.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h gl2ps.h
-gl2gif.o: gl2gif.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h gl2gif.h
-gl2jpeg.o: gl2jpeg.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../jpeg/jpeglib.h ../jpeg/jconfig.h ../jpeg/jmorecfg.h \
- ../jpeg/jerror.h
-gl2ppm.o: gl2ppm.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
-gl2yuv.o: gl2yuv.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
deleted file mode 100644
index 27590b76e48d491a77488bb65a09acd7e7ef6ecd..0000000000000000000000000000000000000000
--- a/Graphics/Mesh.cpp
+++ /dev/null
@@ -1,816 +0,0 @@
-// $Id: Mesh.cpp,v 1.40 2001-08-13 12:10:30 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "MinMax.h"
-#include "gl2ps.h"
-#include "Verif.h"
-#include "Numeric.h"
-#include "Visibility.h"
-
-extern Mesh      *THEM;
-extern Context_T  CTX;
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ M e s h                                                       */
-/* ------------------------------------------------------------------------ */
-
-
-void draw_polygon_2d (double r, double g, double b, int n, 
-                      double *x, double *y, double *z){
-  int i ;
-
-  CalculateMinMax(THEM->Points,NULL);
-  InitOpengl();
-  InitPosition();
-
-  glDisable(GL_DEPTH_TEST);
-  glDrawBuffer(GL_FRONT);
-  glColor3f(r,g,b);
-  glBegin(GL_LINE_STRIP);
-  for(i=0 ; i<n ; i++)
-    if(z)glVertex3d(x[i], y[i],z[i]);
-    else  glVertex2d(x[i], y[i]);
-  glEnd();
-  glFlush();
-  glDrawBuffer(GL_BACK);
-  glEnable(GL_DEPTH_TEST);
-
-}
-
-static int iColor;
-
-void ColorSwitch(int i){
-  glColor4ubv((GLubyte*)&CTX.color.mesh.carousel[i%10]);
-}
-
-static int DrawVertexSupp ;
-
-void Draw_Mesh (Mesh *M) {
-  int i;
-
-  if(!CTX.moving_light) InitRenderModel();
-
-  if(CTX.mesh.shade)
-    InitShading();
-  else
-    InitNoShading();
-  InitPosition();
-
-  if(CTX.moving_light) InitRenderModel();
-
-  for(i = 0 ; i < 6 ; i++)
-    if(CTX.clip[i])
-      glClipPlane((GLenum)(GL_CLIP_PLANE0 + i), CTX.clip_plane[i]);
-
-  glPointSize(2); gl2psPointSize(2);
-  glLineWidth(1); gl2psLineWidth(1*CTX.print.mesh_line_width);
-  iColor = 0;
-
-  if(CTX.mesh.hidden) glEnable(GL_POLYGON_OFFSET_FILL);
-
-  // draw the bbox of the mesh in fast redraw mode if there is no geometry
-  if(!CTX.mesh.draw && Tree_Nbr(M->Vertices) && !Tree_Nbr(M->Points)){
-    glColor4ubv((GLubyte*)&CTX.color.fg);
-    glBegin(GL_LINE_LOOP);
-    glVertex3d(CTX.min[0], CTX.min[1], CTX.min[2]);
-    glVertex3d(CTX.max[0], CTX.min[1], CTX.min[2]);
-    glVertex3d(CTX.max[0], CTX.max[1], CTX.min[2]);
-    glVertex3d(CTX.min[0], CTX.max[1], CTX.min[2]);
-    glEnd();    
-    glBegin(GL_LINE_LOOP);
-    glVertex3d(CTX.min[0], CTX.min[1], CTX.max[2]);
-    glVertex3d(CTX.max[0], CTX.min[1], CTX.max[2]);
-    glVertex3d(CTX.max[0], CTX.max[1], CTX.max[2]);
-    glVertex3d(CTX.min[0], CTX.max[1], CTX.max[2]);
-    glEnd();    
-    glBegin(GL_LINES);
-    glVertex3d(CTX.min[0], CTX.min[1], CTX.min[2]);
-    glVertex3d(CTX.min[0], CTX.min[1], CTX.max[2]);
-    glVertex3d(CTX.max[0], CTX.min[1], CTX.min[2]);
-    glVertex3d(CTX.max[0], CTX.min[1], CTX.max[2]);
-    glVertex3d(CTX.max[0], CTX.max[1], CTX.min[2]);
-    glVertex3d(CTX.max[0], CTX.max[1], CTX.max[2]);
-    glVertex3d(CTX.min[0], CTX.max[1], CTX.min[2]);
-    glVertex3d(CTX.min[0], CTX.max[1], CTX.max[2]);
-    glEnd();    
-  }
-
-  switch(M->status) {
-  case 3 :
-    if(CTX.mesh.draw && 
-       (CTX.mesh.volumes || CTX.mesh.volumes_num) &&
-       CTX.render_mode != GMSH_SELECT)
-      Tree_Action(M->Volumes, Draw_Mesh_Volumes);
-    /* fall-through! */
-  case 2 :
-    if(CTX.mesh.draw && 
-       (CTX.mesh.surfaces || CTX.mesh.surfaces_num) &&
-       CTX.render_mode != GMSH_SELECT){
-      Tree_Action(M->Surfaces, Draw_Mesh_Surfaces);
-      if(CTX.mesh.oldxtrude)//old extrusion algo
-	Tree_Action(M->Surfaces, Draw_Mesh_Extruded_Surfaces);
-    }
-    /* fall-through! */
-  case 1 :  
-    if(CTX.mesh.draw && 
-       (CTX.mesh.lines || CTX.mesh.lines_num) &&
-       CTX.render_mode != GMSH_SELECT){
-      Tree_Action(M->Curves, Draw_Mesh_Curves);
-      DrawVertexSupp = 1 ; 
-      Tree_Action(M->VertexEdges, Draw_Mesh_Points);
-    }
-    /* fall-through! */
-  case 0 :  
-    if(CTX.mesh.draw && 
-       (CTX.mesh.points || CTX.mesh.points_num) &&
-       CTX.render_mode != GMSH_SELECT){
-      DrawVertexSupp = 0 ; 
-      Tree_Action(M->Vertices, Draw_Mesh_Points);
-    }
-    glPointSize(4); gl2psPointSize(4);
-    if(!CTX.geom.shade) InitNoShading();
-    Draw_Geom(M);
-    break;
-  default :
-    break;
-  }
-
-  if(CTX.mesh.hidden) glDisable(GL_POLYGON_OFFSET_FILL);
-
-  if(CTX.render_mode != GMSH_SELECT){
-    if(CTX.axes) Draw_Axes(CTX.lc_middle/4.);
-    Draw_Post(); // les init de shading se font par view
-  }
-}
-
-void Draw_Mesh_Volumes(void *a, void *b){
-  Volume **v;
-  v = (Volume**)a;
-  iColor++;
-  Tree_Action((*v)->Simplexes, Draw_Simplex_Volume);
-  Tree_Action((*v)->Hexahedra, Draw_Hexahedron_Volume);
-  Tree_Action((*v)->Prisms, Draw_Prism_Volume);
-}
-
-void Draw_Mesh_Surfaces (void *a,void *b){
-  Surface **s;
-  s = (Surface**)a;
-  iColor++;
-  Tree_Action((*s)->Simplexes, Draw_Simplex_Surfaces);
-}
-
-void Draw_Mesh_Extruded_Surfaces(void *a, void *b){
-  Volume **v;
-  v = (Volume**)a;
-  Tree_Action((*v)->Simp_Surf, Draw_Simplex_Surfaces);
-}
-
-void Draw_Mesh_Curves (void *a, void *b){
-  Curve **c;
-  c = (Curve**)a;
-  if((*c)->Num < 0)return;
-  iColor++;
-  Tree_Action((*c)->Simplexes,Draw_Simplex_Curves);
-}
-
-void Draw_Mesh_Points (void *a, void *b){
-  Vertex **v;
-  char Num[100];
-
-  v = (Vertex**)a;
-
-  if(CTX.mesh.use_cut_plane){
-    if(CTX.mesh.evalCutPlane((*v)->Pos.X, (*v)->Pos.Y, (*v)->Pos.Z) < 0)return;
-  }
-  
-  if(CTX.render_mode == GMSH_SELECT){
-    glLoadName(0);
-    glPushName((*v)->Num);
-  }
-
-  glPointSize(3); gl2psPointSize(3);
-  if(DrawVertexSupp) 
-    glColor4ubv((GLubyte*)&CTX.color.mesh.vertex_supp);
-  else
-    glColor4ubv((GLubyte*)&CTX.color.mesh.vertex);
-
-  if(CTX.mesh.points){
-    glBegin(GL_POINTS);
-    glVertex3d((*v)->Pos.X, (*v)->Pos.Y, (*v)->Pos.Z);
-    glEnd();
-  }
-  
-  if(CTX.mesh.points_num){
-    sprintf(Num,"%d",(*v)->Num);
-    glRasterPos3d((*v)->Pos.X+3*CTX.pixel_equiv_x/CTX.s[0],
-                  (*v)->Pos.Y+3*CTX.pixel_equiv_x/CTX.s[1], 
-                  (*v)->Pos.Z+3*CTX.pixel_equiv_x/CTX.s[2]);
-    Draw_String(Num);
-  }
-  
-  if(CTX.render_mode == GMSH_SELECT){
-    glPopName();
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ S i m p l e x                                                 */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Simplex_Volume (void *a, void *b){
-  Simplex **s;
-  char Num[100];
-  int fulldraw = 0;
-  double tmp, X[4],Y[4],Z[4];
-
-  s = (Simplex**)a;
-
-  if(!(*s)->V[3]) return;
-
-  if(!EntiteEstElleVisible((*s)->iEnt)) return;
-
-  if(CTX.mesh.gamma_sup){
-    tmp = (*s)->GammaShapeMeasure();
-    if(tmp < CTX.mesh.gamma_inf || tmp > CTX.mesh.gamma_sup) return;
-    fulldraw = 1;
-  }
-
-  if(CTX.mesh.radius_sup){
-    if((*s)->Radius < CTX.mesh.radius_inf || (*s)->Radius > CTX.mesh.radius_sup) return;
-    fulldraw = 1;
-  }
-
-
-  double Xc = .25 * ((*s)->V[0]->Pos.X + (*s)->V[1]->Pos.X + 
-                     (*s)->V[2]->Pos.X + (*s)->V[3]->Pos.X);
-  double Yc = .25 * ((*s)->V[0]->Pos.Y + (*s)->V[1]->Pos.Y + 
-                     (*s)->V[2]->Pos.Y + (*s)->V[3]->Pos.Y);
-  double Zc = .25 * ((*s)->V[0]->Pos.Z + (*s)->V[1]->Pos.Z + 
-                     (*s)->V[2]->Pos.Z + (*s)->V[3]->Pos.Z);
-
-  if(CTX.mesh.use_cut_plane){
-    if(CTX.mesh.evalCutPlane(Xc,Yc,Zc) < 0) return;
-    fulldraw = 1;
-  }
-
-  if(CTX.mesh.color_carousel && !fulldraw)
-    ColorSwitch((*s)->iEnt);
-  else if(fulldraw)
-    glColor4ubv((GLubyte*)&CTX.color.mesh.line);
-  else
-    glColor4ubv((GLubyte*)&CTX.color.mesh.tetrahedron);
-
-  for (int i=0 ; i<4 ; i++) {
-     X[i] = Xc + CTX.mesh.explode * ((*s)->V[i]->Pos.X - Xc);
-     Y[i] = Yc + CTX.mesh.explode * ((*s)->V[i]->Pos.Y - Yc);
-     Z[i] = Zc + CTX.mesh.explode * ((*s)->V[i]->Pos.Z - Zc);
-  }
-
-  if(CTX.mesh.volumes && !(fulldraw && CTX.mesh.shade)){
-    glBegin(GL_LINES);
-    glVertex3d(X[1], Y[1], Z[1]);
-    glVertex3d(X[0], Y[0], Z[0]);
-    
-    glVertex3d(X[2], Y[2], Z[2]);
-    glVertex3d(X[0], Y[0], Z[0]);
-    
-    glVertex3d(X[3], Y[3], Z[3]);
-    glVertex3d(X[0], Y[0], Z[0]);
-    
-    glVertex3d(X[3], Y[3], Z[3]);
-    glVertex3d(X[1], Y[1], Z[1]);
-    
-    glVertex3d(X[3], Y[3], Z[3]);
-    glVertex3d(X[2], Y[2], Z[2]);
-    
-    glVertex3d(X[1], Y[1], Z[1]);
-    glVertex3d(X[2], Y[2], Z[2]);
-    
-    glVertex3d(X[2], Y[2], Z[2]);
-    glVertex3d(X[3], Y[3], Z[3]);
-    glEnd();
-  }
-
-  if(CTX.mesh.volumes_num){
-    sprintf(Num,"%d",(*s)->Num);
-    glRasterPos3d(Xc,Yc,Zc);
-    Draw_String(Num);
-  }
-
-
-  if (CTX.mesh.dual){
-    glColor4ubv((GLubyte*)&CTX.color.fg);
-    glEnable(GL_LINE_STIPPLE);
-    glLineStipple(1,0x0F0F);
-    gl2psEnable(GL2PS_LINE_STIPPLE);
-    glBegin(GL_LINES);
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d((X[0]+X[1]+X[2])/3., (Y[0]+Y[1]+Y[2])/3., (Z[0]+Z[1]+Z[2])/3.);
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d((X[0]+X[1]+X[3])/3., (Y[0]+Y[1]+Y[3])/3., (Z[0]+Z[1]+Z[3])/3.);
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d((X[0]+X[2]+X[3])/3., (Y[0]+Y[2]+Y[3])/3., (Z[0]+Z[2]+Z[3])/3.);
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d((X[1]+X[2]+X[3])/3., (Y[1]+Y[2]+Y[3])/3., (Z[1]+Z[2]+Z[3])/3.);
-    glEnd();
-    glDisable(GL_LINE_STIPPLE);
-    gl2psDisable(GL2PS_LINE_STIPPLE);
-  }
-
-  if(!fulldraw) return ;
-
-  double n[4], x1x0, y1y0, z1z0, x2x0, y2y0, z2z0;
-
-  if(CTX.mesh.color_carousel)
-    ColorSwitch((*s)->iEnt);
-  else
-    glColor4ubv((GLubyte*)&CTX.color.mesh.tetrahedron);    
-
-  if (CTX.mesh.hidden) {
-
-    if(CTX.mesh.shade){
-      x1x0 = X[2]-X[0]; y1y0 = Y[2]-Y[0];
-      z1z0 = Z[2]-Z[0]; x2x0 = X[1]-X[0];
-      y2y0 = Y[1]-Y[0]; z2z0 = Z[1]-Z[0];
-      n[0]  = y1y0 * z2z0 - z1z0 * y2y0 ;
-      n[1]  = z1z0 * x2x0 - x1x0 * z2z0 ;
-      n[2]  = x1x0 * y2y0 - y1y0 * x2x0;
-      glNormal3dv(n);
-    }
-
-    glBegin(GL_TRIANGLES);
-    glVertex3d(X[0], Y[0], Z[0]);
-    glVertex3d(X[2], Y[2], Z[2]);
-    glVertex3d(X[1], Y[1], Z[1]);
-    glEnd();
-
-    if(CTX.mesh.shade){
-      x1x0 = X[1]-X[0]; y1y0 = Y[1]-Y[0];
-      z1z0 = Z[1]-Z[0]; x2x0 = X[3]-X[0];
-      y2y0 = Y[3]-Y[0]; z2z0 = Z[3]-Z[0];
-      n[0]  = y1y0 * z2z0 - z1z0 * y2y0 ;
-      n[1]  = z1z0 * x2x0 - x1x0 * z2z0 ;
-      n[2]  = x1x0 * y2y0 - y1y0 * x2x0;
-      glNormal3dv(n);
-    }
-
-    glBegin(GL_TRIANGLES);
-    glVertex3d(X[0], Y[0], Z[0]);
-    glVertex3d(X[1], Y[1], Z[1]);
-    glVertex3d(X[3], Y[3], Z[3]);
-    glEnd();
-
-    if(CTX.mesh.shade){
-      x1x0 = X[3]-X[0]; y1y0 = Y[3]-Y[0];
-      z1z0 = Z[3]-Z[0]; x2x0 = X[2]-X[0];
-      y2y0 = Y[2]-Y[0]; z2z0 = Z[2]-Z[0];
-      n[0]  = y1y0 * z2z0 - z1z0 * y2y0 ;
-      n[1]  = z1z0 * x2x0 - x1x0 * z2z0 ;
-      n[2]  = x1x0 * y2y0 - y1y0 * x2x0;
-      glNormal3dv(n);
-    }
-
-    glBegin(GL_TRIANGLES);
-    glVertex3d(X[0], Y[0], Z[0]);
-    glVertex3d(X[3], Y[3], Z[3]);
-    glVertex3d(X[2], Y[2], Z[2]);
-    glEnd();
-
-    if(CTX.mesh.shade){
-      x1x0 = X[3]-X[1]; y1y0 = Y[3]-Y[1];
-      z1z0 = Z[3]-Z[1]; x2x0 = X[2]-X[1];
-      y2y0 = Y[2]-Y[1]; z2z0 = Z[2]-Z[1];
-      n[0]  = y1y0 * z2z0 - z1z0 * y2y0 ;
-      n[1]  = z1z0 * x2x0 - x1x0 * z2z0 ;
-      n[2]  = x1x0 * y2y0 - y1y0 * x2x0;
-      glNormal3dv(n);
-    }
-
-    glBegin(GL_TRIANGLES);
-    glVertex3d(X[3], Y[3], Z[3]);
-    glVertex3d(X[1], Y[1], Z[1]);
-    glVertex3d(X[2], Y[2], Z[2]);
-    glEnd();
-
-  }
-
-}
-
-
-void Draw_Simplex_Surfaces (void *a, void *b){
-
-  Simplex **s;
-  double X[4],Y[4],Z[4],Xc,Yc,Zc,pX[8],pY[8],pZ[8];
-  double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, n[3], m[3], mm;
-  int i,j,K,L,k;
-  char Num[256];
-  
-  s = (Simplex**)a;
-
-  if(!(*s)->V[2]) return ;
-
-  if(!EntiteEstElleVisible ((*s)->iEnt)) return;
-
-  if((*s)->VSUP) L=1;
-  else L=0;
-
-  if ((*s)->V[3]) {
-    K = 4;
-    Xc = .25 * ((*s)->V[0]->Pos.X + (*s)->V[1]->Pos.X + 
-                (*s)->V[2]->Pos.X + (*s)->V[3]->Pos.X);
-    Yc = .25 * ((*s)->V[0]->Pos.Y + (*s)->V[1]->Pos.Y + 
-                (*s)->V[2]->Pos.Y + (*s)->V[3]->Pos.Y);
-    Zc = .25 * ((*s)->V[0]->Pos.Z + (*s)->V[1]->Pos.Z + 
-                (*s)->V[2]->Pos.Z + (*s)->V[3]->Pos.Z);
-  }
-  else {
-    K = 3;
-    Xc = ((*s)->V[0]->Pos.X + (*s)->V[1]->Pos.X + (*s)->V[2]->Pos.X) / 3. ;
-    Yc = ((*s)->V[0]->Pos.Y + (*s)->V[1]->Pos.Y + (*s)->V[2]->Pos.Y) / 3. ;
-    Zc = ((*s)->V[0]->Pos.Z + (*s)->V[1]->Pos.Z + (*s)->V[2]->Pos.Z) / 3. ;
-  }
-
-  if(CTX.mesh.use_cut_plane){
-    if(CTX.mesh.evalCutPlane(Xc,Yc,Zc) < 0)return;
-  }
-
-  k=0;
-  for (i=0 ; i<K ; i++) {
-    pX[k] = Xc + CTX.mesh.explode * ((*s)->V[i]->Pos.X - Xc);
-    pY[k] = Yc + CTX.mesh.explode * ((*s)->V[i]->Pos.Y - Yc);
-    pZ[k] = Zc + CTX.mesh.explode * ((*s)->V[i]->Pos.Z - Zc);
-    k+=(L+1);
-  }
-  
-  if(L){
-    k=1;
-    for (i=0 ; i<K ; i++) {
-      pX[k] = Xc + CTX.mesh.explode * ((*s)->VSUP[i]->Pos.X - Xc);
-      pY[k] = Yc + CTX.mesh.explode * ((*s)->VSUP[i]->Pos.Y - Yc);
-      pZ[k] = Zc + CTX.mesh.explode * ((*s)->VSUP[i]->Pos.Z - Zc);      
-      k+=(L+1);
-    }
-  }
-
-  if (CTX.mesh.dual){
-    glColor4ubv((GLubyte*)&CTX.color.fg);
-    glEnable(GL_LINE_STIPPLE);
-    glLineStipple(1,0x0F0F);
-    gl2psEnable(GL2PS_LINE_STIPPLE);
-    glBegin(GL_LINES);
-    for (i=0 ; i<K ; i++) {
-      (!i) ? j = K-1 : j = i-1 ;
-      glVertex3d(Xc,   Yc,    Zc);  
-      glVertex3d((pX[i]+pX[j])/2., (pY[i]+pY[j])/2., (pZ[i]+pZ[j])/2.);
-    }
-    glEnd();
-    glDisable(GL_LINE_STIPPLE);
-    gl2psDisable(GL2PS_LINE_STIPPLE);
-  }
-
-  if (CTX.mesh.normals || CTX.mesh.shade){
-    for (i=0 ; i<K ; i++) {
-     X[i] = Xc + CTX.mesh.explode * ((*s)->V[i]->Pos.X - Xc);
-     Y[i] = Yc + CTX.mesh.explode * ((*s)->V[i]->Pos.Y - Yc);
-     Z[i] = Zc + CTX.mesh.explode * ((*s)->V[i]->Pos.Z - Zc);
-    }
-    x1x0 = X[1]-X[0]; y1y0 = Y[1]-Y[0];
-    z1z0 = Z[1]-Z[0]; x2x0 = X[2]-X[0];
-    y2y0 = Y[2]-Y[0]; z2z0 = Z[2]-Z[0];
-    n[0] = m[0] = y1y0 * z2z0 - z1z0 * y2y0 ;
-    n[1] = m[1] = z1z0 * x2x0 - x1x0 * z2z0 ;
-    n[2] = m[2] = x1x0 * y2y0 - y1y0 * x2x0;
-  }
-
-  if (CTX.mesh.hidden && CTX.mesh.shade){
-    glNormal3dv(n);
-  }
-  
-  if(CTX.mesh.color_carousel)
-    ColorSwitch(iColor);
-  else{
-    if(K==3)
-      glColor4ubv((GLubyte*)&CTX.color.mesh.triangle);
-    else
-      glColor4ubv((GLubyte*)&CTX.color.mesh.quadrangle);
-  }
-
-  if(CTX.mesh.surfaces_num){
-    sprintf(Num,"%d",(*s)->Num);
-    glRasterPos3d(Xc,Yc,Zc);
-    Draw_String(Num);
-  }
-
-
-  if(CTX.mesh.surfaces){
-
-    if (CTX.mesh.hidden) { 
-      glBegin(GL_POLYGON);
-      for(i=0 ; i<K*(1+L) ; i++) glVertex3d(pX[i], pY[i], pZ[i]);
-      glEnd();
-    }
-    
-    if(CTX.mesh.lines){
-      if(CTX.mesh.color_carousel && ! (CTX.mesh.hidden || CTX.mesh.shade))
-	ColorSwitch(iColor);
-      else
-	glColor4ubv((GLubyte*)&CTX.color.mesh.line);
-      glBegin(GL_LINE_LOOP);
-      for(i=0 ; i<K*(1+L) ; i++){
-        glVertex3d(pX[i],pY[i],pZ[i]);
-      }
-      glEnd();    
-    }
-
-  }
-  
-  if(CTX.mesh.normals) {
-    norme(m);
-    glColor4ubv((GLubyte*)&CTX.color.mesh.normals);
-    m[0] *= CTX.mesh.normals * CTX.pixel_equiv_x/CTX.s[0] ;
-    m[1] *= CTX.mesh.normals * CTX.pixel_equiv_x/CTX.s[1] ;
-    m[2] *= CTX.mesh.normals * CTX.pixel_equiv_x/CTX.s[2] ;
-    mm=sqrt(m[0]*m[0]+m[1]*m[1]+m[2]*m[2]);
-    Draw_Vector(DRAW_POST_ARROW, 0, Xc,Yc,Zc, mm, m[0],m[1],m[2],NULL);
-  }
-  
-
-}
-
-
-void Draw_Simplex_Curves(void *a,void *b){
-  Simplex *s;
-  double Xc = 0.0 , Yc = 0.0, Zc = 0.0 ;
-  char Num[100];
-
-  s = *(Simplex**)a;
-
-  Xc = 0.5 * (s->V[0]->Pos.X + s->V[1]->Pos.X);
-  Yc = 0.5 * (s->V[0]->Pos.Y + s->V[1]->Pos.Y);
-  Zc = 0.5 * (s->V[0]->Pos.Z + s->V[1]->Pos.Z);
-
-  /*
-  double X[2],Y[2],Z[2]
-  for (int i=0 ; i<2 ; i++) {
-    X[i] = Xc + CTX.mesh.explode * (s->V[i]->Pos.X - Xc);
-    Y[i] = Yc + CTX.mesh.explode * (s->V[i]->Pos.Y - Yc);
-    Z[i] = Zc + CTX.mesh.explode * (s->V[i]->Pos.Z - Zc);
-  }
-  
-  if(CTX.mesh.lines){
-    glColor4ubv((GLubyte*)&CTX.color.mesh.line);
-    glBegin(GL_LINES);
-    glVertex3d(X[0], Y[0], Z[0]);
-    glVertex3d(X[1], Y[1], Z[1]);
-    glEnd();    
-  }
-  */
-
-  if(CTX.mesh.points){
-    glColor4ubv((GLubyte*)&CTX.color.mesh.vertex);
-    glBegin(GL_POINTS);
-    glVertex3d(s->V[1]->Pos.X, s->V[1]->Pos.Y, s->V[1]->Pos.Z);
-    glEnd();    
-  
-    if(s->VSUP){
-      glColor4ubv((GLubyte*)&CTX.color.mesh.vertex_supp);
-      glBegin(GL_POINTS);
-      glVertex3d(s->VSUP[0]->Pos.X, s->VSUP[0]->Pos.Y, s->VSUP[0]->Pos.Z);
-      glEnd();    
-    }
-  }
-
-  if(CTX.mesh.lines_num){
-    glColor4ubv((GLubyte*)&CTX.color.mesh.line);
-    sprintf(Num,"%d",s->Num);
-    glRasterPos3d(Xc + 3*CTX.pixel_equiv_x/CTX.s[0],
-                  Yc + 3*CTX.pixel_equiv_x/CTX.s[1], 
-                  Zc + 3*CTX.pixel_equiv_x/CTX.s[2]);
-    Draw_String(Num);
-  }
-
-
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ H e x a e d r o n                                             */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Hexahedron_Volume (void *a, void *b){
-  Hexahedron **h;
-  int i ;
-  double Xc = 0.0 , Yc = 0.0, Zc = 0.0 , X[8],Y[8],Z[8];
-  char Num[100];
-
-  h = (Hexahedron**)a;
-
-  if(!EntiteEstElleVisible((*h)->iEnt)) return;
-
-  for(i=0 ; i<8 ; i++){
-    Xc += (*h)->V[i]->Pos.X;
-    Yc += (*h)->V[i]->Pos.Y;
-    Zc += (*h)->V[i]->Pos.Z;
-  }
-  Xc *= .125 ; 
-  Zc *= .125 ; 
-  Yc *= .125 ; 
-
-  if(CTX.mesh.use_cut_plane){
-    if(CTX.mesh.evalCutPlane(Xc,Yc,Zc) < 0)return;
-  }
-
-  if(CTX.mesh.color_carousel)
-    ColorSwitch((*h)->iEnt);  
-  else
-    glColor4ubv((GLubyte*)&CTX.color.mesh.hexahedron);
-
-  for (i=0 ; i<8 ; i++) {
-    X[i] = Xc + CTX.mesh.explode * ((*h)->V[i]->Pos.X - Xc);
-    Y[i] = Yc + CTX.mesh.explode * ((*h)->V[i]->Pos.Y - Yc);
-    Z[i] = Zc + CTX.mesh.explode * ((*h)->V[i]->Pos.Z - Zc);
-  }
-
-  glBegin(GL_LINE_LOOP);
-  glVertex3d(X[0], Y[0], Z[0]);
-  glVertex3d(X[1], Y[1], Z[1]);
-  glVertex3d(X[2], Y[2], Z[2]);
-  glVertex3d(X[3], Y[3], Z[3]);
-  glEnd();    
-
-  glBegin(GL_LINE_LOOP);
-  glVertex3d(X[4], Y[4], Z[4]);
-  glVertex3d(X[5], Y[5], Z[5]);
-  glVertex3d(X[6], Y[6], Z[6]);
-  glVertex3d(X[7], Y[7], Z[7]);
-  glEnd();    
-
-  glBegin(GL_LINES);
-  glVertex3d(X[0], Y[0], Z[0]);
-  glVertex3d(X[4], Y[4], Z[4]);
-  glVertex3d(X[1], Y[1], Z[1]);
-  glVertex3d(X[5], Y[5], Z[5]);
-  glVertex3d(X[2], Y[2], Z[2]);
-  glVertex3d(X[6], Y[6], Z[6]);
-  glVertex3d(X[3], Y[3], Z[3]);
-  glVertex3d(X[7], Y[7], Z[7]);
-  glEnd();    
-
-  if(CTX.mesh.volumes_num){
-    sprintf(Num,"%d",(*h)->Num);
-    glRasterPos3d(Xc,Yc,Zc);
-    Draw_String(Num);
-  }
-
-  if (CTX.mesh.dual){
-
-    glColor4ubv((GLubyte*)&CTX.color.fg);
-    glEnable(GL_LINE_STIPPLE);
-    glLineStipple(1,0x0F0F);
-    gl2psEnable(GL2PS_LINE_STIPPLE);
-    glBegin(GL_LINES);
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*h)->V[0]->Pos.X+(*h)->V[1]->Pos.X+(*h)->V[5]->Pos.X+(*h)->V[4]->Pos.X)/4.,
-        ((*h)->V[0]->Pos.Y+(*h)->V[1]->Pos.Y+(*h)->V[5]->Pos.Y+(*h)->V[4]->Pos.Y)/4.,
-        ((*h)->V[0]->Pos.Z+(*h)->V[1]->Pos.Z+(*h)->V[5]->Pos.Z+(*h)->V[4]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*h)->V[0]->Pos.X+(*h)->V[3]->Pos.X+(*h)->V[2]->Pos.X+(*h)->V[1]->Pos.X)/4.,
-        ((*h)->V[0]->Pos.Y+(*h)->V[3]->Pos.Y+(*h)->V[2]->Pos.Y+(*h)->V[1]->Pos.Y)/4.,
-        ((*h)->V[0]->Pos.Z+(*h)->V[3]->Pos.Z+(*h)->V[2]->Pos.Z+(*h)->V[1]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*h)->V[0]->Pos.X+(*h)->V[4]->Pos.X+(*h)->V[7]->Pos.X+(*h)->V[3]->Pos.X)/4.,
-        ((*h)->V[0]->Pos.Y+(*h)->V[4]->Pos.Y+(*h)->V[7]->Pos.Y+(*h)->V[3]->Pos.Y)/4.,
-        ((*h)->V[0]->Pos.Z+(*h)->V[4]->Pos.Z+(*h)->V[7]->Pos.Z+(*h)->V[3]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*h)->V[1]->Pos.X+(*h)->V[2]->Pos.X+(*h)->V[6]->Pos.X+(*h)->V[5]->Pos.X)/4.,
-        ((*h)->V[1]->Pos.Y+(*h)->V[2]->Pos.Y+(*h)->V[6]->Pos.Y+(*h)->V[5]->Pos.Y)/4.,
-        ((*h)->V[1]->Pos.Z+(*h)->V[2]->Pos.Z+(*h)->V[6]->Pos.Z+(*h)->V[5]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*h)->V[2]->Pos.X+(*h)->V[3]->Pos.X+(*h)->V[7]->Pos.X+(*h)->V[6]->Pos.X)/4.,
-        ((*h)->V[2]->Pos.Y+(*h)->V[3]->Pos.Y+(*h)->V[7]->Pos.Y+(*h)->V[6]->Pos.Y)/4.,
-        ((*h)->V[2]->Pos.Z+(*h)->V[3]->Pos.Z+(*h)->V[7]->Pos.Z+(*h)->V[6]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*h)->V[4]->Pos.X+(*h)->V[5]->Pos.X+(*h)->V[6]->Pos.X+(*h)->V[7]->Pos.X)/4.,
-        ((*h)->V[4]->Pos.Y+(*h)->V[5]->Pos.Y+(*h)->V[6]->Pos.Y+(*h)->V[7]->Pos.Y)/4.,
-        ((*h)->V[4]->Pos.Z+(*h)->V[5]->Pos.Z+(*h)->V[6]->Pos.Z+(*h)->V[7]->Pos.Z)/4. );
-    glEnd();
-    glDisable(GL_LINE_STIPPLE);
-    gl2psDisable(GL2PS_LINE_STIPPLE);
-  }
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P r i s m                                                     */
-/* ------------------------------------------------------------------------ */
-
-void Draw_Prism_Volume (void *a, void *b){
-  Prism **p;
-  int i ;
-  double Xc = 0.0 , Yc = 0.0, Zc = 0.0, X[6],Y[6],Z[6] ;
-  char Num[100];
-
-  p = (Prism**)a;
-
-  if(!EntiteEstElleVisible((*p)->iEnt)) return;
-
-  for(i=0 ; i<6 ; i++){
-    Xc += (*p)->V[i]->Pos.X;
-    Yc += (*p)->V[i]->Pos.Y;
-    Zc += (*p)->V[i]->Pos.Z;
-  }
-  Xc /= 6. ; 
-  Zc /= 6. ; 
-  Yc /= 6. ; 
-
-  if(CTX.mesh.use_cut_plane){
-    if(CTX.mesh.evalCutPlane(Xc,Yc,Zc) < 0)return;
-  }
-
-  if(CTX.mesh.color_carousel)
-    ColorSwitch((*p)->iEnt);
-  else
-    glColor4ubv((GLubyte*)&CTX.color.mesh.prism);
-
-  for (i=0 ; i<6 ; i++) {
-    X[i] = Xc + CTX.mesh.explode * ((*p)->V[i]->Pos.X - Xc);
-    Y[i] = Yc + CTX.mesh.explode * ((*p)->V[i]->Pos.Y - Yc);
-    Z[i] = Zc + CTX.mesh.explode * ((*p)->V[i]->Pos.Z - Zc);
-  }
-  
-  glBegin(GL_LINE_LOOP);
-  glVertex3d(X[0], Y[0], Z[0]);
-  glVertex3d(X[1], Y[1], Z[1]);
-  glVertex3d(X[2], Y[2], Z[2]);
-  glEnd();    
-
-  glBegin(GL_LINE_LOOP);
-  glVertex3d(X[3], Y[3], Z[3]);
-  glVertex3d(X[4], Y[4], Z[4]);
-  glVertex3d(X[5], Y[5], Z[5]);
-  glEnd();    
-
-  glBegin(GL_LINES);
-  glVertex3d(X[0], Y[0], Z[0]);
-  glVertex3d(X[3], Y[3], Z[3]);
-  glVertex3d(X[1], Y[1], Z[1]);
-  glVertex3d(X[4], Y[4], Z[4]);
-  glVertex3d(X[2], Y[2], Z[2]);
-  glVertex3d(X[5], Y[5], Z[5]);
-  glEnd();    
-
-  if(CTX.mesh.volumes_num){
-    sprintf(Num,"%d",(*p)->Num);
-    glRasterPos3d(Xc,Yc,Zc);
-    Draw_String(Num);
-  }
-
-  if(CTX.mesh.dual){
-    glColor4ubv((GLubyte*)&CTX.color.fg);
-    glEnable(GL_LINE_STIPPLE);
-    glLineStipple(1,0x0F0F);
-    gl2psEnable(GL2PS_LINE_STIPPLE);
-    glBegin(GL_LINES);
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*p)->V[0]->Pos.X+(*p)->V[2]->Pos.X+(*p)->V[1]->Pos.X)/3.,
-	((*p)->V[0]->Pos.Y+(*p)->V[2]->Pos.Y+(*p)->V[1]->Pos.Y)/3.,
-	((*p)->V[0]->Pos.Z+(*p)->V[2]->Pos.Z+(*p)->V[1]->Pos.Z)/3. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*p)->V[3]->Pos.X+(*p)->V[4]->Pos.X+(*p)->V[5]->Pos.X)/3.,
-	((*p)->V[3]->Pos.Y+(*p)->V[4]->Pos.Y+(*p)->V[5]->Pos.Y)/3.,
-	((*p)->V[3]->Pos.Z+(*p)->V[4]->Pos.Z+(*p)->V[5]->Pos.Z)/3. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*p)->V[0]->Pos.X+(*p)->V[1]->Pos.X+(*p)->V[4]->Pos.X+(*p)->V[3]->Pos.X)/4.,
-	((*p)->V[0]->Pos.Y+(*p)->V[1]->Pos.Y+(*p)->V[4]->Pos.Y+(*p)->V[3]->Pos.Y)/4.,
-	((*p)->V[0]->Pos.Z+(*p)->V[1]->Pos.Z+(*p)->V[4]->Pos.Z+(*p)->V[3]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*p)->V[0]->Pos.X+(*p)->V[3]->Pos.X+(*p)->V[5]->Pos.X+(*p)->V[2]->Pos.X)/4.,
-	((*p)->V[0]->Pos.Y+(*p)->V[3]->Pos.Y+(*p)->V[5]->Pos.Y+(*p)->V[2]->Pos.Y)/4.,
-	((*p)->V[0]->Pos.Z+(*p)->V[3]->Pos.Z+(*p)->V[5]->Pos.Z+(*p)->V[2]->Pos.Z)/4. );
-    glVertex3d(Xc,   Yc,    Zc);  
-    glVertex3d
-      ( ((*p)->V[1]->Pos.X+(*p)->V[2]->Pos.X+(*p)->V[5]->Pos.X+(*p)->V[4]->Pos.X)/4.,
-	((*p)->V[1]->Pos.Y+(*p)->V[2]->Pos.Y+(*p)->V[5]->Pos.Y+(*p)->V[4]->Pos.Y)/4.,
-	((*p)->V[1]->Pos.Z+(*p)->V[2]->Pos.Z+(*p)->V[5]->Pos.Z+(*p)->V[4]->Pos.Z)/4. );
-    glEnd();
-    glDisable(GL_LINE_STIPPLE);
-    gl2psDisable(GL2PS_LINE_STIPPLE);
-  }
-
-}
-
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
deleted file mode 100644
index 07e5a154fd6eb7ebf428b23b0964e2cd615c63af..0000000000000000000000000000000000000000
--- a/Graphics/Post.cpp
+++ /dev/null
@@ -1,441 +0,0 @@
-// $Id: Post.cpp,v 1.23 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Views.h"
-#include "Context.h"
-#include "gl2ps.h"
-
-extern Context_T   CTX;
-
-static double      Raise[3][5];
-static double      RaiseFactor[3];
-
-/* ------------------------------------------------------------------------
-    Give Value from Index
-   ------------------------------------------------------------------------ */
-
-double GiveValueFromIndex_Lin(double ValMin, double ValMax, int NbIso, int Iso){
-  if(NbIso==1) return (ValMax+ValMin)/2.;
-  return ValMin + Iso*(ValMax-ValMin)/(NbIso-1.) ;
-}
-
-double GiveValueFromIndex_Log(double ValMin, double ValMax, int NbIso, int Iso){
-  if(NbIso==1) return (ValMax+ValMin)/2.;
-  if(ValMin <= 0.) return 0. ;
-  return pow(10.,log10(ValMin)+Iso*(log10(ValMax)-log10(ValMin))/(NbIso-1.)) ;
-}
-
-double GiveValueFromIndex_DoubleLog(double ValMin, double ValMax, int NbIso, int Iso){
-  if(NbIso==1) return (ValMax+ValMin)/2.;
-  if(ValMin <= 0.) return 0. ;
-
-  double Iso2 = Iso/2;
-  double NbIso2 = NbIso/2;
-
-  return pow(10.,log10(ValMin)+Iso2*(log10(ValMax)-log10(ValMin))/(NbIso2-1.)) ;
-
-}
-
-/* ------------------------------------------------------------------------
-    Give Index From Value
-   ------------------------------------------------------------------------ */
-
-int GiveIndexFromValue_Lin(double ValMin, double ValMax, int NbIso, double Val){
-  if(ValMin==ValMax) return NbIso/2 ;
-  return (int)((Val-ValMin)*(NbIso-1)/(ValMax-ValMin)) ;
-}
-
-int GiveIndexFromValue_Log(double ValMin, double ValMax, int NbIso, double Val){
-  if(ValMin==ValMax) return NbIso/2 ;  
-  if(ValMin <= 0.) return 0 ;
-  return (int)((log10(Val)-log10(ValMin))*(NbIso-1)/(log10(ValMax)-log10(ValMin))) ;
-}
-
-int GiveIndexFromValue_DoubleLog(double ValMin, double ValMax, int NbIso, double Val){
-  if(ValMin==ValMax) return NbIso/2 ;  
-  if(ValMin <= 0.) return 0 ;
-  return (int)((log10(Val)-log10(ValMin))*(NbIso-1)/(log10(ValMax)-log10(ValMin))) ;
-}
-
-
-/* ------------------------------------------------------------------------
-    Color Palette
-   ------------------------------------------------------------------------ */
-
-void Palette(Post_View *v, int nbi, int i){ /* i in [0,nbi-1] */
-  int index ;
-
-  index = (nbi==1) ? 
-    v->CT.size/2 :
-    (int) (i/(double)(nbi-1)*(v->CT.size-1) + 0.5) ;
-
-  glColor4ubv( (GLubyte *) &v->CT.table[index] );
-}
-
-void Palette2(Post_View *v,double min, double max, double val){ /* val in [min,max] */
-  int index;  
-
-  index = (int)( (val-min)/(max-min)*(v->CT.size-1) + 0.5);
-
-  glColor4ubv((GLubyte *) &v->CT.table[index]);
-}
-
-void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]){
-  int j ;
-  for(j=0 ; j<3 ; j++) Raise[j][i] = (Val-ValMin) * RaiseFactor[j] ;
-}
-
-
-/* ------------------------------------------------------------------------ 
-    D r a w _ P o s t                                                       
-   ------------------------------------------------------------------------ */
-
-void Free_DisplayLists(void){
-  Post_View     *v;
-  for(int iView=0 ; iView<List_Nbr(Post_ViewList) ; iView++){
-    v = (Post_View*)List_Pointer(Post_ViewList,iView);
-    if(glIsList(v->Num)) glDeleteLists(v->Num,1);
-  }
-}
-
-void Get_Coords(double Explode, double *Offset, int nbnod, 
-		double *x1, double *y1, double *z1, 
-		double *x2, double *y2, double *z2){
-  int i;
-  double xc=0., yc=0., zc=0.;
-
-  if(Explode==1){
-    for(i=0; i<nbnod; i++){
-      x2[i] = x1[i]+Offset[0];
-      y2[i] = y1[i]+Offset[1];
-      z2[i] = z1[i]+Offset[2];
-    }
-  }
-  else{
-    for(i=0; i<nbnod; i++){
-      xc += x1[i];
-      yc += y1[i];
-      zc += z1[i];
-    }
-    xc /= (double)nbnod;
-    yc /= (double)nbnod;
-    zc /= (double)nbnod;
-    for(i=0; i<nbnod; i++){
-      x2[i] = xc + Explode * (x1[i]-xc) + Offset[0];
-      y2[i] = yc + Explode * (y1[i]-yc) + Offset[1];
-      z2[i] = zc + Explode * (z1[i]-zc) + Offset[2];
-    }
-  }
-}
-
-
-void Draw_Post (void) {
-  int            iView,i,j,k,nb;
-  double         ValMin,ValMax,AbsMax,X[4],Y[4],Z[4];
-  Post_View     *v;
-
-  if(!Post_ViewList) return;
-
-  glPointSize(2); gl2psPointSize(2);
-  glLineWidth(1); gl2psLineWidth(1*CTX.print.post_line_width);
-
-  if(!CTX.post.draw){ // draw only the bbox of the visible views
-    for(iView=0 ; iView<List_Nbr(Post_ViewList) ; iView++){
-      v = (Post_View*)List_Pointer(Post_ViewList,iView);
-      if(v->Visible){ 
-	glColor4ubv((GLubyte*)&CTX.color.fg);
-	glBegin(GL_LINE_LOOP);
-	glVertex3d(v->BBox[0], v->BBox[2], v->BBox[4]);
-	glVertex3d(v->BBox[1], v->BBox[2], v->BBox[4]);
-	glVertex3d(v->BBox[1], v->BBox[3], v->BBox[4]);
-	glVertex3d(v->BBox[0], v->BBox[3], v->BBox[4]);
-	glEnd();    
-	glBegin(GL_LINE_LOOP);
-	glVertex3d(v->BBox[0], v->BBox[2], v->BBox[5]);
-	glVertex3d(v->BBox[1], v->BBox[2], v->BBox[5]);
-	glVertex3d(v->BBox[1], v->BBox[3], v->BBox[5]);
-	glVertex3d(v->BBox[0], v->BBox[3], v->BBox[5]);
-	glEnd();    
-	glBegin(GL_LINES);
-	glVertex3d(v->BBox[0], v->BBox[2], v->BBox[4]);
-	glVertex3d(v->BBox[0], v->BBox[2], v->BBox[5]);
-	glVertex3d(v->BBox[1], v->BBox[2], v->BBox[4]);
-	glVertex3d(v->BBox[1], v->BBox[2], v->BBox[5]);
-	glVertex3d(v->BBox[1], v->BBox[3], v->BBox[4]);
-	glVertex3d(v->BBox[1], v->BBox[3], v->BBox[5]);
-	glVertex3d(v->BBox[0], v->BBox[3], v->BBox[4]);
-	glVertex3d(v->BBox[0], v->BBox[3], v->BBox[5]);
-	glEnd();    
-      }
-    }    
-    return;
-  }
-  
-  for(iView=0 ; iView<List_Nbr(Post_ViewList) ; iView++){
-
-    v = (Post_View*)List_Pointer(Post_ViewList,iView);
-
-    if(v->Visible && !v->Dirty){ 
-
-      if(CTX.display_lists && !v->Changed && glIsList(v->Num)){
-
-        glCallList(v->Num);
-
-      }
-      else{
-
-        if(CTX.display_lists){
-          if(glIsList(v->Num)) glDeleteLists(v->Num,1);
-          Msg(DEBUG, "New Display List");
-          glNewList(v->Num, GL_COMPILE_AND_EXECUTE);
-        }
-
-        if(v->Light)
-          InitShading();
-        else
-          InitNoShading();
-
-	if(v->ShowElement)
-	  glEnable(GL_POLYGON_OFFSET_FILL) ;
-
-        // force this
-        if(v->IntervalsType == DRAW_POST_CONTINUOUS){
-          glShadeModel(GL_SMOOTH); 
-	  glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-        }
-	else{// there is a bug in CutTriangle2D!! See Iso.cpp
-	  glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
-	}
-
-        switch(v->RangeType){
-        case DRAW_POST_DEFAULT : ValMin = v->Min ; ValMax = v->Max ; break;
-        case DRAW_POST_CUSTOM  : ValMin = v->CustomMin ; ValMax = v->CustomMax ; break;
-        }
-        
-        switch(v->ScaleType){
-        case DRAW_POST_LINEAR : 
-          v->GIFV = GiveIndexFromValue_Lin ;
-          v->GVFI = GiveValueFromIndex_Lin ;
-          break;
-        case DRAW_POST_LOGARITHMIC : 
-          v->GIFV = GiveIndexFromValue_Log ;
-          v->GVFI = GiveValueFromIndex_Log ;
-	  break;
-        case DRAW_POST_DOUBLELOGARITHMIC : 
-          v->GIFV = GiveIndexFromValue_DoubleLog ;
-          v->GVFI = GiveValueFromIndex_DoubleLog ;
-          break;
-        }
-        
-        AbsMax = DMAX(fabs(ValMin),fabs(ValMax));
-        AbsMax = (AbsMax==0.) ? 1. : AbsMax;
-        
-        for(j=0;j<3;j++){
-          RaiseFactor[j] = v->Raise[j] / AbsMax ;
-          for(k=0;k<5;k++) Raise[j][k] = 0. ;
-        }
-
-	// Points
-
-	if(v->NbSP && v->DrawPoints && v->DrawScalars){
-	  nb = List_Nbr(v->SP) / v->NbSP ;
-	  for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb){
-	    Get_Coords(1., v->Offset, 1, 
-		       (double*)List_Pointer_Fast(v->SP,i), 
-		       (double*)List_Pointer_Fast(v->SP,i+1), 
-		       (double*)List_Pointer_Fast(v->SP,i+2), 
-		       X, Y, Z);
-	    Draw_ScalarPoint(v, ValMin, ValMax, Raise, X, Y, Z,
-			     (double*)List_Pointer_Fast(v->SP,i+3));
-	  }
-	}
-	if(v->NbVP && v->DrawPoints && v->DrawVectors){
-	  nb = List_Nbr(v->VP) / v->NbVP ;
-	  for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb){
-	    Get_Coords(1., v->Offset, 1, 
-		       (double*)List_Pointer_Fast(v->VP,i), 
-		       (double*)List_Pointer_Fast(v->VP,i+1), 
-		       (double*)List_Pointer_Fast(v->VP,i+2), 
-		       X, Y, Z);
-	    Draw_VectorPoint(v, ValMin, ValMax, Raise, X, Y, Z,
-			     (double*)List_Pointer_Fast(v->VP,i+3));
-	  }
-	}
-	if(v->NbTP && v->DrawPoints && v->DrawTensors){
-	  nb = List_Nbr(v->TP) / v->NbTP ;
-	  for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb){
-	    Get_Coords(1., v->Offset, 1, 
-		       (double*)List_Pointer_Fast(v->TP,i), 
-		       (double*)List_Pointer_Fast(v->TP,i+1), 
-		       (double*)List_Pointer_Fast(v->TP,i+2), 
-		       X, Y, Z);
-	    Draw_TensorPoint(v, ValMin, ValMax, Raise, X, Y, Z,
-			     (double*)List_Pointer_Fast(v->TP,i+3));
-	  }
-	}
-
-	// Lines
-	
-	if(v->NbSL && v->DrawLines && v->DrawScalars){
-	  nb = List_Nbr(v->SL) / v->NbSL ;
-	  for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 2, 
-		       (double*)List_Pointer_Fast(v->SL,i), 
-		       (double*)List_Pointer_Fast(v->SL,i+2), 
-		       (double*)List_Pointer_Fast(v->SL,i+4), 
-		       X, Y, Z);
-	    Draw_ScalarLine(v, ValMin, ValMax, Raise, X, Y, Z,
-			    (double*)List_Pointer_Fast(v->SL,i+6));
-	  }
-	}
-	if(v->NbVL && v->DrawLines && v->DrawVectors){
-	  nb = List_Nbr(v->VL) / v->NbVL ;
-	  for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 2, 
-		       (double*)List_Pointer_Fast(v->VL,i),
-		       (double*)List_Pointer_Fast(v->VL,i+2),
-		       (double*)List_Pointer_Fast(v->VL,i+4),
-		       X, Y, Z);
-	    Draw_VectorLine(v, ValMin, ValMax, Raise, X, Y, Z,
-			    (double*)List_Pointer_Fast(v->VL,i+6));
-	  }
-	}
-	if(v->NbTL && v->DrawLines && v->DrawTensors){
-	  nb = List_Nbr(v->TL) / v->NbTL ;
-	  for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 2, 
-		       (double*)List_Pointer_Fast(v->TL,i), 
-		       (double*)List_Pointer_Fast(v->TL,i+2), 
-		       (double*)List_Pointer_Fast(v->TL,i+4), 
-		       X, Y, Z);
-	    Draw_TensorLine(v, ValMin, ValMax, Raise, X, Y, Z,
-			    (double*)List_Pointer_Fast(v->TL,i+6));
-	  }
-	}
-	
-	// Triangles
-	
-	if(v->NbST && v->DrawTriangles && v->DrawScalars){
-	  nb = List_Nbr(v->ST) / v->NbST ;
-	  if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){
-	    Msg(DEBUG, "Preprocessing of triangle normals in view %d", v->Num);
-	    for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){
-	      Get_Coords(v->Explode, v->Offset, 3, 
-			 (double*)List_Pointer_Fast(v->ST,i), 
-			 (double*)List_Pointer_Fast(v->ST,i+3), 
-			 (double*)List_Pointer_Fast(v->ST,i+6), 
-			 X, Y, Z);
-	      Draw_ScalarTriangle(v, 1, ValMin, ValMax, Raise, X, Y, Z,
-				  (double*)List_Pointer_Fast(v->ST,i+9));
-	    }
-	  }
-	  for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 3, 
-		       (double*)List_Pointer_Fast(v->ST,i), 
-		       (double*)List_Pointer_Fast(v->ST,i+3), 
-		       (double*)List_Pointer_Fast(v->ST,i+6), 
-		       X, Y, Z);
-	    Draw_ScalarTriangle(v, 0, ValMin, ValMax, Raise, X, Y, Z,
-				(double*)List_Pointer_Fast(v->ST,i+9));
-	  }
-	}
-	if(v->NbVT && v->DrawTriangles && v->DrawVectors){
-	  nb = List_Nbr(v->VT) / v->NbVT ;
-	  for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 3, 
-		       (double*)List_Pointer_Fast(v->VT,i),
-		       (double*)List_Pointer_Fast(v->VT,i+3),
-		       (double*)List_Pointer_Fast(v->VT,i+6),
-		       X, Y, Z);
-	    Draw_VectorTriangle(v, ValMin, ValMax, Raise, X, Y, Z,
-				(double*)List_Pointer_Fast(v->VT,i+9));
-	  }
-	}
-	if(v->NbTT && v->DrawTriangles && v->DrawTensors){
-	  nb = List_Nbr(v->TT) / v->NbTT ;
-	  for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 3, 
-		       (double*)List_Pointer_Fast(v->TT,i), 
-		       (double*)List_Pointer_Fast(v->TT,i+3), 
-		       (double*)List_Pointer_Fast(v->TT,i+6), 
-		       X, Y, Z);
-	    Draw_TensorTriangle(v, ValMin, ValMax, Raise, X, Y, Z,
-				(double*)List_Pointer_Fast(v->TT,i+9));
-	  }
-	}
-	
-	// Tetrahedra
-	
-	if(v->NbSS && v->DrawTetrahedra && v->DrawScalars){
-	  nb = List_Nbr(v->SS) / v->NbSS ;
-	  if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){
-	    Msg(DEBUG, "Preprocessing of tets normals in view %d", v->Num);
-	    for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){
-	      Get_Coords(v->Explode, v->Offset, 4, 
-			 (double*)List_Pointer_Fast(v->SS,i), 
-			 (double*)List_Pointer_Fast(v->SS,i+4), 
-			 (double*)List_Pointer_Fast(v->SS,i+8), 
-			 X, Y, Z);
-	      Draw_ScalarTetrahedron(v, 1, ValMin, ValMax, Raise, X, Y, Z,
-				     (double*)List_Pointer_Fast(v->SS,i+12));
-	    }
-	  }
-	  for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 4, 
-		       (double*)List_Pointer_Fast(v->SS,i), 
-		       (double*)List_Pointer_Fast(v->SS,i+4), 
-		       (double*)List_Pointer_Fast(v->SS,i+8), 
-		       X, Y, Z);
-	    Draw_ScalarTetrahedron(v, 0, ValMin, ValMax, Raise, X, Y, Z,
-				   (double*)List_Pointer_Fast(v->SS,i+12));
-	  }
-	}
-	if(v->NbVS && v->DrawTetrahedra && v->DrawVectors){
-	  nb = List_Nbr(v->VS) / v->NbVS ;
-	  for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 4,
-		       (double*)List_Pointer_Fast(v->VS,i), 
-		       (double*)List_Pointer_Fast(v->VS,i+4), 
-		       (double*)List_Pointer_Fast(v->VS,i+8), 
-		       X, Y, Z);
-	    Draw_VectorTetrahedron(v, ValMin, ValMax, Raise, X, Y, Z,
-				   (double*)List_Pointer_Fast(v->VS,i+12));
-	  }
-	}
-	if(v->NbTS && v->DrawTetrahedra && v->DrawTensors){
-	  nb = List_Nbr(v->TS) / v->NbTS ;
-	  for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb){
-	    Get_Coords(v->Explode, v->Offset, 4,
-		       (double*)List_Pointer_Fast(v->TS,i), 
-		       (double*)List_Pointer_Fast(v->TS,i+4), 
-		       (double*)List_Pointer_Fast(v->TS,i+8), 
-		       X, Y, Z);
-	    Draw_TensorTetrahedron(v, ValMin, ValMax, Raise, X, Y, Z,
-				   (double*)List_Pointer_Fast(v->TS,i+12));
-	  }
-	}
-
-
-        if(CTX.display_lists) glEndList();
-
-	v->Changed=0;
-
-	if(v->ShowElement || v->ArrowType == DRAW_POST_DISPLACEMENT)
-	  glDisable(GL_POLYGON_OFFSET_FILL) ;
-        
-      }
-      
-    }
-
-  }
-
-  // go back to default shading for the scale
-  InitNoShading();
-
-}
-
diff --git a/Graphics/PostSimplex.cpp b/Graphics/PostSimplex.cpp
deleted file mode 100644
index ebdefcf01fe743db8c78a48574eabd19e79beeb6..0000000000000000000000000000000000000000
--- a/Graphics/PostSimplex.cpp
+++ /dev/null
@@ -1,607 +0,0 @@
-// $Id: PostSimplex.cpp,v 1.29 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Iso.h"
-#include "IsoSimplex.h"
-#include "Context.h"
-#include "Numeric.h"
-
-extern Context_T   CTX;
-
-void Draw_Simplex(Post_View *View, int nbnod, double *X, double *Y, double *Z,
-		  double Raise[3][5]){
-  int k;
-  double xx[4], yy[4], zz[4];
-
-  glColor4ubv((GLubyte*)&CTX.color.fg);
-  switch(nbnod){
-  case 1 :
-    Draw_Point(X,Y,Z,Raise);
-    break;
-  case 2 :
-    Draw_Line(X,Y,Z,Raise);
-    break;
-  case 3 :
-    glBegin(GL_LINE_LOOP);
-    for(k=0 ; k<3 ; k++) 
-      glVertex3d(X[k]+Raise[0][k], Y[k]+Raise[1][k], Z[k]+Raise[2][k]);
-    glEnd();
-    break;
-  case 4 :
-    for(k=0 ; k<4 ; k++){
-      xx[k] = X[k]+Raise[0][k] ;
-      yy[k] = Y[k]+Raise[1][k] ;
-      zz[k] = Z[k]+Raise[2][k] ;
-    }
-    if(View->Light) glDisable(GL_LIGHTING);
-    glBegin(GL_LINES);
-    glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]);
-    glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[2], yy[2], zz[2]);
-    glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]);
-    glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]);
-    glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[3], yy[3], zz[3]);
-    glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[3], yy[3], zz[3]);
-    glEnd();
-    if(View->Light) glEnable(GL_LIGHTING);
-    break;
-  }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  Scalar Simplices                                                        */
-/* ------------------------------------------------------------------------ */
-
-void Draw_ScalarPoint(Post_View *View, 
-		      double ValMin, double ValMax, double Raise[3][5],
-		      double *X, double *Y, double *Z, double *V){
-  double   d;
-  char Num[100];
-
-  if(View->Boundary > 0) return;
-
-  d = V[View->TimeStep];
-
-  if(View->SaturateValues){
-    if(d > ValMax) d = ValMax;
-    else if(d < ValMin) d = ValMin;
-  }
-
-  RaiseFill(0, d, ValMin, Raise);
-
-  if(View->ShowElement) Draw_Simplex(View,1,X,Y,Z,Raise);
-
-  if(d>=ValMin && d<=ValMax){      
-    Palette2(View,ValMin,ValMax,d);
-    if(View->IntervalsType == DRAW_POST_NUMERIC){
-      glRasterPos3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]);
-      sprintf(Num, View->Format, d);
-      Draw_String(Num);
-    }
-    else
-      Draw_Point(X,Y,Z,Raise);
-  }
-}
-
-void Draw_ScalarLine(Post_View *View, 
-		     double ValMin, double ValMax, double Raise[3][5],
-		     double *X, double *Y, double *Z, double *V){
-
-  int     i,k,nb=0;
-  double  d;
-  double  Xp[5],Yp[5],Zp[5],Val[5],value[5],thev;
-  char    Num[100] ;
-
-  double *vv = &V[2*View->TimeStep];
-
-  if(View->Boundary > 0){
-    View->Boundary--;
-    int ts = View->TimeStep;
-    View->TimeStep = 0;
-    Draw_ScalarPoint(View, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//0
-    Draw_ScalarPoint(View, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//1
-    View->TimeStep = ts;
-    View->Boundary++;
-    return;
-  }
-
-  if(View->SaturateValues){
-    for(i=0;i<2;i++){
-      if(vv[i] > ValMax) Val[i] = ValMax;
-      else if(vv[i] < ValMin) Val[i] = ValMin;
-      else Val[i] = vv[i];
-    }
-  }
-  else{
-    for(i=0;i<2;i++){	      
-      Val[i] = vv[i];
-    }
-  }
-
-  for(k=0 ; k<2 ; k++)
-    RaiseFill(k, Val[k], ValMin, Raise);
-
-  if(View->ShowElement) Draw_Simplex(View,2,X,Y,Z,Raise);
-
-  if(View->IntervalsType == DRAW_POST_NUMERIC){
-
-    d = (Val[0]+Val[1]) / 2.;
-
-    if(d >= ValMin && d <= ValMax){
-      Palette2(View,ValMin,ValMax,d);
-      sprintf(Num, View->Format, d);
-      glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2.,
-		    (Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2.,
-		    (Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2.);
-      Draw_String(Num);
-    }
-
-  }
-  else{
-
-    if(View->IntervalsType==DRAW_POST_CONTINUOUS){
-
-      if(Val[0] >= ValMin && Val[0] <= ValMax &&
-         Val[1] >= ValMin && Val[1] <= ValMax){
-	glBegin(GL_LINES);
-	Palette2(View,ValMin,ValMax,Val[0]);
-	glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]);
-	Palette2(View,ValMin,ValMax,Val[1]);
-	glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]);
-	glEnd();
-      }
-      else{
-	//todo
-      }
-
-    }
-    else{
-      for(k=0 ; k<View->NbIso ; k++){
-	Palette(View,View->NbIso,k);
-	if(View->IntervalsType==DRAW_POST_DISCRETE){
-	  CutLine1D(X,Y,Z,&Val[0],
-		    View->GVFI(ValMin,ValMax,View->NbIso+1,k),
-		    View->GVFI(ValMin,ValMax,View->NbIso+1,k+1),
-		    ValMin,ValMax,Xp,Yp,Zp,&nb,value);    
-	  if(nb == 2){
-	    for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise);    
-	    Draw_Line(Xp,Yp,Zp,Raise);  
-	  }
-	}
-	else{
-	  thev = View->GVFI(ValMin,ValMax,View->NbIso,k);
-	  CutLine0D(X,Y,Z,&Val[0],
-		    thev, ValMin,ValMax,Xp,Yp,Zp,&nb);    
-	  if(nb){
-	    RaiseFill(0,thev,ValMin,Raise);
-	    Draw_Point(Xp,Yp,Zp,Raise);    
-	  }
-	}
-      }
-    }
-
-  }
-
-}
-
-void Draw_ScalarTriangle(Post_View *View, int preproNormals,
-			 double ValMin, double ValMax, double Raise[3][5],
-			 double *X, double *Y, double *Z, double *V){
-
-  int     i, k, nb=0;
-  double  d;
-  double  x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3], norms[9];
-  double  Xp[5],Yp[5],Zp[5],Val[3],value[5],thev;
-  char    Num[100] ;
-
-  double *vv = &V[3*View->TimeStep];
-
-  if(!preproNormals && View->Boundary > 0){
-    View->Boundary--;
-    int ts = View->TimeStep;
-    View->TimeStep = 0;
-    Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//01
-    Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//12
-    Xp[0] = X[0]; Yp[0] = Y[0]; Zp[0] = Z[0]; Val[0] = vv[0];
-    Xp[1] = X[2]; Yp[1] = Y[2]; Zp[1] = Z[2]; Val[1] = vv[2];
-    Draw_ScalarLine(View, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//02
-    View->TimeStep = ts;
-    View->Boundary++;
-    return;
-  }
-
-  if(View->SaturateValues){
-    for(i=0;i<3;i++){
-      if(vv[i] > ValMax) Val[i] = ValMax;
-      else if(vv[i] < ValMin) Val[i] = ValMin;
-      else Val[i] = vv[i];
-    }
-  }
-  else{
-    for(i=0;i<3;i++){	      
-      Val[i] = vv[i];
-    }
-  }
-
-  for(k=0 ; k<3 ; k++)
-    RaiseFill(k, Val[k], ValMin, Raise);
-
-  if(View->Light){
-
-    x1x0 = (X[1]+Raise[0][1]) - (X[0]+Raise[0][0]); 
-    y1y0 = (Y[1]+Raise[1][1]) - (Y[0]+Raise[1][0]);
-    z1z0 = (Z[1]+Raise[2][1]) - (Z[0]+Raise[2][0]); 
-    x2x0 = (X[2]+Raise[0][2]) - (X[0]+Raise[0][0]);
-    y2y0 = (Y[2]+Raise[1][2]) - (Y[0]+Raise[1][0]); 
-    z2z0 = (Z[2]+Raise[2][2]) - (Z[0]+Raise[2][0]);
-    nn[0]  = y1y0 * z2z0 - z1z0 * y2y0 ;
-    nn[1]  = z1z0 * x2x0 - x1x0 * z2z0 ;
-    nn[2]  = x1x0 * y2y0 - y1y0 * x2x0 ;
-
-    if(View->SmoothNormals){
-      if(preproNormals){
-	for(i=0;i<3;i++){
-	  View->add_normal(X[i]+Raise[0][i],Y[i]+Raise[1][i],Z[i]+Raise[2][i],
-			   nn[0],nn[1],nn[2]);
-	}
-	return;
-      }
-      else{
-	for(i=0;i<3;i++){
-	  if(!View->get_normal(X[i]+Raise[0][i],Y[i]+Raise[1][i],Z[i]+Raise[2][i],
-			       norms[3*i],norms[3*i+1],norms[3*i+2])){
-	    Msg(WARNING, "Oups, did not find smoothed normal");
-	    norms[3*i] = nn[0];
-	    norms[3*i+1] = nn[1];
-	    norms[3*i+2] = nn[2];
-	  }
-	}
-      }
-    }
-    else{
-      for(i=0;i<3;i++){
-	norms[3*i] = nn[0];
-	norms[3*i+1] = nn[1];
-	norms[3*i+2] = nn[2];
-      }
-    }
-    //norme(norms); not necessary since GL_NORMALIZE is enabled
-    //norme(&norms[3]);
-    //norme(&norms[6]);
-    glNormal3dv(norms);
-  }
-
-  if(preproNormals) return;
-
-  if(View->ShowElement) Draw_Simplex(View,3,X,Y,Z,Raise);
-
-  if(View->IntervalsType == DRAW_POST_NUMERIC){
-
-    d = (Val[0]+Val[1]+Val[2]) / 3.;
-    if(d >= ValMin && d <= ValMax){
-      Palette2(View,ValMin,ValMax,d);
-      sprintf(Num, View->Format, d);
-      glRasterPos3d( (X[0]+Raise[0][0] + X[1]+Raise[0][1] + X[2]+Raise[0][2])/3.,
-		     (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + Y[2]+Raise[1][2])/3.,
-		     (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + Z[2]+Raise[2][2])/3.);
-      Draw_String(Num);
-    }
-
-  }
-  else{
-    
-    if(View->IntervalsType == DRAW_POST_CONTINUOUS){
-      if(Val[0] >= ValMin && Val[0] <= ValMax &&
-         Val[1] >= ValMin && Val[1] <= ValMax &&
-         Val[2] >= ValMin && Val[2] <= ValMax){
-        glBegin(GL_TRIANGLES);
-	Palette2(View,ValMin,ValMax,Val[0]);
-	glNormal3dv(&norms[0]);
-        glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]);
-	Palette2(View,ValMin,ValMax,Val[1]);
-	glNormal3dv(&norms[3]);
-        glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]);
-	Palette2(View,ValMin,ValMax,Val[2]);
-	glNormal3dv(&norms[6]);
-        glVertex3d(X[2]+Raise[0][2], Y[2]+Raise[1][2], Z[2]+Raise[2][2]);
-        glEnd();
-      }
-      else{
-        CutTriangle2D(X,Y,Z,Val,
-                      ValMin,ValMax,ValMin,ValMax,
-                      Xp,Yp,Zp,&nb,value);
-        if(nb >= 3){      
-          glBegin(GL_POLYGON);
-          for(i=0 ; i<nb ; i++){
-	    Palette2(View,ValMin,ValMax,value[i]);
-            RaiseFill(i,value[i],ValMin,Raise);
-            glVertex3d(Xp[i]+Raise[0][i], Yp[i]+Raise[1][i], Zp[i]+Raise[2][i]);
-          }
-          glEnd();
-        }
-      }
-    }
-    else{
-      for(k=0 ; k<View->NbIso ; k++){
-        if(View->IntervalsType == DRAW_POST_DISCRETE){
-          Palette(View,View->NbIso,k);
-          CutTriangle2D(X,Y,Z,Val,
-                        View->GVFI(ValMin,ValMax,View->NbIso+1,k),
-                        View->GVFI(ValMin,ValMax,View->NbIso+1,k+1),
-                        ValMin,ValMax,
-                        Xp,Yp,Zp,&nb,value);      
-          if(nb >= 3){
-            for(i=0 ; i<nb ; i++) RaiseFill(i,value[i],ValMin,Raise);    
-            Draw_Polygon(nb,Xp,Yp,Zp,Raise);  
-          }
-        }
-        else{
-          Palette(View,View->NbIso,k);
-          thev = View->GVFI(ValMin,ValMax,View->NbIso,k);
-          CutTriangle1D(X,Y,Z,Val,
-                        thev, ValMin,ValMax,Xp,Yp,Zp,&nb);        
-          if(nb == 2){
-            for(i=0 ; i<2 ; i++) RaiseFill(i,thev,ValMin,Raise);
-            Draw_Line(Xp,Yp,Zp,Raise);    
-          }
-        }
-      }
-    }
-
-  }
-    
-}
-
-void Draw_ScalarTetrahedron(Post_View *View, int preproNormals,
-			    double ValMin, double ValMax, double Raise[3][5],
-			    double *X, double *Y, double *Z, double *V){
-
-  int     k,i;
-  double  d, xx[4], yy[4], zz[4];
-  char Num[100];
-  double Val[4];
-
-  double *vv = &V[4*View->TimeStep];
-
-  if(!preproNormals && View->Boundary > 0){
-    View->Boundary--;
-    int ts = View->TimeStep;
-    View->TimeStep = 0;
-    Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//012
-    Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//123
-    xx[0] = X[0]; yy[0] = Y[0]; zz[0] = Z[0]; Val[0] = vv[0];
-    xx[1] = X[1]; yy[1] = Y[1]; zz[1] = Z[1]; Val[1] = vv[1];
-    xx[2] = X[3]; yy[2] = Y[3]; zz[2] = Z[3]; Val[2] = vv[3];
-    Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, Val);//013
-    xx[1] = X[2]; yy[1] = Y[2]; zz[1] = Z[2]; Val[1] = vv[2];
-    Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, Val);//023
-    View->TimeStep = ts;
-    View->Boundary++;
-    return;
-  }
-
-  if(View->SaturateValues){
-    for(i=0;i<4;i++){
-      if(vv[i] > ValMax) Val[i] = ValMax;
-      else if(vv[i] < ValMin) Val[i] = ValMin;
-      else Val[i] = vv[i];
-    }
-  }
-  else{
-    for(i=0;i<4;i++){	      
-      Val[i] = vv[i];
-    }
-  }
-
-  for(k=0 ; k<4 ; k++)
-    RaiseFill(k, Val[k], ValMin, Raise);
-
-  if(!preproNormals && View->ShowElement) Draw_Simplex(View,4,X,Y,Z,Raise);
-
-  if(!preproNormals && View->IntervalsType == DRAW_POST_NUMERIC){
-
-    d = 0.25 * (Val[0]  +Val[1]+Val[2] + Val[3]);
-    if(d >= ValMin && d <= ValMax){
-      Palette2(View,ValMin,ValMax,d);
-      sprintf(Num, View->Format, d);
-      glRasterPos3d(0.25 * (X[0]+Raise[0][0] + X[1]+Raise[0][1] + 
-			    X[2]+Raise[0][2] + X[3]+Raise[0][3]),
-		    0.25 * (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + 
-			    Y[2]+Raise[1][2] + Y[3]+Raise[1][3]),
-		    0.25 * (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + 
-			    Z[2]+Raise[2][2] + Z[3]+Raise[2][3]));
-      Draw_String(Num);
-    }
-
-  }
-  else{
-    for(k=0 ; k<View->NbIso ; k++){
-      if(!preproNormals) Palette(View,View->NbIso,k);
-      IsoSimplex(View, preproNormals, X, Y, Z, Val,
-		 View->GVFI(ValMin,ValMax,View->NbIso,k), 
-		 ValMin, ValMax, Raise);
-    }
-
-  }
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  Vector Simplices                                                        */
-/* ------------------------------------------------------------------------ */
-
-void Draw_VectorSimplex(int nbnod, Post_View *View, 
-			double ValMin, double ValMax, double Raise[3][5],
-			double *X, double *Y, double *Z, double *V){
-  int    j, k ;
-  double fact, xx[4], yy[4], zz[4],  xc=0., yc=0., zc=0., Val[4][3], d[4];
-  double dx=0., dy=0., dz=0., dd;
-  char   Num[100];
-
-  for(k=0 ; k<nbnod ; k++){
-    Val[k][0] = V[3*nbnod*View->TimeStep+3*k] ;
-    Val[k][1] = V[3*nbnod*View->TimeStep+3*k+1] ;
-    Val[k][2] = V[3*nbnod*View->TimeStep+3*k+2] ;              
-    d[k] = sqrt(Val[k][0]*Val[k][0]+Val[k][1]*Val[k][1]+Val[k][2]*Val[k][2]);            
-    RaiseFill(k, d[k], ValMin, Raise);
-  }
-
-  if(View->ArrowType == DRAW_POST_DISPLACEMENT){
-
-    fact = View->ArrowScale/50. ;
-    for(k=0 ; k<nbnod ; k++){
-      xx[k] = X[k] + fact * Val[k][0] + Raise[0][k];
-      yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k];
-      zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k];
-    }
-
-    int ts = View->TimeStep;
-    View->TimeStep = 0;
-    switch(nbnod){
-    case 1:
-      Draw_ScalarPoint(View, ValMin, ValMax, Raise, xx, yy, zz, d);
-      if(ts){//draw trajectory
-	glBegin(GL_LINE_STRIP);
-	for(j=0 ; j<ts+1 ; j++){
-	  dx = V[3*(ts-j)]; dy = V[3*(ts-j)+1]; dz = V[3*(ts-j)+2];
-	  dd = sqrt(dx*dx+dy*dy+dz*dz);
-	  Palette2(View,ValMin,ValMax,dd);
-	  glVertex3d(X[0] + fact*dx + Raise[0][0],
-		     Y[0] + fact*dy + Raise[1][0],
-		     Z[0] + fact*dz + Raise[2][0]);
-	}
-	glEnd();
-      }
-      break;
-    case 2: Draw_ScalarLine(View, ValMin, ValMax, Raise, xx, yy, zz, d); break;
-    case 3: Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break;
-    case 4: Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break;
-    }
-    View->TimeStep = ts;
-    return;
-  }
-
-  if(View->ShowElement) Draw_Simplex(View,nbnod,X,Y,Z,Raise);
-
-  if(View->ArrowLocation == DRAW_POST_LOCATE_COG ||
-     View->IntervalsType == DRAW_POST_NUMERIC){
-    for(k = 0 ; k<nbnod ; k++){
-      dx += Val[k][0]; xc += X[k] + Raise[0][k];
-      dy += Val[k][1]; yc += Y[k] + Raise[1][k];
-      dz += Val[k][2]; zc += Z[k] + Raise[2][k];
-    }
-    dx /= (double)nbnod; xc /= (double)nbnod;
-    dy /= (double)nbnod; yc /= (double)nbnod;
-    dz /= (double)nbnod; zc /= (double)nbnod;
-    dd = sqrt(dx*dx+dy*dy+dz*dz);
-    if(dd!=0.0 && dd>=ValMin && dd<=ValMax){             
-      Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,dd));            
-      if(View->IntervalsType == DRAW_POST_NUMERIC){
-	glRasterPos3d(xc, yc, zc);
-	sprintf(Num, View->Format, dd);
-	Draw_String(Num);
-      }
-      else{
-	fact = CTX.pixel_equiv_x/CTX.s[0] * View->ArrowScale/ValMax ;
-	if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){
-	  dx /= dd ; dy /= dd ; dz /= dd ;
-	  dd = log10(dd/ValMin) ; 
-	  dx *= dd ; dy *= dd ; dz *= dd ;
-	}
-	RaiseFill(0, dd, ValMin, Raise);         
-	Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO,
-		    xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, Raise);
-      }
-    }
-  }
-  else{
-    for(k=0 ; k<nbnod ; k++){
-      if(d[k]!=0.0 && d[k]>=ValMin && d[k]<=ValMax){           
-	Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d[k]));
-	fact = CTX.pixel_equiv_x/CTX.s[0] * View->ArrowScale/ValMax ;
-	if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){
-	  Val[k][0] /= d[k] ; Val[k][1] /= d[k] ; Val[k][2] /= d[k] ;
-	  d[k] = log10(d[k]/ValMin) ;
-	  Val[k][0] *= d[k] ; Val[k][1] *= d[k] ; Val[k][2] *= d[k] ;
-	}
-	RaiseFill(0, d[k], ValMin, Raise);         
-	Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO,
-		    X[k], Y[k], Z[k],
-		    fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], Raise);
-      }               
-    }       
-  }
-
-}
-
-void Draw_VectorPoint(Post_View *View, 
-		      double ValMin, double ValMax, double Raise[3][5],
-		      double *X, double *Y, double *Z, double *V){
-  Draw_VectorSimplex(1, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-void Draw_VectorLine(Post_View *View, 
-		     double ValMin, double ValMax, double Raise[3][5],
-		     double *X, double *Y, double *Z, double *V){
-  Draw_VectorSimplex(2, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-void Draw_VectorTriangle(Post_View *View, 
-			 double ValMin, double ValMax, double Raise[3][5],
-			 double *X, double *Y, double *Z, double *V){
-  Draw_VectorSimplex(3, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-void Draw_VectorTetrahedron(Post_View *View, 
-			    double ValMin, double ValMax, double Raise[3][5],
-			    double *X, double *Y, double *Z, double *V){
-  Draw_VectorSimplex(4, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  Tensor Simplices                                                        */
-/* ------------------------------------------------------------------------ */
-
-static int TensorError = 0 ;
-
-void Draw_TensorSimplex(int nbnod, Post_View *View, 
-			double ValMin, double ValMax, double Raise[3][5],
-			double *X, double *Y, double *Z, double *V){
-  if(!TensorError){
-    TensorError = 1;
-    Msg(GERROR, "Tensor field visualization is not implemented");
-    Msg(GERROR, "We *need* some ideas on how to implement this!");
-    Msg(GERROR, "Send your ideas to <gmsh@geuz.org>!");
-  }
-}
-
-
-void Draw_TensorPoint(Post_View *View, 
-		      double ValMin, double ValMax, double Raise[3][5],
-		      double *X, double *Y, double *Z, double *V){
-  Draw_TensorSimplex(1, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-void Draw_TensorLine(Post_View *View, 
-		     double ValMin, double ValMax, double Raise[3][5],
-		     double *X, double *Y, double *Z, double *V){
-  Draw_TensorSimplex(2, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-void Draw_TensorTriangle(Post_View *View, 
-			 double ValMin, double ValMax, double Raise[3][5],
-			 double *X, double *Y, double *Z, double *V){
-  Draw_TensorSimplex(3, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
-void Draw_TensorTetrahedron(Post_View *View, 
-			    double ValMin, double ValMax, double Raise[3][5],
-			    double *X, double *Y, double *Z, double *V){
-  Draw_TensorSimplex(4, View, ValMin, ValMax, Raise, X, Y, Z, V);
-}
-
diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp
deleted file mode 100644
index e3d5ec76246bb99e3f63f51bad077a070c2f9dd6..0000000000000000000000000000000000000000
--- a/Graphics/Scale.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-// $Id: Scale.cpp,v 1.21 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "Views.h"
-
-extern Context_T   CTX;
-
-#if _XMOTIF
-
-#include "XContext.h"
-extern XContext_T  XCTX;
-static int          dir,ascent, descent;
-static XCharStruct  overall;
-#define CHECK_W                                                                         \
-  XTextExtents(XCTX.xfont.helve, label, strlen(label), &dir,&ascent,&descent,&overall); \
-  if(overall.width > cv_w) cv_w=overall.width
-
-#elif _FLTK
-static double overall ; 
-#define CHECK_W  overall=gl_width(label) ; if(overall > cv_w) cv_w=overall
-
-#else
-
-#define CHECK_W  cv_w=200
-
-#endif
-
-/* Even if all computations in these routines are made in window
-   coordinates, double precision is used to work at subpixel accuracy */
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ S c a l e                                                     */
-/* ------------------------------------------------------------------------ */
-
-extern double GiveValueFromIndex_Lin(double ValMin, double ValMax, int NbIso, int Iso);
-extern double GiveValueFromIndex_Log(double ValMin, double ValMax, int NbIso, int Iso);
-extern int GiveIndexFromValue_Lin(double ValMin, double ValMax, int NbIso, double Val);
-extern int GiveIndexFromValue_Log(double ValMin, double ValMax, int NbIso, double Val);
-
-void draw_scale(Post_View *v, double xmin, double ymin, double *width, double height){
-  int       i, nbv;
-  double    font_h, font_a, label_h;
-  double    cs_xmin, cs_ymin, cs_h, cs_w, cs_bh;
-  double    cv_xmin, cv_ymin, cv_h, cv_w, cv_bh;
-  char      label[1024] ;
-  double    Val, ValMin, ValMax;
-
-  font_h  = CTX.gl_fontheight ;       /* hauteur totale de la fonte */
-  font_a  = CTX.gl_fontascent ;       /* hauteur de la fonte au dessus de pt de ref */
-  label_h = 1.8*font_h ;              /* hauteur du label */
-
-  cs_xmin = xmin ;                    /* colorscale xmin */
-  cs_ymin = ymin+label_h ;            /* colorscale ymin */
-  cs_w    = 16. ;                     /* colorscale width */
-  cs_h    = height-label_h ;          /* colorscale height */
-  cs_bh   = cs_h/v->NbIso ;           /* colorscale box height */
-
-  cv_xmin = cs_xmin+cs_w+5 ;          /* valuescale xmin */
-  cv_ymin = cs_ymin ;                 /* valuescale ymin */
-  cv_w    = 0.0 ;                     /* valuescale width: to be computed */
-  cv_h    = cs_h ;                    /* valuescale height */
-  cv_bh   = 0.0 ;                     /* valuescale box height: to be computed */
-
-
-  if(v->IntervalsType == DRAW_POST_CONTINUOUS)
-    glShadeModel(GL_SMOOTH);
-  else
-    glShadeModel(GL_FLAT);
-  
-  if(v->RangeType == DRAW_POST_CUSTOM){
-    ValMin = v->CustomMin ; ValMax = v->CustomMax ;
-  }
-  else{
-    ValMin = v->Min ; ValMax = v->Max ;
-  }
-  
-  switch(v->ScaleType){
-  case DRAW_POST_LINEAR : 
-    v->GIFV = GiveIndexFromValue_Lin ;
-    v->GVFI = GiveValueFromIndex_Lin ;
-    break;
-  case DRAW_POST_LOGARITHMIC : 
-    v->GIFV = GiveIndexFromValue_Log ;
-    v->GVFI = GiveValueFromIndex_Log ;
-    break;
-  }
-
-  /* background : bidouille
-     il faudra changer l'ordre des operations
-   */
-
-  if(!v->TransparentScale){
-    sprintf(label, v->Format, (ValMin+ValMax)/Pi);
-    CHECK_W;
-    *width = cv_xmin-cs_xmin+cv_w;   
-    glColor4ubv((GLubyte*)&CTX.color.bg);
-    glBegin(GL_QUADS);
-    glVertex2d(xmin,        ymin);
-    glVertex2d(xmin+*width, ymin);
-    glVertex2d(xmin+*width, ymin+height);
-    glVertex2d(xmin,        ymin+height);
-    glEnd();    
-  }
-
-  /* colorscale */
-
-  for(i=0;i<v->NbIso;i++){
-    if(v->IntervalsType==DRAW_POST_DISCRETE){
-      Palette(v,v->NbIso,i);   
-      glBegin(GL_QUADS);
-      glVertex2d(cs_xmin,      cs_ymin+i*cs_bh);
-      glVertex2d(cs_xmin+cs_w, cs_ymin+i*cs_bh);
-      glVertex2d(cs_xmin+cs_w, cs_ymin+(i+1)*cs_bh);
-      glVertex2d(cs_xmin,      cs_ymin+(i+1)*cs_bh);
-      glEnd();
-    }
-    else if (v->IntervalsType==DRAW_POST_CONTINUOUS){
-      glBegin(GL_QUADS);
-      Palette2(v,ValMin,ValMax,ValMin+i*(ValMax-ValMin)/v->NbIso);
-      glVertex2d(cs_xmin,      cs_ymin+i*cs_bh);
-      glVertex2d(cs_xmin+cs_w, cs_ymin+i*cs_bh);
-      Palette2(v,ValMin,ValMax,ValMin+(i+1)*(ValMax-ValMin)/v->NbIso);
-      glVertex2d(cs_xmin+cs_w, cs_ymin+(i+1)*cs_bh);
-      glVertex2d(cs_xmin,      cs_ymin+(i+1)*cs_bh);
-      glEnd();  
-    }
-    else{
-      Palette(v,v->NbIso,i);
-      glBegin(GL_LINES);
-      glVertex2d(cs_xmin,      cs_ymin+i*cs_bh+0.5*cs_bh);
-      glVertex2d(cs_xmin+cs_w, cs_ymin+i*cs_bh+0.5*cs_bh);
-      glEnd();
-    }
-  }  
-  
-  /* valuescale */
-  
-  nbv = (v->NbIso<floor(cs_h/font_h))?v->NbIso:-1;
-  cv_bh = cv_h/nbv;
-
-  glColor4ubv((GLubyte*)&CTX.color.text);
-
-  /* only min and max if not enough room */
-  if(nbv<0){
-    if(v->IntervalsType == DRAW_POST_DISCRETE ||
-       v->IntervalsType == DRAW_POST_CONTINUOUS){
-      sprintf(label, v->Format, ValMin);
-      glRasterPos2d(cv_xmin,cv_ymin-font_a/3.);
-      Draw_String(label); CHECK_W;
-
-      sprintf(label, v->Format, ValMax);
-      glRasterPos2d(cv_xmin,cv_ymin+cv_h-font_a/3.);
-      Draw_String(label); CHECK_W;
-    }
-    else {
-      sprintf(label, v->Format, ValMin);
-      glRasterPos2d(cv_xmin,cv_ymin+(cs_bh/2)-font_a/3.);
-      Draw_String(label); CHECK_W;
-
-      sprintf(label, v->Format, ValMax);
-      glRasterPos2d(cv_xmin,cv_ymin+cv_h-(cs_bh/2)-font_a/3.);
-      Draw_String(label); CHECK_W;
-    }
-  }
-
-  /* all the values if enough space */
-  else {
-    if(v->IntervalsType == DRAW_POST_DISCRETE ||
-       v->IntervalsType == DRAW_POST_CONTINUOUS){
-      for(i=0 ; i<nbv+1 ; i++){
-        Val = v->GVFI(ValMin,ValMax,nbv+1,i); 
-        sprintf(label, v->Format, Val);
-	/* suppressing the 2 following lines improves fltk performance
-           a lot on linux. and only on linux.  Why? */
-        glRasterPos2d(cv_xmin,cv_ymin+i*cv_bh-font_a/3.);
-        Draw_String(label); CHECK_W;
-      }
-    }
-    else {
-      for(i=0 ; i<nbv ; i++){
-        Val = v->GVFI(ValMin,ValMax,nbv,i); 
-        sprintf(label, v->Format, Val);
-        glRasterPos2d(cv_xmin,cv_ymin+(2*i+1)*(cv_bh/2)-font_a/3.);
-        Draw_String(label); CHECK_W;
-      }
-    }
-  }
-
-  /* the label */
-  
-  glRasterPos2d(cv_xmin,ymin);
-  if(List_Nbr(v->Time)>1 && v->ShowTime)
-    sprintf(label, "%s (%g)", v->Name, *(double*)List_Pointer(v->Time,v->TimeStep));
-  else
-    sprintf(label, "%s", v->Name);
-  Draw_String(label); CHECK_W;
-
-
-  /* compute the width */
-  *width = cv_xmin-cs_xmin+cv_w;
-
-}
-
-static List_T  *todraw=NULL;
-
-void Draw_Scales(void){
-  int         i;
-  double      xmin, ymin, width, height, xsep, ysep;
-  double      oldwidth, totalwidth;
-  Post_View  *v;
-
-  if(!Post_ViewList) return;
-
-  /* scales to draw ? */
-  
-  if(!todraw)
-    todraw = List_Create(5,5,sizeof(Post_View*));
-  else
-    List_Reset(todraw);
-
-  for(i=0;i<List_Nbr(Post_ViewList);i++){
-    v = (Post_View*)List_Pointer(Post_ViewList,i);
-    if(v->Visible && v->ShowScale) List_Add(todraw,&v);
-  }
-  
-  if(!List_Nbr(todraw)){
-    return;
-  }
-
-  if(List_Nbr(todraw)==1){
-    xsep = 20. ;
-    ysep = (CTX.viewport[3]-CTX.viewport[1])/6. ;
-    xmin = CTX.viewport[0] + xsep ;    
-    ymin = CTX.viewport[1] + ysep ;
-    width = 0.0;
-    height = CTX.viewport[3]-CTX.viewport[1] - 2*ysep ;
-
-    v = *((Post_View**)List_Pointer(todraw,0));
-    draw_scale(v,xmin,ymin,&width,height);
-  }
-  else{
-    xsep = 20. ;
-    ysep = (CTX.viewport[3]-CTX.viewport[1])/15. ;    
-    xmin = CTX.viewport[0] + xsep ;
-    ymin = CTX.viewport[1] + ysep ;
-    width = 0.0;
-    totalwidth = 0.0;
-    height = (CTX.viewport[3]-CTX.viewport[1]-3*ysep)/2. ;
-
-    for(i=0;i<List_Nbr(todraw);i++){
-      v = *(Post_View**)List_Pointer(todraw,i);
-      oldwidth = width;
-      draw_scale(v,
-                 xmin+totalwidth+(i/2)*xsep,
-                 ymin+(1-i%2)*(height+ysep),
-                 &width,
-                 height);      
-      if(i%2) totalwidth += DMAX(width,oldwidth);
-    }
-  }
-
-}
-
diff --git a/Graphics/XDump.cpp b/Graphics/XDump.cpp
deleted file mode 100644
index 6a7e1c9795d6ed877fba7429439751f660a416c6..0000000000000000000000000000000000000000
--- a/Graphics/XDump.cpp
+++ /dev/null
@@ -1,458 +0,0 @@
-// $Id: XDump.cpp,v 1.5 2001-01-11 14:15:09 geuzaine Exp $
-
-/* This is a modified version for Gmsh (mainly for c++ compliance) */
-
-/* Dump the image in an X xindow to a .xwd file.
- * This code was extracted by Brian Paul from the xwd program which is
- * included with X11.  The OMIT preprocessor identifier denotes regions
- * of code I've had to omit.
- */
-
-/* from xwd.c: */
-
-/* $XConsortium: xwd.c,v 1.56 91/07/25 18:00:15 rws Exp $ */
-
-/* Copyright 1987 Massachusetts Institute of Technology */
-
-/*
- * xwd.c MIT Project Athena, X Window system window raster image dumper.
- *
- * This program will dump a raster image of the contents of a window into a 
- * file for output on graphics printers or for other uses.
- *
- *  Author:        Tony Della Fera, DEC
- *                17-Jun-85
- * 
- *  Modification history:
- *
- *  11/14/86 Bill Wyatt, Smithsonian Astrophysical Observatory
- *    - Removed Z format option, changing it to an XY option. Monochrome 
- *      windows will always dump in XY format. Color windows will dump
- *      in Z format by default, but can be dumped in XY format with the
- *      -xy option.
- *
- *  11/18/86 Bill Wyatt
- *    - VERSION 6 is same as version 5 for monchrome. For colors, the 
- *      appropriate number of Color structs are dumped after the header,
- *      which has the number of colors (=0 for monochrome) in place of the
- *      V5 padding at the end. Up to 16-bit displays are supported. I
- *      don't yet know how 24- to 32-bit displays will be handled under
- *      the Version 11 protocol.
- *
- *  6/15/87 David Krikorian, MIT Project Athena
- *    - VERSION 7 runs under the X Version 11 servers, while the previous
- *      versions of xwd were are for X Version 10.  This version is based
- *      on xwd version 6, and should eventually have the same color
- *      abilities. (Xwd V7 has yet to be tested on a color machine, so
- *      all color-related code is commented out until color support
- *      becomes practical.)
- */
-
-
-/*
- * The following XCOLOR struct is to be used in place of X's XColor
- * struct because on 32-bit systems, sizeof(XColor)=12 while on 64-bit
- * systems, sizeof(XColor)=16.  We MUST have an XColor struct of size
- * 12 so a correct file is written.  BEP July-21-95
- */
-
-#ifdef _XMOTIF
-
-typedef struct {
-        unsigned int /*long*/ pixel;
-        unsigned short red, green, blue;
-        char flags;  /* do_red, do_green, do_blue */
-        char pad;
-} XCOLOR;
-
-
-#include <assert.h>
-#include <X11/Xlib.h>
-#include <X11/Xmd.h>
-#include <X11/Xutil.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <X11/XWDFile.h>
-
-static Bool debug = False;
-static Bool nobdrs = False;
-static Bool on_root = False;
-static Bool use_installed = False;
-static long add_pixel_value = 0;
-static int format = ZPixmap;
-
-static Display *dpy;
-static char *program_name = "xdump";
-static int screen;
-
-typedef unsigned long Pixel;
-
-
-
-/*
- * outl: a debugging routine.  Flushes stdout then prints a message on stderr
- *       and flushes stderr.  Used to print messages when past certain points
- *       in code so we can tell where we are.  Outl may be invoked like
- *       printf with up to 7 arguments.
- */
-/* VARARGS1 */
-static void outl( char *msg )
-{
-        fflush(stdout);
-        fprintf(stderr, "%s\n", msg );
-        fflush(stderr);
-}
-
-
-/*
- * Standard fatal error routine - call like printf but maximum of 7 arguments.
- * Does not require dpy or screen defined.
- */
-/* VARARGS1 */
-static void Fatal_Error( char *msg )
-{
-        fflush(stdout);
-        fflush(stderr);
-        fprintf(stderr, "%s: error: %s\n", program_name, msg);
-        exit(1);
-}
-
-
-/*
- * Determine the pixmap size.
- */
-
-static int Image_Size( XImage *image )
-{
-    if (image->format != ZPixmap)
-      return(image->bytes_per_line * image->height * image->depth);
-
-    return(image->bytes_per_line * image->height);
-}
-
-
-
-#define lowbit(x) ((x) & (~(x) + 1))
-
-/*
- * Get the XColors of all pixels in image - returns # of colors
- */
-static int Get_XColors( XWindowAttributes *win_info, XColor **colors )
-{
-    int i, ncolors;
-    Colormap cmap = win_info->colormap;
-
-    if (use_installed)
-        /* assume the visual will be OK ... */
-        cmap = XListInstalledColormaps(dpy, win_info->root, &i)[0];
-    if (!cmap)
-        return(0);
-
-    ncolors = win_info->visual->map_entries;
-    if (!(*colors = (XColor *) malloc (sizeof(XColor) * ncolors)))
-      Fatal_Error("Out of memory!");
-
-#if defined(__cplusplus) || defined(c_plusplus)
-    if (win_info->visual->c_class == DirectColor ||
-        win_info->visual->c_class == TrueColor) {
-#else
-    if (win_info->visual->class == DirectColor ||
-        win_info->visual->class == TrueColor) {
-#endif
-
-        Pixel red, green, blue, red1, green1, blue1;
-
-        red = green = blue = 0;
-        red1 = lowbit(win_info->visual->red_mask);
-        green1 = lowbit(win_info->visual->green_mask);
-        blue1 = lowbit(win_info->visual->blue_mask);
-        for (i=0; i<ncolors; i++) {
-          (*colors)[i].pixel = red|green|blue;
-          (*colors)[i].pad = 0;
-          red += red1;
-          if (red > win_info->visual->red_mask)
-            red = 0;
-          green += green1;
-          if (green > win_info->visual->green_mask)
-            green = 0;
-          blue += blue1;
-          if (blue > win_info->visual->blue_mask)
-            blue = 0;
-        }
-    } else {
-        for (i=0; i<ncolors; i++) {
-          (*colors)[i].pixel = i;
-          (*colors)[i].pad = 0;
-        }
-    }
-
-    XQueryColors(dpy, cmap, *colors, ncolors);
-    
-    return(ncolors);
-}
-
-
-
-static void _swapshort( char *bp, unsigned n )
-{
-    register char c;
-    register char *ep = bp + n;
-
-    while (bp < ep) {
-        c = *bp;
-        *bp = *(bp + 1);
-        bp++;
-        *bp++ = c;
-    }
-}
-
-static void _swaplong ( char *bp, unsigned n )
-{
-    register char c;
-    register char *ep = bp + n;
-    register char *sp;
-
-    while (bp < ep) {
-        sp = bp + 3;
-        c = *sp;
-        *sp = *bp;
-        *bp++ = c;
-        sp = bp + 1;
-        c = *sp;
-        *sp = *bp;
-        *bp++ = c;
-        bp += 2;
-    }
-}
-
-
-
-
-
-
-/*
- * Window_Dump: dump a window to a file which must already be open for
- *              writting.
- */
-
-
-void Window_Dump(Display *display, int scr, Window window, FILE *out){
-    unsigned long swaptest = 1;
-    XColor *colors;
-    unsigned buffer_size;
-    int win_name_size;
-    int header_size;
-    int ncolors, i;
-    char *win_name;
-    Bool got_win_name;
-    XWindowAttributes win_info;
-    XImage *image;
-    int absx, absy, x, y;
-    int width, height; /* unsigned */
-    int dwidth, dheight;
-    int bw;
-    Window dummywin;
-    XWDFileHeader header;
-
-    dpy = display;
-    screen = scr;
-
-    /*
-     * Inform the user not to alter the screen.
-     */
-#ifdef OMIT
-    Beep();
-#endif
-
-    /*
-     * Get the parameters of the window being dumped.
-     */
-    if (debug) outl("xwd: Getting target window information.\n");
-    if(!XGetWindowAttributes(dpy, window, &win_info)) 
-      Fatal_Error("Can't get target window attributes.");
-
-    /* handle any frame window */
-    if (!XTranslateCoordinates (dpy, window, RootWindow (dpy, screen), 0, 0,
-                                &absx, &absy, &dummywin)) {
-        fprintf (stderr, 
-                 "%s:  unable to translate window coordinates (%d,%d)\n",
-                 program_name, absx, absy);
-        exit (1);
-    }
-    win_info.x = absx;
-    win_info.y = absy;
-    width = win_info.width;
-    height = win_info.height;
-    bw = 0;
-
-    if (!nobdrs) {
-        absx -= win_info.border_width;
-        absy -= win_info.border_width;
-        bw = win_info.border_width;
-        width += (2 * bw);
-        height += (2 * bw);
-    }
-    dwidth = DisplayWidth (dpy, screen);
-    dheight = DisplayHeight (dpy, screen);
-
-
-    /* clip to window */
-    if (absx < 0) width += absx, absx = 0;
-    if (absy < 0) height += absy, absy = 0;
-    if (absx + width > dwidth) width = dwidth - absx;
-    if (absy + height > dheight) height = dheight - absy;
-
-    XFetchName(dpy, window, &win_name);
-    if (!win_name || !win_name[0]) {
-        win_name = "xwdump";
-        got_win_name = False;
-    } else {
-        got_win_name = True;
-    }
-
-    /* sizeof(char) is included for the null string terminator. */
-    win_name_size = strlen(win_name) + sizeof(char);
-
-    /*
-     * Snarf the pixmap with XGetImage.
-     */
-
-    x = absx - win_info.x;
-    y = absy - win_info.y;
-    if (on_root)
-        image = XGetImage (dpy, RootWindow(dpy, screen), absx, absy, width, height, AllPlanes, format);
-    else
-        image = XGetImage (dpy, window, x, y, width, height, AllPlanes, format);
-    if (!image) {
-        fprintf (stderr, "%s:  unable to get image at %dx%d+%d+%d\n",
-                 program_name, width, height, x, y);
-        exit (1);
-    }
-
-    if (add_pixel_value != 0) XAddPixel (image, add_pixel_value);
-
-    /*
-     * Determine the pixmap size.
-     */
-    buffer_size = Image_Size(image);
-
-    if (debug) outl("xwd: Getting Colors.\n");
-
-    ncolors = Get_XColors(&win_info, &colors);
-
-    /*
-     * Inform the user that the image has been retrieved.
-     */
-#ifdef OMIT
-    XBell(dpy, FEEP_VOLUME);
-    XBell(dpy, FEEP_VOLUME);
-#endif
-    XFlush(dpy);
-
-    /*
-     * Calculate header size.
-     */
-    if (debug) outl("xwd: Calculating header size.\n");
-    header_size = sizeof(header) + win_name_size;
-
-    /*
-     * Write out header information.
-     */
-    if (debug) outl("xwd: Constructing and dumping file header.\n");
-    header.header_size = (CARD32) header_size;
-    header.file_version = (CARD32) XWD_FILE_VERSION;
-    header.pixmap_format = (CARD32) format;
-    header.pixmap_depth = (CARD32) image->depth;
-    header.pixmap_width = (CARD32) image->width;
-    header.pixmap_height = (CARD32) image->height;
-    header.xoffset = (CARD32) image->xoffset;
-    header.byte_order = (CARD32) image->byte_order;
-    header.bitmap_unit = (CARD32) image->bitmap_unit;
-    header.bitmap_bit_order = (CARD32) image->bitmap_bit_order;
-    header.bitmap_pad = (CARD32) image->bitmap_pad;
-    header.bits_per_pixel = (CARD32) image->bits_per_pixel;
-    header.bytes_per_line = (CARD32) image->bytes_per_line;
-#if defined(__cplusplus) || defined(c_plusplus)
-    header.visual_class = (CARD32) win_info.visual->c_class;
-#else
-    header.visual_class = (CARD32) win_info.visual->class;
-#endif
-    header.red_mask = (CARD32) win_info.visual->red_mask;
-    header.green_mask = (CARD32) win_info.visual->green_mask;
-    header.blue_mask = (CARD32) win_info.visual->blue_mask;
-    header.bits_per_rgb = (CARD32) win_info.visual->bits_per_rgb;
-    header.colormap_entries = (CARD32) win_info.visual->map_entries;
-    header.ncolors = ncolors;
-    header.window_width = (CARD32) win_info.width;
-    header.window_height = (CARD32) win_info.height;
-    header.window_x = absx;
-    header.window_y = absy;
-    header.window_bdrwidth = (CARD32) win_info.border_width;
-
-    if (*(char *) &swaptest) {
-        _swaplong((char *) &header, sizeof(header));
-        for (i = 0; i < ncolors; i++) {
-            _swaplong((char *) &colors[i].pixel, sizeof(long));
-            _swapshort((char *) &colors[i].red, 3 * sizeof(short));
-         }
-    }
-
-    (void) fwrite((char *)&header, sizeof(header), 1, out);
-    (void) fwrite(win_name, win_name_size, 1, out);
-
-    /*
-     * Write out the color maps, if any
-     */
-
-    /*if (debug) outl("xwd: Dumping %d colors.\n", ncolors);*/
-    for (i=0;i<ncolors;i++) {
-       XCOLOR xc;
-       assert( sizeof(xc)==12 );
-       xc.pixel = colors[i].pixel;
-       xc.red   = colors[i].red;
-       xc.green = colors[i].green;
-       xc.blue  = colors[i].blue;
-       xc.flags = colors[i].flags;
-       xc.pad   = colors[i].pad;
-       (void) fwrite( (char *) &xc, sizeof(XCOLOR), 1, out );
-    } 
-/* OLD:
-    (void) fwrite((char *) colors, sizeof(XColor), ncolors, out);
-*/
-
-    /*
-     * Write out the buffer.
-     */
-    /*if (debug) outl("xwd: Dumping pixmap.  bufsize=%d\n",buffer_size);*/
-
-    /*
-     *    This copying of the bit stream (data) to a file is to be replaced
-     *  by an Xlib call which hasn't been written yet.  It is not clear
-     *  what other functions of xwd will be taken over by this (as yet)
-     *  non-existant X function.
-     */
-    (void) fwrite(image->data, (int) buffer_size, 1, out);
-
-    /*
-     * free the color buffer.
-     */
-
-    if(debug && ncolors > 0) outl("xwd: Freeing colors.\n");
-    if(ncolors > 0) free(colors);
-
-    /*
-     * Free window name string.
-     */
-    if (debug) outl("xwd: Freeing window name string.\n");
-    if (got_win_name) XFree(win_name);
-
-    /*
-     * Free image
-     */
-    XDestroyImage(image);
-}
-
-#endif //_XMOTIF
-
-
diff --git a/Graphics/XDump.h b/Graphics/XDump.h
deleted file mode 100644
index 981d0be2b0da033f15a9b0ed528f686526b1336c..0000000000000000000000000000000000000000
--- a/Graphics/XDump.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _XDUMP_H_
-#define _XDUMP_H_
-
-void Window_Dump(Display *display, int scr, Window window, FILE *out);
-
-#endif
diff --git a/Graphics/gl2gif.cpp b/Graphics/gl2gif.cpp
deleted file mode 100644
index 58f86effb87f5d6466fbe7b24c58eea9ed5d0b5d..0000000000000000000000000000000000000000
--- a/Graphics/gl2gif.cpp
+++ /dev/null
@@ -1,1415 +0,0 @@
-// $Id: gl2gif.cpp,v 1.11 2001-04-08 20:36:49 geuzaine Exp $
-
-/* 
- * gl2gif: an OpenGL to GIF printing library
- *
- * Warning: This code is really a dirty hack. It SHOULD be cleaned
- * (and most of all, all the static variables should be removed)
- * 
- *
- * Based on 
- *
- *  . libppm3.c - ppm utility library part 3
- *    Copyright (C) 1989, 1991 by Jef Poskanzer.
- *
- *  . ppmtogif.c - read a portable pixmap and produce a GIF file
- *    Copyright (C) 1989 by Jef Poskanzer.
- *
- *  . GIFCOMPR.C
- *    Lempel-Ziv compression based on 'compress.c'. 
- *    File compression ala IEEE Computer, June 1984.
- *    By Authors:  Spencer W. Thomas       (decvax!harpo!utah-cs!utah-gr!thomas)
- *                 Jim McKie               (decvax!mcvax!jim)
- *                 Steve Davies            (decvax!vax135!petsd!peora!srd)
- *                 Ken Turkowski           (decvax!decwrl!turtlevax!ken)
- *                 James A. Woods          (decvax!ihnp4!ames!jaw)
- *                 Joe Orost               (decvax!vax135!petsd!joe)
- *    GIF modifications by David Rowley (mgardi@watdcsu.waterloo.edu)
- *
- * .  ppmquant.c - quantize the colors in a pixmap down to a specified
- *    number 
- *    Copyright (C) 1989, 1991 by Jef Poskanzer.  Based on Paul
- *    Heckbert's paper "Color Image Quantization for Frame Buffer
- *    Display", SIGGRAPH '82 Proceedings, page 297.  
- *
- */
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "gl2gif.h"
-
-/* ------------------------------------------------------------------
-   PPM colormap routines
-   ------------------------------------------------------------------ */
-
-#define HASH_SIZE 20023
-#define ppm_hashpixel(p) ( ( (int) (p) & 0x7fffffff ) % HASH_SIZE )
-
-static int     static_red[MAX_GIFCOLORS];
-static int     static_green[MAX_GIFCOLORS];
-static int     static_blue[MAX_GIFCOLORS];
-static int     static_perm[MAX_GIFCOLORS], static_permi[MAX_GIFCOLORS];
-static int     static_nbcolors;
-static pixel** static_pixels;
-static colorhash_table static_cht;
-
-colorhash_table ppm_alloccolorhash( ){
-  colorhash_table cht;
-  int i;
-  
-  cht = (colorhash_table) Malloc( HASH_SIZE * sizeof(colorhist_list) );
-
-  for ( i = 0; i < HASH_SIZE; ++i )
-    cht[i] = (colorhist_list) 0;
-  
-  return cht;
-}
-
-void ppm_freecolorhash( colorhash_table cht ){
-  int i;
-  colorhist_list chl, chlnext;
-  
-  for ( i = 0; i < HASH_SIZE; ++i )
-    for ( chl = cht[i]; chl != (colorhist_list) 0; chl = chlnext ){
-      chlnext = chl->next;
-      Free( (char*) chl );
-    }
-  Free( (char*) cht );
-}
-
-colorhash_table ppm_computecolorhash( pixel ** const pixels, 
-				      const int cols, const int rows, 
-				      const int maxcolors, int * const colorsP ){
-  colorhash_table cht;
-  const pixel* pP;
-  colorhist_list chl;
-  int col, row, hash;
-  
-  cht = ppm_alloccolorhash( );
-  *colorsP = 0;
-  
-  /* Go through the entire image, building a hash table of colors. */
-  for ( row = 0; row < rows; ++row )
-    for ( col = 0, pP = pixels[row]; col < cols; ++col, ++pP ){
-      hash = ppm_hashpixel( *pP );
-      for ( chl = cht[hash]; chl != (colorhist_list) 0; chl = chl->next )
-	if ( PPM_EQUAL( chl->ch.color, *pP ) )
-	  break;
-      if ( chl != (colorhist_list) 0 )
-	++(chl->ch.value);
-      else{
-	if ( ++(*colorsP) > maxcolors ){
-	  ppm_freecolorhash( cht );
-	  return (colorhash_table) 0;
-	}
-	chl = (colorhist_list) Malloc( sizeof(struct colorhist_list_item) );
-	chl->ch.color = *pP;
-	chl->ch.value = 1;
-	chl->next = cht[hash];
-	cht[hash] = chl;
-      }
-    }
-  
-  return cht;
-}
-
-int ppm_addtocolorhash( colorhash_table cht, const pixel * const colorP, 
-			const int value ){
-  register int hash;
-  register colorhist_list chl;
-  
-  chl = (colorhist_list) Malloc( sizeof(struct colorhist_list_item) );
-  hash = ppm_hashpixel( *colorP );
-  chl->ch.color = *colorP;
-  chl->ch.value = value;
-  chl->next = cht[hash];
-  cht[hash] = chl;
-  return 0;
-}
-
-colorhist_vector ppm_colorhashtocolorhist( const colorhash_table cht, 
-					   const int maxcolors ){
-  colorhist_vector chv;
-  colorhist_list chl;
-  int i, j;
-  
-  /* Now collate the hash table into a simple colorhist array. */
-  chv = (colorhist_vector) Malloc( maxcolors * sizeof(struct colorhist_item) );
-  /* Loop through the hash table. */
-  j = 0;
-  for ( i = 0; i < HASH_SIZE; ++i )
-    for ( chl = cht[i]; chl != (colorhist_list) 0; chl = chl->next ){
-      /* Add the new entry. */
-      chv[j] = chl->ch;
-      ++j;
-    }
-  
-  /* All done. */
-  return chv;
-}
-
-colorhash_table ppm_colorhisttocolorhash( const colorhist_vector chv, 
-					  const int colors ){
-  colorhash_table cht;
-  int i, hash;
-  pixel color;
-  colorhist_list chl;
-  
-  cht = ppm_alloccolorhash( );  /* Initializes to NULLs */
-  
-  for ( i = 0; i < colors; ++i ){
-    color = chv[i].color;
-    hash = ppm_hashpixel( color );
-    for ( chl = cht[hash]; chl != (colorhist_list) 0; chl = chl->next )
-      if ( PPM_EQUAL( chl->ch.color, color ) )
-	Msg(GERROR, "GIF: same color found twice - %d %d %d", PPM_GETR(color),
-	    PPM_GETG(color), PPM_GETB(color) );
-    chl = (colorhist_list) Malloc( sizeof(struct colorhist_list_item) );
-    chl->ch.color = color;
-    chl->ch.value = i;
-    chl->next = cht[hash];
-    cht[hash] = chl;
-  }
-  
-  return cht;
-}
-
-colorhist_vector ppm_computecolorhist( pixel ** const pixels, 
-				       const int cols, const int rows, 
-				       const int maxcolors, 
-				       int * const colorsP ){
-  colorhash_table cht;
-  colorhist_vector chv;
-  
-  cht = ppm_computecolorhash( pixels, cols, rows, maxcolors, colorsP );
-  if ( cht == (colorhash_table) 0 )
-    return (colorhist_vector) 0;
-  chv = ppm_colorhashtocolorhist( cht, maxcolors );
-  ppm_freecolorhash( cht );
-  return chv;
-}
-
-
-int ppm_lookupcolor( const colorhash_table cht, const pixel * const colorP ){
-  int hash;
-  colorhist_list chl;
-  
-  hash = ppm_hashpixel( *colorP );
-  for ( chl = cht[hash]; chl != (colorhist_list) 0; chl = chl->next )
-    if ( PPM_EQUAL( chl->ch.color, *colorP ) )
-      return chl->ch.value;
-  
-  return -1;
-}
-
-void ppm_freecolorhist( colorhist_vector chv ){
-  Free( (char*) chv );
-}
-
-static int colorstobpp( int colors ){
-  int bpp;
-
-  if ( colors <= 2 )
-    bpp = 1;
-  else if ( colors <= 4 )
-    bpp = 2;
-  else if ( colors <= 8 )
-    bpp = 3;
-  else if ( colors <= 16 )
-    bpp = 4;
-  else if ( colors <= 32 )
-    bpp = 5;
-  else if ( colors <= 64 )
-    bpp = 6;
-  else if ( colors <= 128 )
-    bpp = 7;
-  else if ( colors <= 256 )
-    bpp = 8;
-  else{
-    Msg(GERROR, "GIF: can't happen: too many colors" );
-    bpp = 8 ;
-  }
-
-  return bpp;
-}
-
-
-static int sqr(int x){
-  return x*x;
-}
-
-static int closestcolor(pixel color){
-  int i,r,g,b,d,imin,dmin;
-  
-  r=(int)PPM_GETR(color);
-  g=(int)PPM_GETG(color);
-  b=(int)PPM_GETB(color);
-
-  dmin=1000000;
-  for (i=0 ; i<static_nbcolors ; i++) {
-    d = sqr(r-static_red[i]) + sqr(g-static_green[i]) + sqr(b-static_blue[i]);
-    if (d<dmin) {
-      dmin=d;
-      imin=i; 
-    } 
-  }
-  ppm_addtocolorhash(static_cht,&color,static_permi[imin]);
-  return imin;
-}
-
-
-static int GetPixel( int x, int y ){
-  int color;
-  
-  color = ppm_lookupcolor( static_cht, &static_pixels[y][x] );
-  if (color == -1)
-    color = closestcolor(static_pixels[y][x]);
-  else
-    color = static_perm[color];
-  return color;
-}
-
-
-/* ------------------------------------------------------------------
-   PPM quantization
-   ------------------------------------------------------------------ */
-
-/* #define LARGE_NORM */
-#define LARGE_LUM
-
-/* #define REP_CENTER_BOX */
-/* #define REP_AVERAGE_COLORS */
-#define REP_AVERAGE_PIXELS
-
-typedef struct box* box_vector;
-struct box{
-  int ind;
-  int colors;
-  int sum;
-};
-
-static int redcompare( const void *ch1, const void *ch2 ){
-  return (int) PPM_GETR( ((colorhist_vector)ch1)->color ) - 
-    (int) PPM_GETR( ((colorhist_vector)ch2)->color );
-}
-
-static int greencompare( const void *ch1, const void *ch2 ) {
-  return (int) PPM_GETG(((colorhist_vector) ch1)->color ) - 
-    (int) PPM_GETG( ((colorhist_vector)ch2)->color );
-}
-
-static int bluecompare(const void *ch1, const void *ch2 ) {
-  return (int) PPM_GETB(((colorhist_vector)ch1)->color ) - 
-    (int) PPM_GETB(((colorhist_vector)ch2)->color );
-}
-
-static int sumcompare(const void *b1, const void *b2 ) {
-  return(((box_vector)b2)->sum - ((box_vector)b1)->sum);
-}
-
-/*
- * Here is the fun part, the median-cut colormap generator.  This is based
- * on Paul Heckbert's paper "Color Image Quantization for Frame Buffer
- * Display", SIGGRAPH '82 Proceedings, page 297.
- */
-
-static colorhist_vector mediancut( colorhist_vector chv, int colors, 
-				   int sum, pixval maxval, int newcolors ){
-  colorhist_vector colormap;
-  box_vector bv;
-  register int bi, i;
-  int boxes;
-  
-  bv = (box_vector) malloc( sizeof(struct box) * newcolors );
-  colormap =
-    (colorhist_vector) malloc( sizeof(struct colorhist_item) * newcolors );
-  if ( bv == (box_vector) 0 || colormap == (colorhist_vector) 0 )
-    Msg(GERROR,  "GIF: out of memory" );
-  for ( i = 0; i < newcolors; ++i )
-    PPM_ASSIGN( colormap[i].color, 0, 0, 0 );
-  
-  /*
-   * Set up the initial box.
-   */
-  bv[0].ind = 0;
-  bv[0].colors = colors;
-  bv[0].sum = sum;
-  boxes = 1;
-  
-  /*
-   * Main loop: split boxes until we have enough.
-   */
-  while ( boxes < newcolors ){
-    register int indx, clrs;
-    int sm;
-    register int minr, maxr, ming, maxg, minb, maxb, v;
-    int halfsum, lowersum;
-    
-    /*
-    * Find the first splittable box.
-    */
-    for ( bi = 0; bi < boxes; ++bi )
-      if ( bv[bi].colors >= 2 )
-	break;
-    if ( bi == boxes )
-      break;	/* ran out of colors! */
-    indx = bv[bi].ind;
-    clrs = bv[bi].colors;
-    sm = bv[bi].sum;
-    
-    /*
-     * Go through the box finding the minimum and maximum of each
-     * component - the boundaries of the box.
-     */
-    minr = maxr = PPM_GETR( chv[indx].color );
-    ming = maxg = PPM_GETG( chv[indx].color );
-    minb = maxb = PPM_GETB( chv[indx].color );
-    for ( i = 1; i < clrs; ++i ){
-      v = PPM_GETR( chv[indx + i].color );
-      if ( v < minr ) minr = v;
-      if ( v > maxr ) maxr = v;
-      v = PPM_GETG( chv[indx + i].color );
-      if ( v < ming ) ming = v;
-      if ( v > maxg ) maxg = v;
-      v = PPM_GETB( chv[indx + i].color );
-      if ( v < minb ) minb = v;
-      if ( v > maxb ) maxb = v;
-    }
-    
-    /*
-     * Find the largest dimension, and sort by that component.  I have
-     * included two methods for determining the "largest" dimension;
-     * first by simply comparing the range in RGB space, and second
-     * by transforming into luminosities before the comparison.  You
-     * can switch which method is used by switching the commenting on
-     * the LARGE_ defines at the beginning of this source file.
-     */
-#ifdef LARGE_NORM
-    if ( maxr - minr >= maxg - ming && maxr - minr >= maxb - minb )
-      qsort( (char*) &(chv[indx]), clrs, sizeof(struct colorhist_item),
-	     redcompare );
-    else if ( maxg - ming >= maxb - minb )
-      qsort( (char*) &(chv[indx]), clrs, sizeof(struct colorhist_item),
-	     greencompare );
-    else
-      qsort( (char*) &(chv[indx]), clrs, sizeof(struct colorhist_item),
-	     bluecompare );
-#endif 
-
-#ifdef LARGE_LUM
-    pixel p;
-    float rl, gl, bl;
-
-    PPM_ASSIGN(p, maxr - minr, 0, 0);
-    rl = PPM_LUMIN(p);
-    PPM_ASSIGN(p, 0, maxg - ming, 0);
-    gl = PPM_LUMIN(p);
-    PPM_ASSIGN(p, 0, 0, maxb - minb);
-    bl = PPM_LUMIN(p);
-    
-    if ( rl >= gl && rl >= bl )
-      qsort( (char*) &(chv[indx]), clrs, sizeof(struct colorhist_item),
-	     &redcompare );
-    else if ( gl >= bl )
-      qsort( (char*) &(chv[indx]), clrs, sizeof(struct colorhist_item),
-	     &greencompare );
-    else
-      qsort( (char*) &(chv[indx]), clrs, sizeof(struct colorhist_item),
-	     &bluecompare );
-#endif
-    
-    /*
-     * Now find the median based on the counts, so that about half the
-     * pixels (not colors, pixels) are in each subdivision.
-     */
-    lowersum = chv[indx].value;
-    halfsum = sm / 2;
-    for ( i = 1; i < clrs - 1; ++i ){
-      if ( lowersum >= halfsum )
-	break;
-      lowersum += chv[indx + i].value;
-    }
-    
-    /*
-    * Split the box, and sort to bring the biggest boxes to the top.
-    */
-    bv[bi].colors = i;
-    bv[bi].sum = lowersum;
-    bv[boxes].ind = indx + i;
-    bv[boxes].colors = clrs - i;
-    bv[boxes].sum = sm - lowersum;
-    ++boxes;
-    qsort( (char*) bv, boxes, sizeof(struct box), sumcompare );
-  }
-
-  /*
-   * Ok, we've got enough boxes.  Now choose a representative color for
-   * each box.  There are a number of possible ways to make this choice.
-   * One would be to choose the center of the box; this ignores any structure
-   * within the boxes.  Another method would be to average all the colors in
-   * the box - this is the method specified in Heckbert's paper.  A third
-   * method is to average all the pixels in the box.  You can switch which
-   * method is used by switching the commenting on the REP_ defines at
-   * the beginning of this source file.
-   */
-  for ( bi = 0; bi < boxes; ++bi ){
-
-#ifdef REP_CENTER_BOX
-    register int indx = bv[bi].ind;
-    register int clrs = bv[bi].colors;
-    register int minr, maxr, ming, maxg, minb, maxb, v;
-    
-    minr = maxr = PPM_GETR( chv[indx].color );
-    ming = maxg = PPM_GETG( chv[indx].color );
-    minb = maxb = PPM_GETB( chv[indx].color );
-    for ( i = 1; i < clrs; ++i ){
-      v = PPM_GETR( chv[indx + i].color );
-      minr = min( minr, v );
-      maxr = max( maxr, v );
-      v = PPM_GETG( chv[indx + i].color );
-      ming = min( ming, v );
-      maxg = max( maxg, v );
-      v = PPM_GETB( chv[indx + i].color );
-      minb = min( minb, v );
-      maxb = max( maxb, v );
-    }
-    PPM_ASSIGN( colormap[bi].color, ( minr + maxr ) / 2, ( ming + maxg ) / 2,
-		( minb + maxb ) / 2 );
-#endif
-
-#ifdef REP_AVERAGE_COLORS
-    register int indx = bv[bi].ind;
-    register int clrs = bv[bi].colors;
-    register long r = 0, g = 0, b = 0;
-    
-    for ( i = 0; i < clrs; ++i ){
-      r += PPM_GETR( chv[indx + i].color );
-      g += PPM_GETG( chv[indx + i].color );
-      b += PPM_GETB( chv[indx + i].color );
-    }
-    r = r / clrs;
-    g = g / clrs;
-    b = b / clrs;
-    PPM_ASSIGN( colormap[bi].color, r, g, b );
-#endif
-
-#ifdef REP_AVERAGE_PIXELS
-    register int indx = bv[bi].ind;
-    register int clrs = bv[bi].colors;
-    register long r = 0, g = 0, b = 0, sum = 0;
-    
-    for ( i = 0; i < clrs; ++i ){
-      r += PPM_GETR( chv[indx + i].color ) * chv[indx + i].value;
-      g += PPM_GETG( chv[indx + i].color ) * chv[indx + i].value;
-      b += PPM_GETB( chv[indx + i].color ) * chv[indx + i].value;
-      sum += chv[indx + i].value;
-    }
-    r = r / sum;
-    if ( r > (long)maxval ) r = maxval;	/* avoid math errors */
-    g = g / sum;
-    if ( g > (long)maxval ) g = maxval;
-    b = b / sum;
-    if ( b > (long)maxval ) b = maxval;
-    PPM_ASSIGN( colormap[bi].color, r, g, b );
-#endif
-  }
-  
-  /*
-   * All done.
-   */
-  return colormap;
-}
-
-
-/*------------------------------------------------------------------
-  GIF compression routines
-  ------------------------------------------------------------------*/
-
-#define BITS    12
-#define HSIZE   5003  /* 80% occupancy */
-#define TRUE    1
-#define FALSE   0
-
-typedef unsigned char   char_type;
-typedef int (* ifunptr)(int, int);
-
-static int    g_init_bits;
-static FILE*  g_outfile;
-static int    Width, Height;
-static int    curx, cury;
-static long   CountDown;
-static int    Pass = 0;
-static int    Interlace;
-
-#include <ctype.h>
-
-#define ARGVAL() (*++(*argv) || (--argc && *++argv))
-
-static int       n_bits;            /* number of bits/code */
-static int       maxbits = BITS;    /* user settable max # bits/code */
-static code_int  maxcode;           /* maximum code, given n_bits */
-static code_int  maxmaxcode = (code_int)1 << BITS; 
-                                    /* should NEVER generate this code */
-
-#define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
-
-static count_int htab [HSIZE];
-static unsigned short codetab [HSIZE];
-#define HashTabOf(i)    htab[i]
-#define CodeTabOf(i)    codetab[i]
-
-static code_int  hsize = HSIZE;     /* for dynamic table sizing */
-
-/*
- * To save much memory, we overlay the table used by compress() with those
- * used by decompress().  The tab_prefix table is the same size and type
- * as the codetab.  The tab_suffix table needs 2**BITS characters.  We
- * get this from the beginning of htab.  The output stack uses the rest
- * of htab, and contains characters.  There is plenty of room for any
- * possible stack (stack used to be 8000 characters).
- */
-
-#define tab_prefixof(i)  CodeTabOf(i)
-#define tab_suffixof(i)  ((char_type*)(htab))[i]
-#define de_stack         ((char_type*)&tab_suffixof((code_int)1<<BITS))
-
-static code_int free_ent = 0;             /* first unused entry */
-
-/*
- * block compression parameters -- after all codes are used up,
- * and compression rate changes, start over.
- */
-static int clear_flg = 0;
-
-static long int in_count = 1;            /* length of input */
-static long int out_count = 0;           /* # of codes output (for debugging) */
-static int ClearCode;
-static int EOFCode;
-
-/*
- * Number of characters so far in this 'packet'
- */
-static int a_count;
-
-/*
- * Set up the 'byte output' routine
- */
-static void char_init(){
-  a_count = 0;
-}
-
-/*
- * Define the storage for the packet accumulator
- */
-static char accum[ 256 ];
-
-
-/*
- * Flush the packet to disk, and reset the accumulator
- */
-static void flush_char(){
-  if( a_count > 0 ) {
-    fputc( a_count, g_outfile );
-    fwrite( accum, 1, a_count, g_outfile );
-    a_count = 0;
-  }
-}
-
-/*
- * Add a character to the end of the current packet, and if it is 254
- * characters, flush the packet to disk.
- */
-static void char_out( int c){
-  accum[ a_count++ ] = c;
-  if( a_count >= 254 )
-    flush_char();
-}
-
-/*
- * Bump the 'curx' and 'cury' to point to the next pixel
- */
-
-static void BumpPixel(){
-  /*
-   * Bump the current X position
-   */
-  ++curx;
-  
-  /*
-   * If we are at the end of a scan line, set curx back to the beginning
-   * If we are interlaced, bump the cury to the appropriate spot,
-   * otherwise, just increment it.
-   */
-  if( curx == Width ) {
-    curx = 0;
-    
-    if( !Interlace )
-      ++cury;
-    else {
-      switch( Pass ) {
-	
-      case 0:
-	cury += 8;
-	if( cury >= Height ) {
-	  ++Pass;
-	  cury = 4;
-	}
-	break;
-	
-      case 1:
-	cury += 8;
-	if( cury >= Height ) {
-	  ++Pass;
-	  cury = 2;
-	}
-	break;
-	
-      case 2:
-	cury += 4;
-	if( cury >= Height ) {
-	  ++Pass;
-	  cury = 1;
-	}
-	break;
-	
-      case 3:
-	cury += 2;
-	break;
-      }
-    }
-  }
-}
-
-
-/*
- * Return the next pixel from the image
- */
-static int GIFNextPixel( ifunptr getpixel){
-  int r;
-
-  if( CountDown == 0 )
-    return EOF;
-  
-  --CountDown;
-  
-  r = ( * getpixel )( curx, cury );
-  
-  BumpPixel();
-  
-  return r;
-}
-
-
-/*
- * Output the given code.
- * Inputs:
- *      code:   A n_bits-bit integer.  If == -1, then EOF.  This assumes
- *              that n_bits =< (long)wordsize - 1.
- * Outputs:
- *      Outputs code to the file.
- * Assumptions:
- *      Chars are 8 bits long.
- * Algorithm:
- *      Maintain a BITS character long buffer (so that 8 codes will
- * fit in it exactly).  Use the VAX insv instruction to insert each
- * code in turn.  When the buffer fills up empty it and start over.
- */
-
-static unsigned long cur_accum = 0;
-static int cur_bits = 0;
-
-static unsigned long masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F,
-				 0x001F, 0x003F, 0x007F, 0x00FF,
-				 0x01FF, 0x03FF, 0x07FF, 0x0FFF,
-				 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
-
-static void output( code_int  code){
-  cur_accum &= masks[ cur_bits ];
-  
-  if( cur_bits > 0 )
-    cur_accum |= ((long)code << cur_bits);
-  else
-    cur_accum = code;
-  
-  cur_bits += n_bits;
-  
-  while( cur_bits >= 8 ) {
-    char_out( (unsigned int)(cur_accum & 0xff) );
-    cur_accum >>= 8;
-    cur_bits -= 8;
-  }
-  
-  /*
-   * If the next entry is going to be too big for the code size,
-   * then increase it, if possible.
-   */
-  if ( free_ent > maxcode || clear_flg ) {
-    
-    if( clear_flg ) {
-      maxcode = MAXCODE (n_bits = g_init_bits);
-      clear_flg = 0;
-    } 
-    else {
-      ++n_bits;
-      if ( n_bits == maxbits )
-	maxcode = maxmaxcode;
-      else
-	maxcode = MAXCODE(n_bits);
-    }
-  }
-  
-  if( code == EOFCode ) {
-    /*
-     * At EOF, write the rest of the buffer.
-     */
-    while( cur_bits > 0 ) {
-      char_out( (unsigned int)(cur_accum & 0xff) );
-      cur_accum >>= 8;
-      cur_bits -= 8;
-    }
-    
-    flush_char();
-    
-    fflush( g_outfile );
-    
-    if( ferror( g_outfile ) )
-      Msg(GERROR, "GIF: Error writing output file");
-  }
-}
-
-
-/*
- * compress 
- *
- * Algorithm:  use open addressing double hashing (no chaining) on the
- * prefix code / next character combination.  We do a variant of Knuth's
- * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
- * secondary probe.  Here, the modular division first probe is gives way
- * to a faster exclusive-or manipulation.  Also do block compression with
- * an adaptive reset, whereby the code table is cleared when the compression
- * ratio decreases, but after the table fills.  The variable-length output
- * codes are re-sized at this point, and a special CLEAR code is generated
- * for the decompressor.  Late addition:  construct the table according to
- * file size for noticeable speed improvement on small files.  Please direct
- * questions about this implementation to ames!jaw.
- */
-
-static void cl_hash(register count_int hsize){          /* reset code table */
-  register count_int *htab_p = htab+hsize;
-  
-  register long i;
-  register long m1 = -1;
-  
-  i = hsize - 16;
-  do {                            /* might use Sys V memset(3) here */
-    *(htab_p-16) = m1;
-    *(htab_p-15) = m1;
-    *(htab_p-14) = m1;
-    *(htab_p-13) = m1;
-    *(htab_p-12) = m1;
-    *(htab_p-11) = m1;
-    *(htab_p-10) = m1;
-    *(htab_p-9) = m1;
-    *(htab_p-8) = m1;
-    *(htab_p-7) = m1;
-    *(htab_p-6) = m1;
-    *(htab_p-5) = m1;
-    *(htab_p-4) = m1;
-    *(htab_p-3) = m1;
-    *(htab_p-2) = m1;
-    *(htab_p-1) = m1;
-    htab_p -= 16;
-  } while ((i -= 16) >= 0);
-  
-  for ( i += 16; i > 0; --i )
-    *--htab_p = m1;
-}
-
-
-/*
- * Clear out the hash table
- */
-static void cl_block (){             /* table clear for block compress */
-  
-  cl_hash ( (count_int) hsize );
-  free_ent = ClearCode + 2;
-  clear_flg = 1;
-  
-  output( (code_int)ClearCode );
-}
-
-static void compress( int init_bits, FILE* outfile, ifunptr ReadValue){
-  register long fcode;
-  register code_int i /* = 0 */;
-  register int c;
-  register code_int ent;
-  register code_int disp;
-  register code_int hsize_reg;
-  register int hshift;
-
-  /*
-   * Set up the globals:  g_init_bits - initial number of bits
-   *                      g_outfile   - pointer to output file
-   */
-  g_init_bits = init_bits;
-  g_outfile = outfile;
-  
-  /*
-   * Set up the necessary values
-   */
-  out_count = 0;
-  clear_flg = 0;
-  in_count = 1;
-  maxcode = MAXCODE(n_bits = g_init_bits);
-  
-  ClearCode = (1 << (init_bits - 1));
-  EOFCode = ClearCode + 1;
-  free_ent = ClearCode + 2;
-  
-  char_init();
-  
-  ent = GIFNextPixel( ReadValue );
-  
-  hshift = 0;
-  for ( fcode = (long) hsize;  fcode < 65536L; fcode *= 2L )
-    ++hshift;
-  hshift = 8 - hshift;                /* set hash code range bound */
-  
-  hsize_reg = hsize;
-  cl_hash( (count_int) hsize_reg);            /* clear hash table */
-  
-  output( (code_int)ClearCode );
-  
-  while ( (c = GIFNextPixel( ReadValue )) != EOF ) {
-    
-    ++in_count;
-    
-    fcode = (long) (((long) c << maxbits) + ent);
-    i = (((code_int)c << hshift) ^ ent);    /* xor hashing */
-    
-    if ( HashTabOf (i) == fcode ) {
-      ent = CodeTabOf (i);
-      continue;
-    } else if ( (long)HashTabOf (i) < 0 )      /* empty slot */
-      goto nomatch;
-    disp = hsize_reg - i;           /* secondary hash (after G. Knott) */
-    if ( i == 0 )
-      disp = 1;
-probe:
-    if ( (i -= disp) < 0 )
-      i += hsize_reg;
-    
-    if ( HashTabOf (i) == fcode ) {
-      ent = CodeTabOf (i);
-      continue;
-    }
-    if ( (long)HashTabOf (i) > 0 )
-      goto probe;
-nomatch:
-    output ( (code_int) ent );
-    ++out_count;
-    ent = c;
-    if ( free_ent < maxmaxcode ) { 
-      CodeTabOf (i) = free_ent++; /* code -> hashtable */
-      HashTabOf (i) = fcode;
-    } else
-      cl_block();
-  }
-  /*
-   * Put out the final code.
-   */
-  output( (code_int)ent );
-  ++out_count;
-  output( (code_int) EOFCode );
-}
-
-
-/*
- * Write out a word to the GIF file
- */
-static void Putword( int w, FILE* fp){
-  fputc( w & 0xff, fp );
-  fputc( (w / 256) & 0xff, fp );
-}
-
-
-static void GIFEncode( FILE* fp,
-		       int GWidth, int GHeight,
-		       int GInterlace, int Background, int Transparent,
-		       int BitsPerPixel, int Red[], int Green[], int Blue[],
-		       ifunptr GetPixel){
-  int B;
-  int RWidth, RHeight;
-  int LeftOfs, TopOfs;
-  int Resolution;
-  int ColorMapSize;
-  int InitCodeSize;
-  int i;
-
-  /* reset stuff for output */
-  cur_accum = 0;
-  cur_bits = 0;
-  free_ent = 0;
-
-  Interlace = GInterlace;
-  
-  ColorMapSize = 1 << BitsPerPixel;
-  
-  RWidth = Width = GWidth;
-  RHeight = Height = GHeight;
-  LeftOfs = TopOfs = 0;
-  
-  Resolution = BitsPerPixel;
-  
-  /*
-   * Calculate number of bits we are expecting
-   */
-  CountDown = (long)Width * (long)Height;
-  
-  /*
-   * Indicate which pass we are on (if interlace)
-   */
-  Pass = 0;
-  
-  /*
-   * The initial code size
-   */
-  if( BitsPerPixel <= 1 )
-    InitCodeSize = 2;
-  else
-    InitCodeSize = BitsPerPixel;
-  
-  /*
-   * Set up the current x and y position
-   */
-  curx = cury = 0;
-  
-  /*
-   * Write the Magic header
-   */
-  fwrite( Transparent < 0 ? "GIF87a" : "GIF89a", 1, 6, fp );
-  
-  /*
-   * Write out the screen width and height
-   */
-  Putword( RWidth, fp );
-  Putword( RHeight, fp );
-  
-  /*
-   * Indicate that there is a global colour map
-   */
-  B = 0x80;       /* Yes, there is a color map */
-  
-  /*
-   * OR in the resolution
-   */
-  B |= (Resolution - 1) << 5;
-  
-  /*
-   * OR in the Bits per Pixel
-   */
-  B |= (BitsPerPixel - 1);
-  
-  /*
-   * Write it out
-   */
-  fputc( B, fp );
-  
-  /*
-   * Write out the Background colour
-   */
-  fputc( Background, fp );
-  
-  /*
-   * Byte of 0's (future expansion)
-   */
-  fputc( 0, fp );
-  
-  /*
-   * Write out the Global Colour Map
-   */
-  for( i=0; i<ColorMapSize; ++i ) {
-    fputc( Red[i], fp );
-    fputc( Green[i], fp );
-    fputc( Blue[i], fp );
-  }
-  
-  /*
-   * Write out extension for transparent colour index, if necessary.
-   */
-  if ( Transparent >= 0 ) {
-    fputc( '!', fp );
-    fputc( 0xf9, fp );
-    fputc( 4, fp );
-    fputc( 1, fp );
-    fputc( 0, fp );
-    fputc( 0, fp );
-    fputc( Transparent, fp );
-    fputc( 0, fp );
-  }
-  
-  /*
-   * Write an Image separator
-   */
-  fputc( ',', fp );
-  
-  /*
-   * Write the Image header
-   */
-  
-  Putword( LeftOfs, fp );
-  Putword( TopOfs, fp );
-  Putword( Width, fp );
-  Putword( Height, fp );
-  
-  /*
-   * Write out whether or not the image is interlaced
-   */
-  if( Interlace )
-    fputc( 0x40, fp );
-  else
-    fputc( 0x00, fp );
-  
-  /*
-   * Write out the initial code size
-   */
-  fputc( InitCodeSize, fp );
-  
-  /*
-   * Go and actually compress the data
-   */
-  compress( InitCodeSize+1, fp, GetPixel );
-  
-  /*
-   * Write out a Zero-length packet (to end the series)
-   */
-  fputc( 0, fp );
-  
-  /*
-   * Write the GIF file terminator
-   */
-  fputc( ';', fp );
-  
-}
-
-
-/* ------------------------------------------------------------------
-   GL2GIF public routine
-   ------------------------------------------------------------------ */
-
-#define FS_SCALE   1024
-#define MAXCOL2    32767
-
-void create_gif(FILE *outfile, int width, int height, 
-		int dither, int sort, int interlace, 
-		int transparency, int bg_r, int bg_g, int bg_b){
-
-  int i,j,k,transparent,rows,cols;
-  pixel transcolor;
-  colorhist_vector chv, colormap;
-  int BitsPerPixel, usehash;
-  unsigned char *RedBuffer, *GreenBuffer, *BlueBuffer;
-  pixval maxval=MAXCOL2, newmaxval;
-  colorhash_table cht;
-  register pixel* pP;
-  register int col, row, limitcol, ind;
-  int newcolors=256;
-  long *thisrerr, *nextrerr, *thisgerr, *nextgerr;
-  long *thisberr, *nextberr, *temperr;
-  register long sr=0, sg=0, sb=0, err=0;
-  int fs_direction;
-
-  /* This is stupid, but I couldn't figure out how to pack the data
-   directly from the OpenGL frame buffer into unsigned long pixel[][] */
-
-  //printf("read buff : %g \n", Cpu());
-
-  glPixelStorei(GL_PACK_ALIGNMENT,1);
-  glPixelStorei(GL_UNPACK_ALIGNMENT,1);
-  RedBuffer = (unsigned char *)Malloc(height*width*sizeof(unsigned char));
-  GreenBuffer = (unsigned char *)Malloc(height*width*sizeof(unsigned char));
-  BlueBuffer = (unsigned char *)Malloc(height*width*sizeof(unsigned char));
-  glReadPixels(0,0,width,height,GL_RED,GL_UNSIGNED_BYTE,RedBuffer);
-  glReadPixels(0,0,width,height,GL_GREEN,GL_UNSIGNED_BYTE,GreenBuffer);
-  glReadPixels(0,0,width,height,GL_BLUE,GL_UNSIGNED_BYTE,BlueBuffer);
-
-  static_pixels = (pixel**)Malloc(height*sizeof(pixel*));
-  for(i = 0 ; i<height ; i++)
-    static_pixels[i] = (pixel*)Malloc(3*width*sizeof(pixel));
-
-  for(i = 0 ; i<height ; i++)
-    for(j = 0 ; j<width ; j++)
-      PPM_ASSIGN(static_pixels[height-1-i][j], 
-		 RedBuffer[i*width+j],
-		 GreenBuffer[i*width+j],
-		 BlueBuffer[i*width+j]);
-
-  Free(RedBuffer);
-  Free(GreenBuffer);
-  Free(BlueBuffer);
-
-  //printf("start gif : %g \n", Cpu());
-
-  /* Try to compute color histogram */
-
-  chv = ppm_computecolorhist( static_pixels, width, height, MAX_GIFCOLORS, 
-			      &static_nbcolors );
-
-
-  /* Fuck, there are more than 256 colors in the picture: we need to quantize */
-
-  if ( chv == (colorhist_vector) 0 ){
-
-    Msg(DEBUG, "GIF: too many colors in image");
-    
-    rows = height ;
-    cols = width ;
-
-    while(1){
-      Msg(DEBUG, "GIF: making histogram..." );
-      chv = ppm_computecolorhist(static_pixels, width, height, MAXCOL2, 
-				 &static_nbcolors );
-      if ( chv != (colorhist_vector) 0 )
-	break;
-      Msg(DEBUG, "GIF: still too many colors!" );
-      newmaxval = maxval / 2;
-      Msg(DEBUG, "GIF: scaling colors from maxval=%d to maxval=%d to improve clustering...",
-	  maxval, newmaxval );
-      for ( row = 0; row < rows; ++row )
-	for ( col = 0, pP = static_pixels[row]; col < cols; ++col, ++pP )
-	  PPM_DEPTH( *pP, *pP, maxval, newmaxval );
-      maxval = newmaxval;
-    }
-    Msg(DEBUG, "GIF: %d colors found", static_nbcolors );
-    Msg(DEBUG, "GIF: choosing %d colors...", newcolors );
-    colormap = mediancut( chv, static_nbcolors, rows * cols, maxval, newcolors );
-
-    cht = ppm_alloccolorhash( );
-
-    ppm_freecolorhist( chv );
-
-    /* map the colors in the image to their closest match in the new colormap */
-    Msg(DEBUG, "GIF: mapping image to new colors..." );
-    usehash = 1;
-
-    if ( dither ){
-      Msg(DEBUG, "GIF: Floyd-Steinberg dithering is selected..." );
-      /* Initialize Floyd-Steinberg error vectors. */
-      thisrerr = (long*) Malloc( (cols + 2)* sizeof(long) );
-      nextrerr = (long*) Malloc( (cols + 2)* sizeof(long) );
-      thisgerr = (long*) Malloc( (cols + 2)* sizeof(long) );
-      nextgerr = (long*) Malloc( (cols + 2)* sizeof(long) );
-      thisberr = (long*) Malloc( (cols + 2)* sizeof(long) );
-      nextberr = (long*) Malloc( (cols + 2)* sizeof(long) );
-      /* srand( (int) ( time( 0 ) ^ getpid( ) ) ); */
-      for ( col = 0; col < cols + 2; ++col ){
-	thisrerr[col] = rand( ) % ( FS_SCALE * 2 ) - FS_SCALE;
-	thisgerr[col] = rand( ) % ( FS_SCALE * 2 ) - FS_SCALE;
-	thisberr[col] = rand( ) % ( FS_SCALE * 2 ) - FS_SCALE;
-	/* (random errors in [-1 .. 1]) */
-      }
-      fs_direction = 1;
-    }
-    for ( row = 0; row < rows; ++row ){
-
-      if ( dither )
-	for ( col = 0; col < cols + 2; ++col )
-	  nextrerr[col] = nextgerr[col] = nextberr[col] = 0;
-
-      if ( ( ! dither ) || fs_direction ){
-	col = 0;
-	limitcol = cols;
-	pP = static_pixels[row];
-      }
-      else{
-	col = cols - 1;
-	limitcol = -1;
-	pP = &(static_pixels[row][col]);
-      }
-
-      do{
-
-	if ( dither ){
-	  /* Use Floyd-Steinberg errors to adjust actual color. */
-	  sr = PPM_GETR(*pP) + thisrerr[col + 1] / FS_SCALE;
-	  sg = PPM_GETG(*pP) + thisgerr[col + 1] / FS_SCALE;
-	  sb = PPM_GETB(*pP) + thisberr[col + 1] / FS_SCALE;
-	  if ( sr < 0 ) sr = 0;
-	  else if ( sr > (long)maxval ) sr = maxval;
-	  if ( sg < 0 ) sg = 0;
-	  else if ( sg > (long)maxval ) sg = maxval;
-	  if ( sb < 0 ) sb = 0;
-	  else if ( sb > (long)maxval ) sb = maxval;
-	  PPM_ASSIGN( *pP, sr, sg, sb );
-	}
-
-	/* Check hash table to see if we have already matched this color. */
-	ind = ppm_lookupcolor( cht, pP );
-	if ( ind == -1 ){ /* No; search colormap for closest match. */
-	  register int i, r1, g1, b1, r2, g2, b2;
-	  register long dist, newdist;
-	  r1 = PPM_GETR( *pP );
-	  g1 = PPM_GETG( *pP );
-	  b1 = PPM_GETB( *pP );
-	  dist = 2000000000;
-	  for ( i = 0; i < newcolors; ++i ){
-	    r2 = PPM_GETR( colormap[i].color );
-	    g2 = PPM_GETG( colormap[i].color );
-	    b2 = PPM_GETB( colormap[i].color );
-	    newdist =
-	      ( r1 - r2 ) * ( r1 - r2 ) +
-	      ( g1 - g2 ) * ( g1 - g2 ) +
-	      ( b1 - b2 ) * ( b1 - b2 );
-	    if ( newdist < dist ){
-	      ind = i;
-	      dist = newdist;
-	    }
-	  }
-	  if ( usehash ){
-	    if ( ppm_addtocolorhash( cht, pP, ind ) < 0 ){
-	      Msg(WARNING, "GIF: Out of memory adding to hash table, proceeding without it");
-	      usehash = 0;
-	    }
-	  }
-	}
-	
-	if ( dither ){
-	  /* Propagate Floyd-Steinberg error terms. */
-	  if ( fs_direction ){
-	    err = ( sr - (long) PPM_GETR( colormap[ind].color ) ) * FS_SCALE;
-	    thisrerr[col + 2] += ( err * 7 ) / 16;
-	    nextrerr[col    ] += ( err * 3 ) / 16;
-	    nextrerr[col + 1] += ( err * 5 ) / 16;
-	    nextrerr[col + 2] += ( err     ) / 16;
-	    err = ( sg - (long) PPM_GETG( colormap[ind].color ) ) * FS_SCALE;
-	    thisgerr[col + 2] += ( err * 7 ) / 16;
-	    nextgerr[col    ] += ( err * 3 ) / 16;
-	    nextgerr[col + 1] += ( err * 5 ) / 16;
-	    nextgerr[col + 2] += ( err     ) / 16;
-	    err = ( sb - (long) PPM_GETB( colormap[ind].color ) ) * FS_SCALE;
-	    thisberr[col + 2] += ( err * 7 ) / 16;
-	    nextberr[col    ] += ( err * 3 ) / 16;
-	    nextberr[col + 1] += ( err * 5 ) / 16;
-	    nextberr[col + 2] += ( err     ) / 16;
-	  }
-	  else{
-	    err = ( sr - (long) PPM_GETR( colormap[ind].color ) ) * FS_SCALE;
-	    thisrerr[col    ] += ( err * 7 ) / 16;
-	    nextrerr[col + 2] += ( err * 3 ) / 16;
-	    nextrerr[col + 1] += ( err * 5 ) / 16;
-	    nextrerr[col    ] += ( err     ) / 16;
-	    err = ( sg - (long) PPM_GETG( colormap[ind].color ) ) * FS_SCALE;
-	    thisgerr[col    ] += ( err * 7 ) / 16;
-	    nextgerr[col + 2] += ( err * 3 ) / 16;
-	    nextgerr[col + 1] += ( err * 5 ) / 16;
-	    nextgerr[col    ] += ( err     ) / 16;
-	    err = ( sb - (long) PPM_GETB( colormap[ind].color ) ) * FS_SCALE;
-	    thisberr[col    ] += ( err * 7 ) / 16;
-	    nextberr[col + 2] += ( err * 3 ) / 16;
-	    nextberr[col + 1] += ( err * 5 ) / 16;
-	    nextberr[col    ] += ( err     ) / 16;
-	  }
-	}
-	
-	*pP = colormap[ind].color;
-
-	if ( ( ! dither ) || fs_direction ){
-	  ++col;
-	  ++pP;
-	}
-	else{
-	  --col;
-	  --pP;
-	}
-      }
-      while ( col != limitcol );
-      
-      if ( dither ){
-	temperr = thisrerr;
-	thisrerr = nextrerr;
-	nextrerr = temperr;
-	temperr = thisgerr;
-	thisgerr = nextgerr;
-	nextgerr = temperr;
-	temperr = thisberr;
-	thisberr = nextberr;
-	nextberr = temperr;
-	fs_direction = ! fs_direction;
-      }
-
-    }
-
-    if(cht) ppm_freecolorhash(cht);
-    if(dither){
-      Free(thisrerr);
-      Free(nextrerr);
-      Free(thisgerr);
-      Free(nextgerr);
-      Free(thisberr);
-      Free(nextberr);
-    }
-    chv = ppm_computecolorhist( static_pixels, width, height, MAX_GIFCOLORS,
-				&static_nbcolors );
-
-  }
-
-  //printf("ok with colormap : %g \n", Cpu());
-
-  /* We now have a colormap of maximum 256 colors */
-
-  for ( i = 0; i < static_nbcolors; ++i ){
-    static_red[i] = PPM_GETR( chv[i].color );
-    static_green[i] = PPM_GETG( chv[i].color );
-    static_blue[i] = PPM_GETB( chv[i].color );
-  }
-
-  /* Sort the colormap */
-  for (i=0 ; i<static_nbcolors ; i++)
-    static_permi[i] = i;
-  if (sort) {
-    Msg(DEBUG, "GIF: sorting colormap");
-    for (i=0 ; i<static_nbcolors ; i++)
-      for (j=i+1 ; j<static_nbcolors ; j++)
-	if (((static_red[i]*MAX_GIFCOLORS)+static_green[i])*MAX_GIFCOLORS+static_blue[i] >
-	    ((static_red[j]*MAX_GIFCOLORS)+static_green[j])*MAX_GIFCOLORS+static_blue[j]) {
-	  k = static_permi[i]; static_permi[i] = static_permi[j]; static_permi[j] = k;
-	  k = static_red[i]; static_red[i] = static_red[j]; static_red[j] = k;
-	  k = static_green[i]; static_green[i] = static_green[j]; static_green[j] = k;
-	  k = static_blue[i]; static_blue[i] = static_blue[j]; static_blue[j] = k; 
-	} 
-  }
-  for (i=0 ; i<static_nbcolors ; i++)
-    static_perm[static_permi[i]]=i;
-  
-  BitsPerPixel = colorstobpp( static_nbcolors );
-
-  /* And make a hash table for fast lookup. */
-  static_cht = ppm_colorhisttocolorhash( chv, static_nbcolors );
-  ppm_freecolorhist( chv );
-  
-  /* figure out the transparent colour index */
-  if (transparency) {
-    PPM_ASSIGN(transcolor, bg_r, bg_g, bg_b);
-    transparent = ppm_lookupcolor( static_cht, &transcolor );
-    if (transparent == -1)
-      transparent = closestcolor( transcolor );
-    else
-      transparent = static_perm[transparent];
-  }
-  else
-    transparent = -1 ;
-
-  //printf("ok with sort : %g \n", Cpu());
-
-  /* All set, let's do it. */
-  GIFEncode(outfile, width, height, interlace, 0, transparent, BitsPerPixel,
-	    static_red, static_green, static_blue, GetPixel );
-
-  for(i = 0 ; i<height ; i++)
-    Free(static_pixels[i]);
-  Free(static_pixels);
-
-  //printf("finished gif : %g \n", Cpu());
-
-}
-
diff --git a/Graphics/gl2gif.h b/Graphics/gl2gif.h
deleted file mode 100644
index 66bf70b60d6f434bb656d9ee5869a8c68f87715d..0000000000000000000000000000000000000000
--- a/Graphics/gl2gif.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _GL2GIF_H_
-#define _GL2GIF_H_
-
-#define MAX_GIFCOLORS  256
-
-/* New types */
-
-typedef unsigned int   pixval;
-typedef unsigned long  pixel;
-typedef int            code_int;
-typedef long int       count_int;
-
-/* PPM handling */
-
-#define PPM_GETR(p)    (((p) & 0x3ff00000) >> 20)
-#define PPM_GETG(p)    (((p) & 0xffc00) >> 10)
-#define PPM_GETB(p)    ((p) & 0x3ff)
-#define PPM_EQUAL(p,q) ((p) == (q))
-
-#define PPM_ASSIGN(p,red,grn,blu) \
-  (p) = ((pixel) (red) << 20) | ((pixel) (grn) << 10) | (pixel) (blu)
-
-#define PPM_LUMIN(p) ( 0.299 * PPM_GETR(p) + 0.587 * PPM_GETG(p) + 0.114 * PPM_GETB(p) )
-
-#define PPM_DEPTH(newp,p,oldmaxval,newmaxval) \
-  PPM_ASSIGN( (newp), \
-    ( (int) PPM_GETR(p) * (newmaxval) + (oldmaxval) / 2 ) / (oldmaxval), \
-    ( (int) PPM_GETG(p) * (newmaxval) + (oldmaxval) / 2 ) / (oldmaxval), \
-    ( (int) PPM_GETB(p) * (newmaxval) + (oldmaxval) / 2 ) / (oldmaxval) )
-
-/* Color histogram stuff */
-
-typedef struct colorhist_item* colorhist_vector;
-struct colorhist_item {
-  pixel color;
-  int value;
-};
-
-typedef struct colorhist_list_item* colorhist_list;
-struct colorhist_list_item {
-  struct colorhist_item ch;
-  colorhist_list next;
-};
-
-/* Color hash table stuff */
-
-typedef colorhist_list* colorhash_table;
-
-/* Public function */
-
-void create_gif(FILE *outfile, int width, int height, 
-		int dither, int sort, int interlace, 
-		int transparency, int r, int g, int b);
-
-
-#endif
diff --git a/Graphics/gl2jpeg.cpp b/Graphics/gl2jpeg.cpp
deleted file mode 100644
index 7d412bb7bf609e96ebdfc259642633065f823f31..0000000000000000000000000000000000000000
--- a/Graphics/gl2jpeg.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// $Id: gl2jpeg.cpp,v 1.7 2001-02-09 07:59:50 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-
-#include "jpeglib.h"
-#include "jerror.h"
-
-void my_output_message (j_common_ptr cinfo){
-  char buffer[JMSG_LENGTH_MAX];
-
-  (*cinfo->err->format_message) (cinfo, buffer);
-
-  Msg(DEBUG, "%s", buffer);
-}
-
-void create_jpeg(FILE *outfile, int width, int height, int quality){
-  int i;
-  unsigned char *pixels;
-  struct jpeg_compress_struct cinfo;
-  struct jpeg_error_mgr jerr;
-  JSAMPROW row_pointer[1];      // pointer to JSAMPLE row[s]
-  int row_stride;               // physical row width in image buffer
-            
-  cinfo.err = jpeg_std_error(&jerr);
-  cinfo.err->output_message = my_output_message;
-
-  jpeg_create_compress(&cinfo);
-  jpeg_stdio_dest(&cinfo, outfile);
-  cinfo.image_width = width;       // image width and height, in pixels
-  cinfo.image_height = height;
-  cinfo.input_components = 3;      // # of color components per pixel
-  cinfo.in_color_space = JCS_RGB;  // colorspace of input image
-  jpeg_set_defaults(&cinfo);                            
-  jpeg_set_quality(&cinfo, quality, TRUE);
-  jpeg_start_compress(&cinfo, TRUE);
-
-  glPixelStorei(GL_PACK_ALIGNMENT,1);
-  glPixelStorei(GL_UNPACK_ALIGNMENT,1);
-  pixels=(unsigned char *)Malloc(height*width*3);
-  glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,pixels);
-
-  row_stride = width * 3;
-  i=cinfo.image_height-1;
-  while (i >= 0) {
-    /* 
-       jpeg_write_scanlines expects an array of pointers to scanlines.
-       Here the array is only one element long, but you could pass
-       more than one scanline at a time if that's more convenient.
-     */
-    row_pointer[0] = &pixels[i * row_stride];
-    (void) jpeg_write_scanlines(&cinfo, row_pointer, 1);
-    i--;
-  }
-  jpeg_finish_compress(&cinfo);
-  jpeg_destroy_compress(&cinfo);                                 
-
-  Free(pixels);
-}
-
diff --git a/Graphics/gl2jpeg.h b/Graphics/gl2jpeg.h
deleted file mode 100644
index 7c8f69e480622e23e58db1f4d09b1a887c8a0ed9..0000000000000000000000000000000000000000
--- a/Graphics/gl2jpeg.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _GL2JPEG_H_
-#define _GL2JPEG_H_
-
-void create_jpeg(FILE *outfile, int width, int height,
-		 int quality);
-
-#endif
diff --git a/Graphics/gl2ppm.cpp b/Graphics/gl2ppm.cpp
deleted file mode 100644
index e9aa5e7b4ee66f088f1fcef742b4925eac969606..0000000000000000000000000000000000000000
--- a/Graphics/gl2ppm.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// $Id: gl2ppm.cpp,v 1.5 2001-01-08 08:05:44 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-
-void create_ppm(FILE *outfile, int width, int height){
-  unsigned char *pixels;
-  int i, row_stride;
-
-  glPixelStorei(GL_PACK_ALIGNMENT,1);
-  glPixelStorei(GL_UNPACK_ALIGNMENT,1);
-  pixels=(unsigned char *)Malloc(height*width*3);
-  glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,pixels);
-
-  fprintf(outfile, "P6\n");
-  fprintf(outfile, "%d %d\n", width, height);
-  fprintf(outfile, "%d\n", 255);
-
-  row_stride = width * 3;
-  i = height-1;
-  while (i >= 0) {
-    fwrite(&pixels[i * row_stride], 1, row_stride, outfile);
-    i--;
-  }
-
-  Free(pixels);
-}
-
diff --git a/Graphics/gl2ppm.h b/Graphics/gl2ppm.h
deleted file mode 100644
index 47b88824d186371de0c067b6af0978cae78099d1..0000000000000000000000000000000000000000
--- a/Graphics/gl2ppm.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _GL2PPM_H_
-#define _GL2PPM_H_
-
-void create_ppm(FILE *outfile, int width, int height);
-
-#endif
diff --git a/Graphics/gl2ps.cpp b/Graphics/gl2ps.cpp
deleted file mode 100644
index 44332232cdb7df772862103719c39153df9b7256..0000000000000000000000000000000000000000
--- a/Graphics/gl2ps.cpp
+++ /dev/null
@@ -1,1428 +0,0 @@
-#include "Gmsh.h"
-#include "GmshUI.h"
-
-/*
- * GL2PS, an OpenGL to Postscript Printing Library
- * Copyright (C) 1999-2001  Christophe Geuzaine 
- *
- * $Id: gl2ps.cpp,v 1.25 2001-08-06 12:26:26 geuzaine Exp $
- *
- * E-mail: Christophe.Geuzaine@AdValvas.be
- * URL: http://www.geuz.org/gl2ps/
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <string.h>
-#include <sys/types.h>
-#include <malloc.h>
-#include <math.h>
-#include <stdarg.h>
-#include <time.h>
-
-#include "gl2ps.h"
-
-/* The static gl2ps context. gl2ps is not thread safe (we should
-   create a local GL2PScontext during gl2psBeginPage). */
-
-static GL2PScontext gl2ps;
-
-/* Some 'system' utility routines */
-
-GLvoid gl2psMsg(GLint level, char *fmt, ...){
-  va_list args;
-
-  if(!(gl2ps.options & GL2PS_SILENT)){
-    switch(level){
-    case GL2PS_INFO : fprintf(stderr, "GL2PS info: "); break;
-    case GL2PS_WARNING : fprintf(stderr, "GL2PS warning: "); break;
-    case GL2PS_ERROR : fprintf(stderr, "GL2PS error: "); break;
-    }
-    va_start(args, fmt);
-    vfprintf(stderr, fmt, args); 
-    va_end (args);
-    fprintf(stderr, "\n");
-  }
-  if(level == GL2PS_ERROR) exit(1);
-}
-
-GLvoid *gl2psMalloc(size_t size){
-  GLvoid *ptr;
-
-  if(!size) return(NULL);
-  ptr = malloc(size);
-  if(!ptr) gl2psMsg(GL2PS_ERROR, "Couldn't allocate requested memory");
-  return(ptr);
-}
-
-GLvoid *gl2psRealloc(GLvoid *ptr, size_t size){
-  if(!size) return(NULL);
-  ptr = realloc(ptr, size);
-  if(!ptr) gl2psMsg(GL2PS_ERROR, "Couldn't reallocate requested memory");
-  return(ptr);
-}
-
-GLvoid gl2psFree(GLvoid *ptr){
-  if(!ptr) return;
-  free(ptr);
-}
-
-/* The list handling routines */
-
-GLvoid gl2psListRealloc(GL2PSlist *list, GLint n){
-  if(n <= 0) return;
-  if(!list->array){
-    list->nmax = ((n - 1) / list->incr + 1) * list->incr;
-    list->array = (char *)gl2psMalloc(list->nmax * list->size);
-  }
-  else
-    if(n > list->nmax){
-      list->nmax = ((n - 1) / list->incr + 1) * list->incr;
-      list->array = (char *)gl2psRealloc(list->array,
-					 list->nmax * list->size);
-    }
-}
-
-GL2PSlist *gl2psListCreate(GLint n, GLint incr, GLint size){
-  GL2PSlist *list;
-
-  if(n < 0) n = 0;
-  if(incr <= 0) incr = 1;
-  list = (GL2PSlist *)gl2psMalloc(sizeof(GL2PSlist));
-  list->nmax = 0;
-  list->incr = incr;
-  list->size = size;
-  list->n = 0;
-  list->array = NULL;
-  gl2psListRealloc(list, n);
-  return(list);
-}
-
-GLvoid gl2psListDelete(GL2PSlist *list){
-  gl2psFree(list->array);
-  gl2psFree(list);
-}
-
-GLvoid gl2psListAdd(GL2PSlist *list, GLvoid *data){
-  list->n++;
-  gl2psListRealloc(list, list->n);
-  memcpy(&list->array[(list->n - 1) * list->size], data, list->size);
-}
-
-GLint gl2psListNbr(GL2PSlist *list){
-  return(list->n);
-}
-
-GLvoid *gl2psListPointer(GL2PSlist *list, GLint index){
-  if((index < 0) || (index >= list->n))
-    gl2psMsg(GL2PS_ERROR, "Wrong list index in gl2psListPointer");
-  return(&list->array[index * list->size]);
-}
-
-GLvoid gl2psListSort(GL2PSlist *list,
-		     GLint (*fcmp)(const GLvoid *a, const GLvoid *b)){
-  qsort(list->array, list->n, list->size, fcmp);
-}
-
-GLvoid gl2psListAction(GL2PSlist *list, 
-		       GLvoid (*action)(GLvoid *data, GLvoid *dummy)){
-  GLint i, dummy;
-
-  for(i=0 ; i<gl2psListNbr(list) ; i++)
-    (*action)(gl2psListPointer(list, i), &dummy);
-}
-
-GLvoid gl2psListActionInverse(GL2PSlist *list, 
-			      GLvoid (*action)(GLvoid *data, GLvoid *dummy)){
-  GLint i, dummy;
-
-  for(i=gl2psListNbr(list) ; i>0 ; i--)
-    (*action)(gl2psListPointer(list, i-1), &dummy);
-}
-
-/* The 3D sorting routines */
-
-GLfloat gl2psComparePointPlane(GL2PSxyz point, GL2PSplane plane){
-  return(plane[0] * point[0] + 
-	 plane[1] * point[1] + 
-	 plane[2] * point[2] + 
-	 plane[3]);
-}
-
-GLfloat gl2psPsca(GLfloat *a, GLfloat *b){
-  return(a[0]*b[0] + a[1]*b[1] + a[2]*b[2]);
-}
-
-GLvoid gl2psPvec(GLfloat *a, GLfloat *b, GLfloat *c){
-  c[0] = a[1]*b[2] - a[2]*b[1];
-  c[1] = a[2]*b[0] - a[0]*b[2];
-  c[2] = a[0]*b[1] - a[1]*b[0];
-}
-
-GLfloat gl2psNorm(GLfloat *a){
-  return sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]);
-}
-
-GLvoid gl2psGetNormal(GLfloat *a, GLfloat *b, GLfloat *c){
-  GLfloat norm;
-  gl2psPvec(a, b, c);
-  if((norm = gl2psNorm(c))){
-    c[0] = c[0] / norm;
-    c[1] = c[1] / norm;
-    c[2] = c[2] / norm;
-  }
-  else
-    gl2psMsg(GL2PS_WARNING, "Bad plane in BSP tree");
-}
-
-GLvoid gl2psGetPlane(GL2PSprimitive *prim, GL2PSplane plane){
-  GL2PSxyz v={0., 0., 0.}, w={0., 0., 0.};
-
-  switch(prim->type){
-  case GL2PS_TRIANGLE :
-  case GL2PS_QUADRANGLE :
-    v[0] = prim->verts[1].xyz[0] - prim->verts[0].xyz[0]; 
-    v[1] = prim->verts[1].xyz[1] - prim->verts[0].xyz[1]; 
-    v[2] = prim->verts[1].xyz[2] - prim->verts[0].xyz[2]; 
-    w[0] = prim->verts[2].xyz[0] - prim->verts[0].xyz[0]; 
-    w[1] = prim->verts[2].xyz[1] - prim->verts[0].xyz[1]; 
-    w[2] = prim->verts[2].xyz[2] - prim->verts[0].xyz[2]; 
-    if((!v[0] && !v[1] && !v[2]) || (!w[0] && !w[1] && !w[2])){
-      plane[0] = plane[1] = 0.;
-      plane[2] = 1.;
-      plane[3] = -prim->verts[0].xyz[2];
-    }
-    else{
-      gl2psGetNormal(v, w, plane);
-      plane[3] = 
-	- plane[0] * prim->verts[0].xyz[0] 
-	- plane[1] * prim->verts[0].xyz[1] 
-	- plane[2] * prim->verts[0].xyz[2];
-    }
-    break;
-  case GL2PS_LINE :
-    v[0] = prim->verts[1].xyz[0] - prim->verts[0].xyz[0]; 
-    v[1] = prim->verts[1].xyz[1] - prim->verts[0].xyz[1]; 
-    v[2] = prim->verts[1].xyz[2] - prim->verts[0].xyz[2]; 
-    if(!v[0] && !v[1] && !v[2]){
-      plane[0] = plane[1] = 0.;
-      plane[2] = 1.;
-      plane[3] = -prim->verts[0].xyz[2];
-    }
-    else{
-      if(!v[0])      w[0] = 1.;
-      else if(!v[1]) w[1] = 1.;
-      else           w[2] = 1.;
-      gl2psGetNormal(v, w, plane);
-      plane[3] = 
-	- plane[0] * prim->verts[0].xyz[0] 
-	- plane[1] * prim->verts[0].xyz[1] 
-	- plane[2] * prim->verts[0].xyz[2];
-    }
-    break;
-  case GL2PS_POINT :
-  case GL2PS_TEXT :
-    plane[0] = plane[1] = 0.;
-    plane[2] = 1.;
-    plane[3] = -prim->verts[0].xyz[2];
-    break;
-  default :
-    gl2psMsg(GL2PS_ERROR, "Unknown primitive type in BSP tree");
-  }
-}
-
-GLvoid gl2psCutEdge(GL2PSvertex a, GL2PSvertex b, GL2PSplane plane, 
-		    GL2PSvertex *c){
-  GL2PSxyz v;
-  GLfloat  sect;
-
-  v[0] = b.xyz[0] - a.xyz[0];
-  v[1] = b.xyz[1] - a.xyz[1];
-  v[2] = b.xyz[2] - a.xyz[2];
-  sect = - gl2psComparePointPlane(a.xyz, plane) / gl2psPsca(plane, v);
-
-  c->xyz[0] = a.xyz[0] + v[0] * sect;
-  c->xyz[1] = a.xyz[1] + v[1] * sect;
-  c->xyz[2] = a.xyz[2] + v[2] * sect;
-  
-  c->rgba[0] = (1.-sect) * a.rgba[0] + sect * b.rgba[0];
-  c->rgba[1] = (1.-sect) * a.rgba[1] + sect * b.rgba[1];
-  c->rgba[2] = (1.-sect) * a.rgba[2] + sect * b.rgba[2];
-  c->rgba[3] = (1.-sect) * a.rgba[3] + sect * b.rgba[3];
-}
-
-GLvoid gl2psFreePrimitive(GLvoid *a, GLvoid *b){
-  GL2PSprimitive *q ;
-  
-  q = *(GL2PSprimitive**)a;
-  gl2psFree(q->verts);
-  if(q->type == GL2PS_TEXT){
-    if(q->text->str) gl2psFree(q->text->str);
-    gl2psFree(q->text);
-  }
-  gl2psFree(q);
-}
-
-GLvoid gl2psCreateSplittedPrimitive(GL2PSprimitive *parent, GL2PSplane plane,
-				    GL2PSprimitive **child, GLshort numverts,
-				    GLshort *index0, GLshort *index1){
-  GLshort i;
-
-  if(numverts > 4){
-    gl2psMsg(GL2PS_WARNING, "%d vertices in polygon", numverts);
-    numverts = 4;
-  }
-
-  switch(numverts){
-  case 1 : (*child)->type = GL2PS_POINT; break; 
-  case 2 : (*child)->type = GL2PS_LINE; break; 
-  case 3 : (*child)->type = GL2PS_TRIANGLE; break; 
-  case 4 : (*child)->type = GL2PS_QUADRANGLE; break;    
-  }
-  (*child)->boundary = 0; /* not done! */
-  (*child)->dash = parent->dash;
-  (*child)->width = parent->width;
-  (*child)->numverts = numverts;
-  (*child)->verts = (GL2PSvertex *)gl2psMalloc(numverts * sizeof(GL2PSvertex));
-
-  for(i=0 ; i<numverts ; i++){
-    if(index1[i] < 0)
-      (*child)->verts[i] = parent->verts[index0[i]];
-    else
-      gl2psCutEdge(parent->verts[index0[i]], parent->verts[index1[i]], 
-		   plane, &(*child)->verts[i]);
-  }
-}
-
-GLvoid gl2psAddIndex(GLshort *index0, GLshort *index1, GLshort *nb, 
-		     GLshort i, GLshort j){
-  GLint k;
-
-  for(k=0 ; k<*nb ; k++)
-    if((index0[k] == i && index1[k] == j) ||
-       (index1[k] == i && index0[k] == j)) return;
-
-  index0[*nb] = i;
-  index1[*nb] = j;
-  (*nb)++;
-}
-
-GLshort gl2psGetIndex(GLshort i, GLshort num){
-  return(i < num-1) ? i+1 : 0;
-}
-
-GLint gl2psTestSplitPrimitive(GL2PSprimitive *prim, GL2PSplane plane){
-  GLint     type=GL2PS_COINCIDENT;
-  GLshort   i, j;
-  GLfloat   d[5]; 
-
-  for(i = 0 ; i < prim->numverts ; i++){  
-    d[i] = gl2psComparePointPlane(prim->verts[i].xyz, plane);
-  }
-
-  if(prim->type == GL2PS_POINT)
-    return 0;
-  else{
-    for(i = 0 ; i < prim->numverts ; i++){
-      j = gl2psGetIndex(i, prim->numverts);
-      if(d[j] > GL2PS_EPSILON){
-	if(type == GL2PS_COINCIDENT)      type = GL2PS_IN_BACK_OF;
-	else if(type != GL2PS_IN_BACK_OF) return 1; 
-	if(d[i] < -GL2PS_EPSILON)	  return 1;
-      }
-      else if(d[j] < -GL2PS_EPSILON){
-	if(type == GL2PS_COINCIDENT)       type = GL2PS_IN_FRONT_OF;   
-	else if(type != GL2PS_IN_FRONT_OF) return 1;
-	if(d[i] > GL2PS_EPSILON)           return 1;
-      }
-    }
-  }
-  return 0;
-}
-
-GLint gl2psSplitPrimitive(GL2PSprimitive *prim, GL2PSplane plane, 
-			  GL2PSprimitive **front, GL2PSprimitive **back){
-  GLshort  i, j, in=0, out=0, in0[5], in1[5], out0[5], out1[5];
-  GLint    type;
-  GLfloat  d[5]; 
-
-  type = GL2PS_COINCIDENT;
-
-  for(i = 0 ; i < prim->numverts ; i++){  
-    d[i] = gl2psComparePointPlane(prim->verts[i].xyz, plane);
-  }
-
-  switch(prim->type){
-  case GL2PS_POINT :
-    if(d[0] > GL2PS_EPSILON)       type = GL2PS_IN_BACK_OF;
-    else if(d[0] < -GL2PS_EPSILON) type = GL2PS_IN_FRONT_OF;
-    else                           type = GL2PS_COINCIDENT;
-    break;
-  default :
-    for(i = 0 ; i < prim->numverts ; i++){
-      j = gl2psGetIndex(i, prim->numverts);
-      if(d[j] > GL2PS_EPSILON){
-	if(type == GL2PS_COINCIDENT)      type = GL2PS_IN_BACK_OF;
-	else if(type != GL2PS_IN_BACK_OF) type = GL2PS_SPANNING; 
-	if(d[i] < -GL2PS_EPSILON){
-	  gl2psAddIndex(in0, in1, &in, i, j);
-	  gl2psAddIndex(out0, out1, &out, i, j);
-	  type = GL2PS_SPANNING;
-	}
-	gl2psAddIndex(out0, out1, &out, j, -1);
-      }
-      else if(d[j] < -GL2PS_EPSILON){
-	if(type == GL2PS_COINCIDENT)       type = GL2PS_IN_FRONT_OF;   
-	else if(type != GL2PS_IN_FRONT_OF) type = GL2PS_SPANNING;
-	if(d[i] > GL2PS_EPSILON){
-	  gl2psAddIndex(in0, in1, &in, i, j);
-	  gl2psAddIndex(out0, out1, &out, i, j);
-	  type = GL2PS_SPANNING;
-	}
-	gl2psAddIndex(in0, in1, &in, j, -1);
-      }
-      else{
-	gl2psAddIndex(in0, in1, &in, j, -1);
-	gl2psAddIndex(out0, out1, &out, j, -1);
-      }
-    }
-    break;
-  }
-
-  if(type == GL2PS_SPANNING){
-    *back = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
-    *front = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
-    gl2psCreateSplittedPrimitive(prim, plane, back, out, out0, out1);
-    gl2psCreateSplittedPrimitive(prim, plane, front, in, in0, in1);
-  }
-
-  return type;
-}
-
-GLvoid gl2psDivideQuad(GL2PSprimitive *quad, 
-		       GL2PSprimitive **t1, GL2PSprimitive **t2){
-  *t1 = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
-  *t2 = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
-  (*t1)->type = (*t2)->type = GL2PS_TRIANGLE;
-  (*t1)->numverts = (*t2)->numverts = 3;
-  (*t1)->depth = (*t2)->depth = quad->depth;
-  (*t1)->dash = (*t2)->dash = quad->dash;
-  (*t1)->width = (*t2)->width = quad->width;
-  (*t1)->verts = (GL2PSvertex *)gl2psMalloc(3 * sizeof(GL2PSvertex));
-  (*t2)->verts = (GL2PSvertex *)gl2psMalloc(3 * sizeof(GL2PSvertex));
-  (*t1)->verts[0] = quad->verts[0];
-  (*t1)->verts[1] = quad->verts[1];
-  (*t1)->verts[2] = quad->verts[2];
-  (*t1)->boundary = ((quad->boundary & 1) ? 1 : 0) | ((quad->boundary & 2) ? 2 : 0);
-  (*t2)->verts[0] = quad->verts[0];
-  (*t2)->verts[1] = quad->verts[2];
-  (*t2)->verts[2] = quad->verts[3];
-  (*t1)->boundary = ((quad->boundary & 4) ? 2 : 0) | ((quad->boundary & 4) ? 2 : 0);
-}
-
-int gl2psCompareDepth(const GLvoid *a, const GLvoid *b){
-  GL2PSprimitive *q,*w;
-  GLfloat        diff;
-
-  q = *(GL2PSprimitive**)a;
-  w = *(GL2PSprimitive**)b;
-  diff = q->depth - w->depth;
-  if(diff > 0.) 
-    return 1;
-  else if(diff < 0.)
-    return -1;
-  else
-    return 0;
-}
-
-GLint gl2psTrianglesFirst(const GLvoid *a, const GLvoid *b){
-  GL2PSprimitive *q,*w;
-
-  q = *(GL2PSprimitive**)a;
-  w = *(GL2PSprimitive**)b;
-  return(q->type < w->type ? 1 : -1);
-}
-
-GLint gl2psFindRoot(GL2PSlist *primitives, GL2PSprimitive **root){
-  GLint          i, j, count, best=1000000, index=0;
-  GL2PSprimitive *prim1, *prim2;
-  GL2PSplane     plane;
-
-  if(gl2ps.options & GL2PS_BEST_ROOT){
-    *root = *(GL2PSprimitive**)gl2psListPointer(primitives, 0);
-    for(i=0 ; i<gl2psListNbr(primitives) ; i++){
-      prim1 = *(GL2PSprimitive**)gl2psListPointer(primitives, i);
-      gl2psGetPlane(prim1, plane);
-      count=0;
-      for(j=0 ; j<gl2psListNbr(primitives) ; j++){
-	if(j != i){
-	  prim2 = *(GL2PSprimitive**)gl2psListPointer(primitives, j);
-	  count += gl2psTestSplitPrimitive(prim2, plane); 
-	}
-	if(count > best) break;
-      }
-      if(count < best){
-	best = count;
-	index = i;
-	*root = prim1;
-	if(!count) return index;
-      }
-    }
-    if(index) gl2psMsg(GL2PS_INFO, "GL2PS_BEST_ROOT was worth it: %d", index);
-    return index;
-  }
-  else{
-    *root = *(GL2PSprimitive**)gl2psListPointer(primitives, 0);
-    return 0;
-  }
-}
-
-
-GLvoid gl2psAddPrimitiveInList(GL2PSprimitive *prim, GL2PSlist *list){
-  GL2PSprimitive *t1, *t2;
-
-  if(prim->type != GL2PS_QUADRANGLE){
-    gl2psListAdd(list, &prim);
-  }
-  else{
-    gl2psDivideQuad(prim, &t1, &t2);
-    gl2psListAdd(list, &t1);
-    gl2psListAdd(list, &t2);
-    gl2psFreePrimitive(&prim, NULL);
-  }
-  
-}
-
-GLvoid gl2psFreeBspTree(GL2PSbsptree *tree){
-  if(tree->back){
-    gl2psFreeBspTree(tree->back);
-    gl2psFree(tree->back);
-  }
-  if(tree->primitives){
-    gl2psListAction(tree->primitives, gl2psFreePrimitive);
-    gl2psListDelete(tree->primitives);
-  }
-  if(tree->front){
-    gl2psFreeBspTree(tree->front);
-    gl2psFree(tree->front);
-  }
-}
-
-GLboolean gl2psGreater(GLfloat f1, GLfloat f2){
-  if(f1 > f2) return 1;
-  else return 0;
-}
-
-GLboolean gl2psLess(GLfloat f1, GLfloat f2){
-  if(f1 < f2) return 1;
-  else return 0;
-}
-
-GLvoid gl2psBuildBspTree(GL2PSbsptree *tree, GL2PSlist *primitives){
-  GL2PSprimitive *prim, *frontprim, *backprim;
-  GL2PSlist      *frontlist, *backlist;
-  GLint          i, index;
-
-  tree->front = NULL;
-  tree->back = NULL;
-  tree->primitives = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
-  index = gl2psFindRoot(primitives, &prim);
-  gl2psGetPlane(prim, tree->plane);
-  gl2psAddPrimitiveInList(prim, tree->primitives);
-
-  frontlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
-  backlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
-
-  for(i=0 ; i<gl2psListNbr(primitives) ; i++){
-    if(i != index){
-      prim = *(GL2PSprimitive**)gl2psListPointer(primitives,i);
-      switch(gl2psSplitPrimitive(prim,tree->plane,&frontprim,&backprim)){
-      case GL2PS_COINCIDENT:
-	gl2psAddPrimitiveInList(prim, tree->primitives);
-	break;
-      case GL2PS_IN_BACK_OF:
-	gl2psAddPrimitiveInList(prim, backlist);
-	break;
-      case GL2PS_IN_FRONT_OF:
-	gl2psAddPrimitiveInList(prim, frontlist);
-	break;
-      case GL2PS_SPANNING:
-	gl2psAddPrimitiveInList(backprim, backlist);
-	gl2psAddPrimitiveInList(frontprim, frontlist);
-	gl2psFreePrimitive(&prim, NULL);
-	break;
-      }
-    }
-  }
-
-  if(gl2psListNbr(tree->primitives))
-    gl2psListSort(tree->primitives, gl2psTrianglesFirst);
-
-  if(gl2psListNbr(frontlist)){
-    gl2psListSort(frontlist, gl2psTrianglesFirst);
-    tree->front = (GL2PSbsptree*)gl2psMalloc(sizeof(GL2PSbsptree));
-    gl2psBuildBspTree(tree->front, frontlist);
-  }
-  else
-    gl2psListDelete(frontlist);
-
-  if(gl2psListNbr(backlist)){
-    gl2psListSort(backlist, gl2psTrianglesFirst);
-    tree->back = (GL2PSbsptree*)gl2psMalloc(sizeof(GL2PSbsptree));
-    gl2psBuildBspTree(tree->back, backlist);
-  }
-  else
-    gl2psListDelete(backlist);
-  
-  gl2psListDelete(primitives);
-}
-
-GLvoid  gl2psTraverseBspTree(GL2PSbsptree *tree, GL2PSxyz eye, GLfloat epsilon,
-			     GLboolean (*compare)(GLfloat f1, GLfloat f2),
-			     GLvoid (*action)(GLvoid *data, GLvoid *dummy)){
-  GLfloat result;
-
-  if(!tree) return;
-
-  result = gl2psComparePointPlane(eye, tree->plane);
-
-  if(compare(result, epsilon)){
-    gl2psTraverseBspTree(tree->back, eye, epsilon, compare, action);
-    gl2psListAction(tree->primitives, action);
-    gl2psTraverseBspTree(tree->front, eye, epsilon, compare, action);
-  }
-  else if(compare(-epsilon, result)){ 
-    gl2psTraverseBspTree(tree->front, eye, epsilon, compare, action);
-    gl2psListAction(tree->primitives, action);
-    gl2psTraverseBspTree(tree->back, eye, epsilon, compare, action) ;
-  }
-  else{
-    gl2psTraverseBspTree(tree->front, eye, epsilon, compare, action);
-    gl2psTraverseBspTree(tree->back, eye, epsilon, compare, action) ;
-  }
-}
-
-/* The 2D sorting routines (for occlusion culling). These routines do
-   _not_ work as expected at the moment... */
-
-GLint gl2psSplit2d(GL2PSxyz a, GL2PSxyz b, GL2PSxy tc, GL2PSxy td){
-  GLfloat  line[3], n, d[2]; 
-
-  /*
-    in back of == >0 == outside polygon
-   */
-
-  line[0] = td[1] - tc[1] ;
-  line[1] = tc[0] - td[0] ;
-  n = sqrt(line[0]*line[0]+line[1]*line[1]);
-  line[0] /= n ; 
-  line[1] /= n ;
-  line[2] = - line[0] * tc[0] - line[1] * tc[1] ;
-
-  d[0] = line[0]*a[0] + line[1]*a[1] + line[2] ;
-
-  if(b == NULL){
-    if(d[0] > GL2PS_EPSILON)       return GL2PS_IN_BACK_OF;
-    else if(d[0] < -GL2PS_EPSILON) return GL2PS_IN_FRONT_OF;
-    else                           return GL2PS_COINCIDENT;
-  }
-  else{
-    d[1] = line[0]*b[0] + line[1]*b[1] + line[2] ;
-    
-    if(d[0] > GL2PS_EPSILON){
-      if(d[1] < -GL2PS_EPSILON) return GL2PS_SPANNING;
-      else return GL2PS_IN_BACK_OF;
-    }
-    if(d[0] < -GL2PS_EPSILON){
-      if(d[1] > GL2PS_EPSILON) return GL2PS_SPANNING;
-      else return GL2PS_IN_FRONT_OF;
-    }
-    else{
-      if(d[1] > GL2PS_EPSILON) return GL2PS_IN_BACK_OF;
-      else if(d[1] < -GL2PS_EPSILON) return GL2PS_IN_FRONT_OF;
-      /* else return GL2PS_COINCIDENT; */
-      else return GL2PS_IN_FRONT_OF;
-    }
-  }
-}
-
-
-GLvoid  gl2psSimplify2d(GL2PSbsptree2d *tree){
-  if(!tree) return;
-  if(tree->back){
-    if(tree->flag==0)
-      gl2psSimplify2d(tree->back);
-  }
-  if(tree->front){
-    gl2psSimplify2d(tree->front);
-  }
-}
-
-GLvoid  gl2psReset(GL2PSbsptree2d *tree){
-  if(!tree) return;
-  tree->flag=0;
-  if(tree->back){
-    gl2psReset(tree->back);
-  }
-  if(tree->front){
-    gl2psReset(tree->front);
-  }
-}
-
-
-static GL2PSbsptree2d *image=NULL;
-
-GLvoid gl2psAddInImageTree(GL2PSprimitive *prim, 
-			   GL2PSxyz a, GL2PSxyz b, GL2PSbsptree2d **tree){
-  GLint res;
-
-  if(*tree == NULL){
-    /* insert the edge, except for lines & points */
-    if(prim->numverts > 2){ 
-      prim->depth = -1.; 
-      (*tree) = (GL2PSbsptree2d*)gl2psMalloc(sizeof(GL2PSbsptree2d));
-      (*tree)->a[0] = a[0];
-      (*tree)->a[1] = a[1];
-      (*tree)->b[0] = b[0];
-      (*tree)->b[1] = b[1];
-      (*tree)->front = NULL;
-      (*tree)->back = NULL;
-      (*tree)->flag = 1;
-    }
-  }
-  else{
-    res = gl2psSplit2d(a, b, (*tree)->a, (*tree)->b);
-
-    switch(res){
-    case GL2PS_IN_BACK_OF:
-       gl2psAddInImageTree(prim, a, b, &(*tree)->back);
-      break;
-    case GL2PS_IN_FRONT_OF:
-      if((*tree)->flag) gl2psAddInImageTree(prim, a, b, &(*tree)->front);
-      break;
-    case GL2PS_SPANNING:
-      gl2psAddInImageTree(prim, a, b, &(*tree)->back);
-      if((*tree)->flag) gl2psAddInImageTree(prim, a, b, &(*tree)->front);
-      break;
-    case GL2PS_COINCIDENT:
-      (*tree)->flag = 1;
-      break;
-    }
-  }
-}
-
-static int count=0;
-
-GLvoid gl2psAddInImage(void *a, void *b){
-  GL2PSprimitive *prim;
-  GLint          i;
-
-  prim = *(GL2PSprimitive **)a;
-
-  /*  if(prim->numverts == 1)
-      gl2psAddInImageTree(prim, prim->verts[i].xyz, NULL, &image); */
-  if(prim->numverts < 3)
-    return;
-  else{
-    for(i=0 ; i<prim->numverts ; i++){
-      count++;
-      gl2psAddInImageTree(prim, prim->verts[i].xyz, 
-			  prim->verts[gl2psGetIndex(i,prim->numverts)].xyz, &image);
-    }
-  }
-
-  /* simplify old/new */
-
-  gl2psReset(image);
-
-}
-
-
-#define GL2PS_BOUNDARY_OFFSET 0
-
-GLvoid gl2psAddBoundaryInList(GL2PSprimitive *prim, GL2PSlist *list){
-  GL2PSprimitive *b;
-  GLshort         i;
-  GL2PSxyz        c;
-
-  c[0] = c[1] = c[2] = 0.;
-  for(i=0 ; i<prim->numverts ; i++){
-    c[0] += prim->verts[i].xyz[0];
-    c[1] += prim->verts[i].xyz[1];
-  }
-  c[0] /= prim->numverts;
-  c[1] /= prim->numverts;
-
-  for(i=0 ; i<prim->numverts ; i++){
-    if(prim->boundary & (GLint)pow(2., i)){
-      b = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
-      b->type = GL2PS_LINE;
-      b->dash = prim->dash;
-      b->width = prim->width;
-      b->boundary = 0;
-      b->numverts = 2;
-      b->verts = (GL2PSvertex *)gl2psMalloc(2 * sizeof(GL2PSvertex));
-
-#if GL2PS_BOUNDARY_OFFSET
-      v[0] = c[0] - prim->verts[i].xyz[0];
-      v[1] = c[1] - prim->verts[i].xyz[1];
-      v[2] = 0.;
-      norm = gl2psNorm(v);
-      v[0] /= norm;
-      v[1] /= norm;
-      b->verts[0].xyz[0] = prim->verts[i].xyz[0] +0.1*v[0];
-      b->verts[0].xyz[1] = prim->verts[i].xyz[1] +0.1*v[1];
-      b->verts[0].xyz[2] = prim->verts[i].xyz[2];
-      v[0] = c[0] - prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[0];
-      v[1] = c[1] - prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[1];
-      norm = gl2psNorm(v);
-      v[0] /= norm;
-      v[1] /= norm;
-      b->verts[1].xyz[0] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[0] +0.1*v[0];
-      b->verts[1].xyz[1] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[1] +0.1*v[1];
-      b->verts[1].xyz[2] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[2];
-#else
-      b->verts[0].xyz[0] = prim->verts[i].xyz[0];
-      b->verts[0].xyz[1] = prim->verts[i].xyz[1];
-      b->verts[0].xyz[2] = prim->verts[i].xyz[2];
-      b->verts[1].xyz[0] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[0];
-      b->verts[1].xyz[1] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[1];
-      b->verts[1].xyz[2] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[2];
-#endif
-
-      b->verts[0].rgba[0] = 0.;
-      b->verts[0].rgba[1] = 0.;
-      b->verts[0].rgba[2] = 0.;
-      b->verts[0].rgba[3] = 0.;
-      b->verts[1].rgba[0] = 0.;
-      b->verts[1].rgba[1] = 0.;
-      b->verts[1].rgba[2] = 0.;
-      b->verts[1].rgba[3] = 0.;
-      gl2psListAdd(list, &b);
-    }
-  }
-
-}
-
-GLvoid  gl2psBuildPolygonBoundary(GL2PSbsptree *tree){
-  GLint          i, n;
-  GL2PSprimitive *prim;
-
-  if(!tree) return;
-  gl2psBuildPolygonBoundary(tree->back);
-  n = gl2psListNbr(tree->primitives);
-  for(i=0 ; i<n ; i++){
-    prim = *(GL2PSprimitive**)gl2psListPointer(tree->primitives, i);
-    if(prim->boundary) gl2psAddBoundaryInList(prim, tree->primitives);
-  }
-  gl2psBuildPolygonBoundary(tree->front);
-}
-
-/* The feedback buffer parser */
-
-GLvoid gl2psAddPolyPrimitive(GLshort type, GLshort numverts, 
-			     GL2PSvertex *verts, GLint offset, 
-			     GLshort dash, GLshort width,
-			     GLshort boundary){
-  GLshort         i;
-  GLfloat         factor, units, area, dZ, dZdX, dZdY, maxdZ;
-  GL2PSprimitive *prim;
-
-  prim = (GL2PSprimitive *)gl2psMalloc(sizeof(GL2PSprimitive));
-  prim->type = type;
-  prim->numverts = numverts;
-  prim->verts = (GL2PSvertex *)gl2psMalloc(numverts * sizeof(GL2PSvertex));
-  memcpy(prim->verts, verts, numverts * sizeof(GL2PSvertex));
-  prim->boundary = boundary;
-
-  if(gl2ps.options & GL2PS_SIMPLE_LINE_OFFSET){
-    if(type == GL2PS_LINE){
-      if(gl2ps.sort == GL2PS_SIMPLE_SORT){
-	prim->verts[0].xyz[2] -= 1.;
-	prim->verts[1].xyz[2] -= 1.;
-      }
-      else{
-	prim->verts[0].xyz[2] -= 0.1;
-	prim->verts[1].xyz[2] -= 0.1;
-      }
-    }
-  }
-  else if(offset && type == GL2PS_TRIANGLE){
-
-    if(gl2ps.sort == GL2PS_SIMPLE_SORT){    
-      factor = gl2ps.offset[0];
-      units = gl2ps.offset[1];
-    }
-    else{
-      factor = gl2ps.offset[0] / 800.;
-      units = gl2ps.offset[1] / 800.;
-    }
-
-    area = 
-      (prim->verts[1].xyz[0] - prim->verts[0].xyz[0]) * 
-      (prim->verts[2].xyz[1] - prim->verts[1].xyz[1]) - 
-      (prim->verts[2].xyz[0] - prim->verts[1].xyz[0]) * 
-      (prim->verts[1].xyz[1] - prim->verts[0].xyz[1]);
-    dZdX = 
-      (prim->verts[2].xyz[1] - prim->verts[1].xyz[1]) *
-      (prim->verts[1].xyz[2] - prim->verts[0].xyz[2]) -
-      (prim->verts[1].xyz[1] - prim->verts[0].xyz[1]) *
-      (prim->verts[2].xyz[2] - prim->verts[1].xyz[2]) / area;
-    dZdY = 
-      (prim->verts[1].xyz[0] - prim->verts[0].xyz[0]) *
-      (prim->verts[2].xyz[2] - prim->verts[1].xyz[2]) -
-      (prim->verts[2].xyz[0] - prim->verts[1].xyz[0]) *
-      (prim->verts[1].xyz[2] - prim->verts[0].xyz[2]) / area;
-    
-    maxdZ = sqrt(dZdX*dZdX + dZdY*dZdY);
-
-    dZ = factor * maxdZ + units;
-
-    /* printf("dZ = %g  (fact=%g  units=%g)\n", dZ, factor, units); */
-
-    prim->verts[0].xyz[2] += dZ;
-    prim->verts[1].xyz[2] += dZ;
-    prim->verts[2].xyz[2] += dZ;
-  }
-
-  prim->depth = 0.;
-  prim->dash = dash;
-  prim->width = width;  /* we should maybe use floats */
-
-  if(gl2ps.sort == GL2PS_SIMPLE_SORT){
-    for(i = 0; i < numverts; i++) 
-      prim->depth += prim->verts[i].xyz[2]; 
-    prim->depth /= (GLfloat)numverts;
-  }
-  
-  gl2psListAdd(gl2ps.primitives, &prim);
-}
-
-GLint gl2psGetVertex(GL2PSvertex *v, GLfloat *p){
-  GLint i;
-
-  v->xyz[0] = p[0];
-  v->xyz[1] = p[1];
-  v->xyz[2] = 1000. * p[2];
-
-  if(gl2ps.colormode == GL_COLOR_INDEX && gl2ps.colorsize > 0){
-    i = (GLint)(p[3] + 0.5);
-    v->rgba[0] = gl2ps.colormap[i][0];
-    v->rgba[1] = gl2ps.colormap[i][1];
-    v->rgba[2] = gl2ps.colormap[i][2];
-    v->rgba[3] = gl2ps.colormap[i][3];
-    return 4;
-  }
-  else{
-    v->rgba[0] = p[3];
-    v->rgba[1] = p[4];
-    v->rgba[2] = p[5];
-    v->rgba[3] = p[6];
-    return 7;
-  }
-}
-
-GLint gl2psParseFeedbackBuffer(GLvoid){
-  GLint        i, used, count, v, vtot, offset=0;
-  GLshort      boundary, flag, dash=0, psize=1, lwidth=1;
-  GLfloat     *current;
-  GL2PSvertex  vertices[3];
-
-  used = glRenderMode(GL_RENDER);
-
-  if(used < 0){
-    gl2psMsg(GL2PS_INFO, "OpenGL feedback buffer reallocation");
-    return GL2PS_OVERFLOW;
-  }
-
-  if(used == 0){
-    gl2psMsg(GL2PS_WARNING, "Empty feedback buffer");
-    return GL2PS_NO_FEEDBACK;
-  }
-
-  current = gl2ps.feedback;
-  boundary = gl2ps.boundary = 0;
-
-  while(used > 0){
-
-    if(boundary) gl2ps.boundary = 1;
-    
-    switch((GLint)*current){
-    case GL_POINT_TOKEN :
-      current ++;
-      used --;
-      i = gl2psGetVertex(&vertices[0], current);
-      current += i;
-      used    -= i;
-      gl2psAddPolyPrimitive(GL2PS_POINT, 1, vertices, 0, dash, psize, 0);
-      break;
-    case GL_LINE_TOKEN :
-    case GL_LINE_RESET_TOKEN :
-      current ++;
-      used --;
-      i = gl2psGetVertex(&vertices[0], current);
-      current += i;
-      used    -= i;
-      i = gl2psGetVertex(&vertices[1], current);
-      current += i;
-      used    -= i;
-      gl2psAddPolyPrimitive(GL2PS_LINE, 2, vertices, 0, dash, lwidth, 0);
-      break;
-    case GL_POLYGON_TOKEN :
-      count = (GLint)current[1];
-      current += 2;
-      used -= 2;
-      v = vtot = 0;
-      while(count > 0 && used > 0){
-	i = gl2psGetVertex(&vertices[v], current);
-	current += i;
-	used    -= i;
-	count --;
-	vtot++;
-	if(v == 2){
-	  if(boundary){
-	    if(!count && vtot==2) flag = 1|2|4;
-	    else if(!count) flag = 2|4;
-	    else if(vtot==2) flag = 1|2;
-	    else flag = 2;
-	  }
-	  else
-	    flag = 0;
-	  gl2psAddPolyPrimitive(GL2PS_TRIANGLE, 3, vertices, 
-				offset, dash, 1, flag);
-	  vertices[1] = vertices[2];
-	}
-	else
-	  v ++;
-      }
-      break;      
-    case GL_BITMAP_TOKEN :
-    case GL_DRAW_PIXEL_TOKEN :
-    case GL_COPY_PIXEL_TOKEN :
-      current ++;
-      used --;
-      i = gl2psGetVertex(&vertices[0], current);
-      current += i;
-      used    -= i;
-      break;      
-    case GL_PASS_THROUGH_TOKEN :
-      switch((GLint)current[1]){
-      case GL2PS_BEGIN_POLYGON_OFFSET_FILL : offset=1; break;
-      case GL2PS_END_POLYGON_OFFSET_FILL : offset=0; break;
-      case GL2PS_BEGIN_POLYGON_BOUNDARY : boundary=1; break;
-      case GL2PS_END_POLYGON_BOUNDARY : boundary=0; break;
-      case GL2PS_BEGIN_LINE_STIPPLE : dash=4; break;
-      case GL2PS_END_LINE_STIPPLE : dash=0; break;
-      case GL2PS_SET_POINT_SIZE : 
-	current+=2; 
-	used-=2; 
-	psize=(GLint)current[1];
-	break;
-      case GL2PS_SET_LINE_WIDTH : 
-	current+=2; 
-	used-=2; 
-	lwidth=(GLint)current[1];
-	break;
-      }
-      current += 2; 
-      used -= 2; 
-      break;      
-    default :
-      gl2psMsg(GL2PS_WARNING, "Unknown token in buffer");
-      current ++;
-      used --;
-      break;
-    }
-  }
-  
-  return GL2PS_SUCCESS;
-}
-
-/* The postscript routines. Other (vector) image formats should be
-   easy to generate by creating the three corresponding routines for
-   the new format. */
-
-GLvoid gl2psPrintPostscriptHeader(GLvoid){
-  GLint   viewport[4], index;
-  GLfloat rgba[4];
-  time_t  now;
-
-  time(&now);
-
-  glGetIntegerv(GL_VIEWPORT, viewport);
-
-  /* 
-     Greyscale: r g b G (replace C by G in output to change from rgb to gray)
-     RGB color: r g b C
-     Font choose: size fontname FC
-     String primitive: (string) x y r g b size fontname S
-     Point primitive: x y size r g b P
-     Flat-shaded line: x2 y2 x1 y1 r g b width L
-     Flat-shaded triangle: x3 y3 x2 y2 x1 y1 r g b T
-     Smooth-shaded line: x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 width SL
-     Smooth-shaded triangle: x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 ST
-  */
-
-  fprintf(gl2ps.stream, 
-	  "%%!PS-Adobe-3.0\n"
-	  "%%%%Title: %s\n"
-	  "%%%%Creator: GL2PS, an OpenGL to Postscript Printing Library, v. %g\n"
-	  "%%%%For: %s\n"
-	  "%%%%CreationDate: %s"
-	  "%%%%LanguageLevel: 2\n"
-	  "%%%%Pages: 1\n"
-	  "%%%%DocumentData: Clean7Bit\n"
-	  "%%%%PageOrder: Ascend\n"
-	  "%%%%Orientation: Portrait\n"
-	  "%%%%DocumentMedia: Default %d %d 0 () ()\n"
-	  "%%%%BoundingBox: %d %d %d %d\n"
-	  "%%%%Copyright: GNU LGPL (C) 1999-2001 Christophe.Geuzaine@AdValvas.be\n"
-	  "%%%%EndComments\n"
-	  "%%%%BeginProlog\n"
-	  "/gl2psdict 64 dict def gl2psdict begin\n"
-	  "1 setlinecap 1 setlinejoin /bd {bind def} bind def\n"
-	  "/G { 0.082 mul exch 0.6094 mul add exch 0.3086 mul add neg 1.0 add\n"
-	  "setgray } bd /C { setrgbcolor } bd /FC { findfont exch scalefont\n"
-	  "setfont } bd /S { FC C moveto show } bd /P { C newpath 0.0 360.0\n"
-	  "arc closepath fill } bd /L { setlinewidth C newpath moveto lineto\n"
-	  "stroke } bd /T { C newpath moveto lineto lineto closepath fill } bd\n"
-	  "/SL { /lw exch def /b1 exch def /g1 exch def /r1 exch def /y1 exch def\n"
-	  "/x1 exch def /b2 exch def /g2 exch def /r2 exch def /y2 exch def\n"
-	  "/x2 exch def b2 b1 sub abs 0.01 gt g2 g1 sub abs 0.005 gt r2 r1 sub\n"
-	  "abs 0.008 gt or or { /bm b1 b2 add 0.5 mul def /gm g1 g2 add 0.5 mul def\n"
-	  "/rm r1 r2 add 0.5 mul def /ym y1 y2 add 0.5 mul def /xm x1 x2 add\n"
-	  "0.5 mul def x1 y1 r1 g1 b1 xm ym rm gm bm lw SL xm ym rm gm bm x2 y2 r2\n"
-	  "g2 b2 lw SL } { x1 y1 x2 y2 r1 g1 b1 lw L } ifelse } bd /ST {/b1 exch\n"
-	  "def /g1 exch def /r1 exch def /y1 exch def /x1 exch def\n"
-	  "/b2 exch def /g2 exch def /r2 exch def /y2 exch def /x2 exch def\n"
-	  "/b3 exch def /g3 exch def /r3 exch def /y3 exch def /x3 exch def\n"
-	  "b2 b1 sub abs 0.05 gt g2 g1 sub abs 0.017 gt r2 r1 sub abs 0.032 gt\n"
-	  "b3 b1 sub abs 0.05 gt g3 g1 sub abs 0.017 gt r3 r1 sub abs 0.032 gt\n"
-	  "b2 b3 sub abs 0.05 gt g2 g3 sub abs 0.017 gt r2 r3 sub abs 0.032 gt\n"
-	  "or or or or or or or or { /b12 b1 b2 add 0.5 mul def /g12 g1 g2 add\n"
-	  "0.5 mul def /r12 r1 r2 add 0.5 mul def /y12 y1 y2 add 0.5 mul def\n"
-	  "/x12 x1 x2 add 0.5 mul def /b13 b1 b3 add 0.5 mul def /g13 g1 g3\n"
-	  "add 0.5 mul def /r13 r1 r3 add 0.5 mul def /y13 y1 y3 add 0.5 mul\n"
-	  "def /x13 x1 x3 add 0.5 mul def /b32 b3 b2 add 0.5 mul def\n"
-	  "/g32 g3 g2 add 0.5 mul def /r32 r3 r2 add 0.5 mul def /y32 y3 y2\n"
-	  "add 0.5 mul def /x32 x3 x2 add 0.5 mul def x1 y1 r1 g1 b1 x12 y12\n"
-	  "r12 g12 b12 x13 y13 r13 g13 b13 x2 y2 r2 g2 b2 x12 y12 r12 g12 b12\n"
-	  "x32 y32 r32 g32 b32 x3 y3 r3 g3 b3 x32 y32 r32 g32 b32 x13 y13 r13\n"
-	  "g13 b13 x32 y32 r32 g32 b32 x12 y12 r12 g12 b12 x13 y13 r13 g13 b13\n"
-	  "ST ST ST ST } { x1 y1 x2 y2 x3 y3 r1 g1 b1 T } ifelse } bd\n"
-	  "end\n"
-	  "%%%%EndProlog\n"
-	  "%%%%BeginSetup\n"
-	  "/DeviceRGB setcolorspace\n"
-	  "gl2psdict begin\n"
-	  "%%%%EndSetup\n"
-	  "%%%%Page: 1 1\n"
-	  "%%%%BeginPageSetup\n"
-	  "%%%%EndPageSetup\n"
-	  "mark\n"
-	  "gsave\n"
-	  "1.0 1.0 scale\n",
-	  gl2ps.title, GL2PS_VERSION, gl2ps.producer, ctime(&now), 
-	  viewport[2], viewport[3], viewport[0], viewport[1], viewport[2], viewport[3]);
-	  
-  if(gl2ps.options & GL2PS_DRAW_BACKGROUND){
-    if(gl2ps.colormode == GL_RGBA || gl2ps.colorsize == 0)
-      glGetFloatv(GL_COLOR_CLEAR_VALUE, rgba);
-    else{
-      glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
-      rgba[0] = gl2ps.colormap[index][0];
-      rgba[1] = gl2ps.colormap[index][1];
-      rgba[2] = gl2ps.colormap[index][2];
-      rgba[3] = 0.;
-    }
-    fprintf(gl2ps.stream,
-	    "%g %g %g C\n"
-	    "newpath %d %d moveto %d %d lineto %d %d lineto %d %d lineto\n"
-	    "closepath fill\n",
-	    rgba[0], rgba[1], rgba[2], 
-	    viewport[0], viewport[1], viewport[2], viewport[1], 
-	    viewport[2], viewport[3], viewport[0], viewport[3]);
-  }
-}
-
-GLvoid gl2psPrintPostscriptPrimitive(GLvoid *a, GLvoid *b){
-  GL2PSprimitive *prim;
-
-  prim = *(GL2PSprimitive**) a;
-
-  if(gl2ps.options & GL2PS_OCCLUSION_CULL && prim->depth >= 0.) return;
-
-  switch(prim->type){
-  case GL2PS_TEXT :
-    fprintf(gl2ps.stream, "(%s) %g %g %g %g %g %d /%s S\n",
-	    prim->text->str, prim->verts[0].xyz[0], prim->verts[0].xyz[1],
-	    prim->verts[0].rgba[0], prim->verts[0].rgba[1], 
-	    prim->verts[0].rgba[2], prim->text->fontsize, 
-	    prim->text->fontname);
-    break;
-  case GL2PS_POINT :
-    fprintf(gl2ps.stream, "%g %g %g %g %g %g P\n", 
-	    prim->verts[0].xyz[0], prim->verts[0].xyz[1], 0.5*prim->width, 
-	    prim->verts[0].rgba[0], prim->verts[0].rgba[1], prim->verts[0].rgba[2]);
-    break;
-  case GL2PS_LINE :
-    if(prim->dash)
-      fprintf(gl2ps.stream, "[%d] 0 setdash\n", prim->dash);
-    if(gl2ps.shade){
-      fprintf(gl2ps.stream, "%g %g %g %g %g %g %g %g %g %g %g SL\n",
-	      prim->verts[1].xyz[0], prim->verts[1].xyz[1],
-	      prim->verts[1].rgba[0], prim->verts[1].rgba[1],
-	      prim->verts[1].rgba[2], prim->verts[0].xyz[0],
-	      prim->verts[0].xyz[1], prim->verts[0].rgba[0],
-	      prim->verts[0].rgba[1], prim->verts[0].rgba[2],
-	      0.2*prim->width);
-    }
-    else{
-      fprintf(gl2ps.stream, "%g %g %g %g %g %g %g %g L\n",
-	      prim->verts[1].xyz[0], prim->verts[1].xyz[1],
-	      prim->verts[0].xyz[0], prim->verts[0].xyz[1],
-	      prim->verts[0].rgba[0], prim->verts[0].rgba[1], 
-	      prim->verts[0].rgba[2], 0.2*prim->width);
-    }
-    if(prim->dash)
-      fprintf(gl2ps.stream, "[] 0 setdash\n");
-    break;
-  case GL2PS_TRIANGLE :
-    if(gl2ps.shade){
-      fprintf(gl2ps.stream, "%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g ST\n",
-	      prim->verts[2].xyz[0], prim->verts[2].xyz[1],
-	      prim->verts[2].rgba[0], prim->verts[2].rgba[1],
-	      prim->verts[2].rgba[2], prim->verts[1].xyz[0],
-	      prim->verts[1].xyz[1], prim->verts[1].rgba[0],
-	      prim->verts[1].rgba[1], prim->verts[1].rgba[2],
-	      prim->verts[0].xyz[0], prim->verts[0].xyz[1],
-	      prim->verts[0].rgba[0], prim->verts[0].rgba[1],
-	      prim->verts[0].rgba[2]);
-    }
-    else{
-      fprintf(gl2ps.stream, "%g %g %g %g %g %g %g %g %g T\n",
-	      prim->verts[2].xyz[0], prim->verts[2].xyz[1],
-	      prim->verts[1].xyz[0], prim->verts[1].xyz[1],
-	      prim->verts[0].xyz[0], prim->verts[0].xyz[1],
-	      prim->verts[0].rgba[0], prim->verts[0].rgba[1],
-	      prim->verts[0].rgba[2]);
-    }
-    break;
-  case GL2PS_QUADRANGLE :
-    gl2psMsg(GL2PS_WARNING, "There should not be any quad left to print");
-    break;
-  default :
-    gl2psMsg(GL2PS_ERROR, "Unknown type of primitive to print");
-    break;
-  }
-}
-
-void gl2psPrintPostscriptFooter(GLvoid){
-  fprintf(gl2ps.stream,
-	  "grestore\n"
-	  "showpage\n"
-	  "cleartomark\n"
-	  "%%%%PageTrailer\n"
-	  "%%%%Trailer\n"
-	  "end\n"
-	  "%%%%EOF\n");
-}
-
-
-/* The public routines */
-
-GLvoid gl2psBeginPage(char *title, char *producer, GLint sort, GLint options, 
-		      GLint colormode, GLint colorsize, GL2PSrgba *colormap,
-		      GLint buffersize, FILE *stream){
-
-  gl2ps.format = GL2PS_EPS; /* a new arg should be introduced to select the format */
-  gl2ps.title = title;
-  gl2ps.producer = producer;
-  gl2ps.sort = sort;
-  gl2ps.options = options;
-  gl2ps.colormode = colormode;
-  gl2ps.buffersize = buffersize > 0 ? buffersize : 2048 * 2048;
-  gl2ps.feedback = (GLfloat*)gl2psMalloc(gl2ps.buffersize * sizeof(GLfloat));
-  gl2ps.primitives = gl2psListCreate(500, 500, sizeof(GL2PSprimitive*));
-
-  if(gl2ps.colormode == GL_RGBA){
-    gl2ps.colorsize = 0;
-    gl2ps.colormap = NULL;
-  }
-  else if(gl2ps.colormode == GL_COLOR_INDEX){
-    if(!colorsize || !colormap)
-      gl2psMsg(GL2PS_ERROR, "Missing colormap for GL_COLOR_INDEX rendering");
-    if(gl2ps.colormap) 
-      gl2psFree(gl2ps.colormap);
-    gl2ps.colorsize = colorsize;
-    gl2ps.colormap = (GL2PSrgba*)gl2psMalloc(gl2ps.colorsize * sizeof(GL2PSrgba));
-    memcpy(gl2ps.colormap, colormap, gl2ps.colorsize * sizeof(GL2PSrgba));
-  }
-  else
-    gl2psMsg(GL2PS_ERROR, "Unknown color mode in gl2psBeginPage");
-
-  if(stream)
-    gl2ps.stream = stream;
-  else
-    gl2psMsg(GL2PS_ERROR, "Bad file pointer");
-
-  glFeedbackBuffer(gl2ps.buffersize, GL_3D_COLOR, gl2ps.feedback);
-  glRenderMode(GL_FEEDBACK);  
-}
-
-GLint gl2psEndPage(GLvoid){
-  GL2PSbsptree   *root;
-  GL2PSxyz        eye={0., 0., 100000.};
-  GLint           shademodel, res;
-  void          (*phead)(GLvoid);
-  void          (*pprim)(GLvoid *a, GLvoid *b);
-  void          (*pfoot)(GLvoid);
-
-  glGetIntegerv(GL_SHADE_MODEL, &shademodel);
-  gl2ps.shade = (shademodel == GL_SMOOTH);
-
-  res = gl2psParseFeedbackBuffer();
-
-  if(gl2ps.feedback) gl2psFree(gl2ps.feedback);
-
-  if(res == GL2PS_SUCCESS){
-
-    switch(gl2ps.format){
-      /* other vector formats should go here */
-    case GL2PS_EPS :
-    default :
-      phead = gl2psPrintPostscriptHeader;
-      pprim = gl2psPrintPostscriptPrimitive;
-      pfoot = gl2psPrintPostscriptFooter;
-      break;
-    }
-
-    phead();
-    switch(gl2ps.sort){
-    case GL2PS_NO_SORT :
-      gl2psListAction(gl2ps.primitives, pprim);
-      gl2psListAction(gl2ps.primitives, gl2psFreePrimitive);
-      gl2psListDelete(gl2ps.primitives);
-      res = GL2PS_SUCCESS;
-      break;
-    case GL2PS_SIMPLE_SORT :
-      gl2psListSort(gl2ps.primitives, gl2psCompareDepth);
-      gl2psListActionInverse(gl2ps.primitives, pprim);
-      gl2psListAction(gl2ps.primitives, gl2psFreePrimitive);
-      gl2psListDelete(gl2ps.primitives);
-      res = GL2PS_SUCCESS;
-      break;
-    case GL2PS_BSP_SORT :
-      root = (GL2PSbsptree*)gl2psMalloc(sizeof(GL2PSbsptree));
-      gl2psBuildBspTree(root, gl2ps.primitives);
-      if(gl2ps.boundary) gl2psBuildPolygonBoundary(root);
-      if(gl2ps.options & GL2PS_OCCLUSION_CULL){
-	gl2psTraverseBspTree(root, eye, -GL2PS_EPSILON, gl2psLess,
-			     gl2psAddInImage);
-      }
-      gl2psTraverseBspTree(root, eye, GL2PS_EPSILON, gl2psGreater, 
-			   pprim);
-      gl2psFreeBspTree(root);
-      res = GL2PS_SUCCESS;
-      break;
-    default :
-      gl2psMsg(GL2PS_ERROR, "Unknown sorting algorithm");
-    }
-    pfoot();
-    fflush(gl2ps.stream);
-
-  }
-
-  if(gl2ps.colormap) gl2psFree(gl2ps.colormap);
-
-  return res;
-}
-
-GLvoid gl2psText(char *str, char *fontname, GLint fontsize){
-  GLfloat         pos[4];
-  GL2PSprimitive  *prim;
-  GLint           len;
-
-  prim = (GL2PSprimitive *)gl2psMalloc(sizeof(GL2PSprimitive));
-  prim->type = GL2PS_TEXT;
-  prim->boundary = 0;
-  prim->numverts = 1;
-  prim->verts = (GL2PSvertex *)gl2psMalloc(sizeof(GL2PSvertex));
-  glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
-  prim->verts[0].xyz[0] = pos[0];
-  prim->verts[0].xyz[1] = pos[1];
-  prim->verts[0].xyz[2] = pos[2];
-  prim->depth = pos[2];
-  prim->dash = 0;
-  prim->width = 1;
-  glGetFloatv(GL_CURRENT_RASTER_COLOR, prim->verts[0].rgba);
-  prim->text = (GL2PSstring*)gl2psMalloc(sizeof(GL2PSstring));
-  if((len = strlen(str))){
-    prim->text->str = (char*)gl2psMalloc((len+1)*sizeof(char));
-    strcpy(prim->text->str, str);
-  }
-  else
-    prim->text->str = "";
-  prim->text->fontname = fontname;
-  prim->text->fontsize = fontsize;
-  gl2psListAdd(gl2ps.primitives, &prim);
-}
-
-GLvoid gl2psEnable(GLint mode){
-  switch(mode){
-  case GL2PS_POLYGON_OFFSET_FILL :
-    glPassThrough(GL2PS_BEGIN_POLYGON_OFFSET_FILL);
-    glGetFloatv(GL_POLYGON_OFFSET_FACTOR, &gl2ps.offset[0]);
-    glGetFloatv(GL_POLYGON_OFFSET_UNITS, &gl2ps.offset[1]);
-    break;
-  case GL2PS_POLYGON_BOUNDARY :
-    glPassThrough(GL2PS_BEGIN_POLYGON_BOUNDARY);
-    break;
-  case GL2PS_LINE_STIPPLE :
-    glPassThrough(GL2PS_BEGIN_LINE_STIPPLE);
-    break;
-  default :
-    gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psEnable");
-    break;
-  }
-}
-
-GLvoid gl2psDisable(GLint mode){
-  switch(mode){
-  case GL2PS_POLYGON_OFFSET_FILL :
-    glPassThrough(GL2PS_END_POLYGON_OFFSET_FILL);
-    break;
-  case GL2PS_POLYGON_BOUNDARY :
-    glPassThrough(GL2PS_END_POLYGON_BOUNDARY);
-    break;
-  case GL2PS_LINE_STIPPLE :
-    glPassThrough(GL2PS_END_LINE_STIPPLE);
-    break;
-  default :
-    gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psDisable");
-    break;
-  }
-}
-
-GLvoid gl2psPointSize(GLfloat value){
-  glPassThrough(GL2PS_SET_POINT_SIZE);
-  glPassThrough(value);
-}
-
-GLvoid gl2psLineWidth(GLfloat value){
-  glPassThrough(GL2PS_SET_LINE_WIDTH);
-  glPassThrough(value);
-}
diff --git a/Graphics/gl2ps.h b/Graphics/gl2ps.h
deleted file mode 100644
index 07753749d7b8f2b6145fa09a2cfd8b74afa6d919..0000000000000000000000000000000000000000
--- a/Graphics/gl2ps.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * GL2PS, an OpenGL to Postscript Printing Library
- * Copyright (C) 1999-2001  Christophe Geuzaine
- *
- * $Id: gl2ps.h,v 1.12 2001-06-12 08:49:42 geuzaine Exp $
- *
- * E-mail: Christophe.Geuzaine@AdValvas.be
- * URL: http://www.geuz.org/gl2ps/
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef __GL2PS_H__
-#define __GL2PS_H__
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <GL/gl.h>
-
-#define GL2PS_VERSION                    0.4
-#define GL2PS_NONE                       0
-
-/* Output file format */
-
-#define GL2PS_EPS                        1
-
-/* Sorting algorithms */
-
-#define GL2PS_NO_SORT                    1
-#define GL2PS_SIMPLE_SORT                2
-#define GL2PS_BSP_SORT                   3
-
-/* Options for gl2psBeginPage */
-
-#define GL2PS_DRAW_BACKGROUND            (1<<0)
-#define GL2PS_SIMPLE_LINE_OFFSET         (1<<1)
-#define GL2PS_SILENT                     (1<<2)
-#define GL2PS_BEST_ROOT                  (1<<3)
-#define GL2PS_OCCLUSION_CULL             (1<<4)
-
-/* Arguments for gl2psEnable/gl2psDisable */
-
-#define GL2PS_POLYGON_OFFSET_FILL        1
-#define GL2PS_POLYGON_BOUNDARY           2
-#define GL2PS_LINE_STIPPLE               3
-
-/* Magic numbers */
-
-#define GL2PS_EPSILON                    5.e-3
-
-/* Message levels */
-
-#define GL2PS_INFO                       1
-#define GL2PS_WARNING                    2
-#define GL2PS_ERROR                      3
-
-/* Error codes */
-
-#define GL2PS_SUCCESS                    0
-#define GL2PS_NO_FEEDBACK               -1
-#define GL2PS_OVERFLOW                  -2
-
-/* Primitive types */
-
-#define GL2PS_TEXT                       1
-#define GL2PS_POINT                      2
-#define GL2PS_LINE                       3
-#define GL2PS_QUADRANGLE                 4
-#define GL2PS_TRIANGLE                   5
-
-/* BSP tree primitive comparison */
-
-#define GL2PS_COINCIDENT                 1
-#define GL2PS_IN_FRONT_OF                2
-#define GL2PS_IN_BACK_OF                 3
-#define GL2PS_SPANNING                   4
-
-/* Pass through options */
-
-#define GL2PS_BEGIN_POLYGON_OFFSET_FILL  1
-#define GL2PS_END_POLYGON_OFFSET_FILL    2
-#define GL2PS_BEGIN_POLYGON_BOUNDARY     3
-#define GL2PS_END_POLYGON_BOUNDARY       4
-#define GL2PS_BEGIN_LINE_STIPPLE         5
-#define GL2PS_END_LINE_STIPPLE           6
-#define GL2PS_SET_POINT_SIZE             7
-#define GL2PS_SET_LINE_WIDTH             8
-
-typedef GLfloat GL2PSrgba[4];
-typedef GLfloat GL2PSxyz[3];
-typedef GLfloat GL2PSxy[2];
-typedef GLfloat GL2PSplane[4];
-
-typedef struct {
-  GLint nmax, size, incr, n;
-  char *array;
-} GL2PSlist;
-
-typedef struct _GL2PSbsptree GL2PSbsptree;
-
-struct _GL2PSbsptree {
-  GL2PSplane plane;
-  GL2PSlist *primitives;
-  GL2PSbsptree *front, *back;
-};
-
-typedef struct _GL2PSbsptree2d GL2PSbsptree2d;
-
-struct _GL2PSbsptree2d {
-  GLshort flag;
-  GL2PSxy a, b;
-  GL2PSbsptree2d *front, *back;
-};
-
-typedef struct {
-  GL2PSxyz xyz;
-  GL2PSrgba rgba;
-} GL2PSvertex;
-
-typedef struct {
-  GLshort fontsize;
-  char *str, *fontname;
-} GL2PSstring;
-
-typedef struct {
-  GLshort type, numverts, boundary, dash, width;
-  GLfloat depth;
-  GL2PSvertex *verts;
-  GL2PSstring *text;
-} GL2PSprimitive;
-
-typedef struct {
-  GLint format, sort, options, colorsize, colormode, buffersize;
-  char *title, *producer;
-  GLboolean shade, boundary;
-  GLfloat *feedback, offset[2];
-  GL2PSrgba *colormap;
-  GL2PSlist *primitives;
-  FILE *stream;
-} GL2PScontext;
-
-
-/* public functions */
-
-GLvoid gl2psBeginPage(char *title, char *producer, GLint sort, GLint options, 
-		      GLint colormode, GLint colorsize, GL2PSrgba *colormap, 
-		      GLint buffersize, FILE * stream);
-GLint  gl2psEndPage(GLvoid);
-GLvoid gl2psText(char *str, char *fontname, GLint size);
-GLvoid gl2psEnable(GLint mode);
-GLvoid gl2psDisable(GLint mode);
-GLvoid gl2psPointSize(GLfloat value);
-GLvoid gl2psLineWidth(GLfloat value);
-
-#endif
diff --git a/Graphics/gl2yuv.cpp b/Graphics/gl2yuv.cpp
deleted file mode 100644
index ba600cc3e29b1032424ae11543286f704c4d180a..0000000000000000000000000000000000000000
--- a/Graphics/gl2yuv.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-// $Id: gl2yuv.cpp,v 1.3 2001-01-08 08:05:44 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-
-void create_yuv(FILE *outfile, int width, int height){
-
-  register int x, y;
-  register unsigned char *dy0, *dy1;
-  register unsigned char *dcr, *dcb;
-  register unsigned char *src0, *src1;
-  register int cdivisor;
-
-  static int first = 1;
-  static float mult299[1024], mult587[1024], mult114[1024];
-  static float mult16874[1024], mult33126[1024], mult5[1024];
-  static float mult41869[1024], mult08131[1024];
-
-  unsigned char  *pixels;
-  unsigned char  **orig_y, **orig_cr, **orig_cb;
-  int row_stride;
-  
-  if (first){
-    register int index;
-    register int maxValue;
-    
-    maxValue = 255;
-
-    for (index = 0; index <= maxValue; index++){
-      mult299[index] = index*0.29900;
-      mult587[index] = index*0.58700;
-      mult114[index] = index*0.11400;
-      mult16874[index] = -0.16874*index;
-      mult33126[index] = -0.33126*index;
-      mult5[index] = index*0.50000;
-      mult41869[index] = -0.41869*index;
-      mult08131[index] = -0.08131*index;
-    }
-   
-    first = 0;
-  }
-
-  // yuv format assumes even number of rows and columns
-  height -= height%2;
-  width -= width%2;
-
-  glPixelStorei(GL_PACK_ALIGNMENT,1);
-  glPixelStorei(GL_UNPACK_ALIGNMENT,1);
-  pixels=(unsigned char *)Malloc(height*width*3);
-  glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,pixels);
-  row_stride = width * 3;
-
-  orig_y = (unsigned char **) Malloc(sizeof(unsigned char *) * height);
-  for (y = 0; y < height; y++) {
-    orig_y[y] = (unsigned char *) Malloc(sizeof(unsigned char) * width);
-  }
-
-  orig_cr = (unsigned char **) Malloc(sizeof(char *) * height / 2);
-  for (y = 0; y < height / 2; y++) {
-    orig_cr[y] = (unsigned char *) Malloc(sizeof(char) * width / 2);
-  }
-  
-  orig_cb = (unsigned char **) Malloc(sizeof(char *) * height / 2);
-  for (y = 0; y < height / 2; y++) {
-    orig_cb[y] = (unsigned char *) Malloc(sizeof(char) * width / 2);
-  }
-  
-  // assume ydivisor = 1, so cdivisor = 4
-  cdivisor = 4;
-  
-  for (y = 0; y < height; y += 2){
-    src0 = &(pixels[y * row_stride]);
-    src1 = &(pixels[(y+1) * row_stride]);
-    dy0 = orig_y[y];
-    dy1 = orig_y[y + 1];
-    dcr = orig_cr[y / 2];
-    dcb = orig_cb[y / 2];
-    
-    for (x = 0; x < width; x += 2, dy0 += 2, dy1 += 2, dcr++,
-                                   dcb++, src0 += 6, src1 += 6){
-      *dy0 = (unsigned char)(mult299[*src0] +
-			     mult587[src0[1]] +
-			     mult114[src0[2]]);
-      
-      *dy1 = (unsigned char)(mult299[*src1] +
-			     mult587[src1[1]] +
-			     mult114[src1[2]]);
-      
-      dy0[1] = (unsigned char)(mult299[src0[3]] +
-			       mult587[src0[4]] +
-			       mult114[src0[5]]);
-      
-      dy1[1] = (unsigned char)(mult299[src1[3]] +
-			       mult587[src1[4]] +
-			       mult114[src1[5]]);
-      
-      *dcb = (unsigned char)((mult16874[*src0] +
-			      mult33126[src0[1]] +
-			      mult5[src0[2]] +
-			      mult16874[*src1] +
-			      mult33126[src1[1]] +
-			      mult5[src1[2]] +
-			      mult16874[src0[3]] +
-			      mult33126[src0[4]] +
-			      mult5[src0[5]] +
-			      mult16874[src1[3]] +
-			      mult33126[src1[4]] +
-			      mult5[src1[5]]) / cdivisor) + 128;
-      
-      *dcr = (unsigned char)((mult5[*src0] +
-			      mult41869[src0[1]] +
-			      mult08131[src0[2]] +
-			      mult5[*src1] +
-			      mult41869[src1[1]] +
-			      mult08131[src1[2]] +
-			      mult5[src0[3]] +
-			      mult41869[src0[4]] +
-			      mult08131[src0[5]] +
-			      mult5[src1[3]] +
-			      mult41869[src1[4]] +
-			      mult08131[src1[5]]) / cdivisor) + 128;
-    }
-  }
-
-  // Y
-  for (y = height-1; y >=0; y--) fwrite(orig_y[y], 1, width, outfile);
-  
-  // U
-  for (y = height/2-1; y >=0; y--) fwrite(orig_cb[y], 1, width / 2, outfile);
-  
-  // V
-  for (y = height/2-1; y >=0; y--) fwrite(orig_cr[y], 1, width / 2, outfile);
-
-  Free(pixels);
-
-  for (y = 0; y < height; y++) Free(orig_y[y]);
-  Free(orig_y);
-
-  for (y = 0; y < height / 2; y++) Free(orig_cr[y]);
-  Free(orig_cr);
-  
-  for (y = 0; y < height / 2; y++) Free(orig_cb[y]);
-  Free(orig_cb);
-
-}
-
diff --git a/Graphics/gl2yuv.h b/Graphics/gl2yuv.h
deleted file mode 100644
index 2921e67be195f097379bcb5f622f0d99cfda1944..0000000000000000000000000000000000000000
--- a/Graphics/gl2yuv.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _GL2YUV_H_
-#define _GL2YUV_H_
-
-void create_yuv(FILE *outfile, int width, int height);
-
-#endif
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 2eed73ca1d82c0158f54b90cd8077702628eb744..0000000000000000000000000000000000000000
--- a/Makefile
+++ /dev/null
@@ -1,614 +0,0 @@
-# $Id: Makefile,v 1.126 2001-08-13 07:53:30 geuzaine Exp $
-# ----------------------------------------------------------------------
-#  Makefile for Gmsh  
-# ----------------------------------------------------------------------
-
-           GMSH_RELEASE = 1.23
-
-                   MAKE = make
-                     CC = c++
-                  FLAGS = -g -Wall
-                     RM = rm
-                RMFLAGS = -f 
-
-# ----------------------------------------------------------------------
-#  Includes
-# ----------------------------------------------------------------------
-
-             OPENGL_INC = -I/usr/X11R6/include\
-                          -I/usr/include/X11/GLw\
-                          -I$(HOME)/SOURCES/Mesa-3.1/include\
-                          -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-              MOTIF_INC = -I/usr/X11R6/LessTif/Motif1.2/include
-               FLTK_INC = -I$(HOME)/SOURCES/fltk
-        FLTK_INC_SCOREC = -I/users/develop/develop/visual/fltk/1.0/include
-      FLTK_INC_LAPTOPJF = -I../../fltk-1.0.9
-   FLTK_INC_GERTHA_BURO = -I../../fltk
-
-# ----------------------------------------------------------------------
-#  3rd party libraries
-# ----------------------------------------------------------------------
-
-             OPENGL_LIB = -lGLU -lGL
-       OPENGL_MOTIF_LIB = -lGLw
-               MESA_LIB = -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLU -lGL
-         MESA_MOTIF_LIB = -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLw
-        MESA_STATIC_LIB = $(HOME)/SOURCES/Mesa-static/lib/libGLU.a\
-                          $(HOME)/SOURCES/Mesa-static/lib/libGL.a
-  MESA_MOTIF_STATIC_LIB = $(HOME)/SOURCES/Mesa-static/lib/libGLw.a
-#            XMOTIF_LIB = /usr/local/lib/libXm.so.2 -L/usr/X11R6/lib -lXt -lX11 -lXext
-             XMOTIF_LIB = -L/usr/local/lib -L/usr/X11R6/LessTif/Motif1.2/lib -lXm\
-                          -L/usr/X11R6/lib -lXt -lX11 -lXext 
-               FLTK_LIB = -L$(HOME)/SOURCES/fltk/lib -lfltk -L/usr/X11R6/lib -lX11
-        FLTK_STATIC_LIB = -L$(HOME)/SOURCES/fltk-static/lib -lfltk -L/usr/X11R6/lib -lX11
-FLTK_LIB_SOLARIS_SCOREC = /users/develop/develop/visual/fltk/1.0/lib/sun4_5/libfltk-gcc.a\
-                          -L/usr/X11R6/lib -lX11
-  FLTK_LIB_LINUX_SCOREC = /users/develop/develop/visual/fltk/1.0/lib/x86_linux/libfltk.a\
-                          -L/usr/X11R6/lib -lX11
-
-             THREAD_LIB = -L/usr/lib -lpthread
-
-# ----------------------------------------------------------------------
-#  Gmsh definitions
-# ----------------------------------------------------------------------
-
-               GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser\
-                          Motif Fltk Plugin jpeg utils Parallel
-        GMSH_XMOTIF_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif jpeg Parallel
-          GMSH_FLTK_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Fltk jpeg Plugin Parallel
-           GMSH_BOX_DIR = Adapt Box Common DataStr Geo Mesh Parser Plugin Parallel
-           GMSH_BIN_DIR = bin
-           GMSH_LIB_DIR = lib
-           GMSH_DOC_DIR = doc
-          GMSH_DEMO_DIR = demos
-         GMSH_TUTOR_DIR = tutorial
-       GMSH_ARCHIVE_DIR = archives
-
-
-        GMSH_XMOTIF_LIB = -L$(GMSH_LIB_DIR) -lMotif -lGraphics -lParser -lMesh -lGeo\
-                                            -lAdapt -lCommon -lDataStr -lJpeg -lParallel
-          GMSH_FLTK_LIB = -L$(GMSH_LIB_DIR) -lFltk -lParser -lGraphics -lMesh -lGeo\
-                                            -lAdapt -lCommon -lDataStr -lJpeg -lPlugin -lParallel
-           GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lBox -lParser -lMesh -lGeo\
-                                            -lAdapt -lPlugin -lCommon -lDataStr -lParallel
-           GMSH_ARCHIVE = $(GMSH_ARCHIVE_DIR)/gmsh-`date "+%Y.%m.%d"`
-            GMSH_SRCRPM = gmsh-$(GMSH_RELEASE)
-           GMSH_SOURCES = `find . \( ! -name "*.tar*" -a ! -name "*.tgz" \
-                                  -a ! -name "*.o"    -a ! -name "lib*.a"   \
-                                  -a ! -name "*.msh"  -a ! -name "*.bak" \
-                                  -a ! -name "gmsh"   -a ! -name "gmsh-*"\
-                                  -a ! -type d \)`
-             GMSH_UNAME = `uname`
-
-# ----------------------------------------------------------------------
-# Rules for developers
-# ----------------------------------------------------------------------
-
-default: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=$(FLAGS)" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-static:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=-I$(HOME)/SOURCES/Mesa-static/include -I$(HOME)/SOURCES/Mesa-static/include/GL" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-	$(CC) -o $(GMSH_BIN_DIR)/gmshm $(GMSH_FLTK_LIB) $(MESA_STATIC_LIB) \
-                 $(FLTK_STATIC_LIB) -lm
-
-win: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-g -Wall -DWIN32" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-	g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh.exe $(GMSH_FLTK_LIB) \
-            $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-
-motif: initialtag
-	@for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=$(FLAGS)" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN -D_NOPLUGIN" \
-           "VERSION_FLAGS=-D_XMOTIF" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-
-gmsh:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lm
-
-efence:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lefence -lm
-
-gmsh2:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lfltk_gl $(THREAD_LIB) -lm
-
-motifgl:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-              $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm
-
-motifmesa:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-              $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm
-
-motifmesastatic:
-	$(CC) -o $(GMSH_BIN_DIR)/gmshm $(GMSH_XMOTIF_LIB)\
-              $(MESA_MOTIF_STATIC_LIB) $(MESA_STATIC_LIB)\
-              $(XMOTIF_LIB) $(THREAD_LIB) -lm
-
-
-# ----------------------------------------------------------------------
-# Utilities
-# ----------------------------------------------------------------------
-
-parser:
-	cd Parser && $(MAKE) parser
-
-utilities:
-	cd utils && $(MAKE)
-
-purge:
-	for i in "." $(GMSH_DIR) $(GMSH_LIB_DIR) $(GMSH_ARCHIVE_DIR)\
-                     $(GMSH_DEMO_DIR) $(GMSH_TUTOR_DIR) $(GMSH_DOC_DIR) $(GMSH_BOX_DIR); \
-        do (cd $$i && $(RM) $(RMFLAGS) *~ *~~ .gmsh-tmp .gmsh-errors gmon.out); \
-        done
-
-clean:
-	for i in $(GMSH_DIR) $(GMSH_DOC_DIR) $(GMSH_LIB_DIR) ; \
-        do (cd $$i && $(MAKE) clean); \
-        done
-
-depend:
-	for i in $(GMSH_DIR); \
-        do (cd $$i && $(MAKE) depend \
-           "CC=$(CC)" \
-           "VERSION_FLAGS=-D_FLTK -D_XMOTIF" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC) $(FLTK_INC)" \
-        ); done
-
-nodepend:
-	for i in $(GMSH_DIR) ; do \
-          (cd $$i && (sed '/^# DO NOT DELETE THIS LINE/q' Makefile) > Makefile.new \
-          && cp Makefile Makefile.bak \
-          && cp Makefile.new Makefile \
-          && $(RM) $(RMFLAGS) Makefile.new); \
-        done 
-
-tag:
-	$(RM) $(RMFLAGS) Common/GmshVersion.h
-	echo "#define GMSH_VERSION  $(GMSH_RELEASE)" >  Common/GmshVersion.h
-	echo "#define GMSH_DATE     \"`date`\""      >> Common/GmshVersion.h
-	echo "#define GMSH_HOST     \"`hostname`\""  >> Common/GmshVersion.h
-	echo "#define GMSH_PACKAGER \"`whoami`\""    >> Common/GmshVersion.h
-	echo "#define GMSH_OS       \"`uname -sr`\"" >> Common/GmshVersion.h
-
-initialtag:
-	@if [ ! -r Common/GmshVersion.h ]; then \
-        $(MAKE) tag ; \
-        fi
-
-tags:
-	gtags
-	htags
-
-tgz:
-	if (test -f $(GMSH_ARCHIVE).tar.gz); \
-	then mv -f $(GMSH_ARCHIVE).tar.gz $(GMSH_ARCHIVE).tar.gz~; \
-	fi
-	tar cvf $(GMSH_ARCHIVE).tar $(GMSH_SOURCES)
-	gzip $(GMSH_ARCHIVE).tar
-	chmod 640 $(GMSH_ARCHIVE).tar.gz
-
-src:
-	tar cvf $(GMSH_SRCRPM).tar $(GMSH_SOURCES)
-	gzip $(GMSH_SRCRPM).tar
-
-distrib:
-	mkdir gmsh-$(GMSH_RELEASE)
-	cp $(GMSH_BIN_DIR)/gmsh gmsh-$(GMSH_RELEASE)
-	cp -R tutorial gmsh-$(GMSH_RELEASE)
-	cp -R demos gmsh-$(GMSH_RELEASE)
-	rm -rf gmsh-$(GMSH_RELEASE)/*/CVS
-	rm -f gmsh-$(GMSH_RELEASE)/*/*.msh
-	rm -f gmsh-$(GMSH_RELEASE)/*/*~
-	tar cvf gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tar gmsh-$(GMSH_RELEASE)
-	gzip gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tar
-	mv gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tar.gz gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tgz
-	rm -rf gmsh-$(GMSH_RELEASE)
-
-distrib-win:
-	cp $(GMSH_BIN_DIR)/gmsh.exe ../gmsh-distrib
-	cp doc/README.txt ../gmsh-distrib
-	cp -R tutorial ../gmsh-distrib
-	cp -R demos ../gmsh-distrib
-	rm -f ../gmsh-distrib/tutorial/README
-	rm -rf ../gmsh-distrib/*/CVS
-	rm -f ../gmsh-distrib/*/*.msh
-	rm -f ../gmsh-distrib/*/*~
-	cd ../gmsh-distrib && zip -r gmsh-$(GMSH_RELEASE)-Windows.zip *
-	mv ../gmsh-distrib/gmsh-$(GMSH_RELEASE)-Windows.zip .
-	rm -rf ../gmsh-distrib/tutorial
-	rm -rf ../gmsh-distrib/demos
-
-strip_bin:
-	strip $(GMSH_BIN_DIR)/gmsh
-
-# ----------------------------------------------------------------------
-# Demos
-# ----------------------------------------------------------------------
-
-dem:
-	gtar zcvf gmsh-demos.tgz $(GMSH_DEMO_DIR)
-	gtar zcvf gmsh-tutorial.tgz $(GMSH_TUTOR_DIR)
-
-# ----------------------------------------------------------------------
-# Black Box
-# ----------------------------------------------------------------------
-
-bb: tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh-bb $(GMSH_BOX_LIB) -lm
-
-bb-parallel: tag
-	PARALLEL=1
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CC=mpiCC" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX -DPARALLEL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	mpiCC -o $(GMSH_BIN_DIR)/gmsh-bb $(GMSH_BOX_LIB) -lm
-
-bbn: tag
-	@for i in $(GMSH_BOX_DIR) ; do (cd $$i && $(MAKE) \
-           "CC=g++ -mno-cygwin -I/mingw/include" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	g++ -o $(GMSH_BIN_DIR)/gmsh.exe -mno-cygwin -L/mingw/lib $(GMSH_BOX_LIB) -lm
-
-# ----------------------------------------------------------------------
-# Ready to compile for some platforms with MOTIF
-# ----------------------------------------------------------------------
-
-motif_dec: tag motif_compile_little_endian motif_link_opengl strip_bin
-
-motif_linux: tag motif_compile_little_endian motif_link_mesa strip_bin
-
-motif_linux_2952: tag motif_compile_little_endian_2952 motif_link_mesa_2952 strip_bin
-
-motif_ibm: tag motif_compile_big_endian motif_link_mesa strip_bin
-
-motif_sun: tag motif_compile_big_endian motif_link_opengl strip_bin
-
-motif_hp: tag motif_compile_big_endian motif_link_hp strip_bin
-
-motif_sgi: tag motif_compile_sgi motif_link_sgi strip_bin
-
-motif_rpm: src
-	mv $(GMSH_SRCRPM).tar.gz /usr/src/redhat/SOURCES
-	rpm -bb utils/gmsh_motif.spec
-	cp /usr/src/redhat/RPMS/i386/$(GMSH_SRCRPM)-1.i386.rpm .
-	cp /usr/src/redhat/BUILD/$(GMSH_SRCRPM)/bin/gmsh .
-	gtar zcvf gmsh-$(GMSH_UNAME).tgz gmsh
-	rm -f gmsh
-
-motif_compile_little_endian:
-	@for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_XMOTIF -D_NOPLUGIN" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-
-motif_compile_little_endian_2952:
-	@for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(HOME)/gcc-2.95.2/bin/g++" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_XMOTIF -D_NOPLUGIN" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-
-motif_compile_little_endian_threads:
-	@for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-D_REENTRANT -O3" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_XMOTIF -D_NOPLUGIN -D_USETHREADS" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-
-motif_compile_big_endian:
-	@for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_XMOTIF -D_NOPLUGIN" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-
-# special car -O2 merde dans 3d_smesh.c sur TransfiniteHex()
-motif_compile_sgi:
-	@for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \
-           "CC=CC" \
-           "C_FLAGS=-O2 -o32 -Olimit 3000" \
-           "RANLIB=true"\
-           "AR=CC -o32 -ar -o"\
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_XMOTIF -D_NOPLUGIN" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-	@for i in Mesh; do (cd $$i && $(MAKE) \
-           "CC=CC" \
-           "C_FLAGS=-O1 -o32" \
-           "AR=CC -o32 -ar -o"\
-           "RANLIB=true"\
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_XMOTIF -D_NOPLUGIN" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(MOTIF_INC)" \
-        ); done
-
-motif_link_sgi:
-	CC -O2 -o32 -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-           $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) -lm
-
-motif_link_opengl:
-	g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-            $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) -lm
-
-motif_link_mesa:
-	g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-            $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) -lm
-
-motif_link_mesa_2952:
-	$(HOME)/gcc-2.95.2/bin/g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-               $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) -lm
-
-motif_link_mesa_threads:
-	g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-               $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm
-
-# special car +s necessaire pour shared libs avec SHLIB_PATH variable.
-motif_link_hp:
-	g++ -Wl,+s -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\
-                      $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) -lm
-
-
-# ----------------------------------------------------------------------
-# Ready to compile for some platforms with FLTK
-# ----------------------------------------------------------------------
-
-# Warning: -O3 is known to produce incorrect code with gcc-2.95.2 on
-# linux. Let's stick to -O2 for all public releases...
-
-fltk_compile_little_endian:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O2" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_compile_little_endian_2952:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(HOME)/gcc-2.95.2/bin/g++" \
-           "C_FLAGS=-O2" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_compile_big_endian:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_FLTK -D_NODLL" \
-           "GL_INCLUDE=-I/usr/include/X11/GLw -I$(HOME)/SOURCES/Mesa-3.1/include -I$(HOME)/SOURCES/Mesa-3.1/include/GL" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_compile_ibm:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O3" \
-           "OS_FLAGS=-D_BSD" \
-           "VERSION_FLAGS=-D_FLTK -D_NODLL" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_compile_solaris_scorec :
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O3" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "OS_FLAGS=" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC_SCOREC)" \
-        ); done
-
-fltk_compile_linux_scorec :
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=$(CC)" \
-           "C_FLAGS=-O2" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC_SCOREC)" \
-        ); done
-
-fltk_compile_sgi:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=CC" \
-           "C_FLAGS=-O2 -mips3 -n32 -OPT:Olimit=0 -LANG:std" \
-           "RANLIB=true"\
-           "AR=CC -mips3 -n32 -ar -o"\
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_compile_mingw:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++ -mno-cygwin -I/mingw/include" \
-           "C_FLAGS=-O2 -DWIN32" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_compile_cygwin:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-O2 -DWIN32" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK -I/usr/include/w32api" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC)" \
-        ); done
-
-fltk_link_solaris_scorec:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh-sun $(GMSH_FLTK_LIB) $(OPENGL_LIB) \
-                 $(FLTK_LIB_SOLARIS_SCOREC) -lm -ldl -lsocket
-
-fltk_purify:
-	purify -cache-dir=/space g++ -o $(GMSH_BIN_DIR)/gmsh-sun $(GMSH_FLTK_LIB) $(OPENGL_LIB) \
-                 $(FLTK_LIB_SOLARIS_SCOREC) -lm -ldl -lsocket
-
-fltk_link_linux_scorec:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh-linux $(GMSH_FLTK_LIB) $(OPENGL_LIB) \
-                 $(FLTK_LIB_LINUX_SCOREC) -lm -ldl 
-fltk_link_mesa:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lm -ldl
-
-fltk_link_mesa_2952:
-	$(HOME)/gcc-2.95.2/bin/g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lm -ldl
-
-fltk_link_opengl:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(OPENGL_LIB) \
-                 $(FLTK_LIB) -lm
-fltk_link_sgi:
-	CC -O2 -mips3 -n32 -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                  $(FLTK_LIB) $(OPENGL_LIB) -lm
-fltk_link_sun:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lXext -lsocket -lnsl -ldl -lm
-fltk_link_hp:
-	g++ -Wl,+s -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                      $(MESA_LIB) $(FLTK_LIB) -lm
-
-fltk_link_ibm:
-	$(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \
-                 $(FLTK_LIB) -lm
-
-fltk_link_mingw:
-	g++ -mno-cygwin -L/mingw/lib -o $(GMSH_BIN_DIR)/gmsh.exe $(GMSH_FLTK_LIB) Common/Icon.res \
-                 $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-
-fltk_link_cygwin:
-	g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh.exe $(GMSH_FLTK_LIB) Common/Icon.res \
-                 $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-
-fltk_linux: tag fltk_compile_little_endian fltk_link_mesa strip_bin
-
-fltk_linux_2952: tag fltk_compile_little_endian_2952 fltk_link_mesa_2952 strip_bin
-
-fltk_rpm: src
-	mv $(GMSH_SRCRPM).tar.gz /usr/src/redhat/SOURCES
-	rpm -bb utils/gmsh_fltk.spec
-	cp /usr/src/redhat/RPMS/i386/$(GMSH_SRCRPM)-1.i386.rpm .
-	cp /usr/src/redhat/BUILD/$(GMSH_SRCRPM)/gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tgz .
-
-fltk_dec: tag fltk_compile_little_endian fltk_link_opengl strip_bin
-
-fltk_sun: tag fltk_compile_big_endian fltk_link_sun strip_bin
-
-fltk_hp: tag fltk_compile_big_endian fltk_link_hp strip_bin
-
-fltk_ibm: tag fltk_compile_ibm fltk_link_ibm strip_bin
-
-fltk_solaris_scorec : fltk_compile_solaris_scorec fltk_link_solaris_scorec strip_bin 
-
-fltk_linux_scorec : fltk_compile_linux_scorec fltk_link_linux_scorec strip_bin 
-
-fltk_sgi: tag fltk_compile_sgi fltk_link_sgi strip_bin
-
-fltk_mingw: tag fltk_compile_mingw fltk_link_mingw
-	strip $(GMSH_BIN_DIR)/gmsh.exe
-
-fltk_cygwin: tag fltk_compile_cygwin fltk_link_cygwin
-	strip $(GMSH_BIN_DIR)/gmsh.exe
-
-fltk_cygwin_gertha_buro: tag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-O2 -DWIN32" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC_GERTHA_BURO)" \
-        ); done
-	g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh.exe $(GMSH_FLTK_LIB) Common/Icon.res \
-                 ../fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-
-fltk_cygwin_laptopjf: 
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CC=g++" \
-           "C_FLAGS=-O2 -DWIN32" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=$(OPENGL_INC)" \
-           "GUI_INCLUDE=$(FLTK_INC_LAPTOPJF)" \
-        ); done
-	g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh-cyg.exe $(GMSH_FLTK_LIB) Common/Icon.res \
-                 ../fltk-1.0.9/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-
-fltk_cygwin_laptopjf_tag: tag fltk_cygwin_laptopjf
-
-
diff --git a/Mesh/1D_Mesh.cpp b/Mesh/1D_Mesh.cpp
deleted file mode 100644
index ec077605aa1764878abd9cfe1fe1d1bd7d441285..0000000000000000000000000000000000000000
--- a/Mesh/1D_Mesh.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-// $Id: 1D_Mesh.cpp,v 1.20 2001-08-12 12:32:41 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "Context.h"
-#include "Interpolation.h"
-
-extern Mesh      *THEM;
-extern Context_T  CTX;
-extern int        CurrentNodeNumber;
-
-Curve *THEC;
-
-// ipar[0] = nbpoints
-// abs(ipar[1]) = method
-// sign(ipar[1]) = orientation
-// dpar[0] = parameter
-
-double F_One (double t){
-  Vertex der;
-  double d;
-  der = InterpolateCurve (THEC, t, 1);
-  d = sqrt (der.Pos.X * der.Pos.X + der.Pos.Y * der.Pos.Y + der.Pos.Z * der.Pos.Z);
-  return (d);
-}
-
-
-double F_Transfini (double t){
-  Vertex der;
-  double d, a, b, val, ZePauwer;
-
-  der = InterpolateCurve (THEC, t, 1);
-  d = sqrt (der.Pos.X * der.Pos.X + der.Pos.Y * der.Pos.Y +
-            der.Pos.Z * der.Pos.Z);
-
-  if (THEC->dpar[0] == 0.0 || THEC->dpar[0] == 1.0){
-    val = d * (double) THEC->ipar[0] / THEC->l ;
-  }
-  else{
-    switch (abs (THEC->ipar[1])){
-
-    case 1: // progression
-      if (sign (THEC->ipar[1]) == -1)
-	ZePauwer = 1. / THEC->dpar[0];
-      else
-	ZePauwer = THEC->dpar[0];
-      b = log (1. / ZePauwer) / THEC->l;
-      a = (1. - exp (-b * THEC->l)) / (b * (double) THEC->ipar[0]);
-      val = d / (a * exp (b * (t * THEC->l))) ;
-      break ;
-
-    case 2: //bump
-      if (THEC->dpar[0] > 1.0){
-        a = -4. * sqrt (THEC->dpar[0] - 1.) * 
-          atan2 (1., sqrt (THEC->dpar[0] - 1.)) / 
-          ((double) THEC->ipar[0] * THEC->l);
-      }
-      else{
-        a = 2. * sqrt (1. - THEC->dpar[0]) * 
-          log (fabs ((1. + 1. / sqrt (1. - THEC->dpar[0])) 
-                     / (1. - 1. / sqrt (1. - THEC->dpar[0]))))
-          / ((double) THEC->ipar[0] * THEC->l);
-      }
-      b = -a * THEC->l * THEC->l / (4. * (THEC->dpar[0] - 1.)) ;
-      val = d / (-a * DSQR (t * THEC->l - (THEC->l) * 0.5) + b) ;
-      break ;
-
-    default:
-      Msg(WARNING, "Unknown case in Transfinite Line mesh");
-      val = 1. ;
-    }
-  }
-
-  return val ;
-}
-
-double F_Lc (double t){
-  Vertex  der, point;
-  double  Lc, d;
-
-  if (CTX.mesh.algo == DELAUNAY_OLDALGO && THEM->BGM.Typ == ONFILE){
-    der = InterpolateCurve(THEC, t, 1);
-    point = InterpolateCurve(THEC, t, 0);  
-    Lc = Lc_XYZ(point.Pos.X, point.Pos.Y, point.Pos.Z, THEM);
-    d = sqrt(DSQR(der.Pos.X)+DSQR(der.Pos.Y)+DSQR(der.Pos.Z));
-    if(!Lc){
-      Msg(GERROR, "Null characteristic length in background mesh");
-      return d;
-    }
-    if(CTX.mesh.constrained_bgmesh)
-      return MAX(d/Lc,THEM->Metric->getLc(t, THEC));
-    else
-      return d/Lc;
-  }
-  else
-    return THEM->Metric->getLc(t, THEC);
-}
-
-void Maillage_Curve (void *data, void *dummy){
-  Curve **pc, *c;
-  Simplex *s;
-  double b, a, d, dt, dp, t;
-  int i, N, count, NUMP;
-  Vertex **v, **vexist, *pV, V, *v1, *v2;
-  List_T *Points;
-  IntPoint P1, P2;
-
-  pc = (Curve **) data;
-  c = *pc;
-  THEC = c;
-
-  if (c->Num < 0)
-    return;
-
-  if(c->Dirty){
-    Msg(INFO, "Not meshing dirty Curve %d", c->Num);
-    return;
-  }
-
-  Msg(STATUS3, "Meshing Curve %d", c->Num);
-
-  Points = List_Create (10, 10, sizeof (IntPoint));
-  c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-4);
-  List_Delete (Points);
-
-  if (c->Method == TRANSFINI || !Extrude_Mesh (c)){
-    if (c->Method == TRANSFINI){
-      Points = List_Create (10, 10, sizeof (IntPoint));
-      a = Integration (c->ubeg, c->uend, F_Transfini, Points, 1.e-7);
-      N = c->ipar[0];
-    }
-    else{
-      Points = List_Create (10, 10, sizeof (IntPoint));
-      a = Integration (c->ubeg, c->uend, F_Lc, Points, 1.e-4);
-      N = IMAX (2, (int) (a + 1.));
-
-      if (c->Typ == MSH_SEGM_CIRC ||
-          c->Typ == MSH_SEGM_CIRC_INV ||
-          c->Typ == MSH_SEGM_ELLI ||
-          c->Typ == MSH_SEGM_ELLI_INV){
-        N = IMAX (N, (int) (fabs (c->Circle.t1 - c->Circle.t2) *
-                            (double)CTX.mesh.min_circ_points / Pi));
-      }
-      else if (c->Typ == MSH_SEGM_NURBS){
-        N = IMAX (N, 2);
-      }
-    }
-    b = a / (double) (N - 1);
-    c->Vertices = List_Create (N, 2, sizeof (Vertex *));
-    
-    v = &c->beg;
-    if ((vexist = (Vertex **) Tree_PQuery (THEM->Vertices, v))){
-      (*vexist)->u = c->ubeg;
-      Tree_Insert (THEM->Vertices, vexist);
-      if ((*vexist)->ListCurves)
-        List_Add ((*vexist)->ListCurves, &c);
-      List_Add (c->Vertices, vexist);
-    }
-    else{
-      pV = Create_Vertex ((*v)->Num, (*v)->Pos.X, (*v)->Pos.Y,
-                          (*v)->Pos.Z, (*v)->lc, c->ubeg);
-      pV->ListCurves = List_Create (1, 1, sizeof (Curve *));
-      List_Add (pV->ListCurves, &c);
-      Tree_Insert (THEM->Vertices, &pV);
-      List_Add (c->Vertices, &pV);
-    }
-
-    count = NUMP = 1;
-    while (NUMP < N - 1){
-      List_Read (Points, count - 1, &P1);
-      List_Read (Points, count, &P2);
-      d = (double) NUMP *b;
-
-      if ((fabs (P2.p) >= fabs (d)) && (fabs (P1.p) < fabs (d))){
-        dt = P2.t - P1.t;
-        dp = P2.p - P1.p;
-        t = P1.t + dt / dp * (d - P1.p);
-        V = InterpolateCurve (c, t, 0);
-        pV = Create_Vertex (++CurrentNodeNumber, 
-                            V.Pos.X, V.Pos.Y, V.Pos.Z, V.lc, t);
-        pV->w = V.w;
-        pV->ListCurves = List_Create (1, 1, sizeof (Curve *));
-        List_Add (pV->ListCurves, &c);
-        Tree_Insert (THEM->Vertices, &pV);
-        List_Add (c->Vertices, &pV);
-        NUMP++;
-      }
-      else{
-        count++;
-      }
-    }
-
-    List_Delete(Points);
-
-    v = &c->end;
-    if ((vexist = (Vertex **) Tree_PQuery (THEM->Vertices, v))){
-      (*vexist)->u = c->uend;
-      Tree_Insert (THEM->Vertices, vexist);
-      if ((*vexist)->ListCurves)
-        List_Add ((*vexist)->ListCurves, &c);
-      List_Add (c->Vertices, vexist);
-    }
-    else{
-      pV = Create_Vertex ((*v)->Num, (*v)->Pos.X, (*v)->Pos.Y, 
-                          (*v)->Pos.Z, (*v)->lc, c->uend);
-      pV->ListCurves = List_Create (1, 1, sizeof (Curve *));
-      List_Add (pV->ListCurves, &c);
-      Tree_Insert (THEM->Vertices, &pV);
-      List_Add (c->Vertices, &pV);
-    }
-  }
-
-  for (i = 0; i < List_Nbr (c->Vertices) - 1; i++){
-    List_Read (c->Vertices, i, &v1);
-    List_Read (c->Vertices, i + 1, &v2);
-    s = Create_Simplex (v1, v2, NULL, NULL);
-    s->iEnt = c->Num;
-    Tree_Add (c->Simplexes, &s);
-    List_Add (c->TrsfSimplexes, &s);
-  }
-
-  if (CTX.mesh.degree == 2)
-    Degre2 (THEM->Vertices, THEM->VertexEdges, c->Simplexes, c, NULL);
-
-  THEM->Statistics[4] += List_Nbr (c->Vertices);
-
-#if 0
-  if(fabs(c->Num) != 41) return;
-  printf("curve %d : ", c->Num);
-  for (i = 0; i < List_Nbr (c->Vertices); i++){
-    List_Read (c->Vertices, i, &v1);
-    printf(" %d (%g %g %g)", v1->Num, v1->Pos.X, v1->Pos.Y, v1->Pos.Z);
-  }
-  printf("\n");
-#endif
-}
diff --git a/Mesh/2D_BGMesh.cpp b/Mesh/2D_BGMesh.cpp
deleted file mode 100644
index 8113d3d6e657cfe0a608914bad34fe9b6847c283..0000000000000000000000000000000000000000
--- a/Mesh/2D_BGMesh.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// $Id: 2D_BGMesh.cpp,v 1.8 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-extern Mesh *THEM;
-
-/* Calcul de la longueur caracteristique en un point par
-   interpolation dans le background mesh */
-
-double find_quality (MPoint center, DocRecord * BGMESH){
-
-  int i;
-  Delaunay *del;
-  PointRecord *pPointArray;
-  PointNumero a, b, c;
-  double qual, q1, q2, q3, X[3], Y[3], u, v, det, Xp, Yp;
-  double Exp = 2., r, deno, nume;
-
-  if ((del = Find_Triangle (center, BGMESH, BOF)) == NULL){
-    Msg(GERROR, "Exterior point (%g,%g)", center.v, center.h);
-    return 1.e-15;
-  }
-
-  pPointArray = BGMESH->points;
-
-  a = del->t.a;
-  b = del->t.b;
-  c = del->t.c;
-
-  Xp = center.h;
-  Yp = center.v;
-
-  X[0] = pPointArray[a].where.h;
-  X[1] = pPointArray[b].where.h;
-  X[2] = pPointArray[c].where.h;
-
-  Y[0] = pPointArray[a].where.v;
-  Y[1] = pPointArray[b].where.v;
-  Y[2] = pPointArray[c].where.v;
-
-  q1 = pPointArray[a].quality;
-  q2 = pPointArray[b].quality;
-  q3 = pPointArray[c].quality;
-
-  det = (X[2] - X[0]) * (Y[1] - Y[0]) - (Y[2] - Y[0]) * (X[1] - X[0]);
-
-  if (det != 0.0){
-    u = ((Xp - X[0]) * (Y[1] - Y[0]) - (Yp - Y[0]) * (X[1] - X[0])) / det;
-    v = ((X[2] - X[0]) * (Yp - Y[0]) - (Y[2] - Y[0]) * (Xp - X[0])) / det;
-  }
-  else{
-    Msg(WARNING, "Degenerated triangle (det=%g)", det);
-    u = v = 0.0;
-  }
-  
-  if (u >= -1.e-8 && v >= -1.e-8 && 1. - u - v >= -1.e-8){
-    qual = q1 * (1. - u - v) + q2 * v + q3 * u;
-    return (qual);
-  }
-  else{
-    pPointArray = BGMESH->points;
-    deno = nume = 0.0;
-    for (i = 0; i < BGMESH->numPoints; i++){
-      r = sqrt (DSQR (center.h - pPointArray[i].where.h) +
-                DSQR (center.v - pPointArray[i].where.v));
-      r = pow (r, Exp);
-      if (r < 1.e-10)
-        return (pPointArray[i].quality);
-      nume += pPointArray[i].quality / r;
-      deno += 1. / r;
-    }
-    return (nume / deno);
-  }
-}
diff --git a/Mesh/2D_Bowyer.cpp b/Mesh/2D_Bowyer.cpp
deleted file mode 100644
index d0c7fbcfad2a869c7ed3e7cf988343b7f76dd24f..0000000000000000000000000000000000000000
--- a/Mesh/2D_Bowyer.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-// $Id: 2D_Bowyer.cpp,v 1.8 2001-08-11 23:28:32 geuzaine Exp $
-
-/*
-
-   A L G O R I T H M E       D E      B O W Y E R  -  W A T S O N
-
-   definition : il est possible d'obtenir une triangulation de Delaunay en partant 
-   d'une triangulation existante en lui ajoutant un noeud de la facon suivante :
-
-   - on elimine les triangles de la premiere triangulation dont le cercle
-   circonscrit contient le nouveau point
-   - on reconstuit une triangulation en joignant le point aux noeuds du polygone
-   defini par les triangles effaces
-
-   ListEdges = liste liee circulaire et triee contenant les points du polygone
-   listkill = liste des pointeurs des triangles a effacer
-   listDelforLink = liste des triangles a la peripherie du polygone
-   PE_Del_Triangle = Peut-Etre va-t-on effacer le triangle del, si on l'efface alors
-   on appelle recursivement 3 fois PE_Del_Triangle avec ses trois voisins (si il en a)
-   comme argument
-
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-extern PointRecord *gPointArray;
-
-int Is_pt_in_CircCircle (Delaunay * del, MPoint pt){
-
-  double rc, dc, Xa, Ya;
-  PointNumero a;
-
-  dc = DSQR (del->t.xc - pt.h) + DSQR (del->t.yc - pt.v);
-
-  a = del->t.a;
-
-  Xa = gPointArray[a].where.h;
-  Ya = gPointArray[a].where.v;
-
-  rc = DSQR (del->t.xc - Xa) + DSQR (del->t.yc - Ya);
-
-  if (rc >= dc)
-    return 1;
-  return 0;
-
-}
-
-int PE_Del_Triangle (Delaunay *del , MPoint pt, DListPeek *ListEdges ,
-                     List_T *listkill, List_T *listDelforlink,
-                     int *numlink, int *numdel){
-  int rslt;
-  PointNumero a,b,c;
-  int count,order[3],same;
-  DListPeek p;
-  Delaunay *de1,*de2,*de3;
-  
-  rslt = Is_pt_in_CircCircle ( del , pt );
-
-  if ( (!rslt) && (*numdel == 0)) {
-    return(0); 
-  }
-  if (!rslt) {
-
-    /* On retient les triangles du pourtour */ 
-    
-    del->t.info = NOTTOLINK;
-    List_Put(listDelforlink, *numlink, &del);
-    (*numlink)++;
-
-    return(1);
-    
-  }
-  else { 
-    
-    List_Put(listkill, *numdel, &del);
-    (*numdel)++;
-
-    a = del->t.a;
-    b = del->t.b;
-    c = del->t.c;
-
-    if ( *ListEdges == NULL ) {
-      
-      rslt  = DListInsert(ListEdges,pt,a);
-      rslt &= DListInsert(ListEdges,pt,b);
-      rslt &= DListInsert(ListEdges,pt,c);
-      if(!rslt)
-        Msg(GERROR, "List insert failed in Boyer Watson"); 
-      
-    }
-    else { 
-      
-      count = 0;
-      p = *ListEdges;
-      order[0] = order[1] = order[2] = 0;
-      same = 0;
-      
-      do {      
-        if (p->point_num == a ) {
-          same = same + 1;
-          order[count]=a;
-          count++ ;
-        }
-        if (p->point_num == b ) {
-          same = same + 10;
-          order[count]=b;
-          count++ ;
-        }
-        if (p->point_num == c ) {
-          same = same + 100;
-          order[count]=c;
-          count++ ;
-        }
-        p = Pred(p);
-      }while ( p != *ListEdges );
-      if (count == 1) {
-        return(0);
-      }
-      else if (count == 2) {
-        if (same == 11 ) {
-          rslt = DListInsert(ListEdges,pt,c);
-        }
-        if (same == 101 ) {
-          rslt = DListInsert(ListEdges,pt,b);
-        }
-        if (same == 110 ) {
-          rslt = DListInsert(ListEdges,pt,a);
-        }
-      }
-      else if (count == 3) {
-        rslt = DListDelete(ListEdges,order[1]); 
-      }
-      else {
-        return(0);
-      }
-    }
-    
-    de1 = del->v.voisin1; 
-    de2 = del->v.voisin2;
-    de3 = del->v.voisin3;
-    
-    
-    if(de1 != NULL){
-      if (de1->v.voisin1 == del )de1->v.voisin1 = NULL;
-        else if (de1->v.voisin2 == del )de1->v.voisin2 = NULL;
-      else if (de1->v.voisin3 == del )de1->v.voisin3 = NULL;
-      else
-        Msg(GERROR, "Bad link in Boyer Watson"); 
-    }
-    if(de2 != NULL){
-      if (de2->v.voisin1 == del )de2->v.voisin1 = NULL;
-      else if (de2->v.voisin2 == del )de2->v.voisin2 = NULL;
-      else if (de2->v.voisin3 == del )de2->v.voisin3 = NULL;
-      else
-        Msg(GERROR, "Bad link in Boyer Watson"); 
-    }      
-    if(de3 != NULL){
-      if (de3->v.voisin1 == del )de3->v.voisin1 = NULL;
-      else if (de3->v.voisin2 == del )de3->v.voisin2 = NULL;
-      else if (de3->v.voisin3 == del )de3->v.voisin3 = NULL;
-      else
-        Msg(GERROR, "Bad link in Boyer Watson");
-    }      
-    
-    del->v.voisin1 = NULL ;
-    del->v.voisin2 = NULL ;
-    del->v.voisin3 = NULL ;
-    
-    
-    if ( de1 != NULL ){
-      if(!PE_Del_Triangle ( de1,pt,ListEdges,listkill,listDelforlink, numlink, numdel))return(0);
-    }
-    if ( de2 != NULL ){
-      if(!PE_Del_Triangle ( de2,pt,ListEdges,listkill,listDelforlink, numlink, numdel))return(0);
-    }
-    if ( de3 != NULL ){
-      if(!PE_Del_Triangle ( de3,pt,ListEdges,listkill,listDelforlink, numlink, numdel))return(0);
-    }
-    return(1);
-  }
-}
diff --git a/Mesh/2D_Bricks.cpp b/Mesh/2D_Bricks.cpp
deleted file mode 100644
index 58ccb628765332d7888144142de9f5bfdf586ad0..0000000000000000000000000000000000000000
--- a/Mesh/2D_Bricks.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-// $Id: 2D_Bricks.cpp,v 1.5 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-static double       XmaxGrid,YmaxGrid,XminGrid,YminGrid,ZmaxGrid,ZminGrid;
-static double       XminBox,XmaxBox,YminBox,YmaxBox,ZminBox,ZmaxBox;
-static int          Nx=0,Ny=0,Nz=0;
-static List_T      *GridList;
-static DocRecord   *MyMesh;
-
-extern PointRecord *gPointArray;
-
-int fcmp_Map(const void * a, const void * b) {
-  return  ((struct Map *)a)->Num - ((struct Map *)b)->Num ;
-}
-
-void Invert_MappingLists (List_T * List1, List_T * List2) {
-  
-  struct Map    TmpMap1, TmpMap2 ;
-  struct Map  * TmpMap;
-  List_T      * TmpList;
-
-  int i, j, Entity, CurrentEntity;
-
-  TmpList = List_Create(10*List_Nbr(List1), 100, sizeof(int));
-
-  for(i=0 ; i<List_Nbr(List1) ; i++){
-    List_Read(List1, i, &TmpMap1);
-    for(j=0 ; j<List_Nbr(TmpMap1.List) ; j++){
-      List_Read(TmpMap1.List, j, &Entity);
-      List_Add(TmpList, &Entity);
-    }
-  }
-    
-  List_Sort(TmpList, fcmp_int);
-
-  List_Read(TmpList, 0, &CurrentEntity);
-  TmpMap1.Num = CurrentEntity;
-  TmpMap1.List = List_Create(10, 10, sizeof(int));
-  List_Add(List2, &TmpMap1);
-  for(i=1 ; i<List_Nbr(TmpList) ; i++){
-    List_Read(TmpList, i, &Entity);
-    if (Entity != CurrentEntity) {
-      CurrentEntity = Entity;
-      TmpMap1.Num = CurrentEntity;
-      TmpMap1.List = List_Create(10, 10, sizeof(int));
-      List_Add(List2, &TmpMap1);
-    }
-  }
-  
-  for(i=0 ; i<List_Nbr(List1) ; i++){
-    List_Read(List1, i, &TmpMap1);
-    for(j=0 ; j<List_Nbr(TmpMap1.List) ; j++){
-      List_Read(TmpMap1.List, j, &Entity);
-      TmpMap2.Num = Entity;
-      if ((TmpMap = (struct Map*)List_PQuery(List2, &TmpMap2, fcmp_Map)) != NULL) {     
-        List_Add(TmpMap->List, &TmpMap1.Num);
-      }
-    }
-  }
-
-  List_Delete(TmpList);
-
-}
-
-int InWhichBrick (double X, double Y, double Z) {
-
-  int Ix,Iy,Iz;
-
-  if(X > XmaxGrid || X < XminGrid || Y > YmaxGrid || 
-     Y < YminGrid || Z > ZmaxGrid || Z < ZminGrid)
-    return(-1);
-  
-  Ix = (int) ((double)Nx * (X-XminGrid) / (XmaxGrid-XminGrid)); 
-  Iy = (int) ((double)Ny * (Y-YminGrid) / (YmaxGrid-YminGrid)); 
-  Iz = (int) ((double)Nz * (Z-ZminGrid) / (ZmaxGrid-ZminGrid)); 
-  Ix = (Ix< Nx)? Ix : Nx-1;
-  Iy = (Iy< Ny)? Iy : Ny-1;
-  Iz = (Iz< Nz)? Iz : Nz-1;
-  return(1 + Ix + Iy*Nx + Iz*Nx*Ny);
-}
-                                                                    
-List_T *AllBricksForABox (void){  
-
-  List_T *List;
-  int     Ix1,Ix2,Iy1,Iy2,Iz1,Iz2;
-  int     i,j,k,Num;
-
-  Ix1 = (int) ( (double)Nx * (XminBox-XminGrid) / (XmaxGrid-XminGrid)); 
-  Ix2 = (int) ( (double)Nx * (XmaxBox-XminGrid) / (XmaxGrid-XminGrid)); 
-  Iy1 = (int) ( (double)Ny * (YminBox-YminGrid) / (YmaxGrid-YminGrid)); 
-  Iy2 = (int) ( (double)Ny * (YmaxBox-YminGrid) / (YmaxGrid-YminGrid)); 
-  Iz1 = (int) ( (double)Nz * (ZminBox-ZminGrid) / (ZmaxGrid-ZminGrid)); 
-  Iz2 = (int) ( (double)Nz * (ZmaxBox-ZminGrid) / (ZmaxGrid-ZminGrid));
-  Ix1 = (Ix1<Nx)? Ix1 : Nx-1;
-  Ix2 = (Ix2<Nx)? Ix2 : Nx-1;
-  Iy1 = (Iy1<Ny)? Iy1 : Ny-1;
-  Iy2 = (Iy2<Ny)? Iy2 : Ny-1;
-  Iz1 = (Iz1<Nz)? Iz1 : Nz-1;
-  Iz2 = (Iz2<Nz)? Iz2 : Nz-1;
-
-  List = List_Create((Ix2-Ix1+1)*(Iy2-Iy1+1)*(Iz2-Iz1+1), 1, sizeof(int));
-
-  for(i=Ix1;i<=Ix2;i++){
-    for(j=Iy1;j<=Iy2;j++){
-      for(k=Iz1;k<=Iz2;k++){
-        Num = 1 + i + j*Nx + k*Nx*Ny ;
-        List_Add(List, &Num);
-      }
-    }
-  }
-  return(List);
-}
-
-void InitBricks (DocRecord *MESH) {
-
-  int         i,j,a,b,c;
-  List_T     *InvList;
-  struct Map  InvMap;
-  double      X[3],Y[3],dx,dy;
-
-  MyMesh = MESH;
-
-  Nx = (int)sqrt((double)MESH->numTriangles) + 1;
-  Ny = Nx;
-  Nz=1;
-  ZminGrid=0.;
-  ZmaxGrid=1.;
-
-  GridList = List_Create(Nx*Ny*Nz, 1, sizeof(struct Map));
-  InvList  = List_Create(MESH->numTriangles, 1, sizeof(struct Map));
-
-  for(i=0;i<MESH->numTriangles;i++){
-    a = MESH->delaunay[i].t.a;
-    b = MESH->delaunay[i].t.b;
-    c = MESH->delaunay[i].t.c;
-      
-    X[0] = MESH->points[a].where.h;
-    X[1] = MESH->points[b].where.h;
-    X[2] = MESH->points[c].where.h;
-    Y[0] = MESH->points[a].where.v;
-    Y[1] = MESH->points[b].where.v;
-    Y[2] = MESH->points[c].where.v;
-
-    if(!i){
-      XminGrid = XmaxGrid = X[0];
-      YminGrid = YmaxGrid = Y[0];
-    }
-
-    for(j=0;j<3;j++){
-      XmaxGrid = DMAX (XmaxGrid,X[j]); 
-      XminGrid = DMIN (XminGrid,X[j]); 
-      YmaxGrid = DMAX (YmaxGrid,Y[j]); 
-      YminGrid = DMIN (YminGrid,Y[j]); 
-    }
-  }
-  dx = XmaxGrid - XminGrid;
-  dy = YmaxGrid - YminGrid;
-  XmaxGrid += 0.01 * dx;
-  YmaxGrid += 0.01 * dy;
-  XminGrid -= 0.01 * dx;
-  YminGrid -= 0.01 * dy;
-
-  for(i=0;i<MESH->numTriangles;i++){
-    a = MESH->delaunay[i].t.a;
-    b = MESH->delaunay[i].t.b;
-    c = MESH->delaunay[i].t.c;
-      
-    X[0] = XminBox = XmaxBox = MESH->points[a].where.h;
-    X[1] = MESH->points[b].where.h;
-    X[2] = MESH->points[c].where.h;
-    Y[0] = YminBox = YmaxBox = MESH->points[a].where.v;
-    Y[1] = MESH->points[b].where.v;
-    Y[2] = MESH->points[c].where.v;
-
-    for(j=1;j<3;j++){
-      XmaxBox = DMAX ( XmaxBox ,X[j] ); 
-      XminBox = DMIN ( XminBox ,X[j] ); 
-      YmaxBox = DMAX ( YmaxBox ,Y[j] ); 
-      YminBox = DMIN ( YminBox ,Y[j] ); 
-    }
-    ZmaxBox = 1.0;
-    ZminBox = 0.0;
-
-    InvMap.Num = i;
-    InvMap.List = AllBricksForABox(); 
-    List_Add(InvList, &InvMap);
-  }
-
-  Invert_MappingLists(InvList, GridList);
-  List_Delete(InvList);
-}
-
-
-Delaunay * Find_Triangle (MPoint pt, DocRecord *MESH, int typ) {
-
-  int          a,b,c,i,found,KeyBrick,j;
-  Delaunay    *del,*del2; 
-  double       Z,Znew;
-  PointRecord *ptr;
-  double       Xcg,Ycg;
-  struct Map  *pBrick;
-
-  ptr = gPointArray;
-  gPointArray = MESH->points;
-
-  if(MyMesh == MESH){
-    KeyBrick = InWhichBrick(pt.h,pt.v,0.0);
-    if((pBrick = (struct Map *)List_PQuery(GridList, &KeyBrick, fcmp_Map)) == NULL){
-      if(typ == A_TOUT_PRIX){
-        gPointArray = ptr;
-        return(NULL);
-      }
-    }
-    else{
-      for(i=0;i<List_Nbr(pBrick->List);i++){
-        j = *(int *)List_Pointer(pBrick->List,i);
-        a = MESH->delaunay[j].t.a;
-        b = MESH->delaunay[j].t.b;
-        c = MESH->delaunay[j].t.c;
-        if(MESH->delaunay[j].t.position != EXTERN  || typ == BOF){
-          if(PtInTriangle(pt,a,b,c)){
-            gPointArray = ptr;
-            return(&MESH->delaunay[j]);
-          }
-        }
-      }
-      if(typ == A_TOUT_PRIX) {
-        gPointArray = ptr;
-        return NULL;
-      }
-    }
-  }
-  else {
-    i=0;
-    found = 0;
-    while (!found && i<MESH->numTriangles) {  
-      if( (!PtInTriangle(pt,MESH->delaunay[i].t.a,MESH->delaunay[i].t.b,
-                         MESH->delaunay[i].t.c)) ||
-         (MESH->delaunay[i].t.position == EXTERN  && typ != BOF ))i++; 
-      else
-        found = 1;
-    };
-    
-    if(found == 1){
-      gPointArray = ptr;
-      return(&(MESH->delaunay[i]));
-    }
-    if(typ == A_TOUT_PRIX){
-      gPointArray = ptr;
-      return NULL;
-    }
-  }
-  
-  del = &(MESH->delaunay[0]);
-
-  Xcg = gPointArray[del->t.a].where.h + 
-        gPointArray[del->t.b].where.h + 
-        gPointArray[del->t.c].where.h;
-
-  Ycg = gPointArray[del->t.a].where.v + 
-        gPointArray[del->t.b].where.v + 
-        gPointArray[del->t.c].where.v;
-
-  Xcg/=3.;
-  Ycg/=3.;
-
-  Z = DSQR(Xcg-pt.h) + DSQR(Ycg-pt.v);
-  
-  for (i=1;i<MESH->numTriangles;i++){
-    del2 = &(MESH->delaunay[i]); 
-    Xcg = gPointArray[del2->t.a].where.h + 
-          gPointArray[del2->t.b].where.h + 
-          gPointArray[del2->t.c].where.h;
-    Ycg = gPointArray[del2->t.a].where.v + 
-          gPointArray[del2->t.b].where.v + 
-          gPointArray[del2->t.c].where.v;
-    Xcg /= 3. ; 
-    Ycg /= 3.;
-    Znew = DSQR(Xcg-pt.h) + DSQR(Ycg-pt.v); 
-    if (Znew<Z){
-      del = del2;
-      Z = Znew;
-    }
-  }
-
-  gPointArray = ptr;
-  return del;
-}
-
-int PtInTriangle(MPoint p , PointNumero a , PointNumero b , PointNumero c){
-  double Xmin , Xmax , Ymin, Ymax , Xtr[4],Ytr[4],A[2],B[2],X,Y,Signus[3];
-  int i;
-  
-  X = p.h;
-  Y = p.v;
-  Xtr[0] = Xmax = Xmin = gPointArray[a].where.h;
-  Xtr[3] = gPointArray[a].where.h;
-  Xtr[1] = gPointArray[b].where.h;
-  Xtr[2] = gPointArray[c].where.h;
-  Ytr[0] = Ymax = Ymin = gPointArray[a].where.v;
-  Ytr[3] = gPointArray[a].where.v;
-  Ytr[1] = gPointArray[b].where.v;
-  Ytr[2] = gPointArray[c].where.v;
-  
-  for(i=1;i<3;i++){
-    Xmin = (Xtr[i]<Xmin)?Xtr[i]:Xmin;
-    Xmax = (Xtr[i]>Xmax)?Xtr[i]:Xmax;
-    Ymin = (Ytr[i]<Ymin)?Ytr[i]:Ymin;
-    Ymax = (Ytr[i]>Ymax)?Ytr[i]:Ymax;
-  }
-  
-  if(X>Xmax || X<Xmin || Y>Ymax || Y<Ymin) return(0);
-  
-  for (i=0;i<3;i++){
-    A[0] = Xtr[i+1] - Xtr[i];
-    A[1] = Ytr[i+1] - Ytr[i];
-    B[0] = X - Xtr[i];
-    B[1] = Y - Ytr[i];
-    Signus[i] = A[0] * B[1] - A[1] * B[0];
-  }
-  for (i=0;i<2;i++){
-    if(( Signus[i] * Signus[i+1] ) <= 0 ) return(0);
-  }
-  return(1);  
-}
-
diff --git a/Mesh/2D_Cylindrical.cpp b/Mesh/2D_Cylindrical.cpp
deleted file mode 100644
index 3b3e8e89aed77cc3964311ac5365bbb7640f7765..0000000000000000000000000000000000000000
--- a/Mesh/2D_Cylindrical.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-// $Id: 2D_Cylindrical.cpp,v 1.7 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Context.h"
-
-extern Mesh      *THEM;
-extern Context_T  CTX;
-
-static Surface *SURF;
-double TETAMIN, TETAMAX, TETAFABSMIN;
-
-void ChangePi (void *a, void *dum){
-  Vertex *v;
-  v = *(Vertex **) a;
-
-  if ((v->Pos.X / SURF->Cyl.radius1) >= TETAMIN + .99999 * Pi){
-    Msg(INFO, "%g -> ", v->Pos.X / SURF->Cyl.radius1);
-    v->Pos.X -= (2. * Pi) * SURF->Cyl.radius1;
-    Msg(INFO, "%g -> ", v->Pos.X / SURF->Cyl.radius1);
-  }
-}
-
-void TETAMINMAX (void *a, void *dum){
-  Vertex *v;
-  double ZRepere, S, C, y[3], teta;
-  double p[3], z[3], x[3], o[3];
-
-  v = *(Vertex **) a;
-
-  p[0] = v->Pos.X - SURF->Cyl.center[0];
-  p[1] = v->Pos.Y - SURF->Cyl.center[1];
-  p[2] = v->Pos.Z - SURF->Cyl.center[2];
-  z[0] = SURF->Cyl.zaxis[0];
-  z[1] = SURF->Cyl.zaxis[1];
-  z[2] = SURF->Cyl.zaxis[2];
-  norme (z);
-  prosca (p, z, &ZRepere);
-
-  //ZRepere = fabs(ZRepere);
-
-  o[0] = p[0] - ZRepere * z[0];
-  o[1] = p[1] - ZRepere * z[1];
-  o[2] = p[2] - ZRepere * z[2];
-  x[0] = SURF->Cyl.xaxis[0];
-  x[1] = SURF->Cyl.xaxis[1];
-  x[2] = SURF->Cyl.xaxis[2];
-
-  norme (o);
-  norme (x);
-  prodve (z, x, y);
-  norme (y);
-  prosca (o, x, &C);
-  prosca (o, y, &S);
-  teta = atan2 (S, C);
-  TETAMIN = DMIN (teta, TETAMIN);
-  TETAMAX = DMAX (teta, TETAMAX);
-}
-
-/*      SURFACES CYLINDRIQUES   */
-void XYZtoTZ (void *a, void *dum){
-  Vertex *v;
-  double ZRepere, S, C, y[3], teta;
-  double p[3], z[3], x[3], o[3];
-
-  v = *(Vertex **) a;
-
-  p[0] = v->Pos.X - SURF->Cyl.center[0];
-  p[1] = v->Pos.Y - SURF->Cyl.center[1];
-  p[2] = v->Pos.Z - SURF->Cyl.center[2];
-  z[0] = SURF->Cyl.zaxis[0];
-  z[1] = SURF->Cyl.zaxis[1];
-  z[2] = SURF->Cyl.zaxis[2];
-  norme (z);
-  prosca (p, z, &ZRepere);
-
-  //ZRepere = fabs(ZRepere);
-
-  o[0] = p[0] - ZRepere * z[0];
-  o[1] = p[1] - ZRepere * z[1];
-  o[2] = p[2] - ZRepere * z[2];
-  x[0] = SURF->Cyl.xaxis[0];
-  x[1] = SURF->Cyl.xaxis[1];
-  x[2] = SURF->Cyl.xaxis[2];
-
-  norme (o);
-  norme (x);
-  prodve (z, x, y);
-  norme (y);
-  prosca (o, x, &C);
-  prosca (o, y, &S);
-  teta = atan2 (S, C);
-  Msg(DEBUG, "pt %d %g %g", v->Num, ZRepere, teta);
-
-  v->Pos.X = teta * SURF->Cyl.radius1;
-  v->Pos.Y = ZRepere;
-  v->Pos.Z = 0.0;
-}
-
-void TZtoXYZ (void *a, void *dum){
-  Vertex *v;
-  double d[3], x[3], prv[3];
-  double XX, YY, ZZ;
-
-  v = *(Vertex **) a;
-  d[0] = SURF->Cyl.zaxis[0];
-  d[1] = SURF->Cyl.zaxis[1];
-  d[2] = SURF->Cyl.zaxis[2];
-  norme (d);
-  x[0] = SURF->Cyl.xaxis[0];
-  x[1] = SURF->Cyl.xaxis[1];
-  x[2] = SURF->Cyl.xaxis[2];
-  norme (x);
-  prodve (d, x, prv);
-  norme (prv);
-
-  XX = SURF->Cyl.center[0] + v->Pos.Y * d[0] +
-    SURF->Cyl.radius1 * cos (v->Pos.X / SURF->Cyl.radius1) * x[0] +
-    SURF->Cyl.radius1 * (sin (v->Pos.X / SURF->Cyl.radius1)) * prv[0];
-  YY = SURF->Cyl.center[1] + v->Pos.Y * d[1] +
-    SURF->Cyl.radius1 * cos (v->Pos.X / SURF->Cyl.radius1) * x[1] +
-    SURF->Cyl.radius1 * (sin (v->Pos.X / SURF->Cyl.radius1)) * prv[1];
-  ZZ = SURF->Cyl.center[2] + v->Pos.Y * d[2] +
-    SURF->Cyl.radius1 * cos (v->Pos.X / SURF->Cyl.radius1) * x[2] +
-    SURF->Cyl.radius1 * (sin (v->Pos.X / SURF->Cyl.radius1)) * prv[2];
-
-  v->Pos.X = XX;
-  v->Pos.Y = YY;
-  v->Pos.Z = ZZ;
-}
-
-/* SURFACES CONIQUES */
-void XYZtoCone (void *a, void *dum){
-  Vertex *v;
-  double ZRepere, S, C, y[3], teta;
-  double p[3], z[3], x[3], o[3];
-  double inclinaison, ract;
-
-  v = *(Vertex **) a;
-
-  p[0] = v->Pos.X - SURF->Cyl.center[0];
-  p[1] = v->Pos.Y - SURF->Cyl.center[1];
-  p[2] = v->Pos.Z - SURF->Cyl.center[2];
-  z[0] = SURF->Cyl.zaxis[0];
-  z[1] = SURF->Cyl.zaxis[1];
-  z[2] = SURF->Cyl.zaxis[2];
-  norme (z);
-  prosca (p, z, &ZRepere);
-
-  //ZRepere = fabs(ZRepere);
-
-  o[0] = p[0] - ZRepere * z[0];
-  o[1] = p[1] - ZRepere * z[1];
-  o[2] = p[2] - ZRepere * z[2];
-  x[0] = SURF->Cyl.xaxis[0];
-  x[1] = SURF->Cyl.xaxis[1];
-  x[2] = SURF->Cyl.xaxis[2];
-
-  norme (o);
-  norme (x);
-  prodve (z, x, y);
-  norme (y);
-  prosca (o, x, &C);
-  prosca (o, y, &S);
-  teta = atan2 (S, C);
-  if (teta >= TETAMIN + .99999 * Pi)
-    teta -= (2. * Pi);
-
-  inclinaison = Pi * SURF->Cyl.radius2 / 180.;
-
-  ract = SURF->Cyl.radius1 - ZRepere * tan (inclinaison);
-
-  v->Pos.X = ract * cos (teta);
-  v->Pos.Y = ract * sin (teta);
-  v->Pos.Z = 0.0;
-  Msg (DEBUG, "%g %g", ZRepere, v->Pos.X);
-}
-
-void ConetoXYZ (void *a, void *dum){
-  Vertex *v;
-  double d[3], z, x[3], prv[3];
-  double XX, YY, ZZ;
-  double inclinaison, teta, radiusact;
-
-  v = *(Vertex **) a;
-  d[0] = SURF->Cyl.zaxis[0];
-  d[1] = SURF->Cyl.zaxis[1];
-  d[2] = SURF->Cyl.zaxis[2];
-  norme (d);
-  x[0] = SURF->Cyl.xaxis[0];
-  x[1] = SURF->Cyl.xaxis[1];
-  x[2] = SURF->Cyl.xaxis[2];
-  norme (x);
-  prodve (d, x, prv);
-  norme (prv);
-  inclinaison = Pi * SURF->Cyl.radius2 / 180.;
-  z = (SURF->Cyl.radius1 - myhypot (v->Pos.X, v->Pos.Y)) / tan (inclinaison);
-  radiusact = (SURF->Cyl.radius1 + z * tan (inclinaison));
-  teta = atan2 (v->Pos.Y, v->Pos.X);
-
-  XX = SURF->Cyl.center[0] + z * d[0] +
-    radiusact * cos (teta) * x[0] +
-    radiusact * (sin (teta)) * prv[0];
-  YY = SURF->Cyl.center[1] + z * d[1] +
-    radiusact * cos (teta) * x[1] +
-    radiusact * (sin (teta)) * prv[1];
-  ZZ = SURF->Cyl.center[2] + z * d[2] +
-    radiusact * cos (teta) * x[2] +
-    radiusact * (sin (teta)) * prv[2];
-
-  v->Pos.X = XX;
-  v->Pos.Y = YY;
-  v->Pos.Z = ZZ;
-
-}
-
-int MeshCylindricalSurface (Surface * s){
-
-  return 0;
-
-#if 0 
-
-  int i, j, ori;
-  Curve *pC;
-  Vertex *v;
-  Tree_T *tnxe;
-  char text[256];
-  extern double MAXIMUM_LC_FOR_SURFACE;
-
-  if (s->Typ != MSH_SURF_CYLNDR && s->Typ != MSH_SURF_CONE
-      && s->Typ != MSH_SURF_TORUS)
-    return 0;
-  if (s->Typ == MSH_SURF_TORUS)
-    return 1;
-
-  Msg (DEBUG, "z %d : %12.5E %12.5E %12.5E", s->Num, s->Cyl.zaxis[0],
-       s->Cyl.zaxis[1], s->Cyl.zaxis[2]);
-  Msg(DEBUG, "x %d : %12.5E %12.5E %12.5E", s->Num, s->Cyl.xaxis[0],
-      s->Cyl.xaxis[1], s->Cyl.xaxis[2]);
-
-  SURF = s;
-
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &pC);
-    for (j = 0; j < List_Nbr (pC->Vertices); j++){
-      List_Read (pC->Vertices, j, &v);
-      Tree_Insert (s->Vertices, List_Pointer (pC->Vertices, j));
-    }
-  }
-  TETAMIN = 2. * Pi;
-  TETAMAX = -2. * Pi;
-  Tree_Action (s->Vertices, TETAMINMAX);
-  Tree_Action (s->Vertices, Freeze_Vertex);
-
-  if (s->Typ == MSH_SURF_CYLNDR)
-    Tree_Action (s->Vertices, XYZtoTZ);
-  else if (s->Typ == MSH_SURF_CONE)
-    Tree_Action (s->Vertices, XYZtoCone);
-
-  Msg(DEBUG, "%12.5E %12.5E", TETAMAX, TETAMIN);
-
-  if ((s->Typ == MSH_SURF_CYLNDR) && (TETAMAX - TETAMIN > Pi * 1.01))
-    Tree_Action (s->Vertices, ChangePi);
-
-  ori = Calcule_Contours (s);
-  MAXIMUM_LC_FOR_SURFACE = SURF->Cyl.radius1 / 3.;
-
-  if (CTX.mesh.algo == DELAUNAY_OLDALGO)
-    Maillage_Automatique_VieuxCode (s, THEM, ori);
-  else
-    AlgorithmeMaillage2DAnisotropeModeJF (s);
-
-  for(i = 0 ; i < CTX.mesh.nb_smoothing ; i++){
-    tnxe = Tree_Create (sizeof (NXE), compareNXE);
-    create_NXE (s->Vertices, s->Simplexes, tnxe);
-    Tree_Action (tnxe, ActionLiss);
-    Tree_Delete (tnxe);
-  }
-
-  if (s->Typ == MSH_SURF_CYLNDR)
-    Tree_Action (s->Vertices, TZtoXYZ);
-  else if (s->Typ == MSH_SURF_CONE)
-    Tree_Action (s->Vertices, ConetoXYZ);
-  Tree_Action (s->Vertices, deFreeze_Vertex);
-
-  return 1;
-
-#endif
-}
diff --git a/Mesh/2D_DivAndConq.cpp b/Mesh/2D_DivAndConq.cpp
deleted file mode 100644
index 0e6c17f5f9f7b8ff5bf92ea6e7d01a9ee9a11b71..0000000000000000000000000000000000000000
--- a/Mesh/2D_DivAndConq.cpp
+++ /dev/null
@@ -1,517 +0,0 @@
-// $Id: 2D_DivAndConq.cpp,v 1.11 2001-08-11 23:28:32 geuzaine Exp $
-
-/*
-
-   A L G O R I T H M E    D I V I D E    A N D     C O N Q U E R   
-
-   le noeud de cette methode est de pouvoir fusionner
-   deux triangulations de Delaunay en une seule (routine merge)
-   on procede alors recursivement en separant les points en deux
-   groupes puis en separant les groupes en 2 ... jusqu'a n'obtenir
-   que 1 2 ou 3 points (la triangulation est alors triviale)
-
-   Dans le mailleur, on utilise cet algorithme pour construire 
-   le maillage initial 
-
-   !!! il faut PERTURBER les points d'une faible valeur aleatoire
-   pour eviter d'avoir 3 points alignes ou 4 points cocycliques !!!
-
-   doc : structure contenant la triangulation
-
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-extern double LC2D;
-
-PointRecord *pPointArray;
-DocPeek      gDocTemp;
-
-int Insert(PointNumero a,PointNumero b);
-int Delete(PointNumero a,PointNumero b);
-
-void PushgPointArray(PointRecord *ptr){
-  pPointArray = ptr;
-}
-
-PointRecord *PopgPointArray(void){
-  return(pPointArray) ;
-}
-
-PointNumero Predecessor(PointNumero a, PointNumero b){
-  DListPeek     p;
-  
-  p = pPointArray[a].adjacent;
-  if (p == NULL)
-    return -1;        
-
-  do {
-    if (p->point_num == b) return (Pred(p)->point_num);
-    p = Pred(p);
-  } while (p != pPointArray[a].adjacent);
-
-  return -1;        
-  
-}
-
-
-PointNumero Successor(PointNumero a,PointNumero b){
-  DListPeek     p;
-  
-  p = pPointArray[a].adjacent;
-  if (p == NULL)
-    return -1;
-
-  do {
-    if (p->point_num == b) return (Succ(p)->point_num);
-    p = Succ(p);
-  } while (p != pPointArray[a].adjacent);
-
-  return -1;        
-  
-}
-
-int FixFirst(PointNumero x,PointNumero f){
-  DListPeek  p,copy;
-  int    out = 0;
-  
-  p = pPointArray[x].adjacent;
-  if (p == NULL)
-    return(0);
-  copy = p;
-  do {
-    if (p->point_num == f){
-      pPointArray[x].adjacent = p;
-      out = 1;
-    }
-    else
-      p = p->next;
-  } while ((p != copy) && !out);
-  return out;
-}
-
-PointNumero First(PointNumero x){
-  return (pPointArray[x].adjacent)->point_num;
-}
-
-Segment LowerCommonTangent(DT vl,DT vr){
-  PointNumero   x,y,z,z1,z2,temp;
-  Segment       s;
-  
-  x = vl.end;            /* vu le tri, c'est le point le + a droite     */
-  y = vr.begin;          /* idem, le + a gauche     */
-  z = First(y);
-  z1 = First(x);
-  z2 = Predecessor(x,z1);
-  for (;;) {
-    if (Is_right_of(x,y,z)){
-      temp = z;
-      z = Successor(z,y);
-      y = temp;
-    }
-    else if (Is_right_of(x,y,z2)){
-      temp = z2;
-      z2 = Predecessor(z2,x);
-      x = temp;
-    }
-    else {
-      s.from = x;
-      s.to = y;
-      return s;
-    }
-  }
-}
-
-
-Segment UpperCommonTangent(DT vl,DT vr){
-  PointNumero   x,y,z,z1,z2,temp;
-  Segment       s;
-  
-  x = vl.end;            /* vu le tri, c'est le point le + a droite     */
-  y = vr.begin;          /* idem, le + a gauche     */
-  z = First(y);
-  z1 = First(x);
-  z2 = Predecessor(y,z);
-  for (;;){
-    if (Is_left_of(x,y,z2)){
-      temp = z2;
-      z2 = Predecessor(z2,y);
-      y = temp;     
-    }
-    else if (Is_left_of(x,y,z1)){
-      temp = z1;
-      z1 = Successor(z1,x);
-      x = temp;
-    }
-    else{
-      s.from = x;
-      s.to = y;
-      return s;
-    }
-  }
-}
-
-
-/* return 1 if the point k is NOT in the circumcircle of
-   triangle hij */
-
-int Qtest(PointNumero h,PointNumero i,PointNumero j,PointNumero k){
-  double xc,yc,rcarre,distca;
-  
-  if ((h == i) && (h == j) && (h == k)){
-    Msg(GERROR, "3 identical points in Qtest"); 
-    return(0);  /* returning 1 will cause looping for ever */
-  }
-  if (CircumCircle( (double) pPointArray[h].where.h,
-                    (double) pPointArray[h].where.v,
-                    (double) pPointArray[i].where.h,
-                    (double) pPointArray[i].where.v,
-                    (double) pPointArray[j].where.h,
-                    (double) pPointArray[j].where.v,
-                    &xc, &yc )){
-    rcarre = square(xc - (double) pPointArray[i].where.h) +
-      square(yc - (double) pPointArray[i].where.v);
-    
-    distca = square(xc - (double) pPointArray[k].where.h) +
-      square(yc - (double) pPointArray[k].where.v);
-    
-    return (distca > rcarre);
-  }
-  else
-      return(0);  /* point not in circle, because no circle !     */
-}
-
-int merge(DT vl,DT vr){
-  Segment      bt,ut;
-  int      a,b,out;
-  PointNumero  r,r1,r2,l,l1,l2;
-  
-  bt = LowerCommonTangent(vl,vr);
-  ut = UpperCommonTangent(vl,vr);
-  l = bt.from;          /* left endpoint of BT     */
-  r = bt.to;            /* right endpoint of BT     */
-  
-  while ((l != ut.from) || (r != ut.to)) {     
-    a = b = 0;
-    if (!Insert(l,r)) return(0);
-    
-    r1 = Predecessor(r,l);
-    if (r1 == -1) return(0);
-    if (Is_right_of(l,r,r1))
-      a = 1;
-    else{
-      out = 0;
-      while (!out){
-        r2 = Predecessor(r,r1);
-        if (r2 == -1) return(0);
-        if (r2 < vr.begin)
-          out = 1;
-        else if (Qtest(l,r,r1,r2))
-          out = 1;
-        else{
-          if (!Delete(r,r1)) return(0);
-          r1 = r2;
-          if (Is_right_of(l,r,r1)) out = a = 1;
-        }
-      }
-    }
-      
-    l1 = Successor(l,r);
-    if (l1 == -1) return(0);
-    if (Is_left_of(r,l,l1))
-      b = 1;
-    else{
-      out = 0;
-      while (!out){
-        l2 = Successor(l,l1);
-        if (l2 == -1) return(0);
-        if (l2 > vl.end)
-          out = 1;
-        else if (Qtest(r,l,l1,l2))
-          out = 1;
-        else{
-          if (!Delete(l,l1)) return(0);
-          l1 = l2;
-          if (Is_left_of(r,l,l1)) out = b = 1;
-        }     
-      }
-    }
-    
-    if (a)
-      l = l1;
-    else if (b)
-      r = r1;
-    else{
-      if (Qtest(l,r,r1,l1))
-        r = r1;
-      else
-        l = l1;
-    }
-  }
-  if (!Insert(l,r)) return(0);
-  
-  if (!FixFirst(ut.to,ut.from)) return(0);
-  if (!FixFirst(bt.from,bt.to)) return(0);
-  return(1);
-}
-
-
-DT recur_trig(PointNumero left,PointNumero right){
-  int  n,m;
-  DT   dt;
-     
-  dt.begin = left;
-  dt.end = right;
-  n = right - left + 1;      /* nombre de points a triangulariser */
-  switch (n){
-  case 0:
-  case 1:
-    /* 0 ou 1 points -> rien a faire */
-    break;
-    
-  case 2:          /* deux points : cas trivial     */
-    Insert(left,right);
-    FixFirst(left,right);
-    FixFirst(right,left);
-    break;
-    
-  case 3:          /* trois points : cas trivial     */
-    Insert(left,right);
-    Insert(left,left + 1);
-    Insert(left + 1,right);
-    if (Is_right_of(left,right,left + 1)){
-      FixFirst(left,left + 1);
-      FixFirst(left + 1,right);
-      FixFirst(right,left);
-    }
-    else{
-      FixFirst(left,right);
-      FixFirst(left + 1,left);
-      FixFirst(right,left + 1);
-    }
-    break;
-    
-  default:     /* plus de trois points : cas recursif     */
-    m = (left + right) >> 1;
-    if (!merge(recur_trig(left,m),recur_trig(m + 1,right)))
-      
-      break;
-  }
-  return dt;
-}
-
-int comparePoints(const void *i, const void *j){
-  double x,y;
-  
-  x = ((PointRecord *)i)->where.h - ((PointRecord *)j)->where.h;
-  if (x == 0.) {
-    y = ((PointRecord *)i)->where.v - ((PointRecord *)j)->where.v;
-    return ((y < 0.) ? -1 : 1);
-  }
-  else
-    return ((x < 0.) ? -1 : 1);
-}
-
-
-/*  this fonction builds the delaunay triangulation and the voronoi for a
-    window. All error handling is done here. */
-  
-int DelaunayAndVoronoi(DocPeek doc){     
-  PushgPointArray(doc->points); 
-
-  if (doc->numPoints < 2) return(1);
-
-  qsort(doc->points,doc->numPoints,sizeof(PointRecord),comparePoints);
-  gDocTemp = doc;
-  recur_trig(0,doc->numPoints - 1);  
-
-  return 1;        
-}
-
-
-/* this routine puts in xc and yc the coord of the center
-   of the circumcircle of triangle (x1,y1),(x2,y2),(x3,y3)  */
-  
-int CircumCircle(double x1,double y1,double x2,double y2,double x3,double y3,
-                     double *xc,double *yc){
-  double d,a1,a2,a3;
-  
-  
-  d = 2. * (double)(y1*(x2-x3)+y2*(x3-x1)+y3*(x1-x2));
-  if (d == 0.0){
-    Msg(WARNING, "Colinear points in circum circle computation"); 
-    *xc = *yc = -99999.;      
-    return(0);
-  }
-    
-  a1 = x1*x1 + y1*y1;
-  a2 = x2*x2 + y2*y2;
-  a3 = x3*x3 + y3*y3;
-  *xc = (double) ((a1*(y3-y2) + a2*(y1-y3) + a3*(y2-y1)) / d);
-  *yc = (double) ((a1*(x2-x3) + a2*(x3-x1) + a3*(x1-x2)) / d);
-  
-  if(fabs(d) < 1.e-12 * DSQR(LC2D))
-    Msg(WARNING, "Almost colinear points in circum circle computation (d = %g)", d); 
-
-  return(1);
-}
-
-
-int Is_right_of(PointNumero x,PointNumero y,PointNumero check){
-  return Is_left_of(y,x,check);
-}
-
-int Is_left_of(PointNumero x,PointNumero y,PointNumero check){
-  static double xx,yy,alpha,beta;
-  
-  yy = (double) (pPointArray[y].where.v - pPointArray[x].where.v);
-  xx = (double) (pPointArray[y].where.h - pPointArray[x].where.h);
-  alpha = atan2(yy,xx);
-  
-  yy = (double) (pPointArray[check].where.v - pPointArray[x].where.v);
-  xx = (double) (pPointArray[check].where.h - pPointArray[x].where.h);
-  beta = atan2(yy,xx) - alpha;
-  if (beta <= 0) beta += Deux_Pi;
-  
-  return ((beta >= 0) && (beta <= Pi));
-}
-
-/* This routine insert the point 'newPoint' in the list dlist,
-   respecting the clock-wise orientation.                              */
-  
-int DListInsert(DListRecord **dlist, MPoint center, PointNumero newPoint){
-  DListRecord  *p, *newp;
-  double        alpha1,alpha,beta,xx,yy;
-  int           first;
-
-  newp = (DListRecord*) Malloc(sizeof(DListRecord));
-  newp->point_num = newPoint;
-
-  if (*dlist == NULL){
-    *dlist = newp;
-    Pred(*dlist) = newp;
-    Succ(*dlist) = newp;
-    return(1);
-  }
-  if (Succ(*dlist) == *dlist){
-    Pred(*dlist) = newp;
-    Succ(*dlist) = newp;
-    Pred(newp) = *dlist;
-    Succ(newp) = *dlist;
-    return(1);
-  }
-  /*  If we are here, the double-linked circular list has 2 or more
-      elements, so we have to calculate where to put the new one.          */
-  
-  p = *dlist;
-  first = p->point_num;
-  
-  /* first, compute polar coord. of the first point.     */
-  yy = (double) (pPointArray[first].where.v - center.v);
-  xx = (double) (pPointArray[first].where.h - center.h);
-  alpha1 = atan2(yy,xx);
-  
-  /* compute polar coord of the point to insert. */
-  yy = (double) (pPointArray[newPoint].where.v - center.v);
-  xx = (double) (pPointArray[newPoint].where.h - center.h);
-  beta = atan2(yy,xx) - alpha1;
-  if (beta <= 0) beta += Deux_Pi;
-  
-  do{
-    yy = (double) (pPointArray[Succ(p)->point_num].where.v - center.v);
-    xx = (double) (pPointArray[Succ(p)->point_num].where.h - center.h);
-    alpha = atan2(yy,xx) - alpha1;
-    if (alpha <= 1.e-15) alpha += Deux_Pi;
-    if (alpha >= beta){
-      Succ(newp) = Succ(p);
-      Succ(p) = newp;
-      Pred(newp) = p;
-      Pred(Succ(newp)) = newp;
-      return(1);
-    }
-    p = Succ(p);
-  } while (p != *dlist);
-  
-  /*** ON NE DOIT JAMAIS ARRIVER ICI ***/
-  return(0);
-} 
-
-int Insert(PointNumero a,PointNumero b){
-  int rslt;
-  
-  /* This routine inserts the point 'a' in the adjency list of 'b' and
-     the point 'b' in the adjency list of 'a'.          */
-  
-  rslt = DListInsert(&pPointArray[a].adjacent,pPointArray[a].where,b);
-  rslt &= DListInsert(&pPointArray[b].adjacent,pPointArray[b].where,a);
-
-  return rslt;
-}
-
-
-
-int DListDelete(DListPeek *dlist,PointNumero oldPoint){
-  DListPeek     p;
-  
-  if (*dlist == NULL)
-    return(0);              
-  if (Succ(*dlist) == *dlist){
-    if ((*dlist)->point_num == oldPoint){
-      Free(*dlist);
-      *dlist = NULL;
-      return(1);
-    }
-    else
-      return(0); 
-  }
-  p = *dlist;
-  do{
-    if (p->point_num == oldPoint){
-      Succ(Pred(p)) = Succ(p);
-      Pred(Succ(p)) = Pred(p);
-      if (p == *dlist){
-        *dlist = Succ(p);
-      }
-      Free(p);
-      return(1);
-    }
-    p = Succ(p);
-  } while (p != *dlist);
-  
-  return(0);
-}
-
-
-/* This routine removes the point 'a' in the adjency list of 'b' and
-   the point 'b' in the adjency list of 'a'.          */
-  
-int Delete(PointNumero a,PointNumero b){
-  int  rslt;
-  
-  rslt = DListDelete(&pPointArray[a].adjacent,b);
-  rslt &= DListDelete(&pPointArray[b].adjacent,a);
-
-  return rslt;
-}
-
-/*  Cette routine efface toutes les listes d'adjacence du pPointArray. */
-
-void remove_all_dlist(int n, PointRecord *pPointArray){
-  int       i;
-  DListPeek p,temp;
-  
-  for (i=0;i<n;i++)
-    if (pPointArray[i].adjacent != NULL){
-      p = pPointArray[i].adjacent;
-      do{
-        temp = p;
-        p = Pred(p);
-        Free(temp);          
-      } while (p != pPointArray[i].adjacent);
-      pPointArray[i].adjacent = NULL;     
-    }
-}
-
diff --git a/Mesh/2D_Elliptic.cpp b/Mesh/2D_Elliptic.cpp
deleted file mode 100644
index 57bcdeca76aa35fff40721a0e395bc24a7c4e6dc..0000000000000000000000000000000000000000
--- a/Mesh/2D_Elliptic.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-// $Id: 2D_Elliptic.cpp,v 1.7 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-
-extern Mesh *THEM;
-extern int CurrentNodeNumber;
-
-int MeshEllipticSurface (Surface * sur){
-
-  int i, j, k, nb, N1, N2, N3, N4;
-  Curve *GG[444];
-  Vertex  **list;
-  Simplex *simp;
-  double alpha, beta, gamma, u, v, lc, x, y, z;
-  Vertex *S[4], *v11, *v12, *v13, *v21, *v22, *v23, *v31, *v32, *v33;
-  List_T *l1, *l2, *l3, *l4;
-
-  if (sur->Method != ELLIPTIC)
-    return (0);
-
-  nb = List_Nbr (sur->Generatrices);
-  if (nb < 4)
-    return (0);
-
-  for (i = 0; i < nb; i++){
-    List_Read (sur->Generatrices, i, &GG[i]);
-  }
-
-  if (!(S[0] = FindPoint (sur->ipar[0], THEM)))
-    return 0;
-  if (!(S[1] = FindPoint (sur->ipar[1], THEM)))
-    return 0;
-  if (!(S[2] = FindPoint (sur->ipar[2], THEM)))
-    return 0;
-  if (!(S[3] = FindPoint (sur->ipar[3], THEM)))
-    return 0;
-  N1 = N2 = N3 = N4 = 0;
-  /*Remplissure de la premiere cuvee de merde */
-  l1 = List_Create (20, 10, sizeof (Vertex *));
-  for (i = 0; i < nb; i++){
-    if (!compareVertex (&GG[i]->beg, &S[0])){
-      j = i;
-      do{
-        if (!List_Nbr (l1))
-          List_Add (l1, List_Pointer (GG[j]->Vertices, 0));
-        for (k = 1; k < List_Nbr (GG[j]->Vertices); k++)
-          List_Add (l1, List_Pointer (GG[j]->Vertices, k));
-        j = (j + 1 < nb) ? j + 1 : 0;
-        if (j == i)
-          return 0;
-      }
-      while (compareVertex (&GG[j]->beg, &S[1]));
-    }
-  }
-  /*Remplissure de la deuxieme cuvee de merde */
-  l2 = List_Create (20, 10, sizeof (Vertex *));
-  for (i = 0; i < nb; i++){
-    if (!compareVertex (&GG[i]->beg, &S[1])){
-      j = i;
-      do{
-        if (!List_Nbr (l2))
-          List_Add (l2, List_Pointer (GG[j]->Vertices, 0));
-        for (k = 1; k < List_Nbr (GG[j]->Vertices); k++)
-          List_Add (l2, List_Pointer (GG[j]->Vertices, k));
-        j = (j + 1 < nb) ? j + 1 : 0;
-        if (j == i)
-          return 0;
-      }
-      while (compareVertex (&GG[j]->beg, &S[2]));
-    }
-  }
-  /*Remplissure de la TROISIEME cuvee de merde */
-  l3 = List_Create (20, 10, sizeof (Vertex *));
-  for (i = 0; i < nb; i++){
-    if (!compareVertex (&GG[i]->beg, &S[2])){
-      j = i;
-      do{
-        if (!List_Nbr (l3))
-          List_Add (l3, List_Pointer (GG[j]->Vertices, 0));
-        for (k = 1; k < List_Nbr (GG[j]->Vertices); k++)
-          List_Add (l3, List_Pointer (GG[j]->Vertices, k));
-        j = (j + 1 < nb) ? j + 1 : 0;
-        if (j == i)
-          return 0;
-      }
-      while (compareVertex (&GG[j]->beg, &S[3]));
-    }
-  }
-  /*Remplissure de la quatrieme cuvee de merde */
-  l4 = List_Create (20, 10, sizeof (Vertex *));
-  for (i = 0; i < nb; i++){
-    if (!compareVertex (&GG[i]->beg, &S[3])){
-      j = i;
-      do{
-        if (!List_Nbr (l4))
-          List_Add (l4, List_Pointer (GG[j]->Vertices, 0));
-        for (k = 1; k < List_Nbr (GG[j]->Vertices); k++)
-          List_Add (l4, List_Pointer (GG[j]->Vertices, k));
-        j = (j + 1 < nb) ? j + 1 : 0;
-        if (j == i)
-          return 0;
-      }
-      while (compareVertex (&GG[j]->beg, &S[0]));
-    }
-  }
-  N1 = List_Nbr (l1);
-  N2 = List_Nbr (l2);
-  N3 = List_Nbr (l3);
-  N4 = List_Nbr (l4);
-  if (N1 != N3 || N2 != N4){
-    List_Delete (l1);
-    List_Delete (l2);
-    List_Delete (l3);
-    List_Delete (l4);
-    return 0;
-  }
-
-
-  sur->Nu = N1;
-  sur->Nv = N2;
-  list = (Vertex **) Malloc (N1 * N2 * sizeof (Vertex *));
-
-  for (i = 0; i < N1; i++){
-    for (j = 0; j < N2; j++){
-      if (i == 0){
-        List_Read (l4, N2 - j - 1, &list[i + N1 * j]);
-      }
-      else if (i == N1 - 1){
-        List_Read (l2, j, &list[i + N1 * j]);
-      }
-      else if (j == 0){
-        List_Read (l1, i, &list[i + N1 * j]);
-      }
-      else if (j == N2 - 1){
-        List_Read (l3, N1 - i - 1, &list[i + N1 * j]);
-      }
-      else{
-        u = 1. - 2. * (double) i / double (N1 - 1);
-        v = 1. - 2. * (double) j / double (N2 - 1);
-        x = 0.25 * ((S[0]->Pos.X * (1 + u) * (1. + v)) +
-                    (S[1]->Pos.X * (1 - u) * (1. + v)) +
-                    (S[2]->Pos.X * (1 - u) * (1. - v)) +
-                    (S[3]->Pos.X * (1 + u) * (1. - v)));
-        y = 0.25 * ((S[0]->Pos.Y * (1 + u) * (1. + v)) +
-                    (S[1]->Pos.Y * (1 - u) * (1. + v)) +
-                    (S[2]->Pos.Y * (1 - u) * (1. - v)) +
-                    (S[3]->Pos.Y * (1 + u) * (1. - v)));
-        z = 0.25 * ((S[0]->Pos.Z * (1 + u) * (1. + v)) +
-                    (S[1]->Pos.Z * (1 - u) * (1. + v)) +
-                    (S[2]->Pos.Z * (1 - u) * (1. - v)) +
-                    (S[3]->Pos.Z * (1 + u) * (1. - v)));
-        lc = 0.25 * ((S[0]->lc * (1 + u) * (1. + v)) +
-                     (S[1]->lc * (1 - u) * (1. + v)) +
-                     (S[2]->lc * (1 - u) * (1. - v)) +
-                     (S[3]->lc * (1 + u) * (1. - v)));
-        
-        list[i + N1 * j] = Create_Vertex (++CurrentNodeNumber, x, y, z, lc, 0.0);
-      }
-    }
-  }
-  
-  k = 0;
-  
-  while (1){
-    k++;
-    if (k > 1000)
-      break;
-    for (i = 1; i < N1 - 1; i++){
-      for (j = 1; j < N2 - 1; j++){
-        v11 = list[i - 1 + N1 * (j - 1)];
-        v12 = list[i + N1 * (j - 1)];
-        v13 = list[i + 1 + N1 * (j - 1)];
-        v21 = list[i - 1 + N1 * (j)];
-        v22 = list[i + N1 * (j)];
-        v23 = list[i + 1 + N1 * (j)];
-        v31 = list[i - 1 + N1 * (j + 1)];
-        v32 = list[i + N1 * (j + 1)];
-        v33 = list[i + 1 + N1 * (j + 1)];
-        
-        alpha = 0.25 * (DSQR (v23->Pos.X - v21->Pos.X) +
-                        DSQR (v23->Pos.Y - v21->Pos.Y));
-        gamma = 0.25 * (DSQR (v32->Pos.X - v12->Pos.X) +
-                        DSQR (v32->Pos.Y - v12->Pos.Y));
-        beta = 0.0625 * ((v32->Pos.X - v12->Pos.X) *
-                         (v23->Pos.X - v21->Pos.X) +
-                         (v32->Pos.Y - v12->Pos.Y) *
-                         (v23->Pos.Y - v21->Pos.Y));
-        
-        v22->Pos.X = 0.5 * (alpha * (v32->Pos.X + v12->Pos.X) +
-                            gamma * (v23->Pos.X + v21->Pos.X) -
-                            2. * beta * (v33->Pos.X - v13->Pos.X - v31->Pos.X + v11->Pos.X))
-          / (alpha + gamma);
-        v22->Pos.Y = 0.5 * (alpha * (v32->Pos.Y + v12->Pos.Y) +
-                            gamma * (v23->Pos.Y + v21->Pos.Y) -
-                            2. * beta * (v33->Pos.Y - v13->Pos.Y - v31->Pos.Y + v11->Pos.Y))
-          / (alpha + gamma);
-        v22->Pos.Z = 0.5 * (alpha * (v32->Pos.Z + v12->Pos.Z) +
-                            gamma * (v23->Pos.Z + v21->Pos.Z) -
-                            2. * beta * (v33->Pos.Z - v13->Pos.Z - v31->Pos.Z + v11->Pos.Z))
-          / (alpha + gamma);
-        
-      }
-    }
-    
-  }
-  for (i = 0; i < N1 - 1; i++){
-    for (j = 0; j < N2 - 1; j++){
-      if (sur->Recombine){
-        simp = Create_Quadrangle
-	  (list[(i) + N1 * (j)], list[(i + 1) + N1 * (j)],
-	   list[(i + 1) + N1 * (j + 1)], list[i + N1 * (j + 1)]);
-        simp->iEnt = sur->Num;
-        Tree_Add (sur->Simplexes, &simp);
-        List_Add (sur->TrsfSimplexes, &simp);
-      }
-      else{
-        simp = Create_Simplex (list[(i) + N1 * (j)], list[(i + 1) + N1 * (j)],
-                               list[(i) + N1 * (j + 1)], NULL);
-        simp->iEnt = sur->Num;
-        Tree_Add (sur->Simplexes, &simp);
-        List_Add (sur->TrsfSimplexes, &simp);
-        
-        simp = Create_Simplex (list[(i + 1) + N1 * (j + 1)], list[(i) + N1 * (j + 1)],
-                               list[(i + 1) + N1 * (j)], NULL);
-        simp->iEnt = sur->Num;
-        Tree_Add (sur->Simplexes, &simp);
-        List_Add (sur->TrsfSimplexes, &simp);
-      }
-    }
-  }
-
-  // We count this here, to be able to distinguish very quickly
-  // between triangles and quadrangles later
-  if (sur->Recombine)
-    THEM->Statistics[8] += List_Nbr(sur->TrsfSimplexes);
-
-  return 1;
-}
diff --git a/Mesh/2D_InitMesh.cpp b/Mesh/2D_InitMesh.cpp
deleted file mode 100644
index 90450b828cf055e9fa01628aa683eadb4ae9d0fa..0000000000000000000000000000000000000000
--- a/Mesh/2D_InitMesh.cpp
+++ /dev/null
@@ -1,429 +0,0 @@
-// $Id: 2D_InitMesh.cpp,v 1.9 2001-08-13 09:38:14 geuzaine Exp $
-
-/*
- 
-   Generation du maillage initial 2D
-
-   Dans l'algorithme de maillage, on doit creer un maillage initial a l'aide
-   de contours orientes aire a doite. Deux types de problemes peuvent se presenter :
-
-       1) probleme courant : un triangle se trouve a l'exterieur du contour, il faut
-       que sa variable de localisation soit declaree externe.  
-
-       2) probleme rare : une arete du contour n'a pas ete creee
-
-       On procede comme suit :
-       trouve le triangle, on procede de la facon suivante :
-          - on trie les aretes de tous les triangles ;
-          - Pour chaque contour on prend chaque arete orientee ;
-          - Si cette arete n'existe pas (bsearch return false) alors on cherche
-          les 2 triangles reliant cette arete et on les modifie
-          - Si cette arete possede 2 triangles adjacents, on declare externe 
-          le triangle dont le troisieme noeud se trouve a gauche de l'arete.
-
-          illustration
-          ------------
-
-          probleme 1) + = point du contour
-          
-
-                                        3
-                        - -  + --------+     +
-                   + - -     1 \      /                +
-                                \    /                       +
-                                 \  /                                   +
-             +                     +
-                                   2       3 a gauche de 1-2 -> tr externe
-
-
-           probleme 2) arete inexistante 1-2
-           
-                       +,*,@ contours
-           
-                     +1                      +            
-                    / \                     /|\
-                   /   \                   / | \
-                  /     \                 /  |  \
-                 /       \               /   |   \
-                *         @   --->      *----+----@ 
-                 \       /               \   |   /
-                  \     /                 \  |  /
-                   \   /                   \ | /
-                    \ /                     \|/
-                     +2                      +
-
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-static int            pointA,pointB,Counter,Stagnant,StopNow;
-static Tree_T        *ETree,*EDToSwap;
-
-extern PointRecord   *gPointArray;
-
-int                  *permut;
-
-typedef struct {
-  int from;
-  int to;
-  int NbOccur;
-  Delaunay *Liste[2];
-}ED;
-
-
-void makepermut (int numpoints){  
-  int i, ip ;  
-  permut = (int *) Malloc (numpoints * sizeof (int));
-  for ( i=0 ; i<numpoints ; i++ ){    
-    ip = gPointArray[i].permu;
-    permut[ip] = i;    
-  }
-}  
-
-int crossED ( ED * e ){  
-  double Xma,Xmb,Yma,Ymb,det,t,q;
-  double XMa,XMb,YMa,YMb;
-  double xa1,xa2,ya1,ya2;
-  double xb1,xb2,yb1,yb2;
-  
-  xa1 = gPointArray[pointA].where.h;
-  xa2 = gPointArray[pointB].where.h;
-  ya1 = gPointArray[pointA].where.v;
-  ya2 = gPointArray[pointB].where.v;
-  
-  xb1 = gPointArray[e->from].where.h;
-  xb2 = gPointArray[e->to].where.h;
-  yb1 = gPointArray[e->from].where.v;
-  yb2 = gPointArray[e->to].where.v;
-
-  Xma = DMIN(xa1,xa2);
-  Xmb = DMIN(xb1,xb2);
-
-  XMa = DMAX(xa1,xa2);
-  XMb = DMAX(xb1,xb2);
-
-  if(XMa < Xmb || XMb < Xma)return(0);
-
-  Yma = DMIN(ya1,ya2);
-  Ymb = DMIN(yb1,yb2);
-
-  YMa = DMAX(ya1,ya2);
-  YMb = DMAX(yb1,yb2);
-
-  if(YMa < Ymb || YMb < Yma)return(0);
-
-  det = (xa2 - xa1)*(yb1-yb2) - (xb1 - xb2)*(ya2-ya1); 
-
-  if(det == 0.0){
-    return(0);
-  }
-
-  t = ((xb1 - xa1)*(yb1-yb2) - (xb1 - xb2)*(yb1-ya1))/det; 
-  q = ((xa2 - xa1)*(yb1-ya1) - (ya2 - ya1)*(xb1-xa1))/det; 
-
-  if(t>1. || t<0.)return(0);
-  if(q>1. || q<0.)return(0);
-  return(1);
-}
- 
-int compareED2 (const void *a, const void *b){
-  ED *q,*w;
-  q=(ED*)a;
-  w=(ED*)b;
-  if(q->NbOccur > w->NbOccur)return(-1);
-  if(q->NbOccur < w->NbOccur)return(1);
-  if(q->from > w->from)return(1);
-  if(q->from < w->from)return(-1);
-  if(q->to > w->to)return(1);
-  if(q->to < w->to)return(-1);
-  return(0);
-}
-
-int compareED (const void *a, const void *b){
-  ED *q,*w;
-  q=(ED*)a;
-  w=(ED*)b;
-  if(q->from > w->from)return(1);
-  if(q->from < w->from)return(-1);
-  if(q->to > w->to)return(1);
-  if(q->to < w->to)return(-1);
-  return(0);
-}
-
-void DoWeSwapED ( void *data , void *dummy){
-  ED *e;
-
-  e = (ED*)data;
-  
-  if(e->from == pointA || e->from == pointB || 
-     e->to   == pointA || e->to   == pointB){
-    return;
-  }
-  else if ( Tree_PQuery ( EDToSwap,e) ){
-  }    
-  else if ( crossED ( e ) ) {    
-    Tree_Add ( EDToSwap ,e);
-  }
-}
-
-void Print ( void *data , void *dummy){
-  ED *e;
-
-  e = (ED*)data;
-  Msg(INFO,"%d %d",e->from,e->to); 
-}
-
-void SwapED ( void *data , void *dummy){
-  ED *e,E;
-  int from,to;
-
-  e = (ED*)data;
-
-  if(Stagnant && Counter <= StopNow)return;
-  else if(Stagnant)Counter++;
-
-  if(e->from != e->Liste[0]->t.a && e->from != e->Liste[0]->t.b &&
-     e->from != e->Liste[0]->t.c )
-    return;
-  if(e->from != e->Liste[1]->t.a && e->from != e->Liste[1]->t.b &&
-     e->from != e->Liste[1]->t.c )
-    return;
-  if(e->to != e->Liste[0]->t.a && e->to != e->Liste[0]->t.b &&
-     e->to != e->Liste[0]->t.c )
-    return;
-  if(e->to != e->Liste[1]->t.a && e->to != e->Liste[1]->t.b &&
-     e->to != e->Liste[1]->t.c )
-    return;
-  
-
-  if(e->from != e->Liste[0]->t.a && e->to != e->Liste[0]->t.a) 
-    from = e->Liste[0]->t.a;
-  else if(e->from != e->Liste[0]->t.b && e->to != e->Liste[0]->t.b) 
-    from = e->Liste[0]->t.b;
-  else if(e->from != e->Liste[0]->t.c && e->to != e->Liste[0]->t.c) 
-    from = e->Liste[0]->t.c;
-
-  if(e->from != e->Liste[1]->t.a && e->to != e->Liste[1]->t.a) 
-    to = e->Liste[1]->t.a;
-  else if(e->from != e->Liste[1]->t.b && e->to != e->Liste[1]->t.b) 
-    to = e->Liste[1]->t.b;
-  else if(e->from != e->Liste[1]->t.c && e->to != e->Liste[1]->t.c) 
-    to = e->Liste[1]->t.c;
-
-  pointA = e->from;
-  pointB = e->to;
-  E.from = from;
-  E.to   = to;
-  if(!crossED(&E))return;
-
-  e->Liste[0]->t.a = from;
-  e->Liste[0]->t.b = to;
-  e->Liste[0]->t.c = e->from;
-  
-  e->Liste[1]->t.a = from;
-  e->Liste[1]->t.b = to;
-  e->Liste[1]->t.c = e->to;
-
-  e->from = IMAX(from,to);
-  e->to =   IMIN(from,to);
-}
-  
-void SuppressInETree( void *data , void *dummy){
-  if(!Tree_Suppress(ETree,data))
-    Msg(WARNING, "Cannot suppress in ETree"); 
-}
-
-void AddInETree( void *data , void *dummy){
-  Tree_Add(ETree,data);
-}
-
-int verifie_cas_scabreux (int pa, int pb, ContourRecord **ListContours, int Nc){
-  ED Edge;
-  int i,k,a,b;
-  ContourRecord *contour;
-    
-
-  Edge.from = IMAX(pa,pb);
-  Edge.to   = IMIN(pa,pb);
-  for(k=0;k<Nc;k++){
-    contour = ListContours[k];
-    for ( i = -1 ; i < (contour->numpoints - 1) ; i++) {      
-      if(i == -1){
-        a = permut [ contour->oriented_points[0].permu ];
-        b = permut [ contour->oriented_points[contour->numpoints - 1].permu ];
-      }
-      else{
-        a = permut [ contour->oriented_points[i].permu ];
-        b = permut [ contour->oriented_points[i+1].permu ];
-      }
-      
-      pointA = IMAX(a,b);
-      pointB = IMIN(a,b);
-      if(a != pa && b != pa && a != pb && b != pb)
-        if(crossED(&Edge)) return (1);
-    }
-  }  
-  return (0);
-}
-
-void verify_edges (List_T *ListDelaunay, ContourRecord **ListContour, 
-                   int NumContours , int NumDelaunay){
-
-  ED   *pEdge;
-  ED   Edge; 
-  int  ok,max,i,k,c,a,b; 
-  ContourRecord *contour;
-  Delaunay *del_P;
-
-  max = 100;
-
-  c = 0;
-  do {
-    c++;
-    if(c>max)break;
-    ETree = Tree_Create ( sizeof (Edge) , compareED );
-    for (i=0;i< NumDelaunay;i++) {
-
-      del_P = *(Delaunay**)List_Pointer(ListDelaunay, i);
-
-      Edge.from = IMAX ( del_P->t.a, del_P->t.b );
-      Edge.to   = IMIN ( del_P->t.a, del_P->t.b );
-      Edge.NbOccur = 1;
-
-      if((pEdge = (ED*)Tree_PQuery(ETree,&Edge))){ 
-        pEdge->Liste[1] = del_P;
-      }
-      else {
-        Edge.Liste[0] = del_P;
-        Tree_Add (ETree,&Edge);
-      }
-      
-      Edge.from = IMAX ( del_P->t.a, del_P->t.c );
-      Edge.to   = IMIN ( del_P->t.a, del_P->t.c );
-      
-      if((pEdge = (ED*)Tree_PQuery(ETree,&Edge))){ 
-        pEdge->Liste[1] = del_P;
-      }
-      else {
-        Edge.Liste[0] = del_P;
-        Tree_Add (ETree,&Edge);
-      }
-      
-      Edge.from = IMAX ( del_P->t.c, del_P->t.b );
-      Edge.to   = IMIN ( del_P->t.c, del_P->t.b );
-      
-      if((pEdge = (ED*)Tree_PQuery(ETree,&Edge))){ 
-        pEdge->Liste[1] = del_P;
-      }
-      else {
-        Edge.Liste[0] = del_P;
-        Tree_Add (ETree,&Edge);
-      }
-    }
-    
-    ok = 0;
-    for(k=0;k<NumContours;k++){
-      contour = ListContour[k];
-      for ( i = -1 ; i < contour->numpoints - 1 ; i++){      
-        
-        if(i == -1){
-          a   = permut [ contour->oriented_points[0].permu ];
-          b   = permut [ contour->oriented_points[contour->numpoints - 1].permu ];
-        }
-        else{
-          a   = permut [ contour->oriented_points[i].permu ];
-          b   = permut [ contour->oriented_points[i+1].permu ];
-        }
-        
-        Edge.from = IMAX(a,b);
-        Edge.to   = IMIN(a,b);
-        
-        if(!Tree_Search( ETree , &Edge ))ok++;; 
-      }
-    }
-
-    if(!ok){
-      return;
-    }
-    Msg(INFO, "Swapping (%d missing edges)", ok); 
-    
-    EDToSwap = NULL;
-    if(EDToSwap)Tree_Delete(EDToSwap);
-    EDToSwap = Tree_Create (sizeof(ED),compareED2);
-    for(k=0;k<NumContours;k++){
-      contour = ListContour[k];
-      for ( i = -1 ; i < contour->numpoints - 1 ; i++){      
-        
-        if(i == -1){
-          a   = permut [ contour->oriented_points[0].permu ];
-          b   = permut [ contour->oriented_points[contour->numpoints - 1].permu ];
-        }
-        else{
-          a   = permut [ contour->oriented_points[i].permu ];
-          b   = permut [ contour->oriented_points[i+1].permu ];
-        }
-        
-        pointA = IMAX(a,b);
-        pointB = IMIN(a,b);
-        
-        Tree_Action ( ETree , DoWeSwapED ); 
-        
-      }
-    }
-    Msg(INFO, "Elimination (%d swaps)", Tree_Nbr(EDToSwap)); 
-
-    Tree_Action (EDToSwap , SuppressInETree);
-    Tree_Action (EDToSwap , SwapED);
-    Tree_Action (EDToSwap , AddInETree);
-  }while(Tree_Nbr(EDToSwap));
-/*
-  Tree_Delete(EDToSwap);
-  Tree_Delete(ETree);
-*/
-}
-
-
-
-int comparepermu(const void *i, const void *j){
-  return ( gPointArray[*(PointNumero *)i].permu - gPointArray[*(PointNumero *)j].permu);
-}
-
-void verify_inside (Delaunay * ListDelaunay ,  int NumDelaunay ){
-
-  PointNumero pt[3], compare, a, b;
-  int         i, inside, cont[3];
-
-  for ( i=0 ; i < NumDelaunay  ; i++){
-    
-    pt[0] = ListDelaunay[i].t.a;
-    pt[1] = ListDelaunay[i].t.b;
-    pt[2] = ListDelaunay[i].t.c;
-    qsort(pt,3,sizeof(PointNumero),comparepermu);
-
-    cont[0] = gPointArray[pt[0]].numcontour;
-    cont[1] = gPointArray[pt[1]].numcontour;
-    cont[2] = gPointArray[pt[2]].numcontour;
-
-
-    if((cont[1] != cont[2])||(cont[0]!=cont[1])||(cont[0]!=cont[2]))
-      inside = 1;
-    else
-      inside = 0;
-
-
-    a = pt[0];
-    b = pt[1];
-    compare = pt[2];
-    
-    if ((Is_left_of ( a,b,compare  ) && (inside == 0))){
-      ListDelaunay[i].t.position = EXTERN ;
-    }
-
-  }
-  return;
-  
-}      
-
diff --git a/Mesh/2D_Links.cpp b/Mesh/2D_Links.cpp
deleted file mode 100644
index 1165b56731beb8099c043dd2c93925c86585f8fa..0000000000000000000000000000000000000000
--- a/Mesh/2D_Links.cpp
+++ /dev/null
@@ -1,269 +0,0 @@
-// $Id: 2D_Links.cpp,v 1.9 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-extern PointRecord  *gPointArray;
-extern int           LocalNewPoint;
-extern DocRecord    *FGMESH;
-
-extern PointNumero First(PointNumero x);
-
-/* compte les points sur le polygone convexe */
-
-int CountPointsOnHull(int n, PointRecord *pPointArray){
-  PointNumero p,p2,temp;
-  int i;
-  
-  if (pPointArray[0].adjacent == NULL) return 0;
-  i = 1;
-  p = 0;
-  p2 = First(0);
-  while ((p2 != 0) && (i < n)) {
-    i++;
-    temp = p2;
-    p2 = Successor(p2,p);
-    p = temp;
-  }
-  return ((i <= n) ? i : -1);
-}
-
-
-PointNumero *ConvertDlistToArray(DListPeek *dlist,int *n){
-  DListPeek             p,temp;
-  int                   i,max = 0;
-  PointNumero           *ptr;
-        
-  p = *dlist;
-  do{
-    max++;
-    p = Pred(p);        
-  } while (p != *dlist);
-  ptr = (PointNumero *) Malloc((int) ((max+1) * sizeof(PointNumero)));
-  if (ptr == NULL) return NULL;
-  p = *dlist;
-  for (i=0;i<max;i++){
-    ptr[i] = p->point_num;
-    temp = p;
-    p = Pred(p);
-    Free(temp);
-  }
-  ptr[max]=ptr[0];
-  *dlist = NULL;
-  *n = max;
-  return ptr;
-}
-
-
-/* Convertir les listes d'adjacence en triangles */
-
-int Conversion(DocPeek doc ){
-
-  /* on suppose que n >= 3      gPointArray est suppose OK. */
-
-  Striangle *striangle;
-  int n,i,j;
-  int count = 0,count2 = 0;
-  PointNumero aa,bb,cc;
-  PointRecord *ptemp;
-
-  ptemp = gPointArray;
-  gPointArray = doc->points;  
-                
-  n = doc->numPoints;
-  striangle = (Striangle *) Malloc((int) (n * sizeof(Striangle)));
-  count2 = (int) CountPointsOnHull(n,doc->points);
-
-  /* nombre de triangles que l'on doit obtenir */
-  count2 = 2 * (n - 1) - count2;        
-        
-  if(doc->delaunay)Free (doc->delaunay);
-
-  doc->delaunay = (Delaunay *) Malloc(2*count2 * sizeof(Delaunay));
-
-  for (i=0;i<n;i++){
-    /* on cree une liste de points connectes au point i (t) + nombre de points (t_length) */    
-    striangle[i].t = ConvertDlistToArray(&gPointArray[i].adjacent,&striangle[i].t_length);
-    striangle[i].info = NULL;
-    striangle[i].info_length = 0;
-  }
-
-  /* on balaye les noeuds de gauche a droite -> on cree les triangles  */
-  count = 0;
-  for (i=0;i<n;i++){
-    for (j=0;j<striangle[i].t_length;j++){
-      if ( ( striangle[i].t[j] > i) && ( striangle[i].t[j+1] > i) && 
-           (Is_right_of(i,striangle[i].t[j],striangle[i].t[j+1])) ) {
-        aa = i;
-        bb = striangle[i].t[j];
-        cc = striangle[i].t[j+1];
-        filldel(&doc->delaunay[count],aa,bb,cc,gPointArray,NULL);
-        count++;              
-      }   
-    }
-  }
-  for (i=0;i<n;i++) Free(striangle[i].t);
-  Free(striangle); 
-  doc->numTriangles = count2;
-  gPointArray = ptemp;
-  return(1);
-}
-
-
-int compareEdge(const void *e1, const void *e2){
-  PointNumero tmp;
-
-  if ((tmp = ((edge *)e1)->from - ((edge *)e2)->from) != 0) return(tmp);
-  return(((edge *)e1)->to - ((edge *)e2)->to);
-}
-
-/* pour la liste de delaunays ListDelaunay, CreateLinks cree les liens entre
-   triangles c.a.d determine les voisins de chaque triangle                  */
-
-int CreateLinks(List_T * ListDelaunay , int NumDelaunay, 
-                ContourRecord **ListContours , int Nc){
-  int i;
-  edge *ListEdges;
-  MPoint pt;
-  Delaunay *del_Pi, *del_Pj;
-  
-  ListEdges = (edge *) Malloc((3* NumDelaunay + 2)* sizeof(edge));
-
-  ListEdges[3* NumDelaunay + 1].num=0;
-  
-  for (i=0;i< NumDelaunay;i++){
-
-    del_Pi = *(Delaunay**)List_Pointer(ListDelaunay, i);
-
-    /* arete a b */
-    if (del_Pi->t.a  > del_Pi->t.b ){   
-      ListEdges[3*i].from = del_Pi->t.a;
-      ListEdges[3*i].to   = del_Pi->t.b;
-      ListEdges[3*i].num  = i;  
-    }
-    else {      
-      ListEdges[3*i].from = del_Pi->t.b;
-      ListEdges[3*i].to   = del_Pi->t.a;
-      ListEdges[3*i].num  = i;
-    }
-    
-    /* arete  b c */      
-    if (del_Pi->t.b  > del_Pi->t.c ){   
-      ListEdges[3*i+1].from = del_Pi->t.b;
-      ListEdges[3*i+1].to   = del_Pi->t.c;
-      ListEdges[3*i+1].num  = i;        
-    }
-    else {      
-      ListEdges[3*i+1].from = del_Pi->t.c;
-      ListEdges[3*i+1].to   = del_Pi->t.b;
-      ListEdges[3*i+1].num  = i;
-    }
-    
-    /* arete   c a */
-    if (del_Pi->t.c  > del_Pi->t.a ){   
-      ListEdges[3*i+2].from = del_Pi->t.c;
-      ListEdges[3*i+2].to   = del_Pi->t.a;
-      ListEdges[3*i+2].num  = i;        
-    }
-    else {      
-      ListEdges[3*i+2].from = del_Pi->t.a;
-      ListEdges[3*i+2].to   = del_Pi->t.c;
-      ListEdges[3*i+2].num  = i;
-    }
-    
-  }
-  
-  qsort(ListEdges,3*NumDelaunay,sizeof(edge),compareEdge);
-
-  i=0;
-
-  do {
-
-    if ( (ListEdges[i].from == ListEdges[i+1].from) &&
-         (ListEdges[i].to   == ListEdges[i+1].to)){   /* create link */
-
-      del_Pi = *(Delaunay**)List_Pointer(ListDelaunay, ListEdges[i].num);
-      del_Pj = *(Delaunay**)List_Pointer(ListDelaunay, ListEdges[i+1].num);
-
-      if ( ( del_Pi->t.position != EXTERN ) &&
-           ( del_Pj->t.position != EXTERN ) &&
-          ( (del_Pj->t.info == TOLINK ) ||
-            (del_Pi->t.info == TOLINK ) ) ) {
-
-        if (del_Pi->v.voisin1 == NULL)
-          del_Pi->v.voisin1 = del_Pj;
-        else if (del_Pi->v.voisin2 == NULL)
-          del_Pi->v.voisin2 = del_Pj;
-        else if (del_Pi->v.voisin3 == NULL)
-          del_Pi->v.voisin3 = del_Pj;
-        else
-          Msg(GERROR, "Bad link for triangle"); 
-
-        if (del_Pj->v.voisin1 == NULL)
-          del_Pj->v.voisin1 = del_Pi;
-        else if (del_Pj->v.voisin2 == NULL)
-          del_Pj->v.voisin2 = del_Pi;
-        else if (del_Pj->v.voisin3 == NULL)
-          del_Pj->v.voisin3 = del_Pi;
-        else
-          Msg(GERROR, "Bad link for triangle"); 
-      }
-      i+=2;
-    }
-    else
-      i++;
-  } while ( i < 3*NumDelaunay );
-  
-  Free(ListEdges);
-  
-  for(i=0 ; i<NumDelaunay ;i++){
-    del_Pi = *(Delaunay**)List_Pointer(ListDelaunay, i);
-    
-    if(del_Pi->t.position != EXTERN){ 
-      pt.h = del_Pi->t.xc;
-      pt.v = del_Pi->t.yc;
-
-      if(!PtInTriangle(pt, del_Pi->t.a, del_Pi->t.b,
-                       del_Pi->t.c)){
-        if(!Find_Triangle(pt,FGMESH,A_TOUT_PRIX)){
-          if(LocalNewPoint == VORONOI_INSERT) {
-            del_Pi->t.position = ACCEPTED;
-          }
-          del_Pi->t.quality_value /= 1000.;
-        }
-      }
-    }
-  }
-
-  if((LocalNewPoint == VORONOI_INSERT)){
-    for(i=0 ; i<NumDelaunay ;i++){
-      del_Pi = *(Delaunay**)List_Pointer(ListDelaunay, i);
-      if( ((del_Pi->t.position == NONACCEPTED ) || (del_Pi->t.position == INTERN ))  &&
-         (del_Pi->t.info == TOLINK )){
-        if ((del_Pi->v.voisin1 == NULL) || 
-            (del_Pi->v.voisin2 == NULL) || 
-            (del_Pi->v.voisin3 == NULL)){
-          del_Pi->t.position = ACTIF;
-        }
-        else if ((del_Pi->v.voisin1->t.position == ACCEPTED) && 
-                 (del_Pi->v.voisin2->t.position == ACCEPTED) && 
-                 (del_Pi->v.voisin3->t.position == ACCEPTED)){
-          del_Pi->t.position = ACCEPTED;
-        }
-        else if ((del_Pi->v.voisin1->t.position == ACCEPTED) || 
-                 (del_Pi->v.voisin2->t.position == ACCEPTED) || 
-                 (del_Pi->v.voisin3->t.position == ACCEPTED)){
-          del_Pi->t.position = ACTIF;
-        }
-        else {
-          del_Pi->t.position = WAITING;
-        }
-      }
-    }
-  }
-
-  return(1);
-}
-
diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp
deleted file mode 100644
index a77a6639c3c2f291bdbb4cad051093d8e7fac118..0000000000000000000000000000000000000000
--- a/Mesh/2D_Mesh.cpp
+++ /dev/null
@@ -1,972 +0,0 @@
-// $Id: 2D_Mesh.cpp,v 1.32 2001-08-11 23:28:32 geuzaine Exp $
-
-/*
-   Maillage Delaunay d'une surface (Point insertion Technique)
-
-   3 types de maillages sont proposes
-   - Center of circum circle point insertion
-   - Voronoi Point Insertion (la meilleure en general)
-   - G Point insertion (intermediaire)
-
-   Le maillage surfacique passe par la determination d'un plan
-   dont on minimise l'ecart au sens des moindes carres par rap-
-   port a la surface :
-     plan ax + bx + cz = 1
-     tangeante = t = (a,b,c)
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "Create.h"
-#include "2D_Mesh.h"
-#include "Context.h"
-
-extern Mesh       *THEM;
-extern Context_T   CTX;
-extern int         CurrentNodeNumber;
-
-PointRecord   *gPointArray;
-DocRecord     *BGMESH, *FGMESH;
-int            LocalNewPoint, is_3D = 0;
-double         LC2D ;
-
-static Surface  *THESURFACE, *THESUPPORT;
-
-void ProjetteSurface (void *a, void *b){
-  Vertex *v;
-  v = *(Vertex **) a;
-
-  if (!v->ListCurves)
-    ProjectPointOnSurface (THESUPPORT, *v);
-}
-
-void Projette_Plan_Moyen (void *a, void *b){
-  Vertex *v = *(Vertex **) a;
-  Projette (v, THESURFACE->plan);
-}
-
-void Projette_Inverse (void *a, void *b){
-  Vertex *v = *(Vertex **) a;
-  Projette (v, THESURFACE->invplan);
-}
-
-void Plan_Moyen (void *data, void *dum){
-  int             i, j;
-  Vertex         *v;
-  Curve          *pC;
-  Surface       **pS, *s;
-  static List_T  *points;
-  static int      deb = 1;
-
-  pS = (Surface **) data;
-  s = *pS;
-
-  if (deb){
-    points = List_Create (10, 10, sizeof (Vertex *));
-    deb = 0;
-  }
-  else
-    List_Reset (points);
-
-  switch (s->Typ){
-  case MSH_SURF_PLAN:
-  case MSH_SURF_TRIC:
-  case MSH_SURF_REGL:
-  case MSH_SURF_NURBS:
-  case MSH_SURF_TRIMMED:
-    for (i = 0; i < List_Nbr (s->Generatrices); i++){
-      List_Read (s->Generatrices, i, &pC);
-      for (j = 0; j < List_Nbr (pC->Vertices); j++){
-        List_Read (pC->Vertices, j, &v);
-        List_Add (points, &v);
-        Tree_Insert (s->Vertices, List_Pointer (pC->Vertices, j));
-      }
-    }
-    break;
-  }
-
-  MeanPlane(points, s);
-}
-
-
-int Calcule_Contours (Surface * s){
-  int i, j, ori, ORI;
-  Vertex *v, *first, *last;
-  List_T *l, *linv;
-  Curve *c;
-  double n[] = {0., 0., 1.};
-
-  l = List_Create (10, 10, sizeof (Vertex *));
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &c);
-    if (!List_Nbr (l)){
-      List_Read (c->Vertices, 0, &first);
-    }
-    for (j = 1; j < List_Nbr (c->Vertices); j++){
-      List_Read (c->Vertices, j, &v);
-      List_Add (l, &v);
-      if (j == List_Nbr (c->Vertices) - 1){
-        last = v;
-      }
-    }
-    if (!compareVertex (&last, &first)){
-      ori = Oriente (l, n);
-
-      /* Le premier contour est oriente aire a droite
-         Les autes sont des trous orientes aire a gauche */
-      
-      if (!List_Nbr (s->Contours))
-        ORI = ori;
-
-      if ((!List_Nbr (s->Contours) && !ori) ||
-          (List_Nbr (s->Contours) && ori)){
-        linv = List_Create (10, 10, sizeof (Vertex *));
-        List_Invert (l, linv);
-        List_Delete (l);
-        l = linv;
-      }
-      List_Add (s->Contours, &l);
-      l = List_Create (10, 10, sizeof (Vertex *));
-    }
-  }
-  return ORI;
-}
-
-
-void Calcule_Z (void *data, void *dum){
-  Vertex **pv, *v;
-  double Z, U, V;
-
-  pv = (Vertex **) data;
-  v = *pv;
-  if (v->Frozen || v->Num < 0)
-    return;
-
-  XYtoUV (THESUPPORT, &v->Pos.X, &v->Pos.Y, &U, &V, &Z);
-  v->Pos.Z = Z;
-}
-
-void Calcule_Z_Plan (void *data, void *dum){
-  Vertex **pv, *v;
-  Vertex V;
-
-  V.Pos.X = THESURFACE->a;
-  V.Pos.Y = THESURFACE->b;
-  V.Pos.Z = THESURFACE->c;
-
-  Projette (&V, THESURFACE->plan);
-
-  pv = (Vertex **) data;
-  v = *pv;
-  if (V.Pos.Z != 0.0)
-    v->Pos.Z = (THESURFACE->d - V.Pos.X * v->Pos.X - V.Pos.Y * v->Pos.Y)
-      / V.Pos.Z;
-  else
-    v->Pos.Z = 0.0;
-}
-
-
-void Add_In_Mesh (void *a, void *b){
-  if (!Tree_Search (THEM->Vertices, a))
-    Tree_Add (THEM->Vertices, a);
-}
-
-void Freeze_Vertex (void *a, void *b){
-  Vertex *pv;
-  pv = *(Vertex **) a;
-  pv->Freeze.X = pv->Pos.X;
-  pv->Freeze.Y = pv->Pos.Y;
-  pv->Freeze.Z = pv->Pos.Z;
-  pv->Frozen = 1;
-}
-
-void deFreeze_Vertex (void *a, void *b){
-  Vertex *pv;
-  pv = *(Vertex **) a;
-  if (!pv->Frozen)
-    return;
-  pv->Pos.X = pv->Freeze.X;
-  pv->Pos.Y = pv->Freeze.Y;
-  pv->Pos.Z = pv->Freeze.Z;
-  pv->Frozen = 0;
-}
-
-void PutVertex_OnSurf (void *a, void *b){
-  Vertex *pv;
-  pv = *(Vertex **) a;
-  if (!pv->ListSurf)
-    pv->ListSurf = List_Create (1, 1, sizeof (Surface *));
-  List_Add (pv->ListSurf, &THESURFACE);
-}
-
-
-/* remplis la structure Delaunay d'un triangle cree */
-
-Delaunay * testconv (avlptr * root, int *conv, DocRecord * ptr){
-
-  avlptr *proot;
-  double qual;
-  Delaunay *pdel;
-
-  proot = root;
-
-  pdel = NULL;
-
-  *conv = 0;
-  if (*root == NULL)
-    *conv = 1;
-  else{
-    pdel = findrightest (*proot, ptr);
-    qual = pdel->t.quality_value;
-    switch (LocalNewPoint){
-    case CENTER_CIRCCIRC:
-    case BARYCENTER:
-      if (qual < CONV_VALUE)
-        *conv = 1;
-      break;
-    case VORONOI_INSERT:
-      if ((*root) == NULL)
-        *conv = 1;
-      break;
-    }
-  }
-  return (pdel);
-}
-
-
-int mesh_domain (ContourPeek * ListContours, int numcontours,
-                 maillage * mai, int *numpoints, int OnlyTheInitialMesh){
-  List_T *kill_L, *del_L ;
-  MPoint pt;
-  DocRecord docm, *doc;
-  int conv,i,j,nump,numact,numlink,numkil,numaloc,numtri,numtrr,numtrwait;
-  Delaunay *del, *del_P, *deladd, **listdel;
-  PointNumero aa, bb, cc, a, b, c;
-  DListPeek list, p, q;
-  avlptr *root, *proot, *root_w, *root_acc;
-  double volume_old, volume_new;
-
-  root = (avlptr *) Malloc (sizeof (avlptr));
-  root_w = (avlptr *) Malloc (sizeof (avlptr));
-  root_acc = (avlptr *) Malloc (sizeof (avlptr));
-
-  nump = 0;
-  for (i = 0; i < numcontours; i++)
-    nump += ListContours[i]->numpoints;
-
-  /* creation du maillage initial grace au puissant algorithme "divide and conquer" */
-
-  doc = &docm;
-  FGMESH = &docm;
-  doc->points = (PointRecord *) Malloc ((nump + 100) * sizeof(PointRecord));
-  gPointArray = doc->points;
-
-  numaloc = nump;
-  doc->delaunay = 0;
-  doc->numPoints = nump;
-  doc->numTriangles = 0;
-  mai->numtriangles = 0;
-  mai->numpoints = 0;
-
-  if (!numcontours){
-    Msg(GERROR, "No contour");
-    return 0;
-  }
-
-  numact = 0;
-  for (i = 0; i < numcontours; i++){
-    for (j = 0; j < ListContours[i]->numpoints; j++){
-      doc->points[numact + j].where.h =
-        ListContours[i]->oriented_points[j].where.h
-        + ListContours[i]->perturbations[j].h;
-      doc->points[numact + j].where.v =
-        ListContours[i]->oriented_points[j].where.v
-        + ListContours[i]->perturbations[j].v;
-      doc->points[numact + j].quality =
-        ListContours[i]->oriented_points[j].quality;
-      doc->points[numact + j].initial =
-        ListContours[i]->oriented_points[j].initial;
-      ListContours[i]->oriented_points[j].permu = numact + j;
-      doc->points[numact + j].permu = numact + j;
-      doc->points[numact + j].numcontour = ListContours[i]->numerocontour;
-      doc->points[numact + j].adjacent = NULL;
-    }
-    numact += ListContours[i]->numpoints;
-  }
-
-  DelaunayAndVoronoi (doc);
-  Conversion (doc);
-  remove_all_dlist (doc->numPoints, doc->points);
-
-  if (!is_3D || CTX.mesh.constrained_bgmesh){
-    BGMESH = doc;
-    InitBricks (BGMESH);
-  }
-  else
-    BGMESH = NULL;
-
-  /* elimination des triangles exterieurs + verification de l'existence
-     des edges (coherence) */
-
-  makepermut (nump);
-  del_L = List_Create(doc->numTriangles, 1000, sizeof(Delaunay*));
-
-  for(i= 0;i<doc->numTriangles;i++){
-    del_P = &doc->delaunay[i] ;
-    List_Add(del_L, &del_P);
-  }
-  
-  verify_edges (del_L, ListContours, numcontours, doc->numTriangles);
-  verify_inside (doc->delaunay, doc->numTriangles);
-
-  /* creation des liens ( triangles voisins ) */
-
-  CreateLinks (del_L, doc->numTriangles, ListContours, numcontours);
-
-  /* initialisation de l'arbre  */
-
-  (*root) = (*root_w) = (*root_acc) = NULL;
-
-  int onlyinit = OnlyTheInitialMesh;
-
-  if (doc->numTriangles == 1){
-    doc->delaunay[0].t.position = INTERN;
-    Msg(INFO, "Only one triangle in initial mesh (skipping refinement)");
-    onlyinit = 1;
-  }
-
-  for (i = 0; i < doc->numTriangles; i++){
-    if (doc->delaunay[i].t.position != EXTERN){
-      del = &doc->delaunay[i];
-      switch (LocalNewPoint){
-      case CENTER_CIRCCIRC:
-      case BARYCENTER:
-        Insert_Triangle (root, del);
-        break;
-      case VORONOI_INSERT:
-        switch (del->t.position){
-        case ACTIF:
-        case INTERN:
-          Insert_Triangle (root, del);
-          break;
-        case WAITING:
-          Insert_Triangle (root_w, del);
-          break;
-        case ACCEPTED:
-          Insert_Triangle (root_acc, del);
-          break;
-        }
-      }
-    }
-  }
-
-
-  /* maillage proprement dit :
-     1) Les triangles sont tries dans l'arbre suivant leur qualite
-     2) on ajoute un noeud au c.g du plus mauvais
-     3) on reconstruit le delaunay par Bowyer-Watson
-     4) on ajoute les triangles dans l'arbre et on recommence
-     jusque quand tous les triangles sont OK */
-
-  del = testconv (root, &conv, doc);
-
-  PushgPointArray (doc->points);
-
-  List_Reset(del_L);
-  kill_L = List_Create(1000, 1000, sizeof(Delaunay*));
-
-  if (onlyinit)
-    conv = 1;
-
-  while (conv != 1){
-
-    pt = Localize (del, doc);
-
-    numlink = 0;
-    numkil = 0;
-    list = NULL;
-
-    if (!PE_Del_Triangle (del, pt, &list, kill_L, del_L, &numlink, &numkil)){
-      Msg(WARNING, "Triangle non deleted");
-      Delete_Triangle (root, del);
-      Delete_Triangle (root_w, del);
-      del->t.quality_value /= 10.;
-      switch (LocalNewPoint){
-      case CENTER_CIRCCIRC:
-      case BARYCENTER:
-        Insert_Triangle (root, del);
-        break;
-      case VORONOI_INSERT:
-        del->t.position = ACCEPTED;
-        Insert_Triangle (root_acc, del);
-        break;
-      }
-      
-      numlink = numkil = 0;
-      if (list != NULL){
-        p = list;
-        do{
-          q = p;
-          p = Pred (p);
-          Free (q);
-        }
-        while (p != list);
-      }
-      list = NULL;
-      del = testconv (root, &conv, doc);
-      continue;
-    }
-
-    /* Test du Volume */
-    
-    i = 0;
-    p = list;
-    volume_new = 0.0;
-    do{
-      q = p->next;
-      bb = p->point_num;
-      cc = q->point_num;
-      volume_new += fabs ((doc->points[bb].where.h - pt.h) *
-                          (doc->points[cc].where.v - doc->points[bb].where.v) -
-                          (doc->points[cc].where.h - doc->points[bb].where.h) *
-                          (doc->points[bb].where.v - pt.v));
-      p = q;
-    } while (p != list);
-
-    volume_old = 0.0;
-    for (i = 0; i < numkil; i++){
-      del_P = *(Delaunay**)List_Pointer(kill_L, i);
-      aa = del_P->t.a;
-      bb = del_P->t.b;
-      cc = del_P->t.c;
-      volume_old += fabs ((doc->points[bb].where.h - doc->points[aa].where.h) *
-                          (doc->points[cc].where.v - doc->points[bb].where.v) -
-                          (doc->points[cc].where.h - doc->points[bb].where.h) *
-                          (doc->points[bb].where.v - doc->points[aa].where.v));
-    }
-    
-    if ((volume_old - volume_new) / (volume_old + volume_new) > 1.e-6){
-      Msg(WARNING, "Volume has changed (%g->%g)", volume_old, volume_new);
-      Delete_Triangle (root, del);
-      Delete_Triangle (root_w, del);
-      del->t.quality_value /= 10.;
-      switch (LocalNewPoint){
-      case CENTER_CIRCCIRC:
-      case BARYCENTER:
-        Insert_Triangle (root, del);
-        break;
-      case VORONOI_INSERT:
-        del->t.position = ACCEPTED;
-        Insert_Triangle (root_acc, del);
-        break;
-      }
-
-      numlink = numkil = 0;
-      if (list != NULL){
-        p = list;
-        do{
-          q = p;
-          p = Pred (p);
-          Free (q);
-        } while (p != list);
-      }
-      list = NULL;
-      del = testconv (root, &conv, doc);
-      continue;
-    }
-
-    /* Fin test du volume */
-
-    for (i = 0; i < numkil; i++){
-      del_P = *(Delaunay**)List_Pointer(kill_L, i);
-
-      switch (LocalNewPoint){
-      case CENTER_CIRCCIRC:
-      case BARYCENTER:
-        Delete_Triangle (root, del_P);
-        break;
-      case VORONOI_INSERT:
-        switch (del_P->t.position){
-        case WAITING:
-          Delete_Triangle (root_w, del_P);
-          break;
-        case ACTIF:
-        case INTERN:
-          Delete_Triangle (root, del_P);
-          break;
-        case ACCEPTED:
-          Delete_Triangle (root_acc, del_P);
-          break;
-        }
-      }
-      // MEMORY_LEAK -JF
-      //      Free(del_P);
-    }
-
-    *numpoints = doc->numPoints;
-    Insert_Point (pt, numpoints, &numaloc, doc, BGMESH, is_3D);
-    doc->points = gPointArray;
-    doc->numPoints = *numpoints;
-
-    i = 0;
-    p = list;
-
-    do{
-      q = p->next;
-      
-      aa = doc->numPoints - 1;
-      bb = p->point_num;
-      cc = q->point_num;
-      
-      deladd = (Delaunay *) Malloc (sizeof (Delaunay));
-      
-      filldel (deladd, aa, bb, cc, doc->points, BGMESH);
-      
-      List_Put(del_L, numlink+i, &deladd);
-      i++;
-      p = q;
-      
-    } while (p != list);
-
-    p = list;
-    
-    do{
-      q = p;
-      p = Pred (p);
-      Free (q);
-    } while (p != list);
-
-    CreateLinks (del_L, i + numlink, ListContours, numcontours);
-
-    for (j = 0; j < i; j++){
-      del_P = *(Delaunay**)List_Pointer(del_L, j+numlink) ;
-      switch (LocalNewPoint) {
-      case CENTER_CIRCCIRC:
-      case BARYCENTER:
-        Insert_Triangle (root, del_P);
-        break;
-      case VORONOI_INSERT:
-        switch (del_P->t.position){
-        case ACTIF:
-        case INTERN:
-          Insert_Triangle (root, del_P);
-          break;
-        case WAITING:
-          Insert_Triangle (root_w, del_P);
-          break;
-        case ACCEPTED:
-          Insert_Triangle (root_acc, del_P);
-          break;
-        }
-      }
-    }
-    
-    del = testconv (root, &conv, doc);
-    
-  }
-
-  List_Delete(kill_L);
-
-  numtri = 0;
-  numtrwait = 0;
-
-  if (*root_w != NULL){
-    proot = root_w;
-    avltree_count (*proot, &numtrwait);
-  }
-
-  numtrr = 0;
-
-  proot = root;
-  switch (LocalNewPoint){
-  case VORONOI_INSERT:
-    proot = root_acc;
-    break;
-  }
-  avltree_count (*proot, &numtrr);
-
-  alloue_Mai_Del (mai, numtrr + numtrwait + 1, 100);
-
-  listdel = mai->listdel;
-  numtri = 0;
-  avltree_print(*proot,listdel,&numtri);
-  if(numtrwait != 0){
-    numtri = 0;
-    avltree_print(*root_w,(Delaunay**)del_L->array,&numtri);
-    for(i=0;i<numtrwait;i++){
-      mai->listdel[i+numtrr] = *(Delaunay**)List_Pointer(del_L, i);
-    }
-    avltree_remove(root_w);
-  }
-  avltree_remove(root);
-  
-  List_Delete(del_L);
-
-  mai->numtriangles = numtrr + numtrwait;
-  mai->numpoints = doc->numPoints;
-  mai->points = doc->points;
-
-  /* Tous Les Triangles doivent etre orientes */
-
-  if (!mai->numtriangles){
-    Msg(GERROR, "No triangles in surface mesh");
-    return 0;
-    //mai->numtriangles = 1;
-  }
-
-  for (i = 0; i < mai->numtriangles; i++){
-    a = mai->listdel[i]->t.a;
-    b = mai->listdel[i]->t.b;
-    c = mai->listdel[i]->t.c;
-
-    mai->listdel[i]->v.voisin1 = NULL;
-    if (((doc->points[b].where.h - doc->points[a].where.h) *
-         (doc->points[c].where.v - doc->points[b].where.v) -
-         (doc->points[c].where.h - doc->points[b].where.h) *
-         (doc->points[b].where.v - doc->points[a].where.v)) > 0.0){
-      mai->listdel[i]->t.a = b;
-      mai->listdel[i]->t.b = a;
-    }
-  }
-  // MEMORY LEAK (JF)
-  //  Free(doc->delaunay);
-  //  doc->delaunay = 0;
-  return 1;
-}
-
-void Maillage_Automatique_VieuxCode (Surface * pS, Mesh * m, int ori){
-  ContourRecord *cp, **liste;
-  List_T *c;
-  Vertex *v, V[3], *ver[3], **pp[3];
-  maillage M;
-  int err, i, j, k, N, a, b, d;
-  Simplex *s;
-  double Xmin, Xmax, Ymin, Ymax;
-
-
-  if (m->BGM.Typ == WITHPOINTS){
-    is_3D = 0;
-  }
-  else{
-    is_3D = 1;
-  }
-
-  liste = (ContourPeek *) Malloc (List_Nbr (pS->Contours) * sizeof (ContourPeek));
-
-  k = 0;
-
-  for (i = 0; i < List_Nbr (pS->Contours); i++){
-    cp = (ContourRecord *) Malloc (sizeof (ContourRecord));
-    List_Read (pS->Contours, i, &c);
-    cp->oriented_points = (PointRecord *) Malloc (List_Nbr (c) * sizeof (PointRecord));
-    cp->perturbations = (MPoint *) Malloc (List_Nbr (c) * sizeof (MPoint));
-    cp->numerocontour = i;
-
-    for (j = 0; j < List_Nbr (c); j++){
-      List_Read (c, j, &v);
-      if(!j){
-        Xmin = Xmax = v->Pos.X ;
-        Ymin = Ymax = v->Pos.Y ;
-      }
-      else{
-        Xmin = DMIN(Xmin, v->Pos.X) ;
-        Xmax = DMAX(Xmax, v->Pos.X) ;
-        Ymin = DMIN(Ymin, v->Pos.Y) ;
-        Ymax = DMAX(Ymax, v->Pos.Y) ;
-      }
-    }
-
-    LC2D = sqrt(DSQR(Xmax-Xmin)+DSQR(Ymax-Ymin));
-
-    for (j = 0; j < List_Nbr (c); j++){
-      List_Read (c, j, &v);
-      cp->oriented_points[j].where.h = v->Pos.X;
-      cp->oriented_points[j].where.v = v->Pos.Y;
-
-      // On pourrait imaginer diviser les perturbations par un facteur
-      // dependant de v->lc, mais ca n'a pas l'air d'ameliorer le bignou
-
-      cp->perturbations[j].h = CTX.mesh.rand_factor * LC2D * 
-	(double)rand()/(double)RAND_MAX;
-      cp->perturbations[j].v = CTX.mesh.rand_factor * LC2D *
-	(double)rand()/(double)RAND_MAX;
-
-      cp->oriented_points[j].numcontour = i;
-      cp->oriented_points[j].quality = v->lc;
-      cp->oriented_points[j].permu = k++;
-      cp->oriented_points[j].initial = v->Num;
-    }
-    cp->numpoints = List_Nbr (c);
-    liste[i] = cp;
-  }
-
-  if (pS->Method)
-    mesh_domain (liste, List_Nbr (pS->Contours), &M, &N, 0);
-
-  for (i = 0; i < M.numpoints; i++){
-    if (gPointArray[i].initial < 0){
-      gPointArray[i].initial = ++CurrentNodeNumber;
-      v = Create_Vertex (gPointArray[i].initial, gPointArray[i].where.h,
-                         gPointArray[i].where.v, 0.0, gPointArray[i].quality, 0.0);
-      if (!Tree_Search (pS->Vertices, &v))
-        Tree_Add (pS->Vertices, &v);
-    }
-  }
-  for (i = 0; i < 3; i++)
-    ver[i] = &V[i];
-
-  for (i = 0; i < M.numtriangles; i++){
-
-    a = M.listdel[i]->t.a;
-    b = M.listdel[i]->t.b;
-    d = M.listdel[i]->t.c;
-    
-    ver[0]->Num = gPointArray[a].initial;
-    ver[1]->Num = gPointArray[b].initial;
-    ver[2]->Num = gPointArray[d].initial;
-    err = 0;
-    for (j = 0; j < 3; j++){
-      if ((pp[j] = (Vertex **) Tree_PQuery (pS->Vertices, &ver[j]))){
-      }
-      else{
-        err = 1;
-        Msg(GERROR, "Unknown vertex %d", ver[j]->Num);
-      }
-    }
-    if (ori && !err)
-      s = Create_Simplex (*pp[0], *pp[1], *pp[2], NULL);
-    else if (!err)
-      s = Create_Simplex (*pp[0], *pp[2], *pp[1], NULL);
-    if (!err){
-      s->iEnt = pS->Num;
-      Tree_Insert (pS->Simplexes, &s);
-    }
-    // MEMORY LEAK (JF)
-    //    Free(M.listdel[i]);
-  }
-  // ANOTHER ONE (JF)
-  Free (M.listdel);
-  Free (gPointArray);
-}
-
-
-void Make_Mesh_With_Points (DocRecord * ptr, PointRecord * Liste, int Numpoints){
-  ptr->numTriangles = 0;
-  ptr->points = Liste;
-  ptr->numPoints = Numpoints;
-  ptr->delaunay = 0;
-  DelaunayAndVoronoi (ptr);
-  Conversion (ptr);
-  remove_all_dlist (ptr->numPoints, ptr->points);
-}
-
-void filldel (Delaunay * deladd, int aa, int bb, int cc,
-              PointRecord * points, DocRecord * mesh){
-
-  double qual, newqual, L;
-  MPoint pt2, pt4;
-  Vertex *v, *dum;
-
-  deladd->t.a = aa;
-  deladd->t.b = bb;
-  deladd->t.c = cc;
-  deladd->t.info = TOLINK;
-  deladd->t.info2 = 0;
-  deladd->v.voisin1 = NULL;
-  deladd->v.voisin2 = NULL;
-  deladd->v.voisin3 = NULL;
-
-  CircumCircle (points[aa].where.h,
-                points[aa].where.v,
-                points[bb].where.h,
-                points[bb].where.v,
-                points[cc].where.h,
-                points[cc].where.v,
-                &deladd->t.xc,
-                &deladd->t.yc);
-
-  pt2.h = deladd->t.xc;
-  pt2.v = deladd->t.yc;
-  if (!is_3D){
-    if (mesh){
-      newqual = find_quality (pt2, mesh);
-    }
-    else{
-      newqual = (points[aa].quality + points[bb].quality + points[cc].quality) / 3.;
-    }
-    v = Create_Vertex (-1, pt2.h, pt2.v, 0.0, 0.0, 0.0);
-    Calcule_Z_Plan (&v, &dum);
-    Projette_Inverse (&v, &dum);
-    Free_Vertex (&v,0);
-  }
-  else{
-    v = Create_Vertex (-1, pt2.h, pt2.v, 0.0, 0.0, 0.0);
-    Calcule_Z_Plan (&v, &dum);
-    Projette_Inverse (&v, &dum);
-    qual = Lc_XYZ (v->Pos.X, v->Pos.Y, v->Pos.Z, THEM);
-    if(CTX.mesh.constrained_bgmesh){
-      if (mesh){
-	newqual = MIN(qual,find_quality (pt2, mesh));
-      }
-      else{
-	newqual = MIN(qual, (points[aa].quality + points[bb].quality + points[cc].quality) / 3.);
-      }
-    }
-    else
-      newqual = qual;
-    Free_Vertex (&v,0);
-  }
-
-  switch (LocalNewPoint){
-  case CENTER_CIRCCIRC:
-  case BARYCENTER:
-    deladd->t.quality_value =
-      sqrt ((deladd->t.xc - points[cc].where.h) * (deladd->t.xc - points[cc].where.h) +
-            (deladd->t.yc - points[cc].where.v) * (deladd->t.yc - points[cc].where.v)
-            ) / newqual;
-    deladd->t.position = INTERN;
-    break;
-    
-  case VORONOI_INSERT:
-    pt4.h = points[bb].where.h;
-    pt4.v = points[bb].where.v;
-    //pt3.h = .5 * (points[bb].where.h + points[cc].where.h);
-    //pt3.v = .5 * (points[bb].where.v + points[cc].where.v);
-    deladd->t.quality_value = myhypot (pt2.h - pt4.h, pt2.v - pt4.v);
-    L = newqual / deladd->t.quality_value;
-    if (L > 1.5)
-      deladd->t.position = ACCEPTED;
-    else
-      deladd->t.position = NONACCEPTED;
-    break;
-  }
-}
-
-void ActionEndTheCurve (void *a, void *b){
-  Curve *c = *(Curve **) a;
-  End_Curve (c);
-}
-
-void Maillage_Surface (void *data, void *dum){
-  Surface  **pS, *s;
-  Tree_T    *tnxe;
-  int        ori, nbqua = 0;
-
-  pS = (Surface **) data;
-  s = *pS;
-
-  if (!s->Support)
-    return;
-
-  if(s->Dirty){
-    Msg(INFO, "Not meshing dirty Surface %d", s->Num);
-    return;
-  }
-
-  THESUPPORT = s->Support;
-  THESURFACE = s;
-
-  LocalNewPoint = CTX.mesh.point_insertion;
-
-  if (Tree_Nbr (s->Simplexes))
-    Tree_Delete (s->Simplexes);
-  s->Simplexes = Tree_Create (sizeof (Simplex *), compareQuality);
-  if (Tree_Nbr (s->Vertices))
-    Tree_Delete (s->Vertices);
-  s->Vertices = Tree_Create (sizeof (Vertex *), compareVertex);
-
-  Msg(STATUS3, "Meshing Surface %d", s->Num);
-
-  if (MeshTransfiniteSurface (s) ||
-      MeshEllipticSurface (s) ||
-      MeshCylindricalSurface (s) ||
-      MeshParametricSurface (s) ||
-      Extrude_Mesh (s)){
-    Tree_Action (THEM->Points, PutVertex_OnSurf);
-    Tree_Action (s->Vertices, PutVertex_OnSurf);
-    Tree_Action (s->Vertices, Add_In_Mesh);
-    if (CTX.mesh.degree == 2)
-      Degre2 (THEM->Vertices, s->Vertices, s->Simplexes, NULL, s);
-    THEM->Statistics[5] += Tree_Nbr(THESURFACE->Vertices);
-    THEM->Statistics[7] += Tree_Nbr(THESURFACE->Simplexes);
-
-    /* void TRIE_MON_GARS(void *a, void *b);
-       Tree_Action (THES->Simplexes, TRIE_MON_GARS);
-       Link_Simplexes(NULL, THES->Simplexes);
-       void  constraint_the_edge (int ,int ,int);
-       constraint_the_edge (6, 45, 85);
-    */
-    return;
-  }
-
-  int TypSurface = s->Typ;
-  s->Typ = MSH_SURF_PLAN;
-  Plan_Moyen (pS, dum);
-
-  Tree_Action (THEM->Points, Freeze_Vertex);
-  Tree_Action (s->Vertices, Freeze_Vertex);
-  Tree_Action (THEM->Points, Projette_Plan_Moyen);
-  Tree_Action (s->Vertices, Projette_Plan_Moyen);
-  Tree_Action (THEM->Curves, ActionEndTheCurve);
-
-  End_Surface (s);
-
-  ori = Calcule_Contours (s);
-
-  if (CTX.mesh.algo == DELAUNAY_OLDALGO)
-    Maillage_Automatique_VieuxCode (s, THEM, ori);
-  else
-    AlgorithmeMaillage2DAnisotropeModeJF (s);
-
-  if(CTX.mesh.nb_smoothing){
-    Msg(STATUS3, "Mesh smoothing");
-    tnxe = Tree_Create (sizeof (NXE), compareNXE);
-    create_NXE (s->Vertices, s->Simplexes, tnxe);
-    for (int i = 0; i < CTX.mesh.nb_smoothing; i++)
-      Tree_Action (tnxe, ActionLiss);
-    // MEMORY LEAK (JF)
-    delete_NXE (tnxe);
-  }
-
-
-  if (s->Recombine)
-    nbqua = Recombine (s->Vertices, s->Simplexes, s->RecombineAngle);
-
-  s->Typ = TypSurface;
-
-  if (s->Typ != MSH_SURF_PLAN){
-    if (s->Extrude)
-      s->Extrude->Rotate (s->plan);
-    Tree_Action (s->Vertices, Calcule_Z);
-    if (s->Extrude)
-      s->Extrude->Rotate (s->invplan);
-  }
-  else
-    Tree_Action (s->Vertices, Calcule_Z_Plan);
-
-  Tree_Action (s->Vertices, Projette_Inverse);
-  Tree_Action (THEM->Points, Projette_Inverse);
-
-  Tree_Action (THEM->Points, deFreeze_Vertex);
-  Tree_Action (s->Vertices, deFreeze_Vertex);
-
-  Tree_Action (THEM->Points, PutVertex_OnSurf);
-  Tree_Action (s->Vertices, PutVertex_OnSurf);
-  Tree_Action (s->Vertices, Add_In_Mesh);
-
-  Tree_Action (THEM->Curves, ActionEndTheCurve);
-  End_Surface (s->Support);
-  End_Surface (s);
-
-  if (CTX.mesh.degree == 2)
-    Degre2 (THEM->Vertices, THEM->VertexEdges, s->Simplexes, NULL, THESUPPORT);
-
-  THEM->Statistics[5] += Tree_Nbr(THESURFACE->Vertices);
-  THEM->Statistics[7] += Tree_Nbr(THESURFACE->Simplexes); // tri+qua
-  THEM->Statistics[8] += nbqua;
-
-}
diff --git a/Mesh/2D_Mesh.h b/Mesh/2D_Mesh.h
deleted file mode 100644
index 2657828585337be43e6d46ccdb855118af6dc3ba..0000000000000000000000000000000000000000
--- a/Mesh/2D_Mesh.h
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef _2D_MESH_H_
-#define _2D_MESH_H_
-
-typedef struct avl{
-  void *treedata;
-  int balance;
-  struct avl *left;
-  struct avl *right;
-}avlstruct;
-
-typedef avlstruct *avlptr;
-
-int  remove_tree (avlstruct ** root);
-int  insert_avltree (avlstruct ** root, void *item, 
-                     int (*fcmp)(void *a, void *b));
-int  delete_avltree (avlstruct ** root, void *item, 
-                     int (*fcmp)(void *a, void *b));
-int  avltree_remove (avlstruct **root);
-void avltree_count (avlptr root, int *numtri);
-void avltree_print (avlptr root, Delaunay **listdel, int *numtri);
-int  avltree_insert (avlstruct **root, void *item, 
-                     int (*fcmp)(void *a, void *b));
-int  avltree_delete (avlstruct **root, void *item, 
-                     int (*fcmp)(void *a, void *b));
-void findtree(avlptr root, double *qualm, 
-              Delaunay **delf, DocRecord *MESH);
-Delaunay *findrightest(avlptr root, DocRecord *MESH);
-
-
-PointNumero Successor(PointNumero a,PointNumero b);
-
-Delaunay * Find_Triangle (MPoint pt, DocRecord *MESH, int typ);
-int Insert_Triangle (avlstruct **root, Delaunay * del);
-int Delete_Triangle ( avlstruct **root, Delaunay * del );
-int Insert_Point (MPoint pt, int *numpoints, int *numalloc, 
-                  DocRecord *doc, DocRecord *BGM, int is3d);
-MPoint Localize (Delaunay * del , DocRecord *MESH);
-void alloue_Mai_Pts(maillage *mai , int Nballoc , int incrAlloc);
-void alloue_Mai_Del(maillage *mai , int Nballoc , int incrAlloc);
-
-void InitBricks (DocRecord *MESH);
-int PtInTriangle(MPoint p , PointNumero a , PointNumero b , PointNumero c);
-int DelaunayAndVoronoi(DocPeek doc);
-
-int Conversion(DocPeek doc );
-int CreateLinks(List_T * ListDelaunay , int NumDelaunay, 
-                ContourRecord **ListContours , int Nc);
-
-void makepermut (int numpoints);
-void verify_edges (List_T *ListDelaunay, ContourRecord **ListContour, 
-                   int NumContours , int NumDelaunay);
-void verify_inside (Delaunay * ListDelaunay ,  int NumDelaunay );
-
-void PushgPointArray(PointRecord *ptr);
-void remove_all_dlist(int n, PointRecord *pPointArray);
-
-int PE_Del_Triangle (Delaunay *del , MPoint pt, DListPeek *ListEdges ,
-                     List_T *listkill, List_T *listDelforlink,
-                     int *numlink, int *numdel);
-
-void filldel (Delaunay * deladd, int aa, int bb, int cc,
-              PointRecord * points, DocRecord * mesh);
-
-int CircumCircle(double x1,double y1,double x2,double y2,double x3,double y3,
-                 double *xc,double *yc);
-double find_quality (MPoint center, DocRecord * BGMESH);
-void create_NXE (Tree_T * TreeAllNod, Tree_T * TreeAllElg,
-                 Tree_T * TreeAllNXE);
-void delete_NXE (Tree_T * TreeAllNXE);
-
-int Is_left_of(PointNumero x,PointNumero y,PointNumero check);
-int Is_right_of(PointNumero x,PointNumero y,PointNumero check);
-int DListInsert(DListRecord **dlist, MPoint center, PointNumero newPoint);
-int DListDelete(DListPeek *dlist,PointNumero oldPoint);
-
-#endif
diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp
deleted file mode 100644
index 83982b2fee6724d748faa1e80fd3ae6dfcb10c7d..0000000000000000000000000000000000000000
--- a/Mesh/2D_Mesh_Aniso.cpp
+++ /dev/null
@@ -1,1137 +0,0 @@
-// $Id: 2D_Mesh_Aniso.cpp,v 1.19 2001-08-13 09:38:14 geuzaine Exp $
-
-/*
-   Jean-Francois Remacle
-
-   Maillage Delaunay 2-D Anisotrope
-   Tres joli (a mon avis)
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Interpolation.h"
-#include "Create.h"
-#include "Context.h"
-
-extern Context_T CTX ;
-extern double LC2D ;
-
-void draw_polygon_2d (double r, double g, double b, int n, 
-                      double *x, double *y, double *z);
-
-MeshParameters:: MeshParameters ():
-  NbSmoothing (3),
-  DelaunayAlgorithm (DELAUNAY_NEWALGO),
-  DelaunayInsertionMethod (INSERTION_CENTROID),
-  DelaunayQuality (QUALITY_EDGES_BASED),
-  DelaunayKernel (DELAUNAY_KERANISO),
-  InteractiveDelaunay (false)
-{
-}
-
-extern Simplex MyNewBoundary;
-extern Mesh *THEM;
-extern int CurrentNodeNumber;
-extern double MAXIMUM_LC_FOR_SURFACE;
-extern int Alerte_Point_Scabreux;
-extern PointRecord *gPointArray;
-extern Surface *PARAMETRIC;
-
-static Tree_T *Tsd, *Sim_Sur_Le_Bord ;
-static List_T *Simplexes_Destroyed, *Simplexes_New, *Suppress;
-static Simplex *THES;
-static Vertex *THEV;
-static Surface *SURF;
-static Tree_T *FacesTree;
-static int ZONEELIMINEE, Methode = 0;
-static double volume;
-static List_T *coquille;
-static Edge *THEEDGE;
-
-double Interpole_lcTriangle (Simplex * s, Vertex * vv){
-  double Xp, Yp, X[3], Y[3], det, u, v, q1, q2, q3;
-
-  Xp = vv->Pos.X;
-  Yp = vv->Pos.Y;
-
-  X[0] = s->V[0]->Pos.X;
-  X[1] = s->V[1]->Pos.X;
-  X[2] = s->V[2]->Pos.X;
-
-  Y[0] = s->V[0]->Pos.Y;
-  Y[1] = s->V[1]->Pos.Y;
-  Y[2] = s->V[2]->Pos.Y;
-
-  q1 = s->V[0]->lc;
-  q2 = s->V[1]->lc;
-  q3 = s->V[2]->lc;
-
-  det = (X[2] - X[0]) * (Y[1] - Y[0]) - (Y[2] - Y[0]) * (X[1] - X[0]);
-
-  if (det != 0.0){
-    u = ((Xp - X[0]) * (Y[1] - Y[0]) - (Yp - Y[0]) * (X[1] - X[0])) / det;
-    v = ((X[2] - X[0]) * (Yp - Y[0]) - (Y[2] - Y[0]) * (Xp - X[0])) / det;
-  }
-  else{
-    u = v = 0.0;
-  }
-  return (q1 * (1. - u - v) + q2 * v + q3 * u);
-}
-
-
-/* Au sens Riemannien, trouver le centre de l'ellipse
-   triangle de sommets (x1,x2,x3)
-
-   T                   T
-   (x-x1)  M (x-x1) = (x-x2)  M (x-x2)
-   T                   T
-   (x-x1)  M (x-x1) = (x-x3)  M (x-x3)
- */
-
-void matXmat (int n, double mat1[3][3], double mat2[3][3], double Res[3][3]){
-  for (int i = 0; i < n; i++){
-    for (int j = 0; j < n; j++){
-      Res[i][j] = 0.0;
-      for (int k = 0; k < n; k++)
-        Res[i][j] += mat1[i][k] * mat2[k][j];
-    }
-  }
-}
-
-void TmatXmat (int n, double mat1[3][3], double mat2[3][3], double Res[3][3]){
-  for (int i = 0; i < n; i++){
-    for (int j = 0; j < n; j++){
-      Res[i][j] = 0.0;
-      for (int k = 0; k < n; k++)
-        Res[i][j] += mat1[k][i] * mat2[k][j];
-    }
-  }
-}
-
-Simplex * Create_Simplex_For2dmesh (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){
-  Simplex *s;
-  double p12, p23, p13;
-
-  s = Create_Simplex (v1, v2, v3, v4);
-
-  THEM->Metric->setSimplexQuality (s, PARAMETRIC);
-
-  if (PARAMETRIC){
-    if ((!v2->ListCurves && !v3->ListCurves && !v3->ListCurves)){
-      prosca (v1->us, v2->us, &p12);
-      p12 = fabs (p12);
-      prosca (v1->us, v3->us, &p13);
-      p13 = fabs (p13);
-      prosca (v2->us, v3->us, &p23);
-      p23 = fabs (p23);
-      if (s->Quality < CONV_VALUE && 
-          (p12 < THEM->Metric->min_cos || p13 < THEM->Metric->min_cos ||
-           p23 < THEM->Metric->min_cos))
-        s->Quality = 1.0;
-    }
-  }
-  return s;
-}
-
-/*En l'honneur de ma femme Stephanie... */
-
-void VSIM_2D (void *a, void *b){
-  Simplex *S;
-
-  S = *(Simplex **) a;
-  if (S->V[2])
-    volume += fabs (S->Volume_Simplexe2D ());
-}
-
-void Box_2_Triangles (List_T * P, Surface * s){
-#define FACT 1.1
-#define LOIN 0.2
-
-  int i, j;
-  static int pts[4][2] = { {0, 0},
-                           {1, 0},
-                           {1, 1},
-                           {0, 1} };
-  static int tri[2][3] =  { {1, 4, 2},
-                            {2, 4, 3} };
-  double Xm, Ym, XM, YM, Xc, Yc;
-  Simplex *S, *ps;
-  Vertex *V, *v, *pv;
-  List_T *smp;
-
-  smp = List_Create (2, 1, sizeof (Simplex *));
-
-  V = (Vertex *) Malloc (4 * sizeof (Vertex));
-
-  for (i = 0; i < List_Nbr (P); i++){
-    List_Read (P, i, &v);
-    if (!i){
-      Xm = XM = v->Pos.X;
-      Ym = YM = v->Pos.Y;
-    }
-    else{
-      Xm = DMIN (Xm, v->Pos.X);
-      XM = DMAX (XM, v->Pos.X);
-      Ym = DMIN (Ym, v->Pos.Y);
-      YM = DMAX (YM, v->Pos.Y);
-    }
-  }
-  if (Xm == XM)
-    XM = Xm + 1.;
-  if (Ym == YM)
-    YM = Ym + 1.;
-
-  Xc = XM - Xm;
-  Yc = YM - Ym;
-
-  /* initialisation de la grille */
-
-  s->Grid.init = 0;
-  s->Grid.min.X = Xm - LOIN * FACT * Xc;
-  s->Grid.min.Y = Ym - LOIN * FACT * Yc;
-  s->Grid.max.X = XM + LOIN * FACT * Xc;
-  s->Grid.max.Y = YM + LOIN * FACT * Yc;
-
-  s->Grid.Nx = s->Grid.Ny = 20;
-
-  /* Longueur Caracteristique */
-
-  LC2D = sqrt (Xc * Xc + Yc * Yc);
-
-  for (i = 0; i < 4; i++){
-    if (pts[i][0])
-      V[i].Freeze.X = V[i].Pos.X = Xm - LOIN * Xc;
-    else
-      V[i].Freeze.X = V[i].Pos.X = XM + LOIN * Xc;
-    if (pts[i][1])
-      V[i].Freeze.Y = V[i].Pos.Y = Ym - LOIN * Yc;
-    else
-      V[i].Freeze.Y = V[i].Pos.Y = YM + LOIN * Yc;
-    
-    V[i].Freeze.Z = V[i].Pos.Z = 0.0;
-    
-    V[i].Num = -(++CurrentNodeNumber);
-    V[i].ListSurf = NULL;
-    pv = &V[i];
-    pv->lc = 1.0;
-    pv->Mov = NULL;
-    Tree_Replace (s->Vertices, &pv);
-  }
-  
-  /* 2 Triangles forment le maillage de la boite */
-
-  for (i = 0; i < 2; i++){
-    S = Create_Simplex_For2dmesh (&V[tri[i][0] - 1], &V[tri[i][1] - 1], 
-                                  &V[tri[i][2] - 1], NULL);
-    List_Add (smp, &S);
-    S->iEnt = s->Num;
-  }
-  
-  Link_Simplexes (smp, NULL);
-  for (i = 0; i < List_Nbr (smp); i++){
-    List_Read (smp, i, &ps);
-    for (j = 0; j < 3; j++)
-      if (ps->S[j] == NULL)
-        ps->S[j] = &MyNewBoundary;
-    Tree_Replace (s->Simplexes, &ps);
-  }
-  // MEMORY LEAK (JF)
-  List_Delete(smp);
-
-}
-
-
-int Intersect_Edges_2d (Edge * a, Edge * b){
-  double mat[2][2];
-  double rhs[2], x[2];
-  mat[0][0] = (a->V[1]->Pos.X - a->V[0]->Pos.X);
-  mat[0][1] = -(b->V[1]->Pos.X - b->V[0]->Pos.X);
-  mat[1][0] = (a->V[1]->Pos.Y - a->V[0]->Pos.Y);
-  mat[1][1] = -(b->V[1]->Pos.Y - b->V[0]->Pos.Y);
-  rhs[0] = b->V[0]->Pos.X - a->V[0]->Pos.X;
-  rhs[1] = b->V[0]->Pos.Y - a->V[0]->Pos.Y;
-  if (!sys2x2 (mat, rhs, x))
-    return 0;
-  if (x[0] > 0.0 && x[0] < 1.0 && x[1] > 0.0 && x[1] < 1.0)
-    return 1;
-  return 0;
-}
-
-int compareedgeptr (const void *a, const void *b){
-  int i1, i2, j1, j2;
-  Edge *q, *w;
-
-  q = *(Edge **) a;
-  w = *(Edge **) b;
-  i1 = IMAX (q->V[0]->Num, q->V[1]->Num);
-  i2 = IMAX (w->V[0]->Num, w->V[1]->Num);
-  j1 = IMIN (q->V[0]->Num, q->V[1]->Num);
-  j2 = IMIN (w->V[0]->Num, w->V[1]->Num);
-
-  if (i1 < i2)
-    return (1);
-  if (i1 > i2)
-    return (-1);
-  if (j1 < j2)
-    return (1);
-  if (j1 > j2)
-    return (-1);
-  return 0;
-}
-
-void putaindecoquille_2D (void *a, void *b){
-  Edge *e = (Edge *) a;
-  if (!compareVertex (&e->V[0], &THEEDGE->V[0]) ||
-      !compareVertex (&e->V[0], &THEEDGE->V[1]) ||
-      !compareVertex (&e->V[1], &THEEDGE->V[0]) ||
-      !compareVertex (&e->V[1], &THEEDGE->V[1])){
-    return;
-  }
-  if (Intersect_Edges_2d (e, THEEDGE))
-    List_Add (coquille, &e);
-}
-
-void Recover_Edge (Surface * s, Edge * e, EdgesContainer & Edges){
-  THEEDGE = e;
-  int i;
-  Edge *me, E;
-  Vertex *v[2];
-
-  coquille = List_Create (3, 3, sizeof (Edge *));
-  /*On cherche la coquille */
-  Tree_Action (Edges.AllEdges, putaindecoquille_2D);
-  Msg(INFO, "Edge %d->%d, %d intersections", 
-      e->V[0]->Num, e->V[1]->Num, List_Nbr (coquille));
-
-  if(List_Nbr(coquille)==1){
-    Msg(WARNING, "Unable to swap edge");
-    List_Delete (coquille);
-    return;
-  }
-  
-  /*on swappe au hasard jusqu'a ce qu l'arete soit recuperee */
-  while (List_Nbr(coquille)){
-
-    i = (int) (List_Nbr(coquille)*rand()/(RAND_MAX+1.0));
-    //i = rand () % List_Nbr (coquille);
-    List_Read (coquille, i, &me);
-    v[0] = me->V[0];
-    v[1] = me->V[1];
-    List_Suppress (coquille, &me, compareedgeptr);
-    Edges.SwapEdge (v);
-    if (Edges.Search (e->V[0], e->V[1]))
-      break;
-    E.V[0] = v[0];
-    E.V[1] = v[1];
-    me = (Edge *) Tree_PQuery (Edges.AllEdges, &E);
-    putaindecoquille_2D (me, NULL);
-  }
-
-  List_Delete (coquille);
-
-  Msg(INFO, "Edge recovered");
-  /*On swappe */
-}
-
-void constraint_the_edge (int isurf, int iv1, int iv2){
-  Vertex *v1 = FindVertex (iv1, THEM);
-  Vertex *v2 = FindVertex (iv2, THEM);
-  Surface *s = FindSurface (isurf, THEM);
-  Edge e;
-
-  if (!v1 || !v2)
-    return;
-  EdgesContainer EdgesOnSurface (s->Simplexes, false);
-  e.V[0] = v1;
-  e.V[1] = v2;
-  if (!EdgesOnSurface.Search (v1, v2)){
-    Recover_Edge (s, &e, EdgesOnSurface);
-  }
-}
-
-void missing_edges_2d (Surface * s){
-  int i, j;
-  Curve *c;
-  Vertex *v1, *v2;
-  Edge e;
-
-  EdgesContainer EdgesOnSurface (s->Simplexes, false);
-
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &c);
-    for (j = 1; j < List_Nbr (c->Vertices); j++){
-      List_Read (c->Vertices, j - 1, &v1);
-      List_Read (c->Vertices, j, &v2);
-      e.V[0] = v1;
-      e.V[1] = v2;
-      if (!EdgesOnSurface.Search (v1, v2)) {
-        Msg(INFO, "Missing edge %d->%d", v1->Num, v2->Num);
-        Recover_Edge (s, &e, EdgesOnSurface);
-      }
-    }
-  }
-}
-
-int Restore_Boundary (Surface * s){
-  missing_edges_2d (s);
-  return 1;
-}
-
-int Maillage_Edge (Vertex * v1, Vertex * v2, List_T * Points){
-  int i;
-  static int qq = 1;
-  Simplex S, *s;
-
-  s = &S;
-  s->F[0].V[0] = v1;
-  s->F[0].V[1] = v2;
-
-  if (Tree_Search (FacesTree, &s))
-    return 0;
-
-  s = Create_Simplex_For2dmesh (v1, v2, NULL, NULL);
-  Tree_Add (FacesTree, &s);
-
-  Curve *c = Create_Curve (qq++, MSH_SEGM_LINE, 1, NULL, NULL, -1, -1, 0, 1);
-  Vertex *v;
-  c->Control_Points = List_Create (2, 1, sizeof (Vertex *));
-  List_Add (c->Control_Points, &v1);
-  List_Add (c->Control_Points, &v2);
-  c->beg = v1;
-  c->end = v2;
-  Maillage_Curve (&c, NULL);
-  for (i = 1; i < List_Nbr (c->Vertices) - 1; i++){
-    List_Read (c->Vertices, i, &v);
-    List_Delete (v->ListCurves);
-    v->ListCurves = NULL;
-    List_Add (Points, &v);
-  }
-  List_Delete (c->Vertices);
-  List_Delete (c->Control_Points);
-  Free_Curve (&c,0);
-  return 1;
-}
-
-void Action_First_Simplexes_2D (void *a, void *b){
-  Simplex *q;
-
-  if (!THES){
-    q = *(Simplex **) a;
-    if (q->Pt_In_Ellipsis (THEV, THEM->Metric->m)){
-      THES = q;
-    }
-  }
-}
-
-void Fill_Sim_Des_2D (void *a, void *b){
-  Simplex *S;
-  S = *(Simplex **) a;
-  if (S->Pt_In_Ellipsis (THEV, THEM->Metric->m))
-    List_Add (Simplexes_Destroyed, a);
-}
-
-void TStoLS_2D (void *a, void *b){
-  List_Add (Simplexes_Destroyed, a);
-}
-
-void TAtoLA_2D (void *a, void *b){
-  List_Add (Simplexes_New, a);
-}
-
-void CrSi_2D (void *a, void *b){
-  SxF *S;
-  Simplex *s;
-  S = (SxF *) a;
-  if (S->NumFaceSimpl == 1){
-    s = Create_Simplex_For2dmesh (THEV, S->F.V[0], S->F.V[1], NULL);
-    s->iEnt = ZONEELIMINEE;
-    List_Add (Simplexes_New, &s);
-  }
-  else if (S->NumFaceSimpl != 2){
-    Msg(GERROR, "Panic in CrSi_2D...");
-  }
-}
-
-void NewSimplexes_2D (Surface * s, List_T * Sim, List_T * news){
-  int i, j;
-  Tree_T *SimXFac;
-  Simplex *S;
-  SxF SXF, *pSXF;
-
-  SimXFac = Tree_Create (sizeof (SxF), compareSxF);
-
-  for (i = 0; i < List_Nbr (Sim); i++){
-    List_Read (Sim, i, &S);
-    if (!i)
-      ZONEELIMINEE = S->iEnt;
-    else{
-      if (S->iEnt != ZONEELIMINEE){
-        Msg(WARNING, "Huh! The elimination failed %d %d",
-            S->iEnt, ZONEELIMINEE);
-      }
-    }
-    for (j = 0; j < 3; j++){
-      SXF.F = S->F[j];
-      
-      if ((pSXF = (SxF *) Tree_PQuery (SimXFac, &SXF))) {
-        (pSXF->NumFaceSimpl)++;
-      }
-      else {
-        SXF.NumFaceSimpl = 1;
-        Tree_Add (SimXFac, &SXF);
-      }
-    }
-  }
-  
-  /* Les faces non communes sont obligatoirement a la frontiere ...
-     -> Nouveaux simplexes */
-
-  Tree_Action (SimXFac, CrSi_2D);
-  Tree_Delete (SimXFac);
-}
-
-int recur_bowyer_2D (Simplex * s){
-  int i;
-
-  Tree_Insert (Tsd, &s);
-  for (i = 0; i < 3; i++){
-    if (s->S[i] && s->S[i] != &MyNewBoundary && !Tree_Query (Tsd, &s->S[i])){
-      if (s->S[i]->Pt_In_Ellipsis (THEV, THEM->Metric->m) && (s->iEnt == s->S[i]->iEnt)){
-        recur_bowyer_2D (s->S[i]);
-      }
-      else{
-        if (s->iEnt != s->S[i]->iEnt){
-          Alerte_Point_Scabreux = 1;
-        }
-        Tree_Insert (Sim_Sur_Le_Bord, &s->S[i]);
-      }
-    }
-  }
-  return 1;
-}
-
-
-bool draw_simplex2d (Surface * sur, Simplex * s, bool nouv){
-  double x[3], y[3], z[3];
-  Vertex v1, v2, v3;
-
-  if (!THEM->MeshParams.InteractiveDelaunay)
-    return false;
-
-  if (s == &MyNewBoundary || !s || !s->iEnt)
-    return false;
-
-  v1 = InterpolateSurface (sur->Support, s->V[0]->Pos.X, s->V[0]->Pos.Y, 0, 0);
-  v2 = InterpolateSurface (sur->Support, s->V[1]->Pos.X, s->V[1]->Pos.Y, 0, 0);
-  v3 = InterpolateSurface (sur->Support, s->V[2]->Pos.X, s->V[2]->Pos.Y, 0, 0);
-
-  x[0] = v1.Pos.X;
-  x[1] = v2.Pos.X;
-  x[2] = v3.Pos.X;
-  y[0] = v1.Pos.Y;
-  y[1] = v2.Pos.Y;
-  y[2] = v3.Pos.Y;
-  z[0] = v1.Pos.Z;
-  z[1] = v2.Pos.Z;
-  z[2] = v3.Pos.Z;
-
-  if (nouv)
-    draw_polygon_2d (1., 0., 0., 3, x, y, z);
-  else
-    draw_polygon_2d (0., 0., 0., 3, x, y, z);
-
-  return true;
-}
-
-bool Bowyer_Watson_2D (Surface * sur, Vertex * v, Simplex * S, int force){
-  int i;
-  Simplex *s;
-  static int init = 1;
-  double volumeold, volumenew;
-
-  THEV = v;
-
-  double x = (S->V[0]->Pos.X + S->V[1]->Pos.X + S->V[2]->Pos.X) / 3.;
-  double y = (S->V[0]->Pos.Y + S->V[1]->Pos.Y + S->V[2]->Pos.Y) / 3.;
-
-  if (force)
-    THEM->Metric->setMetricMin (x, y, sur->Support);
-  else
-    THEM->Metric->setMetric (x, y, sur->Support);
-
-  Tsd = Tree_Create (sizeof (Simplex *), compareSimplex);
-  Sim_Sur_Le_Bord = Tree_Create (sizeof (Simplex *), compareSimplex);
-  if (init){
-    Simplexes_New = List_Create (10, 10, sizeof (Simplex *));
-    Simplexes_Destroyed = List_Create (10, 10, sizeof (Simplex *));
-    init = 0;
-  }
-
-  if (Methode){
-    Tree_Action (sur->Simplexes, Fill_Sim_Des_2D);
-    S = NULL;
-  }
-  else{
-    recur_bowyer_2D (S);
-  }
-  
-  Tree_Action (Tsd, TStoLS_2D);
-  NewSimplexes_2D (sur, Simplexes_Destroyed, Simplexes_New);
-
-  /* calcul des volumes des simplexes crees */
-
-  if (Alerte_Point_Scabreux || !CTX.mesh.speed_max){
-    volume = 0.0;
-    for (i = 0; i < List_Nbr (Simplexes_Destroyed); i++){
-      VSIM_2D (List_Pointer (Simplexes_Destroyed, i), NULL);
-    }
-    volumeold = volume;
-    volume = 0.0;
-    for (i = 0; i < List_Nbr (Simplexes_New); i++){
-      VSIM_2D (List_Pointer (Simplexes_New, i), NULL);
-    }
-    volumenew = volume;
-    if (volumeold + volumenew == 0.0)
-      volumenew = 1.0;
-  }
-  else{
-    volumeold = 1.0;
-    volumenew = 1.0;
-  }
-
-  /* critere du volume */
-
-  if ((fabs (volumeold - volumenew) / (volumeold + volumenew)) > 1.e-8){
-    if (S){
-      Tree_Suppress (sur->Simplexes, &S);
-      S->Quality /= 2.;
-      Tree_Add (sur->Simplexes, &S);
-    }
-    if(force){
-      List_Reset (Simplexes_New);
-      List_Reset (Simplexes_Destroyed);
-      Tree_Delete (Sim_Sur_Le_Bord);
-      Tree_Delete (Tsd);
-      return false;
-    }
-  }
-  else{
-    Tree_Add (sur->Vertices, &THEV);
-
-    /* Suppression des simplexes elimines */
-    for (i = 0; i < List_Nbr (Simplexes_Destroyed); i++){
-      List_Read (Simplexes_Destroyed, i, &s);
-      draw_simplex2d (sur, s, 0);
-      if (!Tree_Suppress (sur->Simplexes, &s)){
-        Msg(WARNING, "Failed to suppress simplex %d", s->Num);
-      }
-      Free_Simplex (&s,0);
-    }
-    for (i = 0; i < List_Nbr (Simplexes_New); i++){
-      List_Read (Simplexes_New, i, &s);
-      draw_simplex2d (sur, s, 1);
-      Tree_Add (sur->Simplexes, &s);
-    }
-    
-    /* Creation des liens entre nouveaux simplexes */
-    
-    Tree_Action (Sim_Sur_Le_Bord, TAtoLA_2D);
-    Link_Simplexes (Simplexes_New, sur->Simplexes);
-  }
-  
-  List_Reset (Simplexes_New);
-  List_Reset (Simplexes_Destroyed);
-  Tree_Delete (Sim_Sur_Le_Bord);
-  Tree_Delete (Tsd);
-  return true;
-}
-
-void Convex_Hull_Mesh_2D (List_T * Points, Surface * s){
-  int i, N;
-
-  N = List_Nbr (Points);
-
-  Box_2_Triangles (Points, s);
-  for (i = 0; i < N; i++){
-    THES = NULL;
-    List_Read (Points, i, &THEV);
-    Tree_Action (s->Simplexes, Action_First_Simplexes_2D);
-    /*
-      if(i%n == n-1){
-        volume = 0.0;
-        Tree_Action(s->Simplexes,VSIM_2D);
-        Msg(STATUS3, %d->%d Nodes, %d Elements",i+1,N,Tree_Nbr(s->Simplexes));
-      } 
-    */
-    if (!THES){
-      Msg(GERROR, "Vertex (%g,%g,%g) in no simplex",
-          THEV->Pos.X, THEV->Pos.Y, THEV->Pos.Z);
-      THEV->Pos.X += CTX.mesh.rand_factor * LC2D * rand()/RAND_MAX;
-      THEV->Pos.Y += CTX.mesh.rand_factor * LC2D * rand()/RAND_MAX;
-      THEV->Pos.Z += CTX.mesh.rand_factor * LC2D * rand()/RAND_MAX;
-      Tree_Action (s->Simplexes, Action_First_Simplexes_2D);
-    }
-    bool  ca_marche = Bowyer_Watson_2D (s, THEV, THES, 1);
-    while(!ca_marche){
-      double dx = CTX.mesh.rand_factor * LC2D * rand()/RAND_MAX;
-      double dy = CTX.mesh.rand_factor * LC2D * rand()/RAND_MAX;
-      THEV->Pos.X += dx;
-      THEV->Pos.Y += dy;
-      ca_marche = Bowyer_Watson_2D (s, THEV, THES, 1);
-      THEV->Pos.X -= dx;
-      THEV->Pos.Y -= dy;
-    }
-  }
-
-}
-
-/* recuperation de la surface */
-
-static List_T *ListCurves, *ListAllCurves;
-static Tree_T *keep;
-static Simplex *SIMP;
-static int iSurface;
-
-void attribueSurface (void *a, void *b){
-  Simplex *s;
-  s = *(Simplex **) a;
-  s->iEnt = iSurface;
-}
-
-void Trouve_Simplex_2D (void *a, void *b){
-  Simplex *s;
-  if (SIMP != NULL)
-    return;
-  s = *(Simplex **) a;
-  if (s->iEnt < 0)
-    SIMP = s;
-}
-
-void Trouve_Simplex_Bord_2D (void *a, void *b){
-  Simplex *s;
-
-  if (SIMP != NULL)
-    return;
-  s = *(Simplex **) a;
-  if (s->V[0]->Num < 0 || s->V[1]->Num < 0 || s->V[2]->Num < 0)
-    SIMP = s;
-}
-
-void CourbesDansSurface (Surface * s, List_T * ListAllCurves){
-  int i, iseg;
-  Curve *c;
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &c);
-    iseg = abs (c->Num);
-    List_Replace (ListAllCurves, &iseg, fcmp_int);
-  }
-}
-
-int isListaSurface (List_T * ListSurf, Surface * s){
-  int NN, j, srf;
-  bool found;
-  Curve *c;
-  NN = 0;
-  found = true;
-  for (j = 0; j < List_Nbr (s->Generatrices); j++){
-    List_Read (s->Generatrices, j, &c);
-    srf = abs (c->Num);
-    if (!List_Search (ListSurf, &srf, fcmp_int)){
-      found = false;
-    }
-    else
-      NN++;
-  }
-  if (found && NN == List_Nbr (ListSurf))
-    return s->Num;
-  return 0;
-}
-
-static List_T *StackSimp;
-#define MAX_DEPTH 500
-
-void recur_trouve_surface (Simplex * s, int *Depth){
-  int i, j;
-  Simplex *pS, S;
-
-  if (s->iEnt != -1)
-    return;
-
-  if ((*Depth) > MAX_DEPTH){
-    List_Add (StackSimp, &s);
-    return;
-  }
-  
-  (*Depth)++;
-  s->iEnt = -2;
-  Tree_Add (keep, &s);
-  for (i = 0; i < 3; i++){
-    pS = &S;
-    pS->F[0] = s->F[i];
-    if (Tree_Query (FacesTree, &pS) && List_Search (ListAllCurves, &pS->iEnt, fcmp_int)){
-      j = abs (pS->iEnt);
-      List_Replace (ListCurves, &j, fcmp_int);
-    }
-    else if (s->S[i] && s->S[i] != &MyNewBoundary){
-      recur_trouve_surface (s->S[i], Depth);
-    }
-  }
-  (*Depth)--;
-}
-
-extern int compareSimpSurf (const void *a, const void *b);
-
-void Restore_Surface (Surface * s){
-  int N;
-  int i, depth;
-
-  StackSimp = List_Create (100, 100, sizeof (Simplex *));
-  ListCurves = List_Create (2, 2, sizeof (int));
-  iSurface = -1;
-  Tree_Action (s->Simplexes, attribueSurface);
-
-  /* Les simplexes sur le bord exterieur sont elimines */
-  ListAllCurves = List_Create (10, 3, sizeof (int));
-  CourbesDansSurface (s, ListAllCurves);
-
-
-  SIMP = NULL;
-  Tree_Action (s->Simplexes, Trouve_Simplex_Bord_2D);
-
-  if (SIMP){
-    List_Add (StackSimp, &SIMP);
-    keep = Tree_Create (sizeof (Simplex *), compareQuality);
-    depth = 0;
-    i = 0;
-    do{
-      List_Read (StackSimp, i, &SIMP);
-      recur_trouve_surface (SIMP, &depth);
-    }
-    while (++i < List_Nbr (StackSimp));
-    List_Reset (StackSimp);
-    
-    N = Tree_Nbr (keep);
-
-    iSurface = 0;
-    Tree_Action (keep, attribueSurface);
-    Tree_Delete (keep);
-    List_Reset (ListCurves);
-  }
-
-  while (1){
-    SIMP = NULL;
-    keep = Tree_Create (sizeof (Simplex *), compareQuality);
-    Tree_Action (s->Simplexes, Trouve_Simplex_2D);
-    if (!SIMP)
-      break;
-    List_Add (StackSimp, &SIMP);
-    depth = 0;
-    i = 0;
-    do{
-      List_Read (StackSimp, i, &SIMP);
-      recur_trouve_surface (SIMP, &depth);
-    }while (++i < List_Nbr (StackSimp));
-    
-    iSurface = isListaSurface (ListCurves, s);
-    
-    N = Tree_Nbr (keep);
-    Msg(INFO, "Initial mesh of Surface %d: %d simplices, %d/%d curves, %d faces",
-         iSurface, N, List_Nbr (ListCurves), List_Nbr (ListAllCurves),
-         Tree_Nbr (FacesTree));
-
-    Tree_Action (keep, attribueSurface);
-    Tree_Delete (keep);
-    List_Reset (ListCurves);
-    List_Reset (StackSimp);
-  }
-  // MEMORY LEAK (JF)
-  List_Delete (StackSimp);
-  List_Delete (ListCurves);
-  List_Delete (ListAllCurves);
-
-}
-
-void suppress_simplex_2D (void *data, void *dum){
-  Simplex **pv;
-
-  pv = (Simplex **) data;
-  if ((*pv)->iEnt == 0)
-    List_Add (Suppress, pv);
-}
-
-Vertex * NewVertex_2D (Simplex * s){
-  Vertex *v;
-  double lc;
-  lc = (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc) / 3. ;
-
-  //lc = DMIN(MAXIMUM_LC_FOR_SURFACE,lc);
-
-  /*v = Create_Vertex(  ++CurrentNodeNumber,
-     (s->V[0]->Pos.X + s->V[1]->Pos.X + s->V[2]->Pos.X)/3.,
-     (s->V[0]->Pos.Y + s->V[1]->Pos.Y + s->V[2]->Pos.Y)/3.,
-     0.0, lc, 0.0);
-   */
-
-  if (THEM->MeshParams.DelaunayInsertionMethod == INSERTION_CENTROID)
-    v = Create_Vertex (++CurrentNodeNumber, s->Center.X, s->Center.Y, 0.0, lc, 0.0);
-  else if (THEM->MeshParams.DelaunayInsertionMethod == INSERTION_EDGE) {
-    Vertex *vv[2];
-    double l = THEM->Metric->getWorstEdge (s, PARAMETRIC, vv);
-    double f = 0.5;
-    
-    if (vv[0]->lc <= vv[1]->lc)
-      f = vv[0]->lc / l;
-    else
-      f = 1. - (vv[1]->lc / l);
-    
-    if (f >= 1)
-      v = Create_Vertex (++CurrentNodeNumber, s->Center.X, s->Center.Y, 0.0, lc, 0.0);
-    else
-      v = Create_Vertex (++CurrentNodeNumber,
-                         f * vv[0]->Pos.X + (1. - f) * vv[1]->Pos.X,
-                         f * vv[0]->Pos.Y + (1. - f) * vv[1]->Pos.Y, 0.0, lc, 0.0);
-  }
-
-  v->lc = Interpole_lcTriangle (s, v);
-
-  if (PARAMETRIC){
-    if (!v->ListCurves)
-      Normal2Surface (PARAMETRIC->Support, v->Pos.X, v->Pos.Y, v->us);
-    else {
-      v->us[0] = v->us[1] = v->us[2] = 0.0;
-    }
-  }
-  return (v);
-}
-
-extern Mesh *LOCAL;
-
-void TRIE_MON_GARS (void *a, void *b){
-  Simplex *s = *(Simplex **) a;
-  s->Fourre_Simplexe (s->V[0], s->V[1], s->V[2], s->V[3]);
-  s->iEnt = SURF->Num;
-  s->S[0] = s->S[1] = s->S[2] = NULL;
-  THEM->Metric->setSimplexQuality (s, PARAMETRIC);
-  //SURF->Num;
-  //qsort(s->F[0].V,3,sizeof(Vertex*),compareVertex);
-}
-
-void RandomSwapEdges2d (Surface * s){
-  int i, j = 1, k;
-  List_T *AllTrg = Tree2List (s->Simplexes);
-  Simplex *t;
-  for (i = 0; i < List_Nbr (AllTrg); i++){
-    k = rand () % List_Nbr (AllTrg);
-    List_Read (AllTrg, k, &t);
-    j = rand () % 3;
-    if (draw_simplex2d (s, t, false))
-      draw_simplex2d (s, t->S[j], false);
-    t->SwapEdge (j);
-    if (draw_simplex2d (s, t, true))
-      draw_simplex2d (s, t->S[j], true);
-  }
-}
-
-void IntelligentSwapEdges (Surface * s, GMSHMetric * m){
-  int i, j, k;
-  List_T *AllTrg = Tree2List (s->Simplexes);
-  Vertex *p[4], *q[4];
-  Simplex *t;
-  for (i = 0; i < List_Nbr (AllTrg); i++) {
-    k = rand () % List_Nbr (AllTrg);
-    List_Read (AllTrg, k, &t);
-    j = rand () % 3;
-    if (t->ExtractOppositeEdges (j, p, q)){
-      double qp = 2. * m->EdgeLengthOnSurface (s, p, 1) 
-        / (RacineDeTrois * (p[0]->lc + p[1]->lc));
-      double qq = 2. * m->EdgeLengthOnSurface (s, q, 1)
-        / (RacineDeTrois * (q[0]->lc + q[1]->lc));
-      if (fabs (qp) > fabs (qq)){
-        if (draw_simplex2d (s, t, false))
-          draw_simplex2d (s, t->S[j], false);
-        t->SwapEdge (j);
-        if (draw_simplex2d (s, t, true))
-          draw_simplex2d (s, t->S[j], true);
-      }
-    }
-  }
-  List_Delete (AllTrg);
-}
-
-int AlgorithmeMaillage2DAnisotropeModeJF (Surface * s){
-  List_T *Points = List_Create (100, 100, sizeof (Vertex *));
-  int j, i, N, n;
-  List_T *c;
-  Curve *cur, *curinv;
-  extern int FACE_DIMENSION;
-  Simplex *simp;
-  Vertex *newv;
-  static int COUNT = 0;
-
-  FACE_DIMENSION = 1;
-
-  SURF = s;
-  LOCAL = NULL;
-
-  if (s->Typ == MSH_SURF_PLAN || s->Typ == MSH_SURF_REGL || s->Typ == MSH_SURF_TRIC)
-    PARAMETRIC = NULL;
-
-  ZONEELIMINEE = s->Num;
-
-  for (i = 0; i < List_Nbr (s->Contours); i++){
-    List_Read (s->Contours, i, &c);
-    for (j = 0; j < List_Nbr (c); j++){
-      Vertex *pv;
-      List_Read (c, j, &pv);
-      List_Add (Points, &pv);
-    }
-  }
-  
-  N = List_Nbr (Points);
-  n = N + 100;
-
-  Msg(STATUS2, "Mesh 2D... (initial)");
-
-  Convex_Hull_Mesh_2D (Points, s);
-  List_Reset (Points);
-  Link_Simplexes (NULL, s->Simplexes);
-
-  //return 1;
-
-  if (!Restore_Boundary (s)){
-    //s->Simplexes = Tree_Create(sizeof(Simplex*),compareSimplex);
-    FACE_DIMENSION = 2;
-    Tree_Action (s->Simplexes, TRIE_MON_GARS);
-    return 1;
-  }
-
-  Tree_Action (s->Simplexes, TRIE_MON_GARS);
-  Link_Simplexes (NULL, s->Simplexes);
-  List_T *List = Tree2List (s->Simplexes);
-  Tree_Delete (s->Simplexes);
-  s->Simplexes = Tree_Create (sizeof (Simplex *), compareQuality);
-  for (i = 0; i < List_Nbr (List); i++)
-    Tree_Add (s->Simplexes, List_Pointer (List, i));
-  List_Delete (List);
-
-  //  return 1;
-
-  FacesTree = Tree_Create (sizeof (Simplex *), compareSimpSurf);
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &cur);
-    curinv = FindCurve (abs (cur->Num), THEM);
-    List_T *temp = Tree2List (curinv->Simplexes);
-    for (j = 0; j < List_Nbr (temp); j++){
-      Tree_Add (FacesTree, List_Pointer (temp, j));
-    }
-    List_Delete (temp);
-  }
-
-  Restore_Surface (s);
-
-  // MEMORY LEAK (JF)
-  Tree_Delete(FacesTree);
-
-  Suppress = List_Create (10, 10, sizeof (Simplex *));
-  Tree_Action (s->Simplexes, suppress_simplex_2D);
-  for (i = 0; i < List_Nbr (Suppress); i++){
-    Tree_Suppress (s->Simplexes, List_Pointer (Suppress, i));
-  }
-
-  Msg(STATUS2, "Mesh 2D... (final)");
-
-  if(!Tree_Right (s->Simplexes, &simp))
-    Msg(WARNING, "No simplex left");
-  else{
-    i = 0;
-    while ( simp->Quality > CONV_VALUE){
-      newv = NewVertex_2D (simp);
-      while (!simp->Pt_In_Simplex_2D (newv) &&
-             (simp->S[0] == &MyNewBoundary || !simp->S[0]->Pt_In_Simplex_2D (newv)) &&
-             (simp->S[1] == &MyNewBoundary || !simp->S[1]->Pt_In_Simplex_2D (newv)) &&
-             (simp->S[2] == &MyNewBoundary || !simp->S[2]->Pt_In_Simplex_2D (newv))){
-        /*
-          Msg(INFO,"pt : %12.5E %12.5E",newv->Pos.X,newv->Pos.Y);
-          Msg(INFO,"not in : (%12.5E %12.5E) (%12.5E %12.5E) (%12.5E %12.5E)",
-          simp->V[0]->Pos.X,simp->V[0]->Pos.Y,simp->V[1]->Pos.X,
-          simp->V[1]->Pos.Y,simp->V[2]->Pos.X,simp->V[2]->Pos.Y);
-        */
-        Tree_Suppress (s->Simplexes, &simp);
-        simp->Quality /= 2.;
-        Tree_Insert (s->Simplexes, &simp);
-        Tree_Right (s->Simplexes, &simp);
-        if (simp->Quality < CONV_VALUE)
-          break;
-        newv = NewVertex_2D (simp);
-      }
-      if (simp->Quality < CONV_VALUE)
-        break;
-      i++;
-      if (i % n == n - 1){
-        volume = 0.0;
-        Tree_Action (s->Simplexes, VSIM_2D);
-        Msg(STATUS3, "Nod=%d Elm=%d",
-            Tree_Nbr (s->Vertices), Tree_Nbr (s->Simplexes));
-        Msg(STATUS1, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
-      }
-      Bowyer_Watson_2D (s, newv, simp, 0);
-      Tree_Right (s->Simplexes, &simp);
-      //if(i>COUNT)break;
-    }
-  }
-
-  //for(i=0;i<3;i++)RandomSwapEdges2d(s);
-  //for(i=0;i<2;i++)IntelligentSwapEdges(s,THEM->Metric);
-
-  List_Reset (Points);
-  FACE_DIMENSION = 2;
-  COUNT++;
-
-  Tree_Action (s->Simplexes, TRIE_MON_GARS);
-  Link_Simplexes (NULL, s->Simplexes);
-  List = Tree2List (s->Simplexes);
-  Tree_Delete (s->Simplexes);
-  s->Simplexes = Tree_Create (sizeof (Simplex *), compareSimplex);
-  for (i = 0; i < List_Nbr (List); i++)
-    Tree_Add (s->Simplexes, List_Pointer (List, i));
-  List_Delete (List);
-
-  /*suppression des points de la boite */
-  List = Tree2List (s->Vertices);
-  for (i = 0; i < List_Nbr (List); i++){
-    List_Read (List, i, &THEV);
-    if (THEV->Num < 0){
-      Tree_Suppress (s->Vertices, &THEV);
-      // BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG 
-      // MEMORY LEAK (JF) BUT THIS CAUSES PROBLEMS AFTER !!      
-      // Free(THEV);
-      // BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG 
-    }
-  }
-  List_Delete (List);
-
-  if(!Tree_Nbr(s->Simplexes))
-    Msg(GERROR, "No triangles in surface %d", s->Num);
-
-  /*
-     RandomSwapEdges2d(s);
-     for(i=0;i<1;i++)IntelligentSwapEdges(s,THEM->Metric);
-   */
-  //IntelligentSwapEdges(s,THEM->Metric);
-
-  List_Delete (Points);
-
-
-  // WAS A MEMORY LEAK
-  for (i = 0; i < List_Nbr (Suppress); i++){
-    Free_Simplex(List_Pointer (Suppress, i),0);
-  }
-  List_Delete (Suppress);
-  
-
-  return 1;
-}
-
diff --git a/Mesh/2D_Parametric.cpp b/Mesh/2D_Parametric.cpp
deleted file mode 100644
index 0996538f4dc49f1b255b774bb455656115f027d7..0000000000000000000000000000000000000000
--- a/Mesh/2D_Parametric.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-// $Id: 2D_Parametric.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Interpolation.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-#include "Create.h"
-#include "Context.h"
-
-extern Mesh      *THEM;
-extern Context_T  CTX;
-
-static Surface *SURF;
-Surface *PARAMETRIC;
-
-/* SURFACES CYLINDRIQUES */
-
-void XYZtoUV (void *a, void *dum){
-  Vertex *v;
-  double uu, vv;
-  v = *(Vertex **) a;
-  ProjectPointOnSurface (SURF->Support, v, &uu, &vv);
-  v->Pos.X = uu;
-  v->Pos.Y = vv;
-  v->Pos.Z = 0.0;
-}
-
-void UVtoXYZ (void *a, void *dum){
-  Vertex *v, n;
-  v = *(Vertex **) a;
-
-  n = InterpolateSurface (SURF->Support, v->Pos.X, v->Pos.Y, 0, 0);
-
-  v->Pos.X = n.Pos.X;
-  v->Pos.Y = n.Pos.Y;
-  v->Pos.Z = n.Pos.Z;
-}
-
-void printMetric (Mesh * m, Surface * s, char *name){
-
-  int N = 10, M = 10, i, j;
-  double u, v;
-  FILE *f = fopen (name, "w");
-  if (!f)
-    return;
-  fprintf (f, "View \"metric\" Offset{0,0,0} {\n");
-  for (i = 0; i < N; i++){
-    u = (s->ku[0]) + (s->ku[s->Nu + s->OrderU] - s->ku[0]) 
-      * (double) i / (double) (N - 1);
-    for (j = 0; j < M; j++){
-      v = (s->kv[0]) + (s->kv[s->Nv + s->OrderV] - s->kv[0]) 
-        * (double) j / (double) (M - 1);
-      m->Metric->setMetric (u, v, s);
-      fprintf (f, "VT (%f,%f,0,%f,%f,0,%f,%f,0)"
-               "{%g,%g,%g,%g,%g,%g,%g,%g,%g};\n",
-               u, v, u, v, u, v, 
-               m->Metric->m[0][0], m->Metric->m[0][1], 0.0,
-               m->Metric->m[0][0], m->Metric->m[0][1], 0.0, 
-               m->Metric->m[0][0], m->Metric->m[0][1], 0.0);
-          fprintf (f, "VT (%f,%f,0,%f,%f,0,%f,%f,0)"
-                   "{%g,%g,%g,%g,%g,%g,%g,%g,%g};\n",
-                   u, v, u, v, u, v, 
-                   m->Metric->m[1][0], m->Metric->m[1][1], 0.0,
-                   m->Metric->m[1][0], m->Metric->m[1][1], 0.0,
-                   m->Metric->m[1][0], m->Metric->m[1][1], 0.0);
-    }
-  }
-  fprintf (f, "};\n");
-  fclose (f);
-}
-
-int MeshParametricSurface (Surface * s){
-
-  int i, j, ori;
-  Curve *pC;
-  Vertex *v;
-  Tree_T *tnxe;
-
-  PARAMETRIC = s;
-
-  if (s->Typ == MSH_SURF_NURBS)
-    return 1;
-  if (s->Typ != MSH_SURF_TRIMMED || s->Support->Typ != MSH_SURF_NURBS)
-    return 0;
-
-  SURF = s;
-  if (!List_Nbr (s->Generatrices))
-    return 1;
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &pC);
-    for (j = 0; j < List_Nbr (pC->Vertices); j++){
-      List_Read (pC->Vertices, j, &v);
-      Tree_Insert (s->Vertices, List_Pointer (pC->Vertices, j));
-    }
-  }
-
-  //printMetric(THEM,s,"metric.pos");
-
-  Tree_Action (s->Vertices, Freeze_Vertex);
-
-  Tree_Action (s->Vertices, XYZtoUV);
-  ori = Calcule_Contours (s);
-
-  if (!AlgorithmeMaillage2DAnisotropeModeJF (s))
-    Maillage_Automatique_VieuxCode (s, THEM, ori);
-
-  if (CTX.mesh.nb_smoothing){
-    tnxe = Tree_Create (sizeof (NXE), compareNXE);
-    create_NXE (s->Vertices, s->Simplexes, tnxe);
-    
-    for(i = 0 ; i < CTX.mesh.nb_smoothing ; i++)
-      Tree_Action (tnxe, ActionLiss);
-    
-    //AmelioreSurface_EliminationTripet (s, THEM, tnxe);
-    
-    Tree_Delete (tnxe);
-  }
-
-  Tree_Action (s->Vertices, UVtoXYZ);
-  Tree_Action (s->Vertices, deFreeze_Vertex);
-
-  PARAMETRIC = NULL;
-
-  return 1;
-}
diff --git a/Mesh/2D_Recombine.cpp b/Mesh/2D_Recombine.cpp
deleted file mode 100644
index 91806c3365fce56b61a822ca418da72732b8ac73..0000000000000000000000000000000000000000
--- a/Mesh/2D_Recombine.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-// $Id: 2D_Recombine.cpp,v 1.9 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "2D_Mesh.h"
-#include "Create.h"
-#include "Context.h"
-
-extern Context_T CTX;
-
-Tree_T    *RecEdges,*Triangles;
-Tree_T    *RecSimplex,*TREEELM;
-double     ALPHA;
-int        RECNUM;
-
-void addTriangles(void *data, void *dum){
-  Simplex *S;
-  S = *(Simplex**)data;
-  if(S->V[2] && !S->V[3])Tree_Add(Triangles,&S);
-}
-
-void addrecedges (void *a, void *b){
-  Edge *ed;
-  ed = (Edge*)a;
-  if(ed->a < ALPHA)Tree_Add(RecEdges,ed);
-}
-
-void CalculeAngles (void *a, void *b){
-  Edge *ed;
-  double Angle;
-
-  ed = (Edge*)a;
-  if(List_Nbr(ed->Simplexes) != 2){
-    ed->a = 90.;
-    return;
-  }
-  
-  Angle = fabs(90. - angle_3pts(ed->O[0],ed->V[0],ed->O[1]));
-  Angle = DMAX(fabs(90. - angle_3pts(ed->V[0],ed->O[1],ed->V[1])),Angle);
-  Angle = DMAX(fabs(90. - angle_3pts(ed->O[1],ed->V[1],ed->O[0])),Angle);
-  Angle = DMAX(fabs(90. - angle_3pts(ed->V[0],ed->O[0],ed->V[1])),Angle);
-  ed->a = Angle;
-}
-
-
-void Recombine_Farce (void *a, void *b){
-  Edge *ed;
-  Simplex *s1,*s2;
-  ed = (Edge*)a;
-
-  if (ed->a < ALPHA){
-    List_Read(ed->Simplexes,0,&s1);
-    List_Read(ed->Simplexes,1,&s2);
-    if(Tree_Search(RecSimplex,&s1)) return;
-    if(s1->V[3]) return;
-    if(Tree_Search(RecSimplex,&s2)) return;
-    if(s2->V[3]) return;
-    Tree_Add(RecSimplex,&s1);
-    Tree_Suppress(TREEELM,&s1);
-    s2->V[3] = ed->V[0];
-    s2->V[2] = ed->O[0];
-    s2->V[1] = ed->V[1];
-    s2->V[0] = ed->O[1];
-    RECNUM++;
-  }
-}
-
-int Recombine (Tree_T *TreeAllVert, Tree_T *TreeAllElg, double a){
-  Tree_T *TreeEdges,*tnxe;
-  int ntot;
-
-  ALPHA = a;
-  TREEELM = TreeAllElg;
-  ntot = 0;
-
-  while(1){
-
-    /* Initialisation */
-    RECNUM = 0;
-    TreeEdges   = Tree_Create(sizeof(Edge),compareedge);
-    RecEdges    = Tree_Create(sizeof(Edge),compareedge_angle);
-    RecSimplex  = Tree_Create(sizeof(Simplex*),compareSimplex);
-    Triangles   = Tree_Create(sizeof(Simplex*),compareSimplex);
-
-    /* Recombinaison */
-    Tree_Action(TreeAllElg,addTriangles);
-    crEdges(Triangles,TreeEdges);
-    Tree_Action(TreeEdges,CalculeAngles);
-    Tree_Action(TreeEdges,addrecedges);
-    Tree_Action(RecEdges,Recombine_Farce);
-
-    /* Lissage */
-    if(CTX.mesh.nb_smoothing){
-      Msg(STATUS3, "Mesh smoothing");
-      tnxe = Tree_Create(sizeof(NXE),compareNXE);
-      create_NXE(TreeAllVert,TreeAllElg,tnxe);
-      for (int i = 0; i < CTX.mesh.nb_smoothing; i++)
-	Tree_Action(tnxe,ActionLissSurf);
-      // MEMORY LEAK (JF)
-      delete_NXE(tnxe);
-    }
-
-    /* Destruction */
-    Tree_Delete(TreeEdges);
-    Tree_Delete(RecEdges);
-    Tree_Delete(RecSimplex);
-    Tree_Delete(Triangles);
-
-    /* Si aucune recombinaison -> fin */
-    ntot += RECNUM;
-    if(!RECNUM)break;
-  }
-
-  Msg(STATUS2, "Recombined %d Quadrangles",ntot); 
-
-  return ntot ;
-  
-}
-
-
-
diff --git a/Mesh/2D_SMesh.cpp b/Mesh/2D_SMesh.cpp
deleted file mode 100644
index a5360db3b6425d12374c3c58d7e7c1483fef3dd1..0000000000000000000000000000000000000000
--- a/Mesh/2D_SMesh.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-// $Id: 2D_SMesh.cpp,v 1.7 2001-06-03 11:21:02 geuzaine Exp $
-
-/*  
-  Maillage transfini surfacique                                                 
-                                            *s2
-       s3     c2    s2                     /|  
-        *-----------*                     / |
-        |           |                  c2/  |c1   
-      c3|           |c1                 /   |  
-        |           |                  /    |
-  v     *-----------*                 *-----*
-  |    s0     c0    s1               s0  c0  s1
-  *--u
-
-  Decoupages :  |
-                *--*
-                |\ |
-                | \|   
-                *--*-- 
-               s0    -> s1
-*/
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Numeric.h"
-#include "Interpolation.h"
-
-extern Mesh  *THEM;
-extern int    CurrentNodeNumber;
-
-int index1d (int flag, int N, int n){
-  switch(flag){    
-  case 0 : return(n);
-  case 1 : return(N-n-1);
-  default : return -1;
-  }
-}
-
-int MeshTransfiniteSurface (Surface *sur) {  
-  int       i,j,k,flag,nb,N1,N2,issphere;
-  int       nbquad=0,nbtri=0;
-  Curve    *G[4],*GG[4];
-  Vertex    V,**vexist,*pV,*c1,*c2,**list,*CP[2];
-  Simplex  *simp;
-  double    u,v;
-  int       C_flag[4];
-  Vertex   *C[4],*S[4];
-
-  static int tab1qua[] = {0,1, 1,2, 3,2, 0,3};
-  static int tab1tri[] = {0,1, 1,2, 0,2};
-  static int tab2[] = {0,1, 1,0};
-
-  if (sur->Method != TRANSFINI) return(0);
-
-  switch(sur->Typ){
-
-  case MSH_SURF_REGL:
-  case MSH_SURF_PLAN:
-  case MSH_SURF_TRIC:
-  case MSH_SURF_NURBS:
-
-    nb = List_Nbr(sur->Generatrices);
-    if(nb != 3 && nb != 4) return(0);
-
-    for(i=0;i<4;i++) G[i] = NULL ;
-
-    for(i=0;i<nb;i++){
-      V.Num = sur->ipar[i];
-      pV = &V;
-      if((vexist = (Vertex**)Tree_PQuery(THEM->Vertices,&pV)) == NULL) {
-        Msg(WARNING, "Unknown Control Point %d in Transfinite Surface %d",
-            V.Num,sur->Num); 
-        return(0);
-      }
-      else{
-        S[i]=*vexist;
-      }
-    }       
-
-    for(i=0;i<nb;i++) List_Read(sur->Generatrices,i,&GG[i]);
-
-    for(i=0;i<nb;i++){      
-      List_Read(GG[i]->Control_Points,0,&CP[0]);
-      List_Read(GG[i]->Control_Points,List_Nbr(GG[i]->Control_Points)-1,&CP[1]);
-
-      for(flag=0;flag<2;flag++){
-        for(k=0;k<nb;k++){
-          if(nb == 4){
-            if(S[tab1qua[2*k  ]]->Num == CP[tab2[2*flag  ]]->Num && 
-               S[tab1qua[2*k+1]]->Num == CP[tab2[2*flag+1]]->Num){ 
-              G[k]=GG[i];
-              C_flag[k]=flag;
-            }
-          }
-          else{
-            if(S[tab1tri[2*k  ]]->Num == CP[tab2[2*flag  ]]->Num && 
-               S[tab1tri[2*k+1]]->Num == CP[tab2[2*flag+1]]->Num){ 
-              G[k]=GG[i];
-              C_flag[k]=flag;
-            }
-          }
-        }       
-      }
-    }
-
-    for(i=0;i<nb;i++)
-      if(G[i] == NULL) {
-        Msg(WARNING, "Wrong definition of Transfinite Surface %d", 
-            sur->Num); 
-        return(0);
-      }
-
-    if(nb == 4) {
-      if((N1 = List_Nbr(G[0]->Vertices)) != List_Nbr(G[2]->Vertices)) return(0); 
-      if((N2 = List_Nbr(G[1]->Vertices)) != List_Nbr(G[3]->Vertices)) return(0); 
-    }
-    else {
-      if((N1 = List_Nbr(G[0]->Vertices)) != List_Nbr(G[2]->Vertices)) return(0); 
-      N2 = List_Nbr(G[1]->Vertices);      
-    }
-
-    sur->Nu = N1;
-    sur->Nv = N2;
-    list = (Vertex**)Malloc(N1*N2*sizeof(Vertex*));
-
-    issphere = 1;
-    for(i=0;i<nb;i++){
-      if(G[i]->Typ != MSH_SEGM_CIRC && G[i]->Typ != MSH_SEGM_CIRC_INV){
-        issphere = 0;
-      }
-      else if (issphere){
-        if(!i){
-          List_Read(G[i]->Control_Points, 1, &c1);
-        }
-        else{
-          List_Read(G[i]->Control_Points, 1, &c2);
-          if(compareVertex(&c1,&c2))issphere = 0;
-        }
-      }
-    }
-    
-    for(i=0;i<N1;i++){
-      List_Read(G[0]->Vertices, index1d(C_flag[0],N1,i), &C[0]);
-      List_Read(G[2]->Vertices, index1d(C_flag[2],N1,i), &C[2]);        
-
-      if( (G[0]->Num>0 && C_flag[0]) || (G[0]->Num<0 && !C_flag[0]) ) 
-        u = 1.-C[0]->u; 
-      else
-        u = C[0]->u;
-
-      for(j=0;j<N2;j++){
-        List_Read(G[1]->Vertices, index1d(C_flag[1],N2,j), &C[1]);
-        if(nb == 4) 
-          List_Read(G[3]->Vertices, index1d(C_flag[3],N2,j), &C[3]);
-
-        if( (G[1]->Num>0 && C_flag[1]) || (G[1]->Num<0 && !C_flag[1]) ) 
-          v = 1.-C[1]->u;
-        else
-          v = C[1]->u;
-
-        if(i && j && i != N1-1 && j != N2-1){
-          if (sur->Typ == MSH_SURF_NURBS)
-            V = InterpolateSurface (sur, u, v, 0, 0);
-          else if(nb == 4) 
-            V = TransfiniteQua(*C[0],*C[1],*C[2],*C[3],*S[0],*S[1],*S[2],*S[3],u,v);
-          else
-            V = TransfiniteTri(*C[0],*C[1],*C[2],*S[0],*S[1],*S[2],u,v);
-          if(issphere) 
-            TransfiniteSph(*C[0],*c1,&V);
-          list[i+N1*j] = Create_Vertex(++CurrentNodeNumber,V.Pos.X,V.Pos.Y,V.Pos.Z,V.lc,0.0);
-        }
-        else if(!i) 
-          list[i+N1*j] = (nb == 4)?C[3]:C[2];
-        else if(!j) 
-          list[i+N1*j] = C[0];
-        else if(i == N1-1) 
-          list[i+N1*j] = C[1];
-        else if(j == N2-1) 
-          list[i+N1*j] = C[2];
-        
-        list[i + N1 * j]->us[0] = u;
-        list[i + N1 * j]->us[1] = v;
-      }
-    }
-
-
-    for(i=0;i<N1;i++){
-      for(j=0;j<N2;j++){
-        List_Add(sur->TrsfVertices,&list[i+N1*j]);
-      }
-    }
-
-    if(nb == 4){      
-      for(i=0;i<N1;i++){
-        for(j=0;j<N2;j++){
-          Tree_Replace(sur->Vertices,&list[i+N1*j]);
-        }
-      }      
-      for(i=0;i<N1-1;i++){
-        for(j=0;j<N2-1;j++){
-          if(sur->Recombine){
-            simp = Create_Quadrangle(list[(i) + N1*(j)], list[(i+1)+ N1*(j)],
-                                     list[(i+1)+ N1*(j+1)], list[(i)+ N1*(j+1)]);
-            simp->iEnt = sur->Num;
-            Tree_Add(sur->Simplexes,&simp);
-            List_Add(sur->TrsfSimplexes,&simp);
-
-            nbquad++;
-          }
-          else{
-            simp = Create_Simplex(list[(i) + N1*(j)], list[(i+1) + N1*(j)], 
-                                  list[(i) + N1*(j+1)], NULL);
-            simp->iEnt = sur->Num;
-            Tree_Add(sur->Simplexes,&simp);
-            List_Add(sur->TrsfSimplexes,&simp);
-
-            simp = Create_Simplex(list[(i+1) + N1*(j+1)], list[(i) + N1*(j+1)],
-                                  list[(i+1) + N1*(j)], NULL);
-            simp->iEnt = sur->Num;
-            Tree_Add(sur->Simplexes,&simp);
-            List_Add(sur->TrsfSimplexes,&simp);
-
-            nbtri += 2;
-          }
-        }
-      }                  
-    }
-    else if(nb == 3) {
-      Tree_Replace(sur->Vertices,&list[0]);
-      for(i=1;i<N1;i++){
-        for(j=0;j<N2;j++){
-          Tree_Replace(sur->Vertices,&list[i+N1*j]);
-        }
-      }      
-      for(j=0;j<N2-1;j++){
-        simp = Create_Simplex(list[1 + N1*(j+1)], list[N1*(j+1)],list[1 + N1*(j)],NULL);
-        simp->iEnt = sur->Num;
-        Tree_Add(sur->Simplexes,&simp);
-        List_Add(sur->TrsfSimplexes,&simp);
-
-        nbtri++;
-      }      
-      for(i=1;i<N1-1;i++){
-        for(j=0;j<N2-1;j++){
-          if(sur->Recombine){
-            simp = Create_Quadrangle(list[(i) + N1*(j)],list[(i+1) + N1*(j)],
-                                     list[(i+1) + N1*(j+1)],list[i+N1*(j+1)]);
-            simp->iEnt = sur->Num;
-            Tree_Add(sur->Simplexes,&simp);
-            List_Add(sur->TrsfSimplexes,&simp);
-
-            nbquad++;
-          }
-          else{
-            simp = Create_Simplex(list[(i) + N1*(j)], list[(i+1) + N1*(j)], 
-                                  list[(i) + N1*(j+1)],NULL);
-            simp->iEnt = sur->Num;
-            Tree_Add(sur->Simplexes,&simp);
-            List_Add(sur->TrsfSimplexes,&simp);
-
-            simp = Create_Simplex(list[(i+1) + N1*(j+1)], list[(i) + N1*(j+1)],
-                                  list[(i+1) + N1*(j)], NULL);
-            simp->iEnt = sur->Num;
-            Tree_Add(sur->Simplexes,&simp);
-            List_Add(sur->TrsfSimplexes,&simp);
-
-            nbtri += 2;
-          }
-        }
-      }                         
-      
-    }
-    break;
-    
-  default:
-    return(0);
-  }  
-
-  Free(list);
-
-  // We count this here, to be able to distinguish very quickly
-  // between triangles and quadrangles later
-  THEM->Statistics[8] += nbquad;
-
-  return(1);
-}
-
diff --git a/Mesh/2D_Tree.cpp b/Mesh/2D_Tree.cpp
deleted file mode 100644
index 46e0735944f00398a2af98c2328a5803512eb315..0000000000000000000000000000000000000000
--- a/Mesh/2D_Tree.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// $Id: 2D_Tree.cpp,v 1.4 2001-01-08 08:05:44 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-
-/* BOUSILLE L'ARBRE TOTALEMENT (pas les donnees mais les liens) */
-
-int avltree_remove (avlstruct **root){
-  int   delete_this_node = 0;
-
-  if(*root == NULL) return(1);
-  
-  if (((*root)->left == NULL) && ((*root)->right == NULL))
-    delete_this_node = 1;
-  else
-    {
-      if ((*root)->left == NULL)
-        if (avltree_remove(&(*root)->left))
-          {
-            Free((*root)->left);
-            (*root)->left = NULL;                       
-          }     
-      if ((*root)->right == NULL)
-        if (avltree_remove(&(*root)->right))
-          {
-            Free((*root)->right);
-            (*root)->right = NULL;
-          }
-      if (((*root)->left == NULL) && ((*root)->right == NULL))
-        delete_this_node = 1;
-    }
-  return delete_this_node;
-}
-
-
-/* INSERE UN NOEUD */
-
-int avltree_insert (avlstruct **root, void *item, 
-                    int (*fcmp)(void *a, void *b)){
-  int cmpresult;
-
-  if(*root != NULL)
-    cmpresult = fcmp(item,(*root)->treedata);
-
-  if (*root == NULL){
-    *root = (avlstruct *) Malloc (sizeof(avlstruct));
-    (*root)->treedata = item;
-    (*root)->left = NULL;
-    (*root)->right = NULL;
-  }
-  else if (cmpresult < 0)
-      avltree_insert(&(*root)->left,item,fcmp);
-  else
-      avltree_insert(&(*root)->right,item,fcmp);
-  return(1);    
-}
-
-
-
-/* EFFACE UN NOEUD */
-
-int avltree_delete (avlstruct **root, void *item, 
-                    int (*fcmp)(void *a, void *b)){
-
-  avlstruct     *t1,*t12;
-  int           cmpresult;
-
-  if(*root != NULL)    
-    cmpresult = fcmp(item , (*root)->treedata);
-  
-  if (*root == NULL) {
-    return(1);
-  }
-  if (cmpresult < 0){
-    return(avltree_delete(&(*root)->left,item,fcmp));
-  }  
-  else if (cmpresult > 0){
-    return(avltree_delete(&(*root)->right,item,fcmp));
-  }
-  else if ((cmpresult == 0))  {      
-    if (((*root)->right == NULL) && (&(*root)->left == NULL)){
-      Free(*root);
-      return(1);
-    }
-    else if((*root)->right == NULL){
-      t1 = (*root)->left;
-      Free(*root);
-      *root = t1;
-      return(1);
-    }
-    else if ((*root)->left == NULL){
-      t1 = (*root)->right;
-      Free(*root);
-      *root = t1;
-      return(1);
-    }
-    else{
-      t1 = t12 = (*root)->right;
-      while(t12->left != NULL)
-        t12 = t12->left;
-      t12->left = (*root)->left;
-      Free(*root);
-      *root = t1;
-      return(1);
-    }
-  }
-  else{
-    return(avltree_delete(&(*root)->left,item,fcmp));
-  }
-
-}
-
-/* compte le nombre d'elements d'un arbre */
-
-void avltree_count (avlptr root, int *numtri){
-
-  if(root != NULL){
-    avltree_count(root->left,numtri);
-    
-      (*numtri)++;
-    
-    avltree_count(root->right,numtri);
-  }
-}
-
-
-/* deroule l'arbre dans un vecteur */
-
-void avltree_print (avlptr root, Delaunay **listdel, int *numtri){
-  if(root != NULL){
-    avltree_print(root->left,listdel,numtri);
-    listdel[(*numtri)++] = (Delaunay*)(root)->treedata;    
-    avltree_print(root->right,listdel,numtri);
-  }
-}
-
diff --git a/Mesh/2D_Util.cpp b/Mesh/2D_Util.cpp
deleted file mode 100644
index 32dc5e8d6051a9fd8d04fffb906c58e09920c58a..0000000000000000000000000000000000000000
--- a/Mesh/2D_Util.cpp
+++ /dev/null
@@ -1,373 +0,0 @@
-// $Id: 2D_Util.cpp,v 1.12 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-#include "Context.h"
-
-extern Context_T     CTX;
-extern int           LocalNewPoint;
-extern PointRecord  *gPointArray;
-extern Mesh         *THEM;
-
-int Comparekey(void * d1,void  * d2){
-
-  double val ;
-  PointNumero a,b,c,aa,bb,cc;
-
-  a = ((Delaunay*)d1)->t.a;
-  b = ((Delaunay*)d1)->t.b;
-  c = ((Delaunay*)d1)->t.c;
-  aa = ((Delaunay*)d2)->t.a;
-  bb = ((Delaunay*)d2)->t.b;
-  cc = ((Delaunay*)d2)->t.c;
-
-  val = ((Delaunay*)d2)->t.quality_value - ((Delaunay*)d1)->t.quality_value;
-
-  if ((aa==a)&&(bb==b)&&(cc==c)){
-    return 0;
-  }
-  else if (val  > 1.e-21 )
-    return 1;
-  else if (val  < -1.e-21 )
-    return -1;
-  else{ 
-    if (((Delaunay*)d1)->t.xc > ((Delaunay*)d2)->t.xc)
-      return -1;
-    else 
-      return 1;    
-  }
-}
-
-int Insert_Triangle (avlstruct **root, Delaunay * del){
-
-  if ( !avltree_insert(root,del,Comparekey) ) return(0);
-
-  return(1);
-}
-
-int Delete_Triangle ( avlstruct **root, Delaunay * del ){
-
-  if (!avltree_delete(root,del,Comparekey)) return(0);  
-
-  if (*root == NULL) return(0);
-  return(1);
-}
-
-int Insert_Point (MPoint pt, int *numpoints, int *numalloc, 
-                  DocRecord *doc, DocRecord *BGM, int is3d){
-  Vertex *v,*dum;
-  double qual;
-
-  if ( *numpoints >= *numalloc ) {
-    gPointArray = (PointRecord *) Realloc(gPointArray, 
-                                          (*numalloc + 1000) * sizeof(PointRecord));
-    *numalloc += 1000;
-    doc->points = gPointArray;
-  }
-  PushgPointArray(gPointArray);
-  gPointArray[*numpoints].where.h = pt.h;
-  gPointArray[*numpoints].where.v = pt.v;
-  gPointArray[*numpoints].numcontour = -1;
-  gPointArray[*numpoints].initial = -1;
-  if(!is3d)
-    gPointArray[*numpoints].quality = find_quality(pt,BGM);
-  else{
-    v = Create_Vertex (-1,pt.h,pt.v,0.0,0.0,0.0);
-    Calcule_Z_Plan(&v, &dum);
-    Projette_Inverse(&v, &dum);
-    qual = Lc_XYZ ( v->Pos.X,v->Pos.Y,v->Pos.Z,THEM) ;
-    if(CTX.mesh.constrained_bgmesh)
-      gPointArray[*numpoints].quality = MIN(find_quality(pt,BGM),qual);
-    else 
-      gPointArray[*numpoints].quality = qual;
-    Free_Vertex(&v,0);
-  }
-    
-  (*numpoints)++;
-
-  return 1;
-}
-
-void findtree(avlptr root, double *qualm, Delaunay **delf, DocRecord *MESH){
-
-  /* 
-     trouve le triangle possedant le facteur de qualite max 
-     modif : le centre du cercle circonscrit de ce triangle
-     doit etre dans le domaine   
-  */
-
-  MPoint pt;
-  double q;
-  Delaunay *del;
-
-  if(root != NULL){
-    findtree((root)->left,qualm,delf,MESH);
-    del = (Delaunay*)root->treedata;
-    q = del->t.quality_value;
-    pt.h = del->t.xc;
-    pt.v = del->t.yc;
-    if ((q>*qualm) && (Find_Triangle (pt ,MESH,A_TOUT_PRIX) != NULL) ){
-      *qualm = q;
-      *delf = del;
-    }
-    findtree((root)->right,qualm,delf,MESH);
-  }
-}
-
-
-Delaunay *findrightest(avlptr root, DocRecord *MESH){
-
-  Delaunay *del,**dee;
-  MPoint pt;
-  avlptr exroot;
-  double qualm;
-
-  exroot = root;
-
-  while((exroot)->left != NULL){
-    exroot = (exroot)->left;
-  }
-
-  del = (Delaunay*)(exroot)->treedata;
-  pt.h = del->t.xc;
-  pt.v = del->t.yc;
-  if( (LocalNewPoint == VORONOI_INSERT) ||(LocalNewPoint == SQUARE_TRI) ) 
-    return del;
-
-  if(Find_Triangle(pt,MESH,A_TOUT_PRIX) != NULL )return del;
-  
-  exroot = root;
-  del = (Delaunay*)(root)->treedata;
-  qualm = del->t.quality_value;
-  dee = &del;
-  findtree(exroot, &qualm, dee, MESH);
-  del = *dee;
- 
-  return (del);    
-}
-
-double lengthseg (MPoint a, MPoint b){
-  return (pow(DSQR(a.h-b.h)+DSQR(a.v-b.v),0.5));
-}
-
-
-MPoint Localize (Delaunay * del , DocRecord *MESH) {
-
-  /*
-    Routine de localisation du point a inserer.
-    Variable globale LocalNewPoint :
-      - CENTER_CIRCCIRC : au centre du cercle circonscrit
-      - VORONOI_INSERT  : sur une branche de voronoi
-      - BARYCENTER      : au centre de gravite 
-      - SQUARE_TRI      : essaie de creer des triangles rectangles isoceles
-                          dans le but de mailler avec des quadrangles
-  */
-
-  MPoint       pt,pta,ptb,ptc,ptm;
-  PointNumero  a,b;
-  double       p,q,val,vec[2],ro,rm;
-  Delaunay    *v1,*v2,*v3,*del2 ;
-
-  switch (LocalNewPoint) {
-
-  case (CENTER_CIRCCIRC) :
-
-    pt.h = del->t.xc;
-    pt.v = del->t.yc;
-
-    return(pt);
-
-  case (BARYCENTER) :
-
-    pt.h = ( gPointArray[del->t.a].where.h + gPointArray[del->t.b].where.h 
-            + gPointArray[del->t.c].where.h ) /3.;
-    pt.v = ( gPointArray[del->t.a].where.v + gPointArray[del->t.b].where.v 
-            + gPointArray[del->t.c].where.v ) /3.;
-
-    return(pt);
-
-  case (VORONOI_INSERT) :
-  case (SQUARE_TRI) :
-
-    /* 
-       si le triangle est pres d'un bord -> ce bord est l'arete choisie
-    */
-    if ((v1 = del->v.voisin1) == NULL) {      
-      /* v1 == NULL; */
-      v2 = del->v.voisin2;
-      v3 = del->v.voisin3;
-    }
-    else if ((v2 = del->v.voisin2) == NULL) {      
-      v1 = NULL;
-      v2 = del->v.voisin1;
-      v3 = del->v.voisin3;
-    }
-    else if ((v3 = del->v.voisin3) == NULL) {      
-      v1 = NULL;
-      v2 = del->v.voisin1;
-      v3 = del->v.voisin2;
-    }
-    else {
-      v1 = del->v.voisin1;
-      v2 = del->v.voisin2;
-      v3 = del->v.voisin3;
-    }
-
-    /* 
-       Si l'arete est un bord -> 
-    */   
-    if (v1 == NULL){
-      
-      if((v2 != NULL) && (v3 != NULL) ) {
-        
-        if ( ((del->t.a == v2->t.a) || (del->t.a == v2->t.b) || (del->t.a == v2->t.c)) &&
-             ((del->t.a == v3->t.a) || (del->t.a == v3->t.b) || (del->t.a == v3->t.c))){
-          a = del->t.b;
-          b = del->t.c;
-        }
-        else if ( ((del->t.b == v2->t.a) || (del->t.b == v2->t.b) || (del->t.b == v2->t.c)) &&
-                  ((del->t.b == v3->t.a) || (del->t.b == v3->t.b) || (del->t.b == v3->t.c))){  
-          a = del->t.a;
-          b = del->t.c;
-        }
-        else if ( ((del->t.c == v2->t.a) || (del->t.c == v2->t.b) || (del->t.c == v2->t.c)) &&
-                  ((del->t.c == v3->t.a) || (del->t.c == v3->t.b) || (del->t.c == v3->t.c))){  
-          a = del->t.a;
-          b = del->t.b;
-        }
-        else{
-          Msg(GERROR, "Voronoi insert 1"); 
-        }
-      }      
-      else if(v2 != NULL) {     
-        if((del->t.a != v2->t.c) && (del->t.a != v2->t.c) && (del->t.a != v2->t.c)){      
-          a = del->t.a;
-          b = del->t.b;
-        }
-        else if((del->t.b != v2->t.c) && (del->t.b != v2->t.c) && (del->t.b != v2->t.c)){   
-          a = del->t.b;
-          b = del->t.c;
-        }
-        else if((del->t.c != v2->t.c) && (del->t.c != v2->t.c) && (del->t.c != v2->t.c)){   
-          a = del->t.a;
-          b = del->t.c;
-        }
-        else {
-          Msg(GERROR,"Voronoi insert 2"); 
-        }
-      }      
-      else if(v3 != NULL) {     
-        if((del->t.a != v3->t.c) && (del->t.a != v3->t.c) && (del->t.a != v3->t.c)){ 
-          a = del->t.a;
-          b = del->t.b;
-        }
-        else if((del->t.b != v3->t.c) && (del->t.b != v3->t.c) && (del->t.b != v3->t.c)){   
-          a = del->t.b;
-          b = del->t.c;
-        }
-        else if((del->t.c != v3->t.c) && (del->t.c != v3->t.c) && (del->t.c != v3->t.c)){  
-          a = del->t.a;
-          b = del->t.c;
-        }
-        else {
-          Msg(GERROR, "Voronoi insert 3"); 
-        }
-      }
-    }    
-    else {
-      if( v1->t.position == ACCEPTED )del2 = v1;
-      else if( v2->t.position == ACCEPTED )del2 = v2;
-      else if( v3->t.position == ACCEPTED )del2 = v3;
-      else {
-        Msg(GERROR,"Coherence in Localize"); 
-      }
- 
-      if((del->t.a != del2->t.a) && (del->t.a != del2->t.b) && (del->t.a != del2->t.c)){
-        a = del->t.b;
-        b = del->t.c;
-      }
-      else if((del->t.b != del2->t.a) && (del->t.b != del2->t.b) && (del->t.b != del2->t.c)){
-        a = del->t.a;
-        b = del->t.c;
-      }
-      else if((del->t.c != del2->t.a) && (del->t.c != del2->t.b) && (del->t.c != del2->t.c)){
-        a = del->t.a;
-        b = del->t.b;
-      }
-      else{
-        Msg(GERROR,"Voronoi insert"); 
-      }
-    }
-
-    /* 
-       On sait que l'arete du nouveau triangle est a b 
-    */
-
-    pta.h = gPointArray[a].where.h;
-    ptb.h = gPointArray[b].where.h;
-    pta.v = gPointArray[a].where.v;
-    ptb.v = gPointArray[b].where.v;
-
-    /*
-    pte.h = gPointArray[c].where.h;
-    pte.v = gPointArray[c].where.v;
-    */
-
-    p = 0.5 * lengthseg(pta,ptb);
-
-    ptc.h = del->t.xc;
-    ptc.v = del->t.yc;
-      
-    ptm.h = 0.5*( pta.h + ptb.h );
-    ptm.v = 0.5*( pta.v + ptb.v );
-    
-    q = lengthseg(ptm,ptc);
-
-    vec[0] = (ptc.h - ptm.h)/q; 
-    vec[1] = (ptc.v - ptm.v)/q;
-
-    val = (p*p + q*q) / (2.*q); 
-    
-    ro = find_quality(ptm,MESH)/RacineDeTrois;
-    
-    rm = ((ro  > q )? ro : ro  );      
-    rm = ((rm < val)? rm : val);
-
-    // WARNING RANDOM
-    
-    pt.h = ptm.h + vec[0] * (rm + pow( rm*rm - p * p,0.5 )) ;
-    //+ (double) (rand() % 1000) / 1.e8;
-    pt.v = ptm.v + vec[1] * (rm + pow( rm*rm - p * p,0.5 )) ;
-    //+ (double) (rand() % 1000) / 1.e8;
-
-    return(pt);
-  }
-
-  pt.h = 0.0;
-  pt.v = 0.0;
-  return pt;
-
-}
-  
-/********************************************************************/
-
-void alloue_Mai_Pts(maillage *mai , int Nballoc , int incrAlloc){
-  int i;
-
-  mai->points = (PointRecord *)Malloc(Nballoc*sizeof(PointRecord));
-  for(i=0;i<Nballoc;i++){
-    mai->points[i].where.h=0.0;
-    mai->points[i].where.v=0.0;
-  }
-  mai->IncrAllocPoints = incrAlloc;
-  mai->NumAllocPoints = Nballoc;
-}
-
-void alloue_Mai_Del(maillage *mai , int Nballoc , int incrAlloc){
-  mai->listdel = (delpeek *)Malloc(Nballoc * sizeof(delpeek));
-  mai->IncrAllocTri = incrAlloc;
-  mai->NumAllocTri = Nballoc;
-}
-
diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp
deleted file mode 100644
index 092e579a3e69698cd1660e75d428077b2a845e30..0000000000000000000000000000000000000000
--- a/Mesh/3D_BGMesh.cpp
+++ /dev/null
@@ -1,396 +0,0 @@
-// $Id: 3D_BGMesh.cpp,v 1.17 2001-04-25 20:42:39 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Mesh.h"
-#include "2D_Mesh.h"
-#include "3D_Mesh.h"
-#include "Adapt.h"
-#include "Views.h"
-#include "Numeric.h"
-#include "Context.h"
-
-extern Mesh *THEM;
-extern Context_T  CTX;
-
-static Mesh m;
-static double XX, YY, ZZ, D, LL;
-
-void ExportLcFieldOnVolume (Mesh * M){
-  List_T *l = Tree2List (M->Volumes);
-  Volume *vol;
-  Simplex *simp;
-  FILE *f = fopen ("OutFile.pos", "w");
-
-  if(!f){
-    Msg(GERROR, "Unable to open file");
-    return;
-  }
-
-  fprintf (f, "View \"LC_FIELD\" Offset{0,0,0} {\n");
-  for (int i = 0; i < List_Nbr (l); i++){
-    List_Read (l, i, &vol);
-    List_T *ll = Tree2List (vol->Simplexes);
-    for (int j = 0; j < List_Nbr (ll); j++){
-      List_Read (ll, j, &simp);
-      simp->ExportLcField (f);
-    }
-    List_Delete (ll);
-  }
-  List_Delete (l);
-  fprintf (f, "};\n");
-  fclose (f);
-}
-
-void ExportLcFieldOnSurfaces (Mesh * M){
-  List_T *l = Tree2List (M->Surfaces);
-  Surface *surf;
-  Simplex *simp;
-  FILE *f = fopen ("OutFileS.pos", "w");
-
-  if(!f){
-    Msg(GERROR, "Unable to open file");
-    return;
-  }
-
-  fprintf (f, "View \"LC_FIELD\" Offset{0,0,0} {\n");
-  for (int i = 0; i < List_Nbr (l); i++){
-    List_Read (l, i, &surf);
-    List_T *ll = Tree2List (surf->Simplexes);
-    for (int j = 0; j < List_Nbr (ll); j++){
-      List_Read (ll, j, &simp);
-      simp->ExportLcField (f);
-    }
-    List_Delete (ll);
-  }
-  List_Delete (l);
-  fprintf (f, "};\n");
-  fclose (f);
-}
-
-void findcloser (void *a, void *b){
-  Vertex *v;
-  double dd;
-  v = *(Vertex **) a;
-  dd = DSQR (v->Pos.X - XX) + DSQR (v->Pos.Y - YY) + DSQR (v->Pos.Z - ZZ);
-  if (dd < D){
-    D = dd;
-    LL = v->lc;
-  }
-}
-
-void LCBGM (double X, double Y, double Z, double *l){
-  if (Pt_In_Volume (X, Y, Z, &m, l, .01));
-  else if (Pt_In_Volume (X, Y, Z, &m, l, .02));
-  else if (Pt_In_Volume (X, Y, Z, &m, l, .07));
-  else if (Pt_In_Volume (X, Y, Z, &m, l, .1));
-  else if (Pt_In_Volume (X, Y, Z, &m, l, .2));
-  else if (Pt_In_Volume (X, Y, Z, &m, l, .8));
-  else if (Pt_In_Volume (X, Y, Z, &m, l, 20.));
-  else {
-    XX = X;
-    YY = Y;
-    ZZ = Z;
-    D = 1.e24;
-    LL = 1;
-    Tree_Action (m.Vertices, findcloser);
-    *l = LL;
-  }
-}
-
-double Lc_XYZ (double X, double Y, double Z, Mesh * m){
-  double l;
-
-  //l = 0.1 * fabs(cos(2 * 3.14159 * X) * cos( 2 * 3.14159 * Y))  + 0.01;
-  //return l;
-
-  switch (m->BGM.Typ){
-  case FUNCTION:
-    break;
-  case CONSTANT:
-    l = m->BGM.lc;
-    break;
-  case ONFILE:
-    LCBGM (X, Y, Z, &l);
-    break;
-  case WITHPOINTS:
-    Msg(WARNING, "Send a mail to <gmsh@geuz.org> if you see this (Lc_XYZ)");
-    if (Pt_In_Volume (X, Y, Z, m, &l, 0.0));
-    else if (Pt_In_Volume (X, Y, Z, m, &l, 0.2));
-    else if (Pt_In_Volume (X, Y, Z, m, &l, 0.5));
-    else{
-      Msg(GERROR, "Exterior Point (%g,%g,%g)", X, Y, Z);
-      l = 1.e-25;
-    }
-    break;
-  }
-  return CTX.mesh.lc_factor*l;
-}
-
-/* ------------------------------------------------------------------------ */
-/*  B G M W i t h V i e w                                                   */
-/* ------------------------------------------------------------------------ */
-
-static Tree_T *Pts;
-
-static void AIG (void *a, void *b){
-  Simplex *s = *(Simplex **) a;
-  AddSimplexInGrid (&m, s, BOITE);
-}
-
-int BGMWithView (Post_View * ErrView){
-  static Vertex *VertexUp, *v, V, *ver[4];
-  int i, j, k, nb;
-  double *X, *Y, *Z, *Val;
-  Simplex *si;
-
-  VertexUp = Create_Vertex (-1, 0., 0., 1., 1., -1.0);
-  Pts = Tree_Create (sizeof (Vertex *), comparePosition);
-
-  m.BGM.Typ = ONFILE;
-
-  m.Vertices = Tree_Create (sizeof (Vertex *), compareVertex);
-  m.Simplexes = Tree_Create (sizeof (Simplex *), compareSimplex);
-  Create_BgMesh (ONFILE, .2, THEM);
-
-
-  k = 1;
-  if(ErrView->NbST){
-    nb = List_Nbr(ErrView->ST) / ErrView->NbST ;
-    for(i = 0 ; i < List_Nbr(ErrView->ST) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->ST,i);
-      Y = (double*)List_Pointer_Fast(ErrView->ST,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->ST,i+6);
-      Val = (double*)List_Pointer_Fast(ErrView->ST,i+9);
-
-      for (j = 0; j < 3; j++){
-	v = &V;
-	v->Pos.X = X[j];
-	v->Pos.Y = Y[j];
-	v->Pos.Z = Z[j];
-	if (Tree_Query (Pts, &v)){
-	  ver[j] = v;
-	}
-	else{
-	  v = Create_Vertex (k++, X[j], Y[j], Z[j], Val[j], -1.0);
-	  ver[j] = v;
-	  Tree_Add (m.Vertices, &v);
-	  Tree_Add (Pts, &v);
-	}
-      }
-      si = Create_Simplex (ver[0], ver[1], ver[2], VertexUp);
-      Tree_Add (m.Simplexes, &si);
-    }
-  }
-
-  if(ErrView->NbSS){
-    nb = List_Nbr(ErrView->SS) / ErrView->NbSS ;
-    for(i = 0 ; i < List_Nbr(ErrView->SS) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->SS,i);
-      Y = (double*)List_Pointer_Fast(ErrView->SS,i+4);
-      Z = (double*)List_Pointer_Fast(ErrView->SS,i+8);
-      Val = (double*)List_Pointer_Fast(ErrView->SS,i+12);
-
-      for (j = 0; j < 4; j++){
-	v = &V;
-	v->Pos.X = X[j];
-	v->Pos.Y = Y[j];
-	v->Pos.Z = Z[j];
-	if (Tree_Query (Pts, &v)){
-	  ver[j] = v;
-	}
-	else{
-	  v = Create_Vertex (k++, X[j], Y[j], Z[j], Val[j], -1.0);
-	  ver[j] = v;
-	  Tree_Add (m.Vertices, &v);
-	  Tree_Add (Pts, &v);
-	}
-      }
-      si = Create_Simplex (ver[0], ver[1], ver[2], ver[3]);
-      Tree_Add (m.Simplexes, &si);
-    }
-  }
-
-  m.Grid.init = 0;
-  m.Grid.Nx = 10;
-  m.Grid.Ny = 10;
-  m.Grid.Nz = 10;
-  Tree_Action (m.Vertices, findminmax);
-  getminmax (&m.Grid.min.X, &m.Grid.min.Y, &m.Grid.min.Z,
-             &m.Grid.max.X, &m.Grid.max.Y, &m.Grid.max.Z);
-
-  if (m.Grid.max.Z == m.Grid.min.Z){
-    m.Grid.Nz = 1;
-    Tree_Add (m.Vertices, &VertexUp);
-    Tree_Action (m.Vertices, findminmax);
-    getminmax (&m.Grid.min.X, &m.Grid.min.Y, &m.Grid.min.Z,
-               &m.Grid.max.X, &m.Grid.max.Y, &m.Grid.max.Z);
-  }
-
-  Tree_Action (m.Simplexes, AIG);
-
-  Msg(INFO, "Background mesh loaded (%d nodes, %d elements)",
-      Tree_Nbr(m.Vertices), Tree_Nbr(m.Simplexes)); 
-
-  return (1);
-}
-
-
-double ErrorInView (Post_View * ErrView, int *n){
-  double e, tot=0.0, *Val;
-  int i, j=0, nb;
-
-  if(ErrView == NULL){
-    Msg(WARNING, "Empty error view");
-    return 0.;
-  }
-
-  if(ErrView->NbST){
-    nb = List_Nbr(ErrView->ST) / ErrView->NbST ;
-    for(i = 0 ; i < List_Nbr(ErrView->ST) ; i+=nb){
-      Val = (double*)List_Pointer_Fast(ErrView->ST,i+9);
-      e = (Val[0] + Val[1] + Val[2]) / 3. ;
-      tot += e * e;
-      j++;
-    }
-  }
-
-  if(ErrView->NbSS){
-    nb = List_Nbr(ErrView->SS) / ErrView->NbSS ;
-    for(i = 0 ; i < List_Nbr(ErrView->SS) ; i+=nb){
-      Val = (double*)List_Pointer_Fast(ErrView->SS,i+12);
-      e = (Val[0] + Val[1] + Val[2] + Val[3]) * 0.25 ;
-      tot += e * e;
-      j++;
-    }
-  }
-
-  *n = j;
-
-  return 100 * sqrt (tot);
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  C r e a t e B G M                                                       */
-/* ------------------------------------------------------------------------ */
-
-int CreateBGM (Post_View * ErrView, int OptiMethod, double Degree,
-               double OptiValue, double *ObjFunct, char *OutFile){
-  double *h, *p, *e, xc, yc, zc, c[3], *X, *Y, *Z, *Val;
-  int N, i, j, dim, nb;
-  Simplex smp;
-  FILE *f;
-
-  if (ErrView->NbSS)
-    dim = 3;
-  else
-    dim = 2;
-
-  N = ErrView->NbSS + ErrView->NbST + 2;
-
-  h = (double *) malloc (N * sizeof (double));
-  e = (double *) malloc (N * sizeof (double));
-  p = (double *) malloc (N * sizeof (double));
-
-  j = 0;
-
-  if(ErrView->NbST){
-    nb = List_Nbr(ErrView->ST) / ErrView->NbST ;
-    for(i = 0 ; i < List_Nbr(ErrView->ST) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->ST,i);
-      Y = (double*)List_Pointer_Fast(ErrView->ST,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->ST,i+6);
-      Val = (double*)List_Pointer_Fast(ErrView->ST,i+9);
-      /*
-	Attention, cette ligne est seulement valable en
-	2d x-y. Si plus, calculer le centre du cercle en
-	3d ou utiliser une autre mesure de taille.
-      */
-      CircumCircle (X[0], Y[0],
-		    X[1], Y[1],
-		    X[2], Y[2],
-		    &xc, &yc);
-      h[j + 1] = sqrt ((xc - X[0]) * (xc - X[0]) +
-		       (yc - Y[0]) * (yc - Y[0]));
-      p[j + 1] = Degree;
-      e[j + 1] = (Val[0] + Val[1] + Val[2]) / 3. ;
-      j++;
-    }
-  }
-
-  if(ErrView->NbSS){
-    nb = List_Nbr(ErrView->SS) / ErrView->NbSS ;
-    for(i = 0 ; i < List_Nbr(ErrView->SS) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->SS,i);
-      Y = (double*)List_Pointer_Fast(ErrView->SS,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->SS,i+8);
-      Val = (double*)List_Pointer_Fast(ErrView->SS,i+12);
-    
-      smp.center_tet (X, Y, Z, c);
-      xc = c[0];
-      yc = c[1];
-      zc = c[2];
-    
-      h[j + 1] = sqrt ((xc - X[0]) * (xc - X[0]) +
-		       (yc - X[0]) * (yc - X[0]) +
-		       (zc - Y[0]) * (zc - Y[0]));
-      p[j + 1] = Degree;
-      e[j + 1] = (Val[0] + Val[1] + Val[2] + Val[3]) * 0.25;
-      j++;
-    }
-  }
-
-  *ObjFunct = AdaptMesh (j, OptiMethod, dim, e, h, p, OptiValue);
-
-  f = fopen (OutFile, "w");
-
-  if(!f){
-    Msg(GERROR, "Unable to open file '%s'", OutFile);
-    return 0;
-  }
-
-  fprintf (f, "View \"Auto_BGMesh\" Offset{0,0,0} {\n");
-
-  j = 0;
-
-  if(ErrView->NbST){
-    nb = List_Nbr(ErrView->ST) / ErrView->NbST ;
-    for(i = 0 ; i < List_Nbr(ErrView->ST) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->ST,i);
-      Y = (double*)List_Pointer_Fast(ErrView->ST,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->ST,i+6);
-      Val = (double*)List_Pointer_Fast(ErrView->ST,i+9);
-      fprintf (f, "ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n",
-	       X[0], Y[0], Z[0],
-	       X[1], Y[1], Z[1],
-	       X[2], Y[2], Z[2],
-	       h[j], h[j], h[j]);
-      j++;
-    }
-  }
-
-  if(ErrView->NbSS){
-    nb = List_Nbr(ErrView->SS) / ErrView->NbSS ;
-    for(i = 0 ; i < List_Nbr(ErrView->SS) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->SS,i);
-      Y = (double*)List_Pointer_Fast(ErrView->SS,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->SS,i+8);
-      Val = (double*)List_Pointer_Fast(ErrView->SS,i+12);
-      fprintf (f, "SS(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g,%g};\n",
-	       X[0], Y[0], Z[0],
-	       X[1], Y[1], Z[1],
-	       X[2], Y[2], Z[2],
-	       X[3], Y[3], Z[3],
-	       h[j], h[j], h[j], h[j]);
-      j++;
-    }
-  }
-  fprintf (f, "};\n");
-  fclose (f);
-
-  Msg(INFO, "Background mesh written in '%s'", OutFile); 
-
-  return 1;
-
-}
-
diff --git a/Mesh/3D_Bricks.cpp b/Mesh/3D_Bricks.cpp
deleted file mode 100644
index 9c02ee80172672bde0fbed2223cf55b39c619d3b..0000000000000000000000000000000000000000
--- a/Mesh/3D_Bricks.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-// $Id: 3D_Bricks.cpp,v 1.7 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-
-Brick LaBrique (Grid_T * pGrid, double X, double Y, double Z){
-  int Ix, Iy, Iz, index;
-  Brick B;
-
-  B.N = -1;
-  B.pT = NULL;
-  if (X > pGrid->max.X || X < pGrid->min.X || Y > pGrid->max.Y ||
-      Y < pGrid->min.Y || Z > pGrid->max.Z || Z < pGrid->min.Z){
-    return (B);
-  }
-
-  Ix = (int) ((double) pGrid->Nx * (X - pGrid->min.X) / (pGrid->max.X - pGrid->min.X));
-  Iy = (int) ((double) pGrid->Ny * (Y - pGrid->min.Y) / (pGrid->max.Y - pGrid->min.Y));
-  Iz = (int) ((double) pGrid->Nz * (Z - pGrid->min.Z) / (pGrid->max.Z - pGrid->min.Z));
-  Ix = IMIN (Ix, pGrid->Nx - 1);
-  Iy = IMIN (Iy, pGrid->Ny - 1);
-  Iz = IMIN (Iz, pGrid->Nz - 1);
-
-  if (Ix < 0)
-    Ix = 0;
-  if (Iy < 0)
-    Iy = 0;
-  if (Iz < 0)
-    Iz = 0;
-
-  index = Ix + Iy * pGrid->Nx + Iz * pGrid->Nx * pGrid->Ny;
-  List_Read (pGrid->Bricks, index, &B);
-  return (B);
-}
-
-
-int DEBUT = 0;
-Coord MINIM, MAXIM;
-
-void getminmax (double *xmin, double *ymin, double *zmin,
-                double *xmax, double *ymax, double *zmax){
-
-  double dx, dy, dz, f;
-
-  dx = MAXIM.X - MINIM.X;
-  dy = MAXIM.Y - MINIM.Y;
-  dz = MAXIM.Z - MINIM.Z;
-  f = .1;
-
-  *xmin = MINIM.X - f * dx;
-  *ymin = MINIM.Y - f * dy;
-  *zmin = MINIM.Z - f * dz;
-  *xmax = MAXIM.X + f * dx;
-  *ymax = MAXIM.Y + f * dy;
-  *zmax = MAXIM.Z + f * dz;
-}
-
-void findminmax (void *a, void *b){
-
-  Vertex *v;
-  v = *(Vertex **) a;
-
-  if (!DEBUT){
-    MINIM.X = DMIN (MINIM.X, v->Pos.X);
-    MAXIM.X = DMAX (MAXIM.X, v->Pos.X);
-    MINIM.Y = DMIN (MINIM.Y, v->Pos.Y);
-    MAXIM.Y = DMAX (MAXIM.Y, v->Pos.Y);
-    MINIM.Z = DMIN (MINIM.Z, v->Pos.Z);
-    MAXIM.Z = DMAX (MAXIM.Z, v->Pos.Z);
-  }
-  else{
-    DEBUT = 0;
-    MINIM.X = v->Pos.X;
-    MAXIM.X = v->Pos.X;
-    MINIM.Y = v->Pos.Y;
-    MAXIM.Y = v->Pos.Y;
-    MINIM.Z = v->Pos.Z;
-    MAXIM.Z = v->Pos.Z;
-  }
-}
-
-
-void AddSimplexInGrid (Mesh * m, Simplex * s, int boule_boite){
-
-  double XminBox, XmaxBox, YminBox, YmaxBox, ZmaxBox, ZminBox;
-  int Ix1, Ix2, Iy1, Iy2, Iz1, Iz2;
-  int i, j, k, index;
-  Brick Br, *pBrick;
-
-  if (!m->Grid.init){
-    m->Grid.Bricks = List_Create (m->Grid.Nx * m->Grid.Ny * m->Grid.Nz, 10, sizeof (Brick));
-    for (i = 0; i < m->Grid.Nx * m->Grid.Ny * m->Grid.Nz; i++){
-      Br.pT = List_Create (2, 2, sizeof (Simplex *));
-      Br.N = i + 1;
-      List_Add (m->Grid.Bricks, &Br);
-    }
-    m->Grid.init = 1;
-  }
-  
-  if (boule_boite == BOITE){
-    XminBox = XmaxBox = s->V[0]->Pos.X;
-    YminBox = YmaxBox = s->V[0]->Pos.Y;
-    ZminBox = ZmaxBox = s->V[0]->Pos.Z;
-    for (i = 1; i < 4; i++){
-      XminBox = DMIN (XminBox, s->V[i]->Pos.X);
-      XmaxBox = DMAX (XmaxBox, s->V[i]->Pos.X);
-      YminBox = DMIN (YminBox, s->V[i]->Pos.Y);
-      YmaxBox = DMAX (YmaxBox, s->V[i]->Pos.Y);
-      ZminBox = DMIN (ZminBox, s->V[i]->Pos.Z);
-      ZmaxBox = DMAX (ZmaxBox, s->V[i]->Pos.Z);
-    }
-  }
-  else if (boule_boite == BOULE){
-    XminBox = s->Center.X - s->Radius;
-    XmaxBox = s->Center.X + s->Radius;
-    YminBox = s->Center.Y - s->Radius;
-    YmaxBox = s->Center.Y + s->Radius;
-    ZminBox = s->Center.Z - s->Radius;
-    ZmaxBox = s->Center.Z + s->Radius;
-  }
-  
-
-  Ix1 = (int) ((double) m->Grid.Nx * (XminBox - m->Grid.min.X) /
-               (m->Grid.max.X - m->Grid.min.X));
-  Ix2 = (int) ((double) m->Grid.Nx * (XmaxBox - m->Grid.min.X) /
-               (m->Grid.max.X - m->Grid.min.X));
-  Iy1 = (int) ((double) m->Grid.Ny * (YminBox - m->Grid.min.Y) /
-               (m->Grid.max.Y - m->Grid.min.Y));
-  Iy2 = (int) ((double) m->Grid.Ny * (YmaxBox - m->Grid.min.Y) /
-               (m->Grid.max.Y - m->Grid.min.Y));
-  Iz1 = (int) ((double) m->Grid.Nz * (ZminBox - m->Grid.min.Z) /
-               (m->Grid.max.Z - m->Grid.min.Z));
-  Iz2 = (int) ((double) m->Grid.Nz * (ZmaxBox - m->Grid.min.Z) /
-               (m->Grid.max.Z - m->Grid.min.Z));
-
-  Ix1 = IMAX (Ix1, 0);
-  Ix2 = IMIN (Ix2, m->Grid.Nx - 1);
-  Iy1 = IMAX (Iy1, 0);
-  Iy2 = IMIN (Iy2, m->Grid.Ny - 1);
-  Iz1 = IMAX (Iz1, 0);
-  Iz2 = IMIN (Iz2, m->Grid.Nz - 1);
-
-  for (i = Ix1; i <= Ix2; i++){
-    for (j = Iy1; j <= Iy2; j++){
-      for (k = Iz1; k <= Iz2; k++){
-        index = i + j * m->Grid.Nx + k * m->Grid.Nx * m->Grid.Ny;
-        pBrick = (Brick *) List_Pointer (m->Grid.Bricks, index);
-        List_Add (pBrick->pT, &s);
-      }
-    }
-  }
-
-}
diff --git a/Mesh/3D_Coherence.cpp b/Mesh/3D_Coherence.cpp
deleted file mode 100644
index c493d0eeeea72201e9f11cb9344734aba4a16fd0..0000000000000000000000000000000000000000
--- a/Mesh/3D_Coherence.cpp
+++ /dev/null
@@ -1,1550 +0,0 @@
-// $Id: 3D_Coherence.cpp,v 1.16 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "3D_Mesh.h"
-#include "Create.h"
-
-extern Mesh *THEM;
-extern int CurrentNodeNumber, FACE_DIMENSION;
-extern Simplex MyNewBoundary;
-
-static Volume *THEVOL;
-static Edge *TheEdge;
-static Face *TheFace;
-static List_T  *Teti;
-
-List_T *Missing, *MissingF, *MissingS;
-Tree_T *EdgesTree, *FacesTree, *swaps;
-
-int edges_quad[4][2] = { {0, 1},
-                         {1, 2},
-                         {2, 3},
-                         {3, 0} };
-int edges_tetra[6][2] = { {0, 1},
-                          {1, 2},
-                          {2, 0},
-                          {3, 0},
-                          {3, 2},
-                          {3, 1} };
-int edges_non[3] = {2, 0, 1};
-int EdgesInVolume = 1;
-
-int memesens (Vertex * v1, Vertex * v2, Vertex * v3,
-              Vertex * c1, Vertex * c2, Vertex * c3){
-  double v12[3], v13[3], n1[3], n2[3], p;
-
-  v12[0] = c1->Pos.X - c2->Pos.X;
-  v12[1] = c1->Pos.Y - c2->Pos.Y;
-  v12[2] = c1->Pos.Z - c2->Pos.Z;
-
-  v13[0] = c1->Pos.X - c3->Pos.X;
-  v13[1] = c1->Pos.Y - c3->Pos.Y;
-  v13[2] = c1->Pos.Z - c3->Pos.Z;
-
-  prodve (v12, v13, n1);
-
-  v12[0] = v1->Pos.X - v2->Pos.X;
-  v12[1] = v1->Pos.Y - v2->Pos.Y;
-  v12[2] = v1->Pos.Z - v2->Pos.Z;
-
-  v13[0] = v1->Pos.X - v3->Pos.X;
-  v13[1] = v1->Pos.Y - v3->Pos.Y;
-  v13[2] = v1->Pos.Z - v3->Pos.Z;
-
-  prodve (v12, v13, n2);
-
-  prosca (n1, n2, &p);
-
-  return ((p > 0) ? 1 : 0);
-}
-
-static void pvertex (void *a, void *b){
-  /*
-  Vertex *v;
-  v = (Vertex *) a;
-  printf ("noeud %d = (%12.5E,%12.5E,%12.5E)\n", v->Num, v->Pos.X, v->Pos.Y, v->Pos.Z);
-  */
-}
-
-static void pedge (void *a, void *b){
-  /*
-  Edge *e;
-  e = (Edge *) a;
-  printf ("arete %d (%12.5E,%12.5E,%12.5E) -> %d (%12.5E,%12.5E,%12.5E)\n",
-          e->V[0]->Num, e->V[0]->Pos.X, e->V[0]->Pos.Y, e->V[0]->Pos.Z,
-          e->V[1]->Num, e->V[1]->Pos.X, e->V[1]->Pos.Y, e->V[1]->Pos.Z);
-  */
-}
-
-void find_quads (void *a, void *b){
-  Edge *q;
-  Edge diag;
-  Simplex *s1, *s2;
-  q = (Edge *) a;
-
-  if (!List_Search (Missing, q, compareedge))
-    return;
-
-  if (List_Nbr (q->Simplexes) != 2)
-    return;
-
-  List_Read (q->Simplexes, 0, &s1);
-  List_Read (q->Simplexes, 1, &s2);
-  if (s1->iEnt != s2->iEnt)
-    return;
-  if (!q->O[1])
-    return;
-
-  diag.V[0] = q->O[0];
-  diag.V[1] = q->O[1];
-
-  if (Tree_Search (EdgesTree, &diag)){
-    Tree_Add (swaps, q);
-  }
-}
-
-void swap_quads (void *a, void *b){
-  Edge *q;
-  int i, K;
-  Simplex *s1, *s2;
-  Vertex *temp[3], *kk[3];
-  q = (Edge *) a;
-  List_Read (q->Simplexes, 0, &s1);
-  List_Read (q->Simplexes, 1, &s2);
-
-  K = -1;
-
-  for (i = 0; i < 3; i++){
-    if (!compareVertex (&q->O[0], &s1->V[i]))
-      K = i;
-    temp[i] = s1->V[i];
-  }
-  /*
-    printf("s1 : %d %d %d ->",s1->V[0]->Num,s1->V[1]->Num,s1->V[2]->Num);
-  */
-  kk[0] = q->O[0];
-  kk[1] = (K == 2) ? s1->V[0] : s1->V[K + 1];
-  kk[2] = q->O[1];
-
-  s1->V[0] = kk[0];
-  s1->V[1] = kk[1];
-  s1->V[2] = kk[2];
-  /*
-    printf("%d %d %d \n",s1->V[0]->Num,s1->V[1]->Num,s1->V[2]->Num);
-  */
-  s1->F[0].V[0] = s1->V[0];
-  s1->F[0].V[1] = s1->V[1];
-  s1->F[0].V[2] = s1->V[2];
-
-  /*
-    printf("s2 : %d %d %d ->",s2->V[0]->Num,s2->V[1]->Num,s2->V[2]->Num);
-  */
-  s2->V[0] = q->O[1];
-  s2->V[1] = (K == 0) ? temp[2] : temp[K - 1];
-  s2->V[2] = q->O[0];
-  /*
-    printf("%d %d %d \n",s2->V[0]->Num,s2->V[1]->Num,s2->V[2]->Num);
-  */
-  s2->F[0].V[0] = s2->V[0];
-  s2->F[0].V[1] = s2->V[1];
-  s2->F[0].V[2] = s2->V[2];
-
-  qsort (s1->F[0].V, 3, sizeof (Vertex *), compareVertex);
-  qsort (s2->F[0].V, 3, sizeof (Vertex *), compareVertex);
-
-  List_Suppress (Missing, q, compareedge);
-  q->V[0] = q->O[0];
-  q->V[1] = q->O[1];
-}
-
-
-void swap_quads2 (void *a, void *b){
-  Edge *q;
-  Simplex *s1, *s2;
-
-  q = (Edge *) a;
-  List_Read (q->Simplexes, 0, &s1);
-  List_Read (q->Simplexes, 1, &s2);
-
-  if (memesens (s1->V[0], s1->V[1], s1->V[2], q->O[0], q->O[1], q->V[0])){
-    s1->V[0] = q->O[0];
-    s1->V[1] = q->O[1];
-    s1->V[2] = q->V[0];
-  }
-  else{
-    s1->V[0] = q->O[1];
-    s1->V[1] = q->O[0];
-    s1->V[2] = q->V[0];
-  }
-
-  if (memesens (s2->V[0], s2->V[1], s2->V[2], q->O[0], q->O[1], q->V[1])){
-    s2->V[0] = q->O[0];
-    s2->V[1] = q->O[1];
-    s2->V[2] = q->V[1];
-  }
-  else{
-    s2->V[0] = q->O[1];
-    s2->V[1] = q->O[0];
-    s2->V[2] = q->V[1];
-  }
-
-  s1->F[0].V[0] = s1->V[0];
-  s1->F[0].V[1] = s1->V[1];
-  s1->F[0].V[2] = s1->V[2];
-
-  s2->F[0].V[0] = s2->V[0];
-  s2->F[0].V[1] = s2->V[1];
-  s2->F[0].V[2] = s2->V[2];
-
-  qsort (s1->F[0].V, 3, sizeof (Vertex *), compareVertex);
-  qsort (s2->F[0].V, 3, sizeof (Vertex *), compareVertex);
-
-  List_Suppress (Missing, q, compareedge);
-  q->V[0] = q->O[0];
-  q->V[1] = q->O[1];
-
-}
-
-void create_Quads (Volume * V){
-  int i;
-  Surface *S;
-  swaps = Tree_Create (sizeof (Edge), compareedge);
-  for (i = 0; i < List_Nbr (V->Surfaces); i++){
-    List_Read (V->Surfaces, i, &S);
-    Tree_Action (S->Edges, find_quads);
-  }
-  Tree_Action (swaps, swap_quads2);
-}
-
-void create_Fac (void *a, void *b){
-  Simplex **ps, *s;
-  int i;
-  ps = (Simplex **) a;
-  s = *ps;
-  for (i = 0; i < 4; i++){
-    Tree_Insert (FacesTree, &s->F[i]);
-  }
-}
-
-
-void create_Faces (Volume * V){
-  if(V->Faces)
-    {
-      Tree_Delete (V->Faces);
-    }
-  V->Faces = Tree_Create (sizeof (Face), compareFace);
-  FacesTree = V->Faces;
-  Tree_Action (V->Simplexes, create_Fac);
-}
-
-void create_Edge (void *a, void *b){
-  Simplex **ps, *s;
-  int N, i, j;
-  Edge E, *pE;
-  ps = (Simplex **) a;
-  s = *ps;
-  int edges[6][2];
-
-  if (s->V[3] && EdgesInVolume){
-    N = 6;
-    for (i = 0; i < N; i++)
-        for (j = 0; j < 2; j++)
-          edges[i][j] = edges_tetra[i][j];
-  }
-  else if (s->V[3]){
-    N = 4;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_quad[i][j];
-  }
-  else if (s->V[2]){
-    N = 3;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_tetra[i][j];
-  }
-  else{
-    N = 1;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_tetra[i][j];
-  }
-
-  for (i = 0; i < N; i++){
-    E.V[0] = s->V[edges[i][0]];
-    E.V[1] = s->V[edges[i][1]];
-    if ((pE = (Edge *) Tree_PQuery (EdgesTree, &E))){
-      List_Add (pE->Simplexes, ps);
-      if (N == 3)
-        pE->O[1] = s->V[edges_non[i]];
-    }
-    else{
-      E.Simplexes = List_Create (2, 1, sizeof (Simplex *));
-      if (N == 3)
-        E.O[0] = s->V[edges_non[i]];
-      if (N == 3)
-        E.O[1] = NULL;
-      List_Add (E.Simplexes, &s);
-      E.newv = NULL;
-      Tree_Replace (EdgesTree, &E);
-    }
-  }
-}
-
-void create_Edges (Volume * V){
-  int i;
-  Surface *S;
-
-  // MEMORY LEAK (JF)
-  if(V->Edges)
-    {
-      Tree_Action(V->Edges,Free_Edge);
-      Tree_Delete(V->Edges);
-    }
-
-  V->Edges = Tree_Create (sizeof (Edge), compareedge);
-  EdgesTree = V->Edges;
-
-  Tree_Action (V->Simplexes, create_Edge);
-  for (i = 0; i < List_Nbr (V->Surfaces); i++){
-    List_Read (V->Surfaces, i, &S);
-    // MEMORY LEAK (JF)
-    if(S->Edges)
-      {
-	// BUG BUG BUG (This causes crash)
-	//Tree_Action(S->Edges,Free_Edge);
-	Tree_Delete(S->Edges);
-      }
-    S->Edges = Tree_Create (sizeof (Edge), compareedge);
-    EdgesTree = S->Edges;
-    Tree_Action (S->Simplexes, create_Edge);
-  }
-}
-
-
-void crEdges (Tree_T * TreeElem, Tree_T * treeedges){
-  EdgesTree = treeedges;
-  Tree_Action (TreeElem, create_Edge);
-}
-
-
-void find_missing (void *a, void *b){
-  Edge *e;
-
-  e = (Edge *) a;
-
-  if (!Tree_Search (EdgesTree, e)){
-    List_Add (Missing, e);
-    Tree_Add (EdgesTree, e);
-  }
-}
-
-void find_missingf (void *a, void *b){
-  Simplex *s;
-  s = *(Simplex **) a;
-
-  if (!FacesTree || !Tree_Search (FacesTree, &s->F[0])){
-    List_Add (MissingF, &s->F[0]);
-    List_Add (MissingS, &s);
-  }
-}
-
-
-List_T *Missing_Edges (Volume * V){
-  int i;
-  Surface *S;
-  Missing = List_Create (10, 10, sizeof (Edge));
-
-  EdgesTree = V->Edges;
-  for (i = 0; i < List_Nbr (V->Surfaces); i++){
-    List_Read (V->Surfaces, i, &S);
-    Tree_Action (S->Edges, find_missing);
-  }
-  return Missing;
-}
-
-List_T *Missing_Faces (Volume * V){
-  int i;
-  Surface *S;
-  MissingF = List_Create (10, 10, sizeof (Face));
-  MissingS = List_Create (10, 10, sizeof (Simplex *));
-
-  for (i = 0; i < List_Nbr (V->Surfaces); i++){
-    List_Read (V->Surfaces, i, &S);
-    Tree_Action (S->Simplexes, find_missingf);
-  }
-  return MissingF;
-}
-
-/* Creation de listes de tetraedres qui intersectent
-   l'arete TheEdge */
-
-List_T *traite;
-Tree_T *traited;
-
-void Ajoute_traite (Simplex ** s){
-  if (!Tree_Search (traited, s)){
-    List_Add (traite, s);
-    Tree_Add (traited, s);
-  }
-}
-
-Intersection *thei;
-Vertex *m1, *m2, *e1, *e2;
-Face *f1;
-int Cloture;
-
-void fillRi (void *a, void *b){
-  int i, c;
-  Simplex *s;
-
-  s = *(Simplex **) a;
-  c = 0;
-  for (i = 0; i < 4; i++){
-    if (!compareVertex (&e1, &s->V[i]))
-      c++;
-    if (!compareVertex (&e2, &s->V[i]))
-      c++;
-  }
-  if (c == 2){
-    Ajoute_traite (&s);
-  }
-}
-
-void fillTeti (void *a, void *b){
-  int i;
-  Simplex *s;
-
-  s = *(Simplex **) a;
-  for (i = 0; i < 4; i++){
-    if (!compareVertex (&m1, &s->V[i])){
-      List_Add (Teti, &s);
-      return;
-    }
-  }
-}
-
-Tree_T *TreexNewv;
-
-typedef struct{
-  int ef;
-  Edge e;
-  Face *f;
-  Vertex *newv;
-} xNewv;
-
-int compxNewv (const void *a, const void *b){
-  xNewv *q, *w;
-
-  q = (xNewv *) a;
-  w = (xNewv *) b;
-  if (q->ef != w->ef)
-    return (q->ef - w->ef);
-  if (q->ef == 1)
-    return compareedge (&q->e, &w->e);
-  if (q->ef == 2)
-    return compareFace (q->f, w->f);
-  return 1;
-}
-
-/* 
-   ---------------------------------------------------
-   Pour + de details, voir les travaux de P.L. George.
-   ---------------------------------------------------
-
-   Les routines ci dessous ont pour but de retrouver les
-   aretes manquantes d'un maillage initial 3-D.
-
-   En resume, il faut d'abord trouver ces aretes : find_missing
-
-   Ensuite, il faut decouvrir les intersections des aretes manquantes
-   avec les tetraedres du maillage, les intersections sont de plusieurs 
-   types :
-
-   intersection noeud-noeud (type 1)
-   intersection arete-face  (type 2)
-   intersection face -face  (type 3)
-   intersection arete-arete (type 4)
-   intersection face -noeud (type 5)
-   intersection arete-noeud (type 6)
-   intersection noeud seul  (type 7)
-   intersection arete seule (type 8)
-
-   Selon le type d'intersection, on appliquera une transformation locale au maillage
-   de telle sorte que l'arete manquante est recouvree.
- */
-
-
-#define eps_prec (-1.e-10)
-
-int Edge_Node (Edge * e, Vertex * v){
-  double u=0.0, lc;
-
-  if (!compareVertex (&e->V[0], &v))
-    return 1;
-  if (!compareVertex (&e->V[1], &v))
-    return 1;
-
-  lc = myhypot (myhypot (e->V[0]->Pos.X - e->V[1]->Pos.X, e->V[0]->Pos.Y - e->V[1]->Pos.Y),
-                e->V[0]->Pos.Z - e->V[1]->Pos.Z);
-  
-  if (e->V[0]->Pos.X != e->V[1]->Pos.X){
-    u = (v->Pos.X - e->V[0]->Pos.X) / (e->V[1]->Pos.X - e->V[0]->Pos.X);
-  }
-  else if (e->V[0]->Pos.Y != e->V[1]->Pos.Y){
-    u = (v->Pos.Y - e->V[0]->Pos.Y) / (e->V[1]->Pos.Y - e->V[0]->Pos.Y);
-  }
-  else if (e->V[0]->Pos.Z != e->V[1]->Pos.Z){
-    u = (v->Pos.Z - e->V[0]->Pos.Z) / (e->V[1]->Pos.Z - e->V[0]->Pos.Z);
-  }
-  
-  if (u < -eps_prec || u > 1. + eps_prec)
-    return 0;
-  if (fabs ((1. - u) * e->V[0]->Pos.X + u * e->V[1]->Pos.X - v->Pos.X) > 1.e-7 * lc){
-    return 0;
-  }
-  if (fabs ((1. - u) * e->V[0]->Pos.Y + u * e->V[1]->Pos.Y - v->Pos.Y) > 1.e-7 * lc){
-    return 0;
-  }
-  if (fabs ((1. - u) * e->V[0]->Pos.Z + u * e->V[1]->Pos.Z - v->Pos.Z) > 1.e-7 * lc){
-    return 0;
-  }
-  return 2;
-}
-
-List_T *SurfComm (List_T * S1, List_T * S2){
-  int i;
-  List_T *List;
-  Surface *s;
-  List = List_Create (2, 2, sizeof (Surface *));
-
-  if (!S1 || !S2)
-    return List;
-
-  for (i = 0; i < List_Nbr (S1); i++){
-    List_Read (S1, i, &s);
-    if (List_Search (S2, &s, compareSurface))
-      List_Add (List, &s);
-  }
-  return List;
-}
-
-
-Vertex *Edge_Face (Edge * e, Face * f){
-  Vertex *v;
-
-  double mat[3][3], det;
-  double b[3], res[3];
-
-  if (!compareVertex (&e->V[0], &f->V[0]))
-    return NULL;
-  if (!compareVertex (&e->V[0], &f->V[1]))
-    return NULL;
-  if (!compareVertex (&e->V[0], &f->V[2]))
-    return NULL;
-  if (!compareVertex (&e->V[1], &f->V[0]))
-    return NULL;
-  if (!compareVertex (&e->V[1], &f->V[1]))
-    return NULL;
-  if (!compareVertex (&e->V[1], &f->V[2]))
-    return NULL;
-
-  mat[0][0] = f->V[1]->Pos.X - f->V[0]->Pos.X;
-  mat[0][1] = f->V[2]->Pos.X - f->V[0]->Pos.X;
-  mat[0][2] = e->V[0]->Pos.X - e->V[1]->Pos.X;
-
-  mat[1][0] = f->V[1]->Pos.Y - f->V[0]->Pos.Y;
-  mat[1][1] = f->V[2]->Pos.Y - f->V[0]->Pos.Y;
-  mat[1][2] = e->V[0]->Pos.Y - e->V[1]->Pos.Y;
-
-  mat[2][0] = f->V[1]->Pos.Z - f->V[0]->Pos.Z;
-  mat[2][1] = f->V[2]->Pos.Z - f->V[0]->Pos.Z;
-  mat[2][2] = e->V[0]->Pos.Z - e->V[1]->Pos.Z;
-
-  b[0] = e->V[0]->Pos.X - f->V[0]->Pos.X;
-  b[1] = e->V[0]->Pos.Y - f->V[0]->Pos.Y;
-  b[2] = e->V[0]->Pos.Z - f->V[0]->Pos.Z;
-
-  if (!sys3x3 (mat, b, res, &det))
-    return NULL;
-
-  /* res donne les coordonnees u,v de l'intersection dans la
-     face et donne w la coordonnee de l'intersection dans
-     l'arete
-  */
-  /* coordonnees dans l'arete */
-  if (res[2] >= 1.0 - eps_prec || res[2] <= eps_prec)
-    return NULL;
-
-  /* coordonnees dans la face */
-  if (res[0] >= 1.0 + eps_prec || res[0] <= -eps_prec)
-    return NULL;
-  if (res[1] <= -eps_prec || res[1] >= 1. + eps_prec - res[0])
-    return NULL;
-
-
-  if (res[0] == 1.0 || res[2] == 0.0 || res[0] == 0.0 ||
-      res[1] == 1. - res[0] || res[1] == 0.0 || res[0] == 1.0){
-    Msg(DEBUG1, "Face p1  %g %g %g", f->V[0]->Pos.X, f->V[0]->Pos.Y, f->V[0]->Pos.Z);
-    Msg(DEBUG2, "facette p2  %g %g %g", f->V[1]->Pos.X, f->V[1]->Pos.Y, f->V[1]->Pos.Z);
-    Msg(DEBUG2, "facette p3  %g %g %g", f->V[2]->Pos.X, f->V[2]->Pos.Y, f->V[2]->Pos.Z);
-    Msg(DEBUG2, "edge    e2  %g %g %g", e->V[0]->Pos.X, e->V[0]->Pos.Y, e->V[0]->Pos.Z);
-    Msg(DEBUG2, "edge    e3  %g %g %g", e->V[1]->Pos.X, e->V[1]->Pos.Y, e->V[1]->Pos.Z);
-    Msg(DEBUG3, "%g %g %g", res[0], res[1], res[2]);
-  }
-
-  v = Create_Vertex (++CurrentNodeNumber,
-                     (1. - res[2]) * e->V[0]->Pos.X + res[2] * e->V[1]->Pos.X,
-                     (1. - res[2]) * e->V[0]->Pos.Y + res[2] * e->V[1]->Pos.Y,
-                     (1. - res[2]) * e->V[0]->Pos.Z + res[2] * e->V[1]->Pos.Z,
-                     (1. - res[2]) * e->V[0]->lc + res[2] * e->V[1]->lc, 0.0);
-  v->ListSurf = List_Create (1, 1, sizeof (Surface *));
-
-  return v;
-}
-
-
-Vertex *Edge_Edge (Edge * e, Vertex * v1, Vertex * v2){
-  Vertex *v;
-  int dir;
-  //int dx1, dx2, dy1, dy2, dz1, dz2;
-  double mat[2][2];
-  double b[3], res[3];
-  double XmaxS, XminS, YmaxS, YminS, ZmaxS, ZminS, lc;
-  double XmaxV, XminV, YmaxV, YminV, ZmaxV, ZminV, val;
-
-  if (!compareVertex (&e->V[0], &v1))
-    return NULL;
-  if (!compareVertex (&e->V[1], &v1))
-    return NULL;
-  if (!compareVertex (&e->V[0], &v2))
-    return NULL;
-  if (!compareVertex (&e->V[1], &v2))
-    return NULL;
-
-  XminS = DMIN (e->V[0]->Pos.X, e->V[1]->Pos.X);
-  XmaxS = DMAX (e->V[0]->Pos.X, e->V[1]->Pos.X);
-  YminS = DMIN (e->V[0]->Pos.Y, e->V[1]->Pos.Y);
-  YmaxS = DMAX (e->V[0]->Pos.Y, e->V[1]->Pos.Y);
-  ZminS = DMIN (e->V[0]->Pos.Z, e->V[1]->Pos.Z);
-  ZmaxS = DMAX (e->V[0]->Pos.Z, e->V[1]->Pos.Z);
-
-  XminV = DMIN (v1->Pos.X, v2->Pos.X);
-  XmaxV = DMAX (v1->Pos.X, v2->Pos.X);
-  YminV = DMIN (v1->Pos.Y, v2->Pos.Y);
-  YmaxV = DMAX (v1->Pos.Y, v2->Pos.Y);
-  ZminV = DMIN (v1->Pos.Z, v2->Pos.Z);
-  ZmaxV = DMAX (v1->Pos.Z, v2->Pos.Z);
-
-  if (XmaxS < XminV || XmaxV < XminS)
-    return NULL;
-  if (YmaxS < YminV || YmaxV < YminS)
-    return NULL;
-  if (ZmaxS < ZminV || ZmaxV < ZminS)
-    return NULL;
-
-  lc = myhypot (myhypot (XminV - XmaxV, YminV - YmaxV), ZminV - ZmaxV);
-
-  /*
-  if (e->V[1]->Pos.X != e->V[0]->Pos.X &&
-      fabs (e->V[1]->Pos.X - e->V[0]->Pos.X) / lc > 1.e-2)
-    dx1 = 1;
-  else
-    dx1 = 0;
-  if (e->V[1]->Pos.Y != e->V[0]->Pos.Y &&
-      fabs (e->V[1]->Pos.Y - e->V[0]->Pos.Y) / lc > 1.e-2)
-    dy1 = 1;
-  else
-    dy1 = 0;
-  if (e->V[1]->Pos.Z != e->V[0]->Pos.Z &&
-      fabs (e->V[1]->Pos.Z - e->V[0]->Pos.Z) / lc > 1.e-2)
-    dz1 = 1;
-  else
-    dz1 = 0;
-
-  if (v1->Pos.X != v2->Pos.X &&
-      fabs (v1->Pos.X - v2->Pos.X) / lc > 1.e-2)
-    dx2 = 1;
-  else
-    dx2 = 0;
-  if (v1->Pos.Y != v2->Pos.Y &&
-      fabs (v1->Pos.Y - v2->Pos.Y) / lc > 1.e-2)
-    dy2 = 1;
-  else
-    dy2 = 0;
-  if (v1->Pos.Z != v2->Pos.Z &&
-      fabs (v1->Pos.Z - v2->Pos.Z) / lc > 1.e-2)
-    dz2 = 1;
-  else
-    dz2 = 0;
-
-  if(dx1 && dx2){
-    mat[0][0] = e->V[1]->Pos.X - e->V[0]->Pos.X;
-    mat[0][1] = v1->Pos.X - v2->Pos.X;
-    b[0] = - e->V[0]->Pos.X + v1->Pos.X;
-    if(dy1 || dy2){
-      mat[1][0] = e->V[1]->Pos.Y - e->V[0]->Pos.Y;
-      mat[1][1] = v1->Pos.Y - v2->Pos.Y;
-      b[1] = - e->V[0]->Pos.Y + v1->Pos.Y;
-      dir = 2;
-    }
-    else if(dz1 || dz2){
-      mat[1][0] = e->V[1]->Pos.Z - e->V[0]->Pos.Z;
-      mat[1][1] = v1->Pos.Z - v2->Pos.Z;
-      b[1] = - e->V[0]->Pos.Z + v1->Pos.Z;
-      dir = 3;
-    }
-  }
-  else if (dy1 && dy2){
-    mat[0][0] = e->V[1]->Pos.Y - e->V[0]->Pos.Y;
-    mat[0][1] = v1->Pos.Y - v2->Pos.Y;
-    b[0] = - e->V[0]->Pos.Y + v1->Pos.Y;
-    if(dy1 || dy2){
-      mat[1][0] = e->V[1]->Pos.Y - e->V[0]->Pos.Y;
-      mat[1][1] = v1->Pos.Y - v2->Pos.Y;
-      b[1] = - e->V[0]->Pos.Y + v1->Pos.Y;
-      dir = 2;
-    }
-    else if(dz1 || dz2){
-      mat[1][0] = e->V[1]->Pos.Z - e->V[0]->Pos.Z;
-      mat[1][1] = v1->Pos.Z - v2->Pos.Z;
-      b[1] = - e->V[0]->Pos.Z + v1->Pos.Z;
-      dir = 3;
-    }
-  }
-  */
-
-
-  mat[0][0] = e->V[1]->Pos.X - e->V[0]->Pos.X;
-  mat[0][1] = v1->Pos.X - v2->Pos.X;
-  b[0] = -e->V[0]->Pos.X + v1->Pos.X;
-  mat[1][0] = e->V[1]->Pos.Y - e->V[0]->Pos.Y;
-  mat[1][1] = v1->Pos.Y - v2->Pos.Y;
-  b[1] = -e->V[0]->Pos.Y + v1->Pos.Y;
-
-  if (!sys2x2 (mat, b, res)){
-    mat[1][0] = e->V[1]->Pos.Z - e->V[0]->Pos.Z;
-    mat[1][1] = v1->Pos.Z - v2->Pos.Z;
-    b[1] = -e->V[0]->Pos.Z + v1->Pos.Z;
-    if (!sys2x2 (mat, b, res)){
-      mat[0][0] = e->V[1]->Pos.Y - e->V[0]->Pos.Y;
-      mat[0][1] = v1->Pos.Y - v2->Pos.Y;
-      b[0] = -e->V[0]->Pos.Y + v1->Pos.Y;
-      if (!sys2x2 (mat, b, res)){
-        /* SEGMENTS PARALLELES */
-        /* printf("systeme singulier\n");
-           printf("arete %d -> %d\n",v1->Num,v2->Num);
-           printf("arete %g %g %g --> %g %g %g\n",
-                  v1->Pos.X,v1->Pos.Y,v1->Pos.Z,v2->Pos.X,v2->Pos.Y,v2->Pos.Z);
-           printf("arete %g %g %g --> %g %g %g\n",
-                  e->V[0]->Pos.X,e->V[0]->Pos.Y,e->V[0]->Pos.Z,
-                  e->V[1]->Pos.X,e->V[1]->Pos.Y,e->V[1]->Pos.Z);
-           printf("%g %g\n",mat[0][0],mat[0][1]);
-           printf("%g %g\n",mat[1][0],mat[1][1]);
-           getchar();
-        */
-        return NULL;
-      }
-      else{
-        dir = 1;
-      }
-    }
-    else{
-      dir = 2;
-    }
-  }
-  else{
-    dir = 3;
-  }
-  
-  if (res[0] <= eps_prec || res[0] >= 1.0 - eps_prec)
-    return NULL;
-  if (res[1] <= eps_prec || res[1] >= 1.0 - eps_prec)
-    return NULL;
-
-  switch (dir){
-  case 1:
-    val = e->V[0]->Pos.X * (1. - res[0]) + e->V[1]->Pos.X * res[0] -
-      v1->Pos.X * (1. - res[1]) - v2->Pos.X * res[1];
-    break;
-  case 2:
-    val = e->V[0]->Pos.Y * (1. - res[0]) + e->V[1]->Pos.Y * res[0] -
-      v1->Pos.Y * (1. - res[1]) - v2->Pos.Y * res[1];
-    break;
-  case 3:
-    val = e->V[0]->Pos.Z * (1. - res[0]) + e->V[1]->Pos.Z * res[0] -
-      v1->Pos.Z * (1. - res[1]) - v2->Pos.Z * res[1];
-    break;
-  }
-  if (fabs (val / lc) > 1.e-08 /*08 */ )
-    return NULL;
-  v = Create_Vertex (++CurrentNodeNumber,
-                     (1. - res[0]) * e->V[0]->Pos.X + res[0] * e->V[1]->Pos.X,
-                     (1. - res[0]) * e->V[0]->Pos.Y + res[0] * e->V[1]->Pos.Y,
-                     (1. - res[0]) * e->V[0]->Pos.Z + res[0] * e->V[1]->Pos.Z,
-                     (1. - res[0]) * e->V[0]->lc + res[0] * e->V[1]->lc, 0.0);
-  
-  v->ListSurf = List_Create (1, 1, sizeof (Surface *));
-  return v;
-
-}
-
-int intersection_2_aretes (double Xa, double Ya, double Za,
-                           double Xb, double Yb, double Zb,
-                           double Xc, double Yc, double Zc,
-                           double Xd, double Yd, double Zd,
-                           int p1, int p2, int p3, int p4,
-                           double *X, double *Y, double *Z){
-  Vertex *v1, *v2, *v3, *v4, *v;
-  Edge e;
-  v1 = Create_Vertex (p1, Xa, Ya, Za, 0.0, 0.0);
-  v2 = Create_Vertex (p2, Xb, Yb, Zb, 0.0, 0.0);
-  v3 = Create_Vertex (p3, Xc, Yc, Zc, 0.0, 0.0);
-  v4 = Create_Vertex (p4, Xd, Yd, Zd, 0.0, 0.0);
-
-  e.V[0] = v3;
-  e.V[1] = v4;
-
-  if ((v = Edge_Edge (&e, v1, v2))){
-    
-    *X = v->Pos.X;
-    *Y = v->Pos.Y;
-    *Z = v->Pos.Z;
-
-    Free (v1);
-    Free (v2);
-    Free (v3);
-    Free (v4);
-    Free (v);
-    return 1;
-  }
-  else{
-    Free (v1);
-    Free (v2);
-    Free (v3);
-    Free (v4);
-    Free (v);
-    return 0;
-  }
-
-}
-
-List_T *NewPoints;
-
-void Intersect_Edge_Simplexe (Edge * e, Simplex * s, Intersection * I){
-
-  int i, NbInt, NbVer, NbEdg, NbFac, j;
-  Vertex *v;
-  double XminS, YminS, ZminS, XmaxS, YmaxS, ZmaxS;
-  double XminE, YminE, ZminE, XmaxE, YmaxE, ZmaxE;
-  xNewv x;
-
-  /* On initialise l'intersection */
-
-  I->NbVertex = I->NbFace = I->NbEdge = 0;
-  I->s = s;
-  I->e = e;
-  I->NbIntersect = 0;
-
-  /*
-    On regarde d'abord si une intersection est possible en
-    calculant les boites de l'arete et du simplexe 
-  */
-
-  if (s->V[3]){
-    NbVer = 4;
-    NbEdg = 6;
-    NbFac = 4;
-    NbInt = 2;
-  }
-  else if (s->V[2]){
-    NbVer = 3;
-    NbEdg = 3;
-    NbFac = 1;
-    NbInt = 33;
-  }
-  
-  XminE = DMIN (e->V[0]->Pos.X, e->V[1]->Pos.X);
-  XmaxE = DMAX (e->V[0]->Pos.X, e->V[1]->Pos.X);
-  YminE = DMIN (e->V[0]->Pos.Y, e->V[1]->Pos.Y);
-  YmaxE = DMAX (e->V[0]->Pos.Y, e->V[1]->Pos.Y);
-  ZminE = DMIN (e->V[0]->Pos.Z, e->V[1]->Pos.Z);
-  ZmaxE = DMAX (e->V[0]->Pos.Z, e->V[1]->Pos.Z);
-
-  XminS = s->V[0]->Pos.X;
-  XmaxS = s->V[0]->Pos.X;
-  YminS = s->V[0]->Pos.Y;
-  YmaxS = s->V[0]->Pos.Y;
-  ZminS = s->V[0]->Pos.Z;
-  ZmaxS = s->V[0]->Pos.Z;
-
-  for (i = 1; i < NbVer; i++){
-    XminS = DMIN (XminS, s->V[i]->Pos.X);
-    XmaxS = DMAX (XmaxS, s->V[i]->Pos.X);
-    YminS = DMIN (YminS, s->V[i]->Pos.Y);
-    YmaxS = DMAX (YmaxS, s->V[i]->Pos.Y);
-    ZminS = DMIN (ZminS, s->V[i]->Pos.Z);
-    ZmaxS = DMAX (ZmaxS, s->V[i]->Pos.Z);
-  }
-  if (XmaxS < XminE || XmaxE < XminS)
-    return;
-  if (YmaxS < YminE || YmaxE < YminS)
-    return;
-  if (ZmaxS < ZminE || ZmaxE < ZminS)
-    return;
-
-  /*
-    On regarde si l'arete coupe un des 4 noeuds du
-    simplexe
-  */
-
-  for (i = 0; i < NbVer; i++){
-    if ((j = Edge_Node (e, s->V[i]))){
-      I->V[I->NbVertex] = s->V[i];
-      I->iV[I->NbVertex++] = i;
-      (I->NbIntersect)++;
-      if (j == 2){
-        List_Replace (NewPoints, &s->V[i], compareVertex);
-        /*      printf("l'arete intersecte un noeud\n"); */
-        pvertex (s->V[i], s->V[i]);
-        pedge (e, e);
-      }
-    }
-  }
-  
-  if (I->NbIntersect == NbInt)
-    return;
-  
-  /* On regarde si l'arete coupe une autre arete */
-  for (i = 0; i < NbEdg; i++){
-    x.ef = 1;
-    x.e.V[0] = s->V[edges_tetra[i][0]];
-    x.e.V[1] = s->V[edges_tetra[i][1]];
-    if (Tree_Query (TreexNewv, &x)){
-      v = x.newv;
-      I->E[I->NbEdge] = i;
-      I->VE[(I->NbEdge)++] = v;
-      (I->NbIntersect)++;
-    }
-    else if ((v = Edge_Edge (e, s->V[edges_tetra[i][0]],
-                             s->V[edges_tetra[i][1]]))) {
-      List_Add (NewPoints, &v);
-      I->E[I->NbEdge] = i;
-      I->VE[(I->NbEdge)++] = v;
-      (I->NbIntersect)++;
-      x.newv = v;
-      Tree_Add (TreexNewv, &x);
-    }
-  }
-  
-  if (I->NbIntersect == NbInt)
-    return;
-
-  /*
-    On regarde si l'arete coupe une face
-  */
-
-  for (i = 0; i < NbFac; i++){
-    x.ef = 2;
-    x.f = &s->F[i];
-    if (Tree_Query (TreexNewv, &x)){
-      v = x.newv;
-      I->VF[I->NbFace] = v;
-      I->F[I->NbFace] = &s->F[i];
-      I->iF[(I->NbFace)++] = i;
-      (I->NbIntersect)++;
-    }
-    else if ((v = Edge_Face (e, &s->F[i]))){
-      I->VF[I->NbFace] = v;
-      List_Add (NewPoints, &v);
-      I->F[I->NbFace] = &s->F[i];
-      I->iF[I->NbFace++] = i;
-      (I->NbIntersect)++;
-      x.newv = v;
-      Tree_Add (TreexNewv, &x);
-    }
-  }
-}
-
-
-void Intersect_Face_Simplexe (Face * f, Simplex * s, Intersection * I){
-
-  int i ;
-  Vertex *v;
-  double XminS, YminS, ZminS, XmaxS, YmaxS, ZmaxS;
-  double XminE, YminE, ZminE, XmaxE, YmaxE, ZmaxE;
-  xNewv x;
-
-  /* On initialise l'intersection */
-
-  I->NbVertex = I->NbFace = I->NbEdge = 0;
-  I->s = s;
-  I->f = f;
-  I->NbIntersect = 0;
-
-  /*
-    On regarde d'abord si une intersection est possible en
-    calculant les boites de l'arete et du simplexe
-  */
-
-  XminE = DMIN (DMIN (f->V[0]->Pos.X, f->V[1]->Pos.X), f->V[2]->Pos.X);
-  XmaxE = DMAX (DMAX (f->V[0]->Pos.X, f->V[1]->Pos.X), f->V[2]->Pos.X);
-  YminE = DMIN (DMIN (f->V[0]->Pos.Y, f->V[1]->Pos.Y), f->V[2]->Pos.Y);
-  YmaxE = DMAX (DMAX (f->V[0]->Pos.Y, f->V[1]->Pos.Y), f->V[2]->Pos.Y);
-  ZminE = DMIN (DMIN (f->V[0]->Pos.Z, f->V[1]->Pos.Z), f->V[2]->Pos.Z);
-  ZmaxE = DMAX (DMAX (f->V[0]->Pos.Z, f->V[1]->Pos.Z), f->V[2]->Pos.Z);
-
-  XminS = s->V[0]->Pos.X;
-  XmaxS = s->V[0]->Pos.X;
-  YminS = s->V[0]->Pos.Y;
-  YmaxS = s->V[0]->Pos.Y;
-  ZminS = s->V[0]->Pos.Z;
-  ZmaxS = s->V[0]->Pos.Z;
-
-  for (i = 1; i < 4; i++){
-    XminS = DMIN (XminS, s->V[i]->Pos.X);
-    XmaxS = DMAX (XmaxS, s->V[i]->Pos.X);
-    YminS = DMIN (YminS, s->V[i]->Pos.Y);
-    YmaxS = DMAX (YmaxS, s->V[i]->Pos.Y);
-    ZminS = DMIN (ZminS, s->V[i]->Pos.Z);
-    ZmaxS = DMAX (ZmaxS, s->V[i]->Pos.Z);
-  }
-  if (XmaxS < XminE || XmaxE < XminS)
-    return;
-  if (YmaxS < YminE || YmaxE < YminS)
-    return;
-  if (ZmaxS < ZminE || ZmaxE < ZminS)
-    return;
-
-  /* On regarde si l'arete coupe la facette */
-  for (i = 0; i < 6; i++){
-    x.ef = 1;
-    x.e.V[0] = s->V[edges_tetra[i][0]];
-    x.e.V[1] = s->V[edges_tetra[i][1]];
-    if (Tree_Query (TreexNewv, &x)){
-      v = x.newv;
-      I->E[I->NbEdge] = i;
-      I->VE[(I->NbEdge)++] = v;
-      (I->NbIntersect)++;
-    }
-    else if ((v = Edge_Face (&x.e, f))){
-      /* printf("%d %d %d %d\n",s->V[0]->Num,s->V[1]->Num,s->V[2]->Num,s->V[3]->Num); */
-      List_Add (NewPoints, &v);
-      I->E[I->NbEdge] = i;
-      I->VE[I->NbEdge] = v;
-      (I->NbEdge)++;
-      (I->NbIntersect)++;
-      x.newv = v;
-      Tree_Add (TreexNewv, &x);
-    }
-  }
-}
-
-Tree_T *Actual_Tree, *TetAdd, *TetDel;
-
-static void _Add (void *data, void *dum){
-  Tree_Add (Actual_Tree, data);
-}
-static void _Del (void *data, void *dum){
-  Tree_Suppress (Actual_Tree, data);
-}
-
-void Recover_Edge (void *a, void *b){
-  Simplex *s;
-  Intersection I;
-
-  s = *(Simplex **) a;
-  Intersect_Edge_Simplexe (TheEdge, s, &I);
-  if (I.NbIntersect){
-    cut_tetraedre (&I, TetAdd, TetDel, THEVOL->Vertices);
-  }
-}
-
-void Recover_Face (void *a, void *b){
-  Simplex *s;
-  Intersection I;
-
-  s = *(Simplex **) a;
-  Intersect_Face_Simplexe (TheFace, s, &I);
-  if (I.NbEdge){
-    cut_tetraedre (&I, TetAdd, TetDel, THEVOL->Vertices);
-  }
-}
-
-static double volume;
-
-static void VSIM (void *a, void *b){
-  Simplex *S;
-  S = *(Simplex **) a;
-  if (S->V[3])
-    volume += fabs (S->Volume_Simplexe ());
-}
-
-Vertex *DEPART;
-
-int comparePos (const void *a, const void *b){
-  Vertex *q, *w;
-  double d1, d2;
-  q = *(Vertex **) a;
-  w = *(Vertex **) b;
-
-  d1 = DSQR (q->Pos.X - DEPART->Pos.X) +
-    DSQR (q->Pos.Y - DEPART->Pos.Y) +
-    DSQR (q->Pos.Z - DEPART->Pos.Z);
-  d2 = DSQR (w->Pos.X - DEPART->Pos.X) +
-    DSQR (w->Pos.Y - DEPART->Pos.Y) +
-    DSQR (w->Pos.Z - DEPART->Pos.Z);
-  if (d1 < d2)
-    return 1;
-  if (d1 > d2)
-    return -1;
-
-  exit (1);
-  return 1;
-}
-
-List_T *ListFaces;
-
-void findFaces (void *a, void *b){
-  Simplex *s;
-  int i;
-  s = *(Simplex **) a;
-  if (List_Search (NewPoints, &s->V[0], compareVertex) ||
-      List_Search (NewPoints, &s->V[1], compareVertex) ||
-      List_Search (NewPoints, &s->V[2], compareVertex) ||
-      List_Search (NewPoints, &s->V[3], compareVertex))
-    /*
-      printf("%d %d %d %d\n",s->V[0]->Num,s->V[1]->Num,s->V[2]->Num,s->V[3]->Num);
-    */
-    for (i = 0; i < 4; i++){
-      if (List_Search (NewPoints, &s->F[i].V[0], compareVertex) &&
-          List_Search (NewPoints, &s->F[i].V[1], compareVertex) &&
-          List_Search (NewPoints, &s->F[i].V[2], compareVertex))
-        List_Replace (ListFaces, &s->F[i], compareFace);
-    }
-}
-
-void findEdges (void *a, void *b){
-}
-
-Simplex * Create_Simplex_MemeSens (Simplex * sold, Vertex * v1, Vertex * v2, Vertex * v3){
-
-  Simplex *s;
-
-  if (memesens (sold->V[0], sold->V[1], sold->V[2], v1, v2, v3) > 0.0){
-    s = Create_Simplex (v1, v2, v3, NULL);
-  }
-  else{
-    s = Create_Simplex (v2, v1, v3, NULL);
-  }
-  s->iEnt = sold->iEnt;
-  return s;
-}
-
-int Coherence (Volume * v, Mesh * m){
-  int i, j, k, Np, Nh;
-  Surface *s;
-  //Vertex V1, V2, *ver1, *ver2 ;
-  Face Face;
-  static Edge E, *pE1, *pE2, *pE3;
-  Simplex *simp, *simp1;
-  List_T *MissingEdges, *MissingFaces;
-
-  FACE_DIMENSION = 2;
-
-  //ver1 = &V1;
-  //ver2 = &V2;
-
-  THEVOL = v;
-
-  Remise_A_Zero ();
-
-  create_Edges (v);
-  MissingEdges = Missing_Edges (v);
-
-  /* Edge Swapping */
-  create_Quads (v);
-
-  /* Missing Edges */
-  create_Edges (v);
-  MissingEdges = Missing_Edges (v);
-
-  /* Missing Faces */
-  create_Faces (v);
-  MissingFaces = Missing_Faces (v);
-
-  /* Edges Recovery */
-  Msg(STATUS3, "Boundary edges recovery");
-
-  volume = 0;
-  Tree_Action (v->Simplexes, VSIM);
-  Msg(INFO, "Volume = %g", volume);
-
-  Msg(INFO1, "===================================================");
-  Msg(INFO2, "Number of missing edges = %d", List_Nbr (Missing));
-  Msg(INFO3, "===================================================");
-
-  for (i = 0; i < List_Nbr (Missing); i++){
-    
-    pE1 = (Edge *) List_Pointer (Missing, i);
-    TheEdge = pE1;
-    
-    TreexNewv = Tree_Create (sizeof (xNewv), compxNewv);
-    NewPoints = List_Create (1, 1, sizeof (Vertex *));
-    TetAdd = Tree_Create (sizeof (Simplex *), compareSimplex);
-    TetDel = Tree_Create (sizeof (Simplex *), compareSimplex);
-    
-    Tree_Action (v->Simplexes, Recover_Edge);
-    Actual_Tree = v->Simplexes;
-    Tree_Action (TetAdd, _Add);
-    Tree_Action (TetDel, _Del);
-    pE1->Liste = NewPoints;
-    /*
-      if(CTX.mesh.nb_smoothing){
-        DEPART = pE1->V[0];
-        List_Tri(NewPoints,comparePos);
-        for(j=0;j<List_Nbr(NewPoints);j++){
-          List_Read(NewPoints,j,&ver1);
-          u = (double)(j+1) / (double)(List_Nbr(NewPoints)+1);
-          ver1->Pos.X = u * pE1->V[1]->Pos.X + (1.-u) * pE1->V[0]->Pos.X;
-          ver1->Pos.Y = u * pE1->V[1]->Pos.Y + (1.-u) * pE1->V[0]->Pos.Y;
-          ver1->Pos.Z = u * pE1->V[1]->Pos.Z + (1.-u) * pE1->V[0]->Pos.Z;
-        }
-      }
-    */
-    Msg(INFO, "Edge %d->%d => %d division(s)", 
-        pE1->V[0]->Num, pE1->V[1]->Num, List_Nbr(NewPoints));
-
-    if (!List_Nbr (NewPoints))
-      Msg(GERROR, "Missing edge without any intersection (%g,%g,%g) (%g,%g,%g)",
-          pE1->V[0]->Pos.X, pE1->V[0]->Pos.Y, pE1->V[0]->Pos.Z,
-          pE1->V[1]->Pos.X, pE1->V[1]->Pos.Y, pE1->V[1]->Pos.Z);
-    
-  }
-
-  Msg(STATUS3, "Boundary faces recovery");
-  volume = 0;
-  Tree_Action (v->Simplexes, VSIM);
-  Msg(INFO, "Volume = %g", volume);
-
-  /* Missing Faces */
-
-  Msg(INFO1, "===================================================");
-  Msg(INFO2, "Number of missing faces = %d", List_Nbr (MissingFaces));
-  Msg(INFO3, "===================================================");
-
-  for (i = 0; i < List_Nbr (MissingS); i++){
-    List_Read (MissingS, i, &simp);
-    TheFace = &simp->F[0];
-    Msg(INFO, "Face %d %d %d", simp->F[0].V[0]->Num, 
-        simp->F[0].V[1]->Num, simp->F[0].V[2]->Num);
-    E.V[0] = simp->F[0].V[0];
-    E.V[1] = simp->F[0].V[1];
-    pE1 = (Edge *) List_PQuery (Missing, &E, compareedge);
-    E.V[0] = simp->F[0].V[1];
-    E.V[1] = simp->F[0].V[2];
-    pE2 = (Edge *) List_PQuery (Missing, &E, compareedge);
-    E.V[0] = simp->F[0].V[2];
-    E.V[1] = simp->F[0].V[0];
-    pE3 = (Edge *) List_PQuery (Missing, &E, compareedge);
-
-    /* On verifie si c'est simple c a d si les tetraedres
-       couvrent entierement la face */
-    NewPoints = List_Create (3, 1, sizeof (Vertex *));
-    List_Add (NewPoints, &simp->F[0].V[0]);
-    if (pE1)
-      for (j = 0; j < List_Nbr (pE1->Liste); j++)
-        List_Add (NewPoints, List_Pointer (pE1->Liste, j));
-    List_Add (NewPoints, &simp->F[0].V[1]);
-    if (pE2)
-      for (j = 0; j < List_Nbr (pE2->Liste); j++)
-        List_Add (NewPoints, List_Pointer (pE2->Liste, j));
-    List_Add (NewPoints, &simp->F[0].V[2]);
-    if (pE3)
-      for (j = 0; j < List_Nbr (pE3->Liste); j++)
-        List_Add (NewPoints, List_Pointer (pE3->Liste, j));
-    ListFaces = List_Create (2, 2, sizeof (Face));
-    Tree_Action (v->Simplexes, findFaces);
-    
-    Nh = List_Nbr (NewPoints);
-    
-    /* il reste des intersections */
-    
-    if (List_Nbr (ListFaces) != Nh - 2){
-      /*
-        printf("Recherche des intersections\n");
-        printf("La face initiale comprend %d faces existantes\n",List_Nbr(ListFaces));
-        printf("La face est divisee en %d points\n",List_Nbr(NewPoints));
-      */
-      TreexNewv = Tree_Create (sizeof (xNewv), compxNewv);
-      TetAdd = Tree_Create (sizeof (Simplex *), compareSimplex);
-      TetDel = Tree_Create (sizeof (Simplex *), compareSimplex);
-      Tree_Action (v->Simplexes, Recover_Face);
-      /*
-        printf("La face est divisee en %d points %d %d \n",
-               List_Nbr(NewPoints),Tree_Nbr(TetAdd),Tree_Nbr(TetDel));
-      */
-      Actual_Tree = v->Simplexes;
-      Tree_Action (TetAdd, _Add);
-      Tree_Action (TetDel, _Del);
-      ListFaces = List_Create (2, 2, sizeof (Face));
-      Tree_Action (v->Simplexes, findFaces);
-    }
-
-    Np = List_Nbr (NewPoints);
-
-    if (1 || List_Nbr (ListFaces) == 2 * (Np - 1) - Nh){
-      
-      Msg(INFO, "Recoverable face (%d <--> %d=2*(%d-1)-%d)",
-          List_Nbr (ListFaces), 2 * (Np - 1) - Nh, Np, Nh);
-      
-      for (j = 0; j < List_Nbr (v->Surfaces); j++){
-        List_Read (v->Surfaces, j, &s);
-        if (Tree_Search (s->Simplexes, &simp)){
-          for (k = 0; k < List_Nbr (ListFaces); k++){
-            List_Read (ListFaces, k, &Face);
-            simp1 = Create_Simplex_MemeSens (simp, Face.V[0], Face.V[1], Face.V[2]);
-            Tree_Add (s->Simplexes, &simp1);
-            Tree_Replace (s->Vertices, &Face.V[0]);
-            Tree_Replace (s->Vertices, &Face.V[1]);
-            Tree_Replace (s->Vertices, &Face.V[2]);
-            Tree_Replace (v->Vertices, &Face.V[0]);
-            Tree_Replace (v->Vertices, &Face.V[1]);
-            Tree_Replace (v->Vertices, &Face.V[2]);
-          }
-          Tree_Suppress (s->Simplexes, &simp);
-        }
-      }
-    }
-    else{
-      Msg(GERROR, "*Unrecoverable* face (%d <--> %d=2*(%d-1)-%d)",
-          List_Nbr (ListFaces), 2 * (Np - 1) - Nh, Np, Nh);
-      for (k = 0; k < List_Nbr (ListFaces); k++){
-        List_Read (ListFaces, k, &Face);
-        Msg(STATUS2, "Face %d %d %d", Face.V[0]->Num, Face.V[1]->Num, Face.V[2]->Num);
-      }
-      Tree_Action (v->Simplexes, findEdges);
-    }
-  }
-
-  volume = 0;
-  Tree_Action (v->Simplexes, VSIM);
-  Msg(INFO, "Volume after edge/face recovery = %g", volume);
-
-  /* Missing Edges */
-  create_Edges (v);
-  MissingEdges = Missing_Edges (v);
-
-  /* Missing Faces */
-  create_Faces (v);
-  MissingFaces = Missing_Faces (v);
-
-  Msg(INFO, "Final check: %d missing edges, %d missing faces", 
-      List_Nbr(MissingEdges), List_Nbr(MissingFaces));
-
-  Impression_Resultats ();
-
-  if (List_Nbr (MissingFaces) || List_Nbr (MissingEdges)){
-    Msg(GERROR, "Could not restore all edges/faces");
-    return 0;
-  }
-
-  Link_Simplexes (NULL, v->Simplexes);
-  Msg(STATUS3, "Volume recovery");
-  Restore_Volume (v);
-
-  return 1;
-}
-
-/* A partir d'un maillage de volume qui respecte la 
-   frontiere, on attribue a chaque tetraedre son 
-   numero de volume */
-
-List_T *ListSurfaces, *ListAllSurf;
-Tree_T *keep;
-Simplex *SIMP;
-int iVolume;
-
-void attribueVolume (void *a, void *b){
-  Simplex *s;
-  s = *(Simplex **) a;
-  s->iEnt = iVolume;
-}
-
-void Trouve_Simplex (void *a, void *b){
-  Simplex *s;
-  if (SIMP != NULL)
-    return;
-  s = *(Simplex **) a;
-  if (s->iEnt < 0)
-    SIMP = s;
-}
-
-void Trouve_Simplex_Bord (void *a, void *b){
-  Simplex *s;
-
-  if (SIMP != NULL)
-    return;
-  s = *(Simplex **) a;
-  if (s->V[0]->Num < 0 || s->V[1]->Num < 0 || s->V[2]->Num < 0 || s->V[3]->Num < 0)
-    SIMP = s;
-}
-
-void SurfacesDansVolume (Volume * v, List_T * ListAllSurf){
-  int i, iseg;
-  Surface *s;
-  for (i = 0; i < List_Nbr (v->Surfaces); i++)
-    {
-      List_Read (v->Surfaces, i, &s);
-      iseg = abs (s->Num);
-      List_Replace (ListAllSurf, &iseg, fcmp_int);
-    }
-}
-
-int isListaVolume (List_T * ListSurf, Mesh * M){
-  int NN, i, j, srf;
-  bool found;
-  Surface *Surf;
-  Volume *v;
-  List_T *AllVolumes = Tree2List (M->Volumes);
-
-  for (i = 0; i < List_Nbr (AllVolumes); i++){
-    List_Read (AllVolumes, i, &v);
-    found = true;
-    NN = 0;
-    if (v->Typ == MSH_VOLUME){
-      for (j = 0; j < List_Nbr (v->Surfaces); j++){
-        List_Read (v->Surfaces, j, &Surf);
-        srf = abs (Surf->Num);
-        if (!List_Search (ListSurf, &srf, fcmp_int)){
-          found = false;
-        }
-        else
-          NN++;
-      }
-      if (found && NN == List_Nbr (ListSurf))
-        return v->Num;
-    }
-  }
-  return 0;
-}
-
-int compareSimpSurf (const void *a, const void *b){
-  Simplex *q, *w;
-  q = *(Simplex **) a;
-  w = *(Simplex **) b;
-  return compareFace (&q->F[0], &w->F[0]);
-}
-
-List_T *StackSimp;
-#define MAX_DEPTH 500
-
-void recur_trouve_volume (Simplex * s, int *Depth){
-  int i, j;
-  Simplex *pS, S;
-
-  if (s->iEnt != -1)
-    return;
-
-  if ((*Depth) > MAX_DEPTH) {
-    List_Add (StackSimp, &s);
-    return;
-  }
-  
-  (*Depth)++;
-  s->iEnt = -2;
-  Tree_Add (keep, &s);
-  for (i = 0; i < 4; i++){
-    pS = &S;
-    pS->F[0] = s->F[i];
-    if (Tree_Query (FacesTree, &pS) && List_Search (ListAllSurf, &pS->iEnt, fcmp_int)){
-      j = abs (pS->iEnt);
-      List_Replace (ListSurfaces, &j, fcmp_int);
-    }
-    else if (s->S[i] && s->S[i] != &MyNewBoundary){
-      recur_trouve_volume (s->S[i], Depth);
-    }
-  }
-  (*Depth)--;
-}
-
-void Restore_Volume (Volume * v){
-  int N;
-  int j, i, depth;
-  Surface *s;
-
-  StackSimp = List_Create (100, 100, sizeof (Simplex *));
-
-  FacesTree = Tree_Create (sizeof (Simplex *), compareSimpSurf);
-  Actual_Tree = FacesTree;
-  for (j = 0; j < List_Nbr (v->Surfaces); j++){
-    List_Read (v->Surfaces, j, &s);
-    Tree_Action (s->Simplexes, _Add);
-  }
-
-  ListSurfaces = List_Create (2, 2, sizeof (int));
-  iVolume = -1;
-  Tree_Action (v->Simplexes, attribueVolume);
-
-  /* Les simplexes sur le bord exterieur sont elimines */
-
-  ListAllSurf = List_Create (10, 3, sizeof (int));
-  SurfacesDansVolume (v, ListAllSurf);
-
-  SIMP = NULL;
-  Tree_Action (v->Simplexes, Trouve_Simplex_Bord);
-
-  if (SIMP){
-    List_Add (StackSimp, &SIMP);
-    keep = Tree_Create (sizeof (Simplex *), compareQuality);
-    depth = 0;
-    i = 0;
-    do{
-      List_Read (StackSimp, i, &SIMP);
-      recur_trouve_volume (SIMP, &depth);
-    } while (++i < List_Nbr (StackSimp));
-    List_Reset (StackSimp);
-
-    for (i = 0; i < List_Nbr (ListSurfaces); i++){
-      List_Read (ListSurfaces, i, &j);
-      Msg(STATUS2, "Surface %d", j);
-    }
-    
-    iVolume = 0;
-    Tree_Action (keep, attribueVolume);
-    Tree_Delete (keep);
-    List_Reset (ListSurfaces);
-  }
-  
-  while (1){
-    SIMP = NULL;
-    keep = Tree_Create (sizeof (Simplex *), compareQuality);
-    Tree_Action (v->Simplexes, Trouve_Simplex);
-    if (!SIMP)
-      break;
-    List_Add (StackSimp, &SIMP);
-    depth = 0;
-    i = 0;
-    do{
-      List_Read (StackSimp, i, &SIMP);
-      recur_trouve_volume (SIMP, &depth);
-    }while (++i < List_Nbr (StackSimp));
-    
-    iVolume = isListaVolume (ListSurfaces, THEM);
-    
-    for (i = 0; i < List_Nbr (ListSurfaces); i++){
-      List_Read (ListSurfaces, i, &j);
-      Msg(STATUS2, "Surface %d", j);
-    }
-    
-    N = Tree_Nbr (keep);
-    Msg(INFO, "Initial mesh of volume %d: %d simplices", iVolume, N);
-    Tree_Action (keep, attribueVolume);
-    Tree_Delete (keep);
-    List_Reset (ListSurfaces);
-    List_Reset (StackSimp);
-  }
-}
diff --git a/Mesh/3D_Divide.cpp b/Mesh/3D_Divide.cpp
deleted file mode 100644
index a345e8567907134318672a7eaa82af04930b111b..0000000000000000000000000000000000000000
--- a/Mesh/3D_Divide.cpp
+++ /dev/null
@@ -1,737 +0,0 @@
-// $Id: 3D_Divide.cpp,v 1.12 2001-08-11 23:28:32 geuzaine Exp $
-
-/* Routine de division des elements tetraedriques
-   ou triangulaires
-
-        1 triangle -> 4 triangles ;
-        1 tetraedre -> noeuds 1 2 3 4
-                       faces  1 4 2
-                              1
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-
-extern int    edges_tetra[6][2];
-extern int    CurrentNodeNumber; 
-
-static Tree_T *New_Edges = NULL;
-static int    IENT;
-
-typedef struct {
-  int i;
-  int j;
-}nxn;
-
-static int are_exists (Vertex *v1, Vertex *v2){
-  nxn nx;
-  nx.i = IMAX(v1->Num,v2->Num);
-  nx.j = IMIN(v1->Num,v2->Num);
-  return Tree_Search(New_Edges,&nx);
-}
-
-static void are_add (Vertex *v1, Vertex *v2){
-  nxn nx;
-  nx.i = IMAX(v1->Num,v2->Num);
-  nx.j = IMIN(v1->Num,v2->Num);
-  Tree_Add(New_Edges,&nx);
-}
-
-static int compnxn (const void *a, const void *b){
-  nxn *q,*w;
-  q = (nxn*)a;
-  w = (nxn*)b;
-  if(q->i>w->i)return 1;
-  if(q->i<w->i)return -1;
-  if(q->j>w->j)return 1;
-  if(q->j<w->j)return -1;
-  return 0;
-}
-
-static int FF,FV,EV,EE,FE,EEE,EEEE;
-void Remise_A_Zero (void){
-  FF=EE=FV=EV=FE=EEE=EEEE=0;
-}
-
-void Impression_Resultats (void){
-
-  Msg(INFO1, "===================================================");
-  Msg(INFO2, "Surface coherence results (number of intersections)");
-  Msg(INFO2, "%d EV, %d EE, %d FV, %d FF, %d FE, %d EEE, %d EEEE",
-      EV, EE, FV, FF, FE, EEE, EEEE);
-  Msg(INFO3, "===================================================");
-	  
-}
-
-int PARLE = 0;
-
-void cut_prism (Vertex * v1, Vertex * v2, Vertex * v3,
-                Vertex * v4, Vertex * v5, Vertex * v6,
-                Tree_T * newpoints, Tree_T * AddedTet){
-
-  Simplex *news;
-  Vertex *e1;
-
-  Msg(INFO, "Prism cut");
-
-  /* test des meilleures aretes a creer */
-  /*
-     if(!are_exists(v1,v6) &&
-     !are_exists(v4,v3)){
-
-     if(fabs(angle_3p(v1,v4,v6)) >
-     fabs(angle_3p(v4,v6,v3))){
-     are_add(v4,v3);
-     }
-     else{
-     are_add(v1,v6);
-     }
-     }
-
-     if(!are_exists(v3,v5) &&
-     !are_exists(v6,v2)){
-
-     if(fabs(angle_3p(v6,v5,v2)) >
-     fabs(angle_3p(v5,v2,v3))){
-     are_add(v5,v3);
-     }
-     else{
-     are_add(v2,v6);
-     }
-     }
-
-     if(!are_exists(v1,v5) &&
-     !are_exists(v4,v2)){
-
-     if(fabs(angle_3p(v1,v4,v5)) >
-     fabs(angle_3p(v4,v5,v2))){
-     are_add(v4,v2);
-     }
-     else{
-     are_add(v1,v5);
-     }
-     }
-   */
-  if (!are_exists (v1, v5) &&   //OK
-      !are_exists (v6, v2) &&
-      !are_exists (v6, v1)){
-    news = Create_Simplex (v1, v2, v3, v4);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v5, v6, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v2, v4, v5, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    are_add (v4, v2);
-    are_add (v5, v3);
-    are_add (v4, v3);
-  }
-  else if (!are_exists (v1, v5) &&      //OK
-           !are_exists (v3, v5) &&
-           !are_exists (v1, v6)){
-    news = Create_Simplex (v1, v2, v3, v4);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v5, v6, v2);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v2, v6, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    are_add (v4, v2);
-    are_add (v2, v6);
-    are_add (v4, v3);
-  }
-  else if (!are_exists (v1, v5) &&      //OK
-           !are_exists (v3, v5) &&
-           !are_exists (v4, v3)){
-    news = Create_Simplex (v1, v2, v3, v6);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v5, v6, v2);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v2, v4, v6, v1);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    are_add (v4, v2);
-    are_add (v2, v6);
-    are_add (v6, v1);
-  }
-  else if (!are_exists (v4, v2) &&      //OK
-           !are_exists (v6, v2) &&
-           !are_exists (v6, v1)){
-    news = Create_Simplex (v1, v2, v3, v5);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v5, v6, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v1, v4, v5, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    are_add (v5, v1);
-    are_add (v5, v3);
-    are_add (v4, v3);
-  }
-  else if (!are_exists (v4, v2) &&      //OK
-           !are_exists (v6, v2) &&
-           !are_exists (v4, v3)){
-    news = Create_Simplex (v1, v2, v3, v5);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v5, v6, v1);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v1, v3, v5, v6);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    are_add (v5, v1);
-    are_add (v5, v3);
-    are_add (v6, v1);
-  }
-  else if (!are_exists (v4, v2) &&      //OK
-           !are_exists (v3, v5) &&
-           !are_exists (v4, v3)){
-    news = Create_Simplex (v1, v2, v3, v6);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v4, v5, v6, v1);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (v1, v2, v5, v6);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    are_add (v5, v1);
-    are_add (v2, v6);
-    are_add (v6, v1);
-  }
-
-  else if (are_exists (v6, v1) &&
-           are_exists (v5, v3) &&
-           are_exists (v4, v2)) {
-    Msg(INFO, "Found steiner prism 1!");
-    
-    e1 = Create_Vertex 
-      (++CurrentNodeNumber,
-       (v1->Pos.X + v2->Pos.X + v3->Pos.X + v4->Pos.X + v5->Pos.X + v6->Pos.X) / 6.,
-       (v1->Pos.Y + v2->Pos.Y + v3->Pos.Y + v4->Pos.Y + v5->Pos.Y + v6->Pos.Y) / 6.,
-       (v1->Pos.Z + v2->Pos.Z + v3->Pos.Z + v4->Pos.Z + v5->Pos.Z + v6->Pos.Z) / 6.,
-       (v1->lc + v2->lc + v3->lc + v4->lc + v5->lc + v6->lc) / 6.,
-       0.0);
-    Tree_Add (newpoints, &e1);
-    news = Create_Simplex (e1, v6, v1, v4);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v6, v1, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v5, v3, v6);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v5, v3, v2);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v4, v2, v1);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v4, v2, v5);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-  }
-
-  else if (are_exists (v4, v3) &&
-           are_exists (v6, v2) &&
-           are_exists (v5, v1)){
-    Msg(INFO, "Found steiner prism 2!");
-
-    e1 = Create_Vertex 
-      (++CurrentNodeNumber,
-       (v1->Pos.X + v2->Pos.X + v3->Pos.X + v4->Pos.X + v5->Pos.X + v6->Pos.X) / 6.,
-       (v1->Pos.Y + v2->Pos.Y + v3->Pos.Y + v4->Pos.Y + v5->Pos.Y + v6->Pos.Y) / 6.,
-       (v1->Pos.Z + v2->Pos.Z + v3->Pos.Z + v4->Pos.Z + v5->Pos.Z + v6->Pos.Z) / 6.,
-       (v1->lc + v2->lc + v3->lc + v4->lc + v5->lc + v6->lc) / 6.,
-       0.0);
-    Tree_Add (newpoints, &e1);
-    news = Create_Simplex (e1, v4, v3, v6);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v4, v3, v1);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v6, v2, v5);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v6, v2, v3);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v5, v1, v4);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    news = Create_Simplex (e1, v5, v1, v2);
-    news->iEnt = IENT;
-    Tree_Add (AddedTet, &news);
-    
-  }
-  else{
-    Msg(GERROR, "Uncoherent prism");
-  }
-}
-
-
-void cut_tetraedre (Intersection * pI, Tree_T * AddedTet, Tree_T * TetDel,
-                    Tree_T * newpoints){
-  int i;
-  nxn nx;
-  Simplex *s;
-  Vertex *common, *other1, *other2, *lonely, *e1, *e2, *point1, *point2, *point3, *point4;
-  Vertex *v1, *v2, *v3, *v4, *v5, *v6, *v7, *v8;
-
-  if (!New_Edges)
-    New_Edges = Tree_Create (sizeof (nxn), compnxn);
-
-  IENT = pI->s->iEnt;
-
-  /* 1 tetraedre -> 2 tetraedres */
-
-  if ((pI->NbEdge == 0) && (pI->NbFace == 0)){
-  }
-  else if (pI->NbEdge == 1 && pI->NbFace == 0){
-
-    Tree_Add (TetDel, &pI->s);
-    
-    
-    EV++;
-    if (pI->E[0] == 0){
-      /* Verifie */
-      s = Create_Simplex (pI->s->V[2], pI->s->V[3], pI->s->V[0], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s = Create_Simplex (pI->s->V[1], pI->s->V[3], pI->s->V[2], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-    if (pI->E[0] == 1){
-      /* Verifie */
-      s = Create_Simplex (pI->s->V[0], pI->s->V[3], pI->s->V[2], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[3], pI->s->V[1], pI->s->V[0], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-    if (pI->E[0] == 2){
-      /* Verifie */
-      s = Create_Simplex (pI->s->V[0], pI->s->V[1], pI->s->V[3], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->s->V[3], pI->s->V[2], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-    if (pI->E[0] == 3){
-      /* Verifie */
-      s = Create_Simplex (pI->s->V[0], pI->s->V[1], pI->s->V[2], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->s->V[2], pI->s->V[3], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-    if (pI->E[0] == 4){
-      /* Verifie */
-      s = Create_Simplex (pI->s->V[2], pI->s->V[0], pI->s->V[1], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n",
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->s->V[3], pI->s->V[0], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-    if (pI->E[0] == 5){
-      /* Verifie */
-      s = Create_Simplex (pI->s->V[0], pI->s->V[3], pI->s->V[2], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n",
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[0], pI->s->V[1], pI->s->V[2], pI->VE[0]);
-      if (PARLE)
-        printf ("ajout %d %d %d %d\n", 
-		s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-  }
-  else if (pI->NbVertex == 1 && pI->NbFace == 1){
-    FV++;
-    Tree_Add (TetDel, &pI->s);
-    s = Create_Simplex (pI->V[0], pI->VF[0], pI->F[0]->V[0], pI->F[0]->V[1]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    s = Create_Simplex (pI->V[0], pI->VF[0], pI->F[0]->V[1], pI->F[0]->V[2]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    s = Create_Simplex (pI->V[0], pI->VF[0], pI->F[0]->V[2], pI->F[0]->V[0]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-  }
-
-  /* DU CUL LES COPINES
-     TROIS ARETES QUI PENETRENT LA MEME FACE
-     TRIPLETTE, TRIPLE PENETRATION */
-  
-  else if (pI->NbEdge == 3){
-    EEE++;
-    /*
-      printf("tet %d %d %d %d\n",
-              pI->s->V[0]->Num,pI->s->V[1]->Num,pI->s->V[2]->Num,pI->s->V[3]->Num);
-      printf("ed %d %d\n",pI->s->V[edges_tetra[pI->E[0]][0]]->Num,
-      pI->s->V[edges_tetra[pI->E[0]][1]]->Num);
-      printf("ed %d %d\n",pI->s->V[edges_tetra[pI->E[1]][0]]->Num,
-      pI->s->V[edges_tetra[pI->E[1]][1]]->Num);
-      printf("ed %d %d\n",pI->s->V[edges_tetra[pI->E[2]][0]]->Num,
-      pI->s->V[edges_tetra[pI->E[2]][1]]->Num);
-    */
-    Tree_Add (TetDel, &pI->s);
-    v4 = pI->VE[0];
-    v5 = pI->VE[1];
-    v6 = pI->VE[2];
-    if (pI->E[0] == 0 && pI->E[1] == 1 && pI->E[2] == 5){
-      v1 = pI->s->V[0];
-      v2 = pI->s->V[2];
-      v3 = pI->s->V[3];
-      v7 = pI->s->V[1];
-    }
-    else if (pI->E[0] == 0 && pI->E[1] == 2 && pI->E[2] == 3){
-      v1 = pI->s->V[1];
-      v2 = pI->s->V[2];
-      v3 = pI->s->V[3];
-      v7 = pI->s->V[0];
-    }
-    else if (pI->E[0] == 1 && pI->E[1] == 2 && pI->E[2] == 4){
-      v1 = pI->s->V[1];
-      v2 = pI->s->V[0];
-      v3 = pI->s->V[3];
-      v7 = pI->s->V[2];
-    }
-    else if (pI->E[0] == 3 && pI->E[1] == 4 && pI->E[2] == 5){
-      v1 = pI->s->V[0];
-      v2 = pI->s->V[2];
-      v3 = pI->s->V[1];
-      v7 = pI->s->V[3];
-    }
-    else{
-      Msg(GERROR, "Three edges cut without common point!");
-      return;
-    }
-    
-    s = Create_Simplex (v4, v5, v6, v7);
-    Tree_Add (AddedTet, &s);
-    cut_prism (v1, v2, v3, v4, v5, v6, newpoints, AddedTet);
-    
-  }
-
-  else if (pI->NbFace == 2){
-    FF++;
-    point3 = NULL;
-    Tree_Add (TetDel, &pI->s);
-    if (PARLE){
-      printf ("simp  = %d %d %d %d\n", 
-	      pI->s->V[0]->Num, pI->s->V[1]->Num, pI->s->V[2]->Num, pI->s->V[3]->Num);
-      printf ("are   = %d %d\n", 
-	      pI->VF[0]->Num, pI->VF[1]->Num);
-      printf ("face1 = %d %d %d\n", 
-	      pI->F[0]->V[0]->Num, pI->F[0]->V[1]->Num, pI->F[0]->V[2]->Num);
-      printf ("face2 = %d %d %d\n", 
-	      pI->F[1]->V[0]->Num, pI->F[1]->V[1]->Num, pI->F[1]->V[2]->Num);
-    }
-    for (i = 0; i < 4; i++){
-      if (compareVertex (&pI->F[0]->V[0], &pI->s->V[i]) &&
-          compareVertex (&pI->F[0]->V[1], &pI->s->V[i]) &&
-          compareVertex (&pI->F[0]->V[2], &pI->s->V[i]))
-        point1 = pI->s->V[i];
-      else if (compareVertex (&pI->F[1]->V[0], &pI->s->V[i]) &&
-               compareVertex (&pI->F[1]->V[1], &pI->s->V[i]) &&
-               compareVertex (&pI->F[1]->V[2], &pI->s->V[i]))
-        point2 = pI->s->V[i];
-      else if (point3)
-        point4 = pI->s->V[i];
-      else
-        point3 = pI->s->V[i];
-    }
-    s = Create_Simplex (point3, point4, pI->VF[0], pI->VF[1]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    if (PARLE)
-      printf ("simp  = %d %d %d %d\n",
-	      s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-    s = Create_Simplex (point1, point4, pI->VF[0], pI->VF[1]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    if (PARLE)
-      printf ("simp  = %d %d %d %d\n",
-	      s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-    s = Create_Simplex (point1, point3, pI->VF[0], pI->VF[1]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    if (PARLE)
-      printf ("simp  = %d %d %d %d\n",
-	      s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-    s = Create_Simplex (point2, point4, point1, pI->VF[0]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    if (PARLE)
-      printf ("simp  = %d %d %d %d\n",
-	      s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-    s = Create_Simplex (point2, point3, point1, pI->VF[0]);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    if (PARLE)
-      printf ("simp  = %d %d %d %d\n",
-	      s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-  }
-
-  else if (pI->NbEdge == 2){
-    EE++;
-    Tree_Add (TetDel, &pI->s);
-    if (pI->E[0] == 1 && pI->E[1] == 3){
-      s = Create_Simplex (pI->s->V[0], pI->VE[1], pI->s->V[1], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[0], pI->VE[1], pI->s->V[2], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->VE[1], pI->s->V[3], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[2], pI->VE[1], pI->s->V[3], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      return;
-    }
-    else if (pI->E[0] == 2 && pI->E[1] == 5){
-      s = Create_Simplex (pI->s->V[0], pI->VE[1], pI->s->V[1], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->VE[1], pI->s->V[2], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[0], pI->VE[1], pI->s->V[3], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[2], pI->VE[1], pI->s->V[3], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      return;
-    }
-    
-    else if (pI->E[0] == 0 && pI->E[1] == 4){
-      s = Create_Simplex (pI->s->V[0], pI->VE[1], pI->s->V[2], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->VE[1], pI->s->V[2], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[0], pI->VE[1], pI->s->V[3], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (pI->s->V[1], pI->VE[1], pI->s->V[3], pI->VE[0]);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      return;
-    }
-    
-    e1 = pI->VE[0];
-    e2 = pI->VE[1];
-    
-    if (!compareVertex (&pI->s->V[edges_tetra[pI->E[0]][0]], 
-			&pI->s->V[edges_tetra[pI->E[1]][0]])){
-      common = pI->s->V[edges_tetra[pI->E[0]][0]];
-      other1 = pI->s->V[edges_tetra[pI->E[0]][1]];
-      other2 = pI->s->V[edges_tetra[pI->E[1]][1]];
-    }
-    else if (!compareVertex (&pI->s->V[edges_tetra[pI->E[0]][0]],
-			     &pI->s->V[edges_tetra[pI->E[1]][1]])){
-      common = pI->s->V[edges_tetra[pI->E[0]][0]];
-      other1 = pI->s->V[edges_tetra[pI->E[0]][1]];
-      other2 = pI->s->V[edges_tetra[pI->E[1]][0]];
-    }
-    else if (!compareVertex (&pI->s->V[edges_tetra[pI->E[0]][1]],
-			     &pI->s->V[edges_tetra[pI->E[1]][0]])){
-      common = pI->s->V[edges_tetra[pI->E[0]][1]];
-      other1 = pI->s->V[edges_tetra[pI->E[0]][0]];
-      other2 = pI->s->V[edges_tetra[pI->E[1]][1]];
-    }
-    else if (!compareVertex (&pI->s->V[edges_tetra[pI->E[0]][1]],
-			     &pI->s->V[edges_tetra[pI->E[1]][1]])){
-      common = pI->s->V[edges_tetra[pI->E[0]][1]];
-      other1 = pI->s->V[edges_tetra[pI->E[0]][0]];
-      other2 = pI->s->V[edges_tetra[pI->E[1]][0]];
-    }
-    
-    for (i = 0; i < 4; i++){
-      if (compareVertex (&pI->s->V[i], &common) &&
-          compareVertex (&pI->s->V[i], &other1) &&
-          compareVertex (&pI->s->V[i], &other2))
-        lonely = pI->s->V[i];
-    }
-    
-    nx.i = IMAX (e1->Num, other2->Num);
-    nx.j = IMIN (e1->Num, other2->Num);
-    
-    if (Tree_Search (New_Edges, &nx)){
-      s = Create_Simplex (e1, other1, other2, lonely);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (e2, e1, common, lonely);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (e2, other2, e1, lonely);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-    else{
-      nx.i = IMAX (e2->Num, other1->Num);
-      nx.j = IMIN (e2->Num, other1->Num);
-      Tree_Add (New_Edges, &nx);
-      s = Create_Simplex (e1, other1, e2, lonely);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (e2, e1, common, lonely);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-      s = Create_Simplex (e2, other1, other2, lonely);
-      s->iEnt = IENT;
-      Tree_Add (AddedTet, &s);
-    }
-  }
-  else if (pI->NbFace == 1 && pI->NbEdge == 1){
-    FE++;
-    
-    Tree_Add (TetDel, &pI->s);
-    for (i = 0; i < 4; i++)
-      if (compareVertex (&pI->s->V[i], &pI->F[0]->V[0]) &&
-          compareVertex (&pI->s->V[i], &pI->F[0]->V[1]) &&
-          compareVertex (&pI->s->V[i], &pI->F[0]->V[2]))
-        v1 = pI->s->V[i];
-    v2 = NULL;
-    v3 = NULL;
-    
-    for (i = 0; i < 4; i++){
-      if (compareVertex (&pI->s->V[i], &v1)){
-        if (compareVertex (&pI->s->V[i], &pI->s->V[edges_tetra[pI->E[0]][0]]) &&
-            compareVertex (&pI->s->V[i], &pI->s->V[edges_tetra[pI->E[0]][1]])){
-          if (v2)
-            v3 = pI->s->V[i];
-          else
-            v2 = pI->s->V[i];
-        }
-        else{
-          v4 = pI->s->V[i];
-        }
-      }
-    }
-    
-    e1 = pI->VE[0];
-    e2 = pI->VF[0];
-    
-    s = Create_Simplex (e1, e2, v3, v4);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    s = Create_Simplex (e1, e2, v2, v4);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    s = Create_Simplex (e1, e2, v2, v3);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    s = Create_Simplex (e1, v1, v2, v3);
-    s->iEnt = IENT;
-    Tree_Add (AddedTet, &s);
-    
-  }
-  else if (pI->NbEdge == 4){
-    EEEE++;
-    
-    // Allez j-f il faut le faire !
-    
-    Tree_Add (TetDel, &pI->s);
-    if (pI->E[0] == 1 && pI->E[1] == 2 && pI->E[2] == 3 && pI->E[3] == 5){
-      v1 = pI->s->V[0];
-      v2 = pI->s->V[1];
-      v3 = pI->s->V[2];
-      v4 = pI->s->V[3];
-      v5 = pI->VE[1];
-      v6 = pI->VE[2];
-      v7 = pI->VE[0];
-      v8 = pI->VE[3];
-    }
-    else if (pI->E[0] == 0 && pI->E[1] == 2 && pI->E[2] == 4 && pI->E[3] == 5){
-      v1 = pI->s->V[1];
-      v2 = pI->s->V[2];
-      v3 = pI->s->V[0];
-      v4 = pI->s->V[3];
-      v5 = pI->VE[0];
-      v6 = pI->VE[3];
-      v7 = pI->VE[1];
-      v8 = pI->VE[2];
-    }
-    else if (pI->E[0] == 0 && pI->E[1] == 1 && pI->E[2] == 3 && pI->E[3] == 4){
-      v1 = pI->s->V[0];
-      v2 = pI->s->V[2];
-      v3 = pI->s->V[1];
-      v4 = pI->s->V[3];
-      v5 = pI->VE[0];
-      v6 = pI->VE[2];
-      v7 = pI->VE[1];
-      v8 = pI->VE[3];
-    }
-    else{
-      Msg(GERROR, "Incoherent 4 edges intersection");
-      return;
-    }
-    cut_prism (v8, v4, v6, v7, v3, v5, newpoints, AddedTet);
-    cut_prism (v2, v8, v7, v1, v6, v5, newpoints, AddedTet);
-  }
-  else{
-    Msg(GERROR, "Error on cut %d %d %d", pI->NbVertex, pI->NbEdge, pI->NbFace);
-  }
-}
-
-
-
-
-
diff --git a/Mesh/3D_Extrude.cpp b/Mesh/3D_Extrude.cpp
deleted file mode 100644
index 7cfcea755de0e13da91e8d5365157e95506ea312..0000000000000000000000000000000000000000
--- a/Mesh/3D_Extrude.cpp
+++ /dev/null
@@ -1,767 +0,0 @@
-// $Id: 3D_Extrude.cpp,v 1.28 2001-08-13 10:43:16 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Context.h"
-#include "Create.h"
-
-extern Mesh      *THEM;
-extern int        CurrentNodeNumber;
-
-static Tree_T *Tree_Ares = NULL, *Tree_Swaps = NULL;
-static int TEST_IS_ALL_OK;
-static Surface *THES;
-static Volume *THEV;
-static ExtrudeParams *ep;
-static Tree_T *Vertex_Bound = NULL, *ToAdd = NULL;
-
-typedef struct{
-  int a, b;
-}nxn;
-
-static int compnxn (const void *a, const void *b){
-  nxn *q, *w;
-  q = (nxn *) a;
-  w = (nxn *) b;
-  if (q->a > w->a)
-    return 1;
-  if (q->a < w->a)
-    return -1;
-  if (q->b > w->b)
-    return 1;
-  if (q->b < w->b)
-    return -1;
-  return 0;
-}
-
-void InitExtrude (){
-  if (!Tree_Ares)
-    Tree_Ares = Tree_Create (sizeof (nxn), compnxn);
-  if (!Tree_Swaps)
-    Tree_Swaps = Tree_Create (sizeof (nxn), compnxn);
-  if(Vertex_Bound)
-    Tree_Delete(Vertex_Bound);
-  Vertex_Bound = Tree_Create (sizeof (Vertex *), comparePosition);
-  List_T *l1 = Tree2List (THEM->Points);
-  List_T *l2 = Tree2List (THEM->Vertices);
-
-  for(int i=0;i<List_Nbr(l1);i++)Tree_Insert(Vertex_Bound,List_Pointer(l1,i));
-  for(int i=0;i<List_Nbr(l2);i++)Tree_Insert(Vertex_Bound,List_Pointer(l2,i));
-
-  List_Delete(l1);
-  List_Delete(l2);
-}
-
-void ExitExtrude (){
-  if (Tree_Ares)Tree_Delete(Tree_Ares);
-  if (Tree_Swaps)Tree_Delete(Tree_Swaps);
-  if(Vertex_Bound)Tree_Delete (Vertex_Bound);
-  Tree_Ares = Tree_Swaps = NULL;
-  ToAdd = Vertex_Bound = NULL;
-}
-
-int are_exist (Vertex * v1, Vertex * v2, Tree_T * t){
-  nxn n;
-  n.a = IMAX (v1->Num, v2->Num);
-  n.b = IMIN (v1->Num, v2->Num);
-  return Tree_Search (t, &n);
-}
-
-void are_cree (Vertex * v1, Vertex * v2, Tree_T * t){
-  nxn n;
-  n.a = IMAX (v1->Num, v2->Num);
-  n.b = IMIN (v1->Num, v2->Num);
-  Tree_Replace (t, &n);
-}
-
-void are_del (Vertex * v1, Vertex * v2, Tree_T * t){
-  nxn n;
-  n.a = IMAX (v1->Num, v2->Num);
-  n.b = IMIN (v1->Num, v2->Num);
-  Tree_Suppress (t, &n);
-}
-
-
-void Extrude_Simplex_Phase1 (void *data, void *dum){
-  Simplex **pS, *s;
-  int i, j, k;
-  Vertex *v1, *v2, *v3, *v4, *v5, *v6;
-
-  pS = (Simplex **) data;
-  s = *pS;
-
-  k = 0;
-  for (i = 0; i < ep->mesh.NbLayer; i++){
-    for (j = 0; j < ep->mesh.NbElmLayer[i]; j++){
-      List_Read (s->V[0]->Extruded_Points, k, &v1);
-      List_Read (s->V[1]->Extruded_Points, k, &v2);
-      List_Read (s->V[2]->Extruded_Points, k, &v3);
-      List_Read (s->V[0]->Extruded_Points, k + 1, &v4);
-      List_Read (s->V[1]->Extruded_Points, k + 1, &v5);
-      List_Read (s->V[2]->Extruded_Points, k + 1, &v6);
-      if (ep->mesh.Simplexes){
-        k++;
-        if (!are_exist (v1, v5, Tree_Ares))
-          are_cree (v2, v4, Tree_Ares);
-        if (!are_exist (v5, v3, Tree_Ares))
-          are_cree (v2, v6, Tree_Ares);
-        if (!are_exist (v4, v3, Tree_Ares))
-          are_cree (v1, v6, Tree_Ares);
-      }
-      else if (!s->V[3]){
-      }
-      else{
-      }
-    }
-  }
-}
-
-void Extrude_Simplex_Phase3 (void *data, void *dum){
-
-  Simplex **pS, *s, *news;
-  Hexahedron *newh;
-  Prism *newp;
-  int i, j, k;
-  Vertex *v1, *v2, *v3, *v4, *v5, *v6, *v7, *v8;
-
-  pS = (Simplex **) data;
-  s = *pS;
-
-  if(s->V[3] && !ep->mesh.Recombine){
-    Msg(GERROR, "You have to use 'Recombine' to extrude quadrangular meshes");
-    return;
-  }
-
-  k = 0;
-  for (i = 0; i < ep->mesh.NbLayer; i++){
-    for (j = 0; j < ep->mesh.NbElmLayer[i]; j++){
-
-      if(s->V[3]){
-        List_Read(s->V[0]->Extruded_Points,k,&v1);
-        List_Read(s->V[1]->Extruded_Points,k,&v2);
-        List_Read(s->V[2]->Extruded_Points,k,&v3);
-        List_Read(s->V[3]->Extruded_Points,k,&v4);
-        List_Read(s->V[0]->Extruded_Points,k+1,&v5);
-        List_Read(s->V[1]->Extruded_Points,k+1,&v6);
-        List_Read(s->V[2]->Extruded_Points,k+1,&v7);
-        List_Read(s->V[3]->Extruded_Points,k+1,&v8);
-      }
-      else{
-        List_Read (s->V[0]->Extruded_Points, k, &v1);
-        List_Read (s->V[1]->Extruded_Points, k, &v2);
-        List_Read (s->V[2]->Extruded_Points, k, &v3);
-        List_Read (s->V[0]->Extruded_Points, k + 1, &v4);
-        List_Read (s->V[1]->Extruded_Points, k + 1, &v5);
-        List_Read (s->V[2]->Extruded_Points, k + 1, &v6);
-      }
-
-      k++;
-      if (ep->mesh.ZonLayer[i]){
-
-        if(ep->mesh.Recombine){
-          if(s->V[3]){
-            newh = Create_Hexahedron(v1,v2,v3,v4,v5,v6,v7,v8);
-            newh->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add(THEV->Hexahedra,&newh);
-          }
-          else{
-            newp = Create_Prism(v1,v2,v3,v4,v5,v6);
-            newp->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add(THEV->Prisms,&newp);
-          }
-        }
-        else{
-          
-          if (are_exist (v4, v2, Tree_Ares) &&
-              are_exist (v5, v3, Tree_Ares) &&
-              are_exist (v4, v3, Tree_Ares)){
-            news = Create_Simplex (v1, v2, v3, v4);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v5, v6, v3);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v2, v4, v5, v3);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-          }
-          if (are_exist (v4, v2, Tree_Ares) &&
-              are_exist (v2, v6, Tree_Ares) &&
-              are_exist (v4, v3, Tree_Ares)){
-            news = Create_Simplex (v1, v2, v3, v4);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v5, v6, v2);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v2, v6, v3);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-          }
-          if (are_exist (v4, v2, Tree_Ares) &&
-              are_exist (v2, v6, Tree_Ares) &&
-              are_exist (v6, v1, Tree_Ares)){
-            news = Create_Simplex (v1, v2, v3, v6);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v5, v6, v2);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v2, v4, v6, v1);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-          }
-          if (are_exist (v5, v1, Tree_Ares) &&
-              are_exist (v5, v3, Tree_Ares) &&
-              are_exist (v4, v3, Tree_Ares)){
-            news = Create_Simplex (v1, v2, v3, v5);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v5, v6, v3);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v1, v4, v5, v3);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-          }
-          if (are_exist (v5, v1, Tree_Ares) &&
-              are_exist (v5, v3, Tree_Ares) &&
-              are_exist (v6, v1, Tree_Ares)){
-            news = Create_Simplex (v1, v2, v3, v5);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v5, v6, v1);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v1, v3, v5, v6);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-          }
-          if (are_exist (v5, v1, Tree_Ares) &&
-              are_exist (v2, v6, Tree_Ares) &&
-              are_exist (v6, v1, Tree_Ares)){
-            news = Create_Simplex (v1, v2, v3, v6);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v4, v5, v6, v1);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-            news = Create_Simplex (v1, v2, v5, v6);
-            news->iEnt = ep->mesh.ZonLayer[i];
-            Tree_Add (THEV->Simplexes, &news);
-          }
-        }
-      }
-    }
-  }
-}
-
-void Extrude_Simplex_Phase2 (void *data, void *dum){
-
-  Simplex **pS, *s;
-  int i, j, k;
-  Vertex *v1, *v2, *v3, *v4, *v5, *v6;
-
-  pS = (Simplex **) data;
-  s = *pS;
-
-  k = 0;
-  for (i = 0; i < ep->mesh.NbLayer; i++){
-    for (j = 0; j < ep->mesh.NbElmLayer[i]; j++){
-      List_Read (s->V[0]->Extruded_Points, k, &v1);
-      List_Read (s->V[1]->Extruded_Points, k, &v2);
-      List_Read (s->V[2]->Extruded_Points, k, &v3);
-      List_Read (s->V[0]->Extruded_Points, k + 1, &v4);
-      List_Read (s->V[1]->Extruded_Points, k + 1, &v5);
-      List_Read (s->V[2]->Extruded_Points, k + 1, &v6);
-      k++;
-      if (are_exist (v4, v2, Tree_Ares) &&
-          are_exist (v5, v3, Tree_Ares) &&
-          are_exist (v1, v6, Tree_Ares)){
-        TEST_IS_ALL_OK++;
-        if (!are_exist (v4, v2, Tree_Swaps)){
-          are_del (v4, v2, Tree_Ares);
-          are_cree (v1, v5, Tree_Ares);
-          are_cree (v1, v5, Tree_Swaps);
-          are_cree (v4, v2, Tree_Swaps);
-        }
-        else if (!are_exist (v5, v3, Tree_Swaps)){
-          are_del (v5, v3, Tree_Ares);
-          are_cree (v2, v6, Tree_Ares);
-          are_cree (v5, v3, Tree_Swaps);
-          are_cree (v2, v6, Tree_Swaps);
-        }
-        else if (!are_exist (v1, v6, Tree_Swaps)){
-          are_del (v1, v6, Tree_Ares);
-          are_cree (v4, v3, Tree_Ares);
-          are_cree (v1, v6, Tree_Swaps);
-          are_cree (v4, v3, Tree_Swaps);
-        }
-      }
-      else if (are_exist (v1, v5, Tree_Ares) && 
-               are_exist (v2, v6, Tree_Ares) && 
-               are_exist (v4, v3, Tree_Ares)){
-        TEST_IS_ALL_OK++;
-        if (!are_exist (v1, v5, Tree_Swaps)){
-          are_del (v1, v5, Tree_Ares);
-          are_cree (v4, v2, Tree_Ares);
-          are_cree (v1, v5, Tree_Swaps);
-          are_cree (v4, v2, Tree_Swaps);
-        }
-        else if (!are_exist (v2, v6, Tree_Swaps)){
-          are_del (v2, v6, Tree_Ares);
-          are_cree (v5, v3, Tree_Ares);
-          are_cree (v5, v3, Tree_Swaps);
-          are_cree (v2, v6, Tree_Swaps);
-        }
-        else if (!are_exist (v4, v3, Tree_Swaps)){
-          are_del (v4, v3, Tree_Ares);
-          are_cree (v1, v6, Tree_Ares);
-          are_cree (v1, v6, Tree_Swaps);
-          are_cree (v4, v3, Tree_Swaps);
-        }
-      }
-    }
-  }
-}
-
-
-void Extrude_Vertex (void *data, void *dum){
-
-  Vertex **pV, *v, *newv;
-  int i, j;
-
-  pV = (Vertex **) data;
-  v = *pV;
-
-  // We should _not_ return here, since 1 point can be extruded along
-  // several directions (this was of course not the case in the old
-  // extrusion generator...)
-  if (v->Extruded_Points) // return;
-    List_Delete (v->Extruded_Points);
-
-  v->Extruded_Points = List_Create (ep->mesh.NbLayer, 1, sizeof (Vertex *));
-  List_Add (v->Extruded_Points, &v);
-
-  for (i = 0; i < ep->mesh.NbLayer; i++){
-    for (j = 0; j < ep->mesh.NbElmLayer[i]; j++){
-      newv = Create_Vertex (++CurrentNodeNumber, v->Pos.X,
-                            v->Pos.Y, v->Pos.Z, v->lc, v->u);
-      ep->Extrude (i, j + 1, newv->Pos.X, newv->Pos.Y, newv->Pos.Z);
-
-      if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &newv))){
-	Free_Vertex (&newv,0);
-        List_Add (v->Extruded_Points, pV);
-        if (ToAdd)
-          Tree_Insert (ToAdd, pV);
-      }
-      else{
-        List_Add (v->Extruded_Points, &newv);
-        Tree_Insert (THEM->Vertices, &newv);
-        Tree_Insert (Vertex_Bound, &newv);
-        if (ToAdd)
-          Tree_Insert (ToAdd, &newv);
-      }
-    }
-  }
-}
-
-void Extrude_Surface1 (Surface * s){
-  THES = s;
-  Tree_Action (s->Vertices, Extrude_Vertex);
-  if(!ep->mesh.Recombine) Tree_Action (s->Simplexes, Extrude_Simplex_Phase1);
-}
-
-void Extrude_Surface2 (Surface * s){
-  THES = s;
-  Tree_Action (s->Simplexes, Extrude_Simplex_Phase2);
-}
-
-
-void Extrude_Surface3 (Surface * s){
-  THES = s;
-  Tree_Action (s->Simplexes, Extrude_Simplex_Phase3);
-}
-
-
-void Extrude_Seg (Vertex * V1, Vertex * V2){
-  int i, j, k;
-  Vertex *v1, *v2, *v3, *v4;
-  Simplex *s;
-
-  k = 0;
-  for (i = 0; i < ep->mesh.NbLayer; i++){
-    for (j = 0; j < ep->mesh.NbElmLayer[i]; j++){
-      List_Read (V1->Extruded_Points, k, &v1);
-      List_Read (V2->Extruded_Points, k, &v2);
-      List_Read (V1->Extruded_Points, k + 1, &v3);
-      List_Read (V2->Extruded_Points, k + 1, &v4);
-      if(ep->mesh.Recombine){
-        s = Create_Quadrangle(v1,v2,v4,v3);
-        s->iEnt = THES->Num; 
-	s->Num = -s->Num; //Tag quadrangles to re-extrude
-        Tree_Add(THES->Simplexes,&s);
-      }
-      else{
-        if (are_exist (v3, v2, Tree_Ares)){
-          s = Create_Simplex (v3, v2, v1, NULL);
-          s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Tag triangles to re-extrude
-          Tree_Add (THES->Simplexes, &s);
-          s = Create_Simplex (v3, v4, v2, NULL);
-          s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Tag triangles to re-extrude
-          Tree_Add (THES->Simplexes, &s);
-        }
-        else{
-          s = Create_Simplex (v3, v4, v1, NULL);
-          s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Tag triangles to re-extrude
-          Tree_Add (THES->Simplexes, &s);
-          s = Create_Simplex (v1, v4, v2, NULL);
-          s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Tag triangles to re-extrude
-          Tree_Add (THES->Simplexes, &s);
-        }
-      }
-      k++;
-    }
-  }
-  
-}
-
-void Extrude_Curve (void *data, void *dum){
-  Curve **pC, *c;
-  Vertex *v1, *v2;
-  int i;
-  pC = (Curve **) data;
-  c = *pC;
-
-  //if (c->Num < 0) return;
-
-  for (i = 0; i < List_Nbr (c->Vertices) - 1; i++){
-    List_Read (c->Vertices, i, &v1);
-    List_Read (c->Vertices, i + 1, &v2);
-    Extrude_Seg (v1, v2);
-  }
-}
-
-void copy_mesh (Curve * from, Curve * to, int direction){
-  List_T *list = from->Vertices;
-  Vertex *vi, *v, **vv, **vexist;
-
-  int nb = List_Nbr(to->Vertices);
-  if(nb){
-    if(nb != List_Nbr(from->Vertices))
-      Msg(GERROR, "Uncompatible extrusion of curve %d into curve %d",
-	  from->Num, to->Num);
-    return;
-  }
-
-  to->Vertices =  List_Create (List_Nbr(from->Vertices), 2, sizeof (Vertex *));
-
-  vv = &to->beg;
-  if ((vexist = (Vertex **) Tree_PQuery (THEM->Vertices, vv))){
-    (*vexist)->u = to->ubeg;
-    Tree_Insert (THEM->Vertices, vexist);
-    Tree_Insert (Vertex_Bound, vexist);
-    if ((*vexist)->ListCurves)
-      List_Add ((*vexist)->ListCurves, &to);
-    List_Add (to->Vertices, vexist);
-  }
-  else{
-    vi = Create_Vertex ((*vv)->Num, (*vv)->Pos.X, (*vv)->Pos.Y, (*vv)->Pos.Z,
-			(*vv)->lc, to->ubeg);
-    Tree_Insert (THEM->Vertices, &vi);
-    Tree_Insert (Vertex_Bound, &vi);
-    vi->ListCurves = List_Create (1, 1, sizeof (Curve *));
-    List_Add (vi->ListCurves, &to);
-    List_Add (to->Vertices, &vi);
-  }
-
-  for (int i = 1; i < List_Nbr(list)-1; i++){
-    if(direction < 0) 
-      List_Read (list, List_Nbr(list)-1-i, &v);
-    else
-      List_Read (list, i, &v);
-    vi = Create_Vertex (++CurrentNodeNumber, v->Pos.X,
-			v->Pos.Y, v->Pos.Z, v->lc, (direction>0)?v->u:(1.-v->u));
-    ep->Extrude (ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
-		 vi->Pos.X, vi->Pos.Y, vi->Pos.Z);
-    Tree_Insert (THEM->Vertices, &vi);
-    Tree_Insert (Vertex_Bound, &vi);
-    if(!vi->ListCurves)
-      vi->ListCurves = List_Create (1, 1, sizeof (Curve *));
-    List_Add (vi->ListCurves, &to);
-    List_Add (to->Vertices, &vi);
-  }
-
-  vv = &to->end;
-  if ((vexist = (Vertex **) Tree_PQuery (THEM->Vertices, vv))){
-    (*vexist)->u = to->uend;
-    Tree_Insert (THEM->Vertices, vexist);
-    Tree_Insert (Vertex_Bound, vexist);
-    if ((*vexist)->ListCurves)
-      List_Add ((*vexist)->ListCurves, &to);
-    List_Add (to->Vertices, vexist);
-  }
-  else{
-    vi = Create_Vertex ((*vv)->Num, (*vv)->Pos.X, (*vv)->Pos.Y, (*vv)->Pos.Z, 
-			(*vv)->lc, to->uend);
-    Tree_Insert (THEM->Vertices, &vi);
-    Tree_Insert (Vertex_Bound, &vi);
-    vi->ListCurves = List_Create (1, 1, sizeof (Curve *));
-    List_Add (vi->ListCurves, &to);
-    List_Add (to->Vertices, &vi);
-  }
-
-
-}
-
-int Extrude_Mesh (Curve * c){
-  int i;
-  Vertex **v, *pV, **vexist, *v1;
-
-  if (!c->Extrude || !c->Extrude->mesh.ExtrudeMesh) return false;
-
-  InitExtrude();
-
-  ep = c->Extrude;
-
-  if (ep->geo.Mode == EXTRUDED_ENTITY){
-    Extrude_Vertex (&c->beg, NULL);
-    c->Vertices = List_Create (List_Nbr (c->beg->Extruded_Points), 2, sizeof (Vertex *));
-    v = &c->beg;
-    if ((vexist = (Vertex **) Tree_PQuery (THEM->Vertices, v))){
-      (*vexist)->u = c->ubeg;
-      Tree_Insert (THEM->Vertices, vexist);
-      if ((*vexist)->ListCurves)
-        List_Add ((*vexist)->ListCurves, &c);
-      List_Add (c->Vertices, vexist);
-    }
-    else{
-      pV = Create_Vertex ((*v)->Num, (*v)->Pos.X, (*v)->Pos.Y, (*v)->Pos.Z, (*v)->lc, 0.0);
-      pV->ListCurves = List_Create (1, 1, sizeof (Curve *));
-      List_Add (pV->ListCurves, &c);
-      Tree_Insert (THEM->Vertices, &pV);
-      List_Add (c->Vertices, &pV);
-    }
-
-    for (i = 1; i < List_Nbr (c->beg->Extruded_Points) - 1; i++){
-      List_Read (c->beg->Extruded_Points, i, &v1);
-      if (!v1->ListCurves) v1->ListCurves = List_Create (1, 1, sizeof (Curve *));
-      List_Add (v1->ListCurves, &c);
-      Tree_Insert (THEM->Vertices, &v1);
-      v1->u = (double) i / (double) List_Nbr (c->beg->Extruded_Points);
-      List_Add (c->Vertices, &v1);
-    }
-
-    v = &c->end;
-    if ((vexist = (Vertex **) Tree_PQuery (THEM->Vertices, v))){
-      (*vexist)->u = c->uend;
-      Tree_Insert (THEM->Vertices, vexist);
-      if ((*vexist)->ListCurves)
-        List_Add ((*vexist)->ListCurves, &c);
-      List_Add (c->Vertices, vexist);
-    }
-    else{
-      pV = Create_Vertex ((*v)->Num, (*v)->Pos.X, (*v)->Pos.Y, (*v)->Pos.Z, (*v)->lc, 0.0);
-      pV->ListCurves = List_Create (1, 1, sizeof (Curve *));
-      List_Add (pV->ListCurves, &c);
-      Tree_Insert (THEM->Vertices, &pV);
-      List_Add (c->Vertices, &pV);
-    }
-    return true;
-  }
-  else{
-    Curve *cc = FindCurve (abs(ep->geo.Source), THEM);
-    if (!cc) return false;
-    copy_mesh (cc, c, sign(ep->geo.Source));
-    return true;
-  }
-}
-
-void copy_mesh (Surface * from, Surface * to){
-  List_T *list = Tree2List (from->Simplexes);
-  Simplex *s, *news;
-  Vertex **pV, *vi[3], *v;
-
-  int nb = Tree_Nbr(to->Simplexes);
-  if(nb){
-    if(nb != Tree_Nbr(from->Simplexes))
-      Msg(GERROR, "Uncompatible extrusion of surface %d into surface %d",
-	  from->Num, to->Num);
-    return;
-  }
-
-  for (int i = 0; i < List_Nbr (list); i++){
-    List_Read (list, i, &s);
-    for (int j = 0; j < 4; j++){
-      if(s->V[j]){
-	v = s->V[j];
-	vi[j] = Create_Vertex (++CurrentNodeNumber, v->Pos.X,
-			       v->Pos.Y, v->Pos.Z, v->lc, v->u);
-	ep->Extrude (ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
-		     vi[j]->Pos.X, vi[j]->Pos.Y, vi[j]->Pos.Z);
-	if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &vi[j]))){
-	  Free_Vertex(&vi[j],0);
-	  vi[j] = *pV;
-	}
-	else{
-	  Tree_Insert (THEM->Vertices, &vi[j]);
-	  Tree_Insert (Vertex_Bound, &vi[j]);
-	}
-	if (ToAdd)
-	  Tree_Insert (ToAdd, &vi[j]);
-      }
-      else{
-	vi[j] = NULL;
-      }
-    }    
-    if(vi[3])
-      news = Create_Quadrangle (vi[0], vi[1], vi[2], vi[3]);
-    else
-      news = Create_Simplex (vi[0], vi[1], vi[2], NULL);
-    news->iEnt = to->Num;
-    Tree_Add (to->Simplexes, &news);
-  }
-  List_Delete (list);
-}
-
-int Extrude_Mesh (Surface * s){
-  int i;
-  Vertex *v1;
-  Curve *cc;
-  extern int FACE_DIMENSION;
-
-  if (!s->Extrude || !s->Extrude->mesh.ExtrudeMesh) return false;
-
-  InitExtrude ();
-
-  FACE_DIMENSION = 2;
-
-  ep = s->Extrude;
-  THES = s;
-
-  ToAdd = s->Vertices;
-
-  for (i = 0; i < List_Nbr (s->Generatrices); i++){
-    List_Read (s->Generatrices, i, &cc);
-    for (int j = 0; j < List_Nbr (cc->Vertices); j++){
-      List_Read (cc->Vertices, j, &v1);
-      Tree_Insert (Vertex_Bound, &v1);
-    }
-  }
-  if (ep->geo.Mode == EXTRUDED_ENTITY){
-    Curve *c = FindCurve (abs(ep->geo.Source), THEM);
-    if (!c) return false;
-    for (i = 0; i < List_Nbr (c->Vertices); i++){
-      List_Read (c->Vertices, i, &v1);
-      Extrude_Vertex (&v1, NULL);
-    }
-    Extrude_Curve (&c, NULL);
-    return true;
-  }
-  else{
-    Surface *ss = FindSurface (ep->geo.Source, THEM);
-    if (!ss) return false;
-    copy_mesh (ss, s);
-    return true;
-  }
-
-}
-
-static Tree_T* tmp;
-
-void Free_NegativeSimplex (void *a, void *b){
-  Simplex *s = *(Simplex**)a;
-  if(s){
-    if(s->Num>=0){
-      Tree_Add (tmp, &s);
-    }
-    else{
-      delete s;
-      s = NULL;
-    }
-  }
-}
-
-int Extrude_Mesh (Volume * v){
-  int i, j;
-  Surface *ss;
-  Vertex *v1;
-
-  if (!v->Extrude || !v->Extrude->mesh.ExtrudeMesh) return false;
-
-  Msg(STATUS3, "Meshing Volume %d", v->Num);
-
-  ep = v->Extrude;
-  THEV = v;
-  if (ep->geo.Mode == EXTRUDED_ENTITY){
-    Surface *s = FindSurface (ep->geo.Source, THEM);
-    if (!s) return false;
-
-    List_T *list;
-    for (i = 0; i < List_Nbr (v->Surfaces); i++){
-      List_Read (v->Surfaces, i, &ss);
-      list = Tree2List (ss->Vertices);
-      for (int j = 0; j < List_Nbr (list); j++){
-        List_Read (list, j, &v1);
-        Tree_Insert (Vertex_Bound, &v1);
-      }
-      List_Delete (list);
-    }
-
-    list = Tree2List (s->Vertices);
-    for (i = 0; i < List_Nbr (list); i++){
-      List_Read (list, i, &v1);
-      Extrude_Vertex (&v1, NULL);
-    }
-    List_Delete (list);
-
-    Extrude_Surface1 (s);
-    
-    if(!ep->mesh.Recombine){
-      j = TEST_IS_ALL_OK;
-      do{
-        TEST_IS_ALL_OK = 0;
-        Extrude_Surface2 (s);
-	Msg(INFO, "Swapping %d",TEST_IS_ALL_OK);
-        if (TEST_IS_ALL_OK == j)
-          break;
-        j = TEST_IS_ALL_OK;
-      }
-      while (TEST_IS_ALL_OK);
-    }
-
-    Extrude_Surface3 (s);
-
-    // Well well ... I think I fixed the bug in extrude meshes.
-    // Volume mesh cannot always comply with surface mesh, so I delete the
-    // surface mesh and create a new one. Edges were stored in Tree_Ares
-    // so that now, the surface mesh is ok (edge swapping is easy in 2d).
-    // cretainly not the most efficient way to do it but it seems to work
-    //
-    // In order to suppress only the tri/qua that have to, i.e. all
-    // those created by the extrusion, they are tagged with a negative
-    // number, that they will keep their lives in order for adjacent
-    // volumes to respect the coherence of their common boundaries
-    
-    for (i = 0; i < List_Nbr (v->Surfaces); i++){
-      List_Read (v->Surfaces, i, &ss);
-      tmp = Tree_Create (sizeof (Simplex *), compareQuality);
-      Tree_Action(ss->Simplexes, Free_NegativeSimplex);
-      Tree_Delete(ss->Simplexes);
-      ss->Simplexes = tmp;
-      Extrude_Mesh(ss);
-    }
-    
-    return true;
-  }
-  else{
-    return false;
-  }
-}
diff --git a/Mesh/3D_Extrude_Old.cpp b/Mesh/3D_Extrude_Old.cpp
deleted file mode 100644
index 2d22ec0ee5160c980eeb5919c8e7ac452b85085c..0000000000000000000000000000000000000000
--- a/Mesh/3D_Extrude_Old.cpp
+++ /dev/null
@@ -1,587 +0,0 @@
-// $Id: 3D_Extrude_Old.cpp,v 1.12 2001-08-11 23:28:32 geuzaine Exp $
-
-// This is the old extrusion mesh generator -> only available through
-// the command line option -extrude (w/o -recombine). This mesh
-// generator pre-supposes a definition of surfaces in the XY plane,
-// and will extrude everything along the Z axis, taking parameters
-// interactively from standard input, e.g.
-//
-// gmsh test -extrude -recombine < params.ext
-//
-// The progression ratio defines a geometric progression for the
-// definition of the elements heights: a factor of 2 means that the
-// next element will be twice as high than the preceding one.
-//
-// All geometrical entities are automatically numbered:
-//
-//         volumes: 3 * K1 + layer * K2 + surf->num
-// New XY surfaces: 2 * K1 + layer * K2 + surf->num
-//  perp. surfaces: 1 * K1 + layer * K2 + curve->num
-//     perp. lines: 4 * K1 + layer * K2 + point->Num
-//
-// WARNING:
-//
-// There is no way to save XY generated lines or other entities for the
-// moment
-
-#define MAXLAYERS 100
-#define K1 100.e6
-#define K2 1.e6 // to store MAXLAYERS
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Context.h"
-#include "Create.h"
-
-extern Context_T CTX ;
-extern Mesh   *LOCAL, *THEM;
-extern int     CurrentNodeNumber; 
-
-static Tree_T *Tree_Ares, *Tree_Swaps;
-
-FILE          *file;
-Mesh          *THEm;
-Surface       *THES;
-Volume        *THEV;
-int            TEST_IS_ALL_OK, NbLayer;
-int            NbElmLayer [MAXLAYERS];
-int            ZonLayer   [MAXLAYERS];
-int            LineLayer  [MAXLAYERS];
-int            SurfLayer  [MAXLAYERS+1];
-double         hLayer     [MAXLAYERS];
-double         parLayer   [MAXLAYERS];
-
-
-typedef struct {
-  int a,b;
-}nxn;
-
-static int compnxn(const void *a, const void *b){
-  nxn *q,*w;
-  q = (nxn*)a;
-  w = (nxn*)b;
-  if(q->a > w->a)return 1;
-  if(q->a < w->a)return -1;
-  if(q->b > w->b)return 1;
-  if(q->b < w->b)return -1;
-  return 0;
-}
-
-static void InitExtrudeParams (void){
-  int i;
-  printf("Number of layers: ");
-  scanf("%d",&NbLayer);
-  if(NbLayer >MAXLAYERS)
-    Msg(GERROR, "Max number of layer exceeded");
-  fprintf(file, "%d\n", NbLayer); fflush(file);
-  for(i=0;i<NbLayer;i++){
-    printf("Number of elements in layer %d: ",i+1);
-    scanf("%d",&NbElmLayer[i]);
-    fprintf(file, "%d\n", NbElmLayer[i]);fflush(file);
-
-    printf("Depth of layer %d: ",i+1);
-    scanf("%lf",&hLayer[i]);
-    fprintf(file, "%g\n", hLayer[i]);fflush(file);
-
-    printf("Progresion ratio for layer %d: ",i+1);
-    scanf("%lf",&parLayer[i]);
-    fprintf(file, "%g\n", parLayer[i]);fflush(file);
-  }
-  Tree_Ares = Tree_Create(sizeof(nxn),compnxn);
-  Tree_Swaps = Tree_Create(sizeof(nxn),compnxn);
-}
-
-static int are_exist(Vertex *v1,Vertex *v2, Tree_T *t){
-  nxn n;
-  n.a = IMAX(v1->Num,v2->Num);
-  n.b = IMIN(v1->Num,v2->Num);
-  return Tree_Search(t,&n);
-}
-
-static void are_cree(Vertex *v1,Vertex *v2, Tree_T *t){
-  nxn n;
-  n.a = IMAX(v1->Num,v2->Num);
-  n.b = IMIN(v1->Num,v2->Num);
-  Tree_Replace(t,&n);
-}
-
-static void are_del(Vertex *v1,Vertex *v2, Tree_T *t){
-  nxn n;
-  n.a = IMAX(v1->Num,v2->Num);
-  n.b = IMIN(v1->Num,v2->Num);
-  Tree_Suppress(t,&n);
-}
-
-
-static void Extrude_Simplex_Phase1 (void *data , void *dum){
-  
-  Simplex **pS , *s;
-  int i,j,k;
-  Vertex *v1,*v2,*v3,*v4,*v5,*v6;
-
-  pS = (Simplex**)data;
-  s = *pS;
-
-  k = 0;
-  for(i=0;i<NbLayer;i++){
-    for(j=0;j<NbElmLayer[i];j++){
-      List_Read(s->V[0]->Extruded_Points,k,&v1);
-      List_Read(s->V[1]->Extruded_Points,k,&v2);
-      List_Read(s->V[2]->Extruded_Points,k,&v3);
-      List_Read(s->V[0]->Extruded_Points,k+1,&v4);
-      List_Read(s->V[1]->Extruded_Points,k+1,&v5);
-      List_Read(s->V[2]->Extruded_Points,k+1,&v6);
-      k++;
-      if(!are_exist(v1,v5,Tree_Ares))are_cree(v2,v4,Tree_Ares);
-      if(!are_exist(v5,v3,Tree_Ares))are_cree(v2,v6,Tree_Ares);
-      if(!are_exist(v4,v3,Tree_Ares))are_cree(v1,v6,Tree_Ares);
-    }
-  }  
-}
-
-static void Extrude_Simplex_Phase3 (void *data , void *dum){
-  
-  Simplex **pS , *s, *news;
-  Prism   *newp;
-  Hexahedron *newh;
-  int i,j,k;
-  Vertex *v1,*v2,*v3,*v4,*v5,*v6,*v7,*v8;
-
-  pS = (Simplex**)data;
-  s = *pS;
-
-  if(s->V[3] && !CTX.mesh.oldxtrude_recombine){
-    Msg(GERROR, "Non recombined extrusion impossible with quadrangles (use -recombine)");
-  }
-
-  k = 0;
-  for(i=0;i<=NbLayer;i++){
-    if(SurfLayer[i]){
-      List_Read(s->V[0]->Extruded_Points,k,&v1);
-      List_Read(s->V[1]->Extruded_Points,k,&v2);
-      List_Read(s->V[2]->Extruded_Points,k,&v3);      
-      news = Create_Simplex(v1,v2,v3,NULL);
-      if(s->V[3]){
-	List_Read(s->V[3]->Extruded_Points,k,&v4);
-	news->V[3] = v4;
-      }
-      news->iEnt = SurfLayer[i];
-      Tree_Add(THEV->Simp_Surf,&news);
-    }
-    for(j=0;j<NbElmLayer[i];j++){
-      k++;
-    }
-  }
-  
-  k = 0;
-  for(i=0;i<NbLayer;i++){
-    for(j=0;j<NbElmLayer[i];j++){
-
-      if(s->V[3]){
-	List_Read(s->V[0]->Extruded_Points,k,&v1);
-	List_Read(s->V[1]->Extruded_Points,k,&v2);
-	List_Read(s->V[2]->Extruded_Points,k,&v3);
-	List_Read(s->V[3]->Extruded_Points,k,&v4);
-	List_Read(s->V[0]->Extruded_Points,k+1,&v5);
-	List_Read(s->V[1]->Extruded_Points,k+1,&v6);
-	List_Read(s->V[2]->Extruded_Points,k+1,&v7);
-	List_Read(s->V[3]->Extruded_Points,k+1,&v8);
-      }
-      else{
-	List_Read(s->V[0]->Extruded_Points,k,&v1);
-	List_Read(s->V[1]->Extruded_Points,k,&v2);
-	List_Read(s->V[2]->Extruded_Points,k,&v3);
-	List_Read(s->V[0]->Extruded_Points,k+1,&v4);
-	List_Read(s->V[1]->Extruded_Points,k+1,&v5);
-	List_Read(s->V[2]->Extruded_Points,k+1,&v6);
-      }
-
-      k++;
-      if(ZonLayer[i]){
-	if(CTX.mesh.oldxtrude_recombine){
-	  if(s->V[3]){
-	    newh = Create_Hexahedron(v1,v2,v3,v4,v5,v6,v7,v8);
-	    newh->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Hexahedra,&newh);
-	  }
-	  else{
-	    newp = Create_Prism(v1,v2,v3,v4,v5,v6);
-	    newp->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Prisms,&newp);
-	  }
-	}
-	else{
-	  if(are_exist(v4,v2,Tree_Ares) && 
-	     are_exist(v5,v3,Tree_Ares) && 
-	     are_exist(v4,v3,Tree_Ares) ){
-	    news = Create_Simplex(v1,v2,v3,v4);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v5,v6,v3);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v2,v4,v5,v3);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	  }
-	  if(are_exist(v4,v2,Tree_Ares) && 
-	     are_exist(v2,v6,Tree_Ares) && 
-	     are_exist(v4,v3,Tree_Ares) ){
-	    news = Create_Simplex(v1,v2,v3,v4);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v5,v6,v2);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v2,v6,v3);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	  }
-	  if(are_exist(v4,v2,Tree_Ares) && 
-	     are_exist(v2,v6,Tree_Ares) && 
-	     are_exist(v6,v1,Tree_Ares) ){
-	    news = Create_Simplex(v1,v2,v3,v6);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v5,v6,v2);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v2,v4,v6,v1);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	  }
-	  if(are_exist(v5,v1,Tree_Ares) && 
-	     are_exist(v5,v3,Tree_Ares) && 
-	     are_exist(v4,v3,Tree_Ares)  ){
-	    news = Create_Simplex(v1,v2,v3,v5);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v5,v6,v3);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v1,v4,v5,v3);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	  }
-	  if(are_exist(v5,v1,Tree_Ares) && 
-	     are_exist(v5,v3,Tree_Ares) && 
-	     are_exist(v6,v1,Tree_Ares)  ){
-	    news = Create_Simplex(v1,v2,v3,v5);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v5,v6,v1);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v1,v3,v5,v6);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	  }
-	  if(are_exist(v5,v1,Tree_Ares) && 
-	     are_exist(v2,v6,Tree_Ares) && 
-	     are_exist(v6,v1,Tree_Ares)  ){
-	    news = Create_Simplex(v1,v2,v3,v6);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v4,v5,v6,v1);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	    news = Create_Simplex(v1,v2,v5,v6);
-	    news->iEnt = ZonLayer[i];
-	    Tree_Add(THEV->Simplexes,&news);
-	  }
-	}
-      }
-    }
-  }  
-}
-
-static void Extrude_Simplex_Phase2 (void *data , void *dum){
-  
-  Simplex **pS , *s;
-  int i,j,k;
-  Vertex *v1,*v2,*v3,*v4,*v5,*v6;
-
-  pS = (Simplex**)data;
-  s = *pS;
-
-  k = 0;
-  for(i=0;i<NbLayer;i++){
-    for(j=0;j<NbElmLayer[i];j++){
-      List_Read(s->V[0]->Extruded_Points,k,&v1);
-      List_Read(s->V[1]->Extruded_Points,k,&v2);
-      List_Read(s->V[2]->Extruded_Points,k,&v3);
-      List_Read(s->V[0]->Extruded_Points,k+1,&v4);
-      List_Read(s->V[1]->Extruded_Points,k+1,&v5);
-      List_Read(s->V[2]->Extruded_Points,k+1,&v6);
-      k++;
-      if(are_exist(v4,v2,Tree_Ares) && are_exist(v5,v3,Tree_Ares) && are_exist(v1,v6,Tree_Ares)){
-	TEST_IS_ALL_OK++;
-	if(!are_exist(v4,v2,Tree_Swaps)){
-	  are_del(v4,v2,Tree_Ares);
-	  are_cree(v1,v5,Tree_Ares);
-	  are_cree(v1,v5,Tree_Swaps);
-	  are_cree(v4,v2,Tree_Swaps);
-	}
-	else if(!are_exist(v5,v3,Tree_Swaps)){
-	  are_del(v5,v3,Tree_Ares);
-	  are_cree(v2,v6,Tree_Ares);
-	  are_cree(v5,v3,Tree_Swaps);
-	  are_cree(v2,v6,Tree_Swaps);
-	}
-	else if(!are_exist(v1,v6,Tree_Swaps)){
-	  are_del(v1,v6,Tree_Ares);
-	  are_cree(v4,v3,Tree_Ares);
-	  are_cree(v1,v6,Tree_Swaps);
-	  are_cree(v4,v3,Tree_Swaps);
-	}
-      }
-      else if(are_exist(v1,v5,Tree_Ares) && are_exist(v2,v6,Tree_Ares) && are_exist(v4,v3,Tree_Ares)){
-	TEST_IS_ALL_OK++;
-	if(!are_exist(v1,v5,Tree_Swaps)){
-	  are_del(v1,v5,Tree_Ares);
-	  are_cree(v4,v2,Tree_Ares);
-	  are_cree(v1,v5,Tree_Swaps);
-	  are_cree(v4,v2,Tree_Swaps);
-	}
-	else if(!are_exist(v2,v6,Tree_Swaps)){
-	  are_del(v2,v6,Tree_Ares);
-	  are_cree(v5,v3,Tree_Ares);
-	  are_cree(v5,v3,Tree_Swaps);
-	  are_cree(v2,v6,Tree_Swaps);
-	}
-	else if(!are_exist(v4,v3,Tree_Swaps)){
-	  are_del(v4,v3,Tree_Ares);
-	  are_cree(v1,v6,Tree_Ares);
-	  are_cree(v1,v6,Tree_Swaps);
-	  are_cree(v4,v3,Tree_Swaps);
-	}	
-      }
-    }
-  }  
-}
-
-static void Extrude_Vertex (void *data , void *dum){
-
-  Vertex **pV , *v, *newv;
-  int i,j;
-  double h,a;
-
-  pV = (Vertex**)data;
-  v = *pV;
-  if(v->Extruded_Points)return;
-  v->Extruded_Points = List_Create(NbLayer,1,sizeof(Vertex*));
-  List_Add(v->Extruded_Points,&v);
-  h = 0.0;
- 
-  for(i=0;i<NbLayer;i++){
-
-    // Geometric progression ar^i
-    // Sum of n (=NbElmLayer[i]) terms = hLayer[i] = a (r^n-1)/(r-1)
-
-    if(parLayer[i] == 1.)
-      a = hLayer[i]/(double)NbElmLayer[i];
-    else
-      a = hLayer[i] * (parLayer[i]-1.)/(pow(parLayer[i],NbElmLayer[i])-1.) ;
-
-    for(j=0;j<NbElmLayer[i];j++){
-
-      //h += hLayer[i]/(double)NbElmLayer[i];
-      
-      h += a*pow(parLayer[i],j);
-
-      newv = Create_Vertex(++CurrentNodeNumber,v->Pos.X,v->Pos.Y,v->Pos.Z + h, v->lc , v->u );
-      Tree_Add(THEM->Vertices,&newv);
-      List_Add(v->Extruded_Points,&newv);
-    }
-  }
-}
-
-
-static void Extrude_Surface1 (void *data , void *dum){
-  Surface **pS , *s;
-  if(!NbLayer)return;
-  pS = (Surface**)data;
-  s = THES = *pS;
-
-  Tree_Action(s->Vertices,Extrude_Vertex);
-  if(!CTX.mesh.oldxtrude_recombine) Tree_Action(s->Simplexes,Extrude_Simplex_Phase1);
-}
-
-static void Extrude_Surface2 (void *data , void *dum){
-  Surface **pS , *s;
-  if(!NbLayer)return;
-  pS = (Surface**)data;
-  s = THES = *pS;
-
-  Tree_Action(s->Simplexes,Extrude_Simplex_Phase2);
-}
-
-
-static void Extrude_Surface3 (void *data , void *dum){
-  Surface **pS , *s;
-  int i;
-  if(!NbLayer)return;
-  pS = (Surface**)data;
-  s = THES = *pS;
-
-  /* Numerotation automatique des entites physiques */
-  Msg(INFO, "Extruding Surface %d", s->Num);
-  for(i=0;i<NbLayer;i++){
-    ZonLayer[i] = (int)(3 * K1) + (int) ((i+1) * K2) + s->Num ;
-  }
-  SurfLayer[0] = s->Num ;
-  for(i=0;i<NbLayer;i++){
-    SurfLayer[i+1] = (int)(2 * K1) + (int)((i+1) * K2) + s->Num ;
-  }
-
-  Tree_Action(s->Simplexes,Extrude_Simplex_Phase3);
-}
-
-
-static void Extrude_Seg(Vertex *V1, Vertex *V2){
-
-  int i,j,k;
-  Vertex *v1,*v2,*v3,*v4;
-  Simplex *s;
-
-  k = 0;
-  for(i=0;i<NbLayer;i++){
-    for(j=0;j<NbElmLayer[i];j++){
-      List_Read(V1->Extruded_Points,k,&v1);
-      List_Read(V2->Extruded_Points,k,&v2);
-      List_Read(V1->Extruded_Points,k+1,&v3);
-      List_Read(V2->Extruded_Points,k+1,&v4);
-      if(SurfLayer[i]){
-	if(CTX.mesh.oldxtrude_recombine){
-	  s = Create_Simplex(v1,v2,v4,NULL);
-	  s->V[3] = v3;
-	  s->iEnt = SurfLayer[i];
-	  Tree_Add(THEV->Simp_Surf,&s);
-	}
-	else{
-	  if(are_exist(v3,v2,Tree_Ares)){
-	    s = Create_Simplex(v3,v2,v1,NULL);
-	    s->iEnt = SurfLayer[i];
-	    Tree_Add(THEV->Simp_Surf,&s);
-	    s = Create_Simplex(v3,v4,v2,NULL);
-	    s->iEnt = SurfLayer[i];
-	    Tree_Add(THEV->Simp_Surf,&s);
-	  }
-	  else{
-	    s = Create_Simplex(v3,v4,v1,NULL);
-	    s->iEnt = SurfLayer[i];
-	    Tree_Add(THEV->Simp_Surf,&s);
-	    s = Create_Simplex(v1,v4,v2,NULL);
-	    s->iEnt = SurfLayer[i];
-	    Tree_Add(THEV->Simp_Surf,&s);
-	  }
-	}
-      }
-      k++;
-    }
-  }  
-
-}
-
-static void Extrude_Curve (void *data , void *dum){
-  Curve **pC , *c;
-  Vertex *v1,*v2;
-  int i;
-  if(!NbLayer)return;
-  pC = (Curve**)data;
-  c = *pC;
-  
-  if (c->Num < 0) return;
-
-  /* Numerotation automatique des entites physiques */
-  Msg(INFO, "Extruding Curve %d", c->Num);
-  for(i=0;i<NbLayer;i++){
-    SurfLayer[i] = (int)(1 * K1) + (int)((i+1) * K2) + c->Num ;
-  }
-
-  for(i=0;i<List_Nbr(c->Vertices)-1;i++){
-    List_Read(c->Vertices,i,&v1);
-    List_Read(c->Vertices,i+1,&v2);
-    Extrude_Seg(v1,v2);
-  } 
-}
-
-static void Extrude_Pnt(Vertex *V1){
-  int i,j,k;
-  Vertex *v1,*v2;
-  Simplex *s;
-
-  k = 0;
-  for(i=0;i<NbLayer;i++){
-    for(j=0;j<NbElmLayer[i];j++){
-      List_Read(V1->Extruded_Points,k,&v1);
-      List_Read(V1->Extruded_Points,k+1,&v2);
-      if(LineLayer[i]){
-	s = Create_Simplex(v1,v2,NULL,NULL);
-	s->iEnt = LineLayer[i];
-	Tree_Add(THEV->Simp_Surf,&s);
-      }
-      k++;
-    }
-  }  
-  
-}
-
-static void Extrude_Point (void *data , void *dum){
-  Vertex **pV, *v, **pV2;
-  int i;
-
-  if(!NbLayer)return;
-  pV = (Vertex**)data;
-  v = *pV;
-  
-  /* Numerotation automatique des entites physiques */
-  Msg(INFO, "Extruding Vertex %d", v->Num);
-  for(i=0;i<NbLayer;i++){
-    LineLayer[i] = (int)(4 * K1) + (int)((i+1) * K2) + v->Num ;
-  }
-
-  if((pV2 = (Vertex**)Tree_PQuery(THEM->Vertices, pV))){
-    Extrude_Vertex(pV2, NULL);
-    Extrude_Pnt(*pV2);
-  }
-
-}
-
-void Extrude_Mesh_Old(Mesh *M){
-  int j;
-  Mesh MM;
-
-  file = fopen("xtrude","w");
-
-  InitExtrudeParams();
-  LOCAL = &MM;
-  THEM  = M;
-
-  Create_BgMesh (WITHPOINTS, .2, LOCAL);
-
-  Tree_Left(M->Volumes,&THEV);
-  Tree_Action(M->Surfaces, Extrude_Surface1);
-
-  if(!CTX.mesh.oldxtrude_recombine){
-    j = TEST_IS_ALL_OK;
-    do{
-      TEST_IS_ALL_OK=0;
-      Tree_Action ( M->Surfaces , Extrude_Surface2 );
-      Msg(INFO, "%d swaps", TEST_IS_ALL_OK);
-      if(TEST_IS_ALL_OK == j)break;
-      j = TEST_IS_ALL_OK;
-    }while(TEST_IS_ALL_OK);
-  }
-
-  Tree_Action ( M->Surfaces , Extrude_Surface3 );
-  Tree_Action ( M->Curves , Extrude_Curve );
-  Tree_Action ( M->Points , Extrude_Point );
-
-  fclose(file);
-
-}
-
diff --git a/Mesh/3D_Mesh.cpp b/Mesh/3D_Mesh.cpp
deleted file mode 100644
index d42bab8891cb2064ad8a65709f4057fa6d9c1c9e..0000000000000000000000000000000000000000
--- a/Mesh/3D_Mesh.cpp
+++ /dev/null
@@ -1,887 +0,0 @@
-// $Id: 3D_Mesh.cpp,v 1.26 2001-08-13 09:42:02 geuzaine Exp $
-
-/*
- 
-  J-F Remacle 1995
-
-  MAILLAGE DELAUNAY 3D 
-
-  tant que l'arbre des tetraedres de qualites inacceptables 
-  n'est pas vide {
-    prendre le plus mauvais tetraedre;
-    creer un nouveau point;
-    eliminer les tetraedres dont le cercle circonscrit contient le point;
-    reconstruire le volume convexe;
-  } 
-
-*/
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "3D_Mesh.h"
-#include "Create.h"
-#include "Context.h"
-
-extern Mesh       *THEM, *LOCAL;
-extern Context_T   CTX;
-extern int         CurrentNodeNumber, FACE_DIMENSION;
-
-static Tree_T *Tsd, *Sim_Sur_Le_Bord, *POINTS_TREE;
-static List_T *Simplexes_Destroyed, *Simplexes_New, *Suppress;
-static List_T *LLL, *POINTS;
-static Simplex *THES;
-static Vertex *THEV;
-static Tree_T *SimXFac;
-static double volume, LC3D;
-static int ZONEELIMINEE, Methode = 0;
-
-Simplex  MyNewBoundary;
-int      Alerte_Point_Scabreux;
-
-void DebugSimplexe (Simplex * s){
-  int i;
-
-  fprintf (stderr, "Simplexe %p = %d %d %d %d \n",
-           s, s->V[0]->Num, s->V[1]->Num, s->V[2]->Num, s->V[3]->Num);
-
-  for (i = 0; i < 4; i++){
-    if (s->S[i] != &MyNewBoundary)
-      printf (" face : %d %d %d -> Simplexe %p\n",
-              s->F[i].V[0]->Num, s->F[i].V[1]->Num, s->F[i].V[2]->Num, s->S[i]);
-    else
-      printf (" face : %d %d %d -> Simplexe Boundary\n",
-              s->F[i].V[0]->Num, s->F[i].V[1]->Num, s->F[i].V[2]->Num);
-  }
-}
-
-void VSIM (void *a, void *b){
-  Simplex *S;
-
-  S = *(Simplex **) a;
-  if (S->V[3])
-    volume += fabs (S->Volume_Simplexe ());
-}
-
-void add_points (void *a, void *b){
-  Tree_Insert (POINTS_TREE, a);
-}
-
-void add_points_2 (void *a, void *b){
-  List_Add (POINTS, a);
-}
-
-
-double Interpole_lcTetraedre (Simplex * s, Vertex * v){
-  double mat[3][3], rhs[3], sol[3], det;
-
-  s->matsimpl (mat);
-  rhs[0] = v->Pos.X - s->V[0]->Pos.X;
-  rhs[1] = v->Pos.Y - s->V[0]->Pos.Y;
-  rhs[2] = v->Pos.Z - s->V[0]->Pos.Z;
-
-  sys3x3 (mat, rhs, sol, &det);
-  if (det == 0.0 ||
-      (1. - sol[0] - sol[1] - sol[2]) > 1. ||
-      (1. - sol[0] - sol[1] - sol[2]) < 0. ||
-      sol[0] > 1. ||
-      sol[1] > 1. ||
-      sol[2] > 1. ||
-      sol[0] < 0. ||
-      sol[1] < 0. ||
-      sol[2] < 0.){
-    return DMAX (s->V[0]->lc, DMAX (s->V[1]->lc, DMAX (s->V[2]->lc, s->V[3]->lc)));
-    //sol[0] = sol[1] = sol[2] = 0.25;
-  }
-
-  return (s->V[0]->lc * (1. - sol[0] - sol[1] - sol[2]) +
-          sol[0] * s->V[1]->lc +
-          sol[1] * s->V[2]->lc +
-          sol[2] * s->V[3]->lc);
-}
-
-Vertex *NewVertex (Simplex * s){
-  Vertex *v;
-
-  v = Create_Vertex (++CurrentNodeNumber, s->Center.X, s->Center.Y, s->Center.Z, 1., 0.0);
-  v->lc = Interpole_lcTetraedre (s, v);
-
-  return (v);
-}
-
-int Pt_In_Volume (double X, double Y, double Z, Mesh * m,
-                  double *l, double tol){
-  int i;
-  Vertex V;
-  double uvw[3];
-  Simplex *s;
-  Brick B;
-
-  V.Pos.X = X;
-  V.Pos.Y = Y;
-  V.Pos.Z = Z;
-
-  if (!(m->BGM.Typ == ONFILE) && !m->BGM.bgm){
-    *l = -1.0;
-    return (1);
-  }
-
-  B = LaBrique (&m->Grid, X, Y, Z);
-
-  if (B.N < 0){
-    return (0);
-  }
-
-  for (i = 0; i < List_Nbr (B.pT); i++){
-    List_Read (B.pT, i, &s);
-    if (s->Pt_In_Simplexe (&V, uvw, tol)){
-      *l = (1. - uvw[0] - uvw[1] - uvw[2]) * s->V[0]->lc
-        + uvw[0] * s->V[1]->lc
-        + uvw[1] * s->V[2]->lc
-        + uvw[2] * s->V[3]->lc;
-      return (1);
-    }
-  }
-
-  return (0);
-}
-
-int Pt_In_Circum (Simplex * s, Vertex * v){
-  double d1, d2, eps;
-
-  /* Determine si un point est dans le cercle circonscrit a un simplexe */
-
-  d1 = s->Radius;
-  d2 = sqrt (DSQR (v->Pos.X - s->Center.X) +
-             DSQR (v->Pos.Y - s->Center.Y) +
-             DSQR (v->Pos.Z - s->Center.Z));
-
-  eps = fabs (d1 - d2) / (d1 + d2);
-
-  if (eps < 1.e-12){
-    return (0); // return 1 ? 0 ?
-  }
-      
-  if (d2 < d1)
-    return (1);
-
-  return (0);
-}
-
-void Action_First_Simplexes (void *a, void *b){
-  Simplex **q;
-
-  if (!THES){
-    q = (Simplex **) a;
-    if (Pt_In_Circum (*q, THEV)){
-      THES = *q;
-    }
-  }
-}
-
-void LiS (void *a, void *b){
-  int j, N;
-  SxF SXF, *pSXF;
-  Simplex **pS, *S;
-
-  pS = (Simplex **) a;
-  S = *pS;
-  N = (S->V[3]) ? 4 : 3;
-
-  for (j = 0; j < N; j++){
-    SXF.F = S->F[j];
-    if ((pSXF = (SxF *) Tree_PQuery (SimXFac, &SXF))){
-      /* Creation du lien */
-      S->S[j] = pSXF->S;
-      pSXF->S->S[pSXF->NumFaceSimpl] = S;
-    }
-    else{
-      SXF.S = S;
-      SXF.NumFaceSimpl = j;
-      Tree_Add (SimXFac, &SXF);
-    }
-  }
-}
-
-void RzS (void *a, void *b){
-  int j, N;
-  Simplex **pS, *S;
-  pS = (Simplex **) a;
-  S = *pS;
-
-  N = (S->V[3]) ? 4 : 3;
-
-  for (j = 0; j < N; j++){
-    if ((S->S[j]) == NULL){
-      S->S[j] = &MyNewBoundary;
-    }
-  }
-}
-
-/* Cree les liens entre les simplexes, c.a.d recherche les voisins */
-
-void Link_Simplexes (List_T * Sim, Tree_T * Tim){
-  Simplex *S;
-  int i;
-
-  SimXFac = Tree_Create (sizeof (SxF), compareSxF);
-  if (Sim){
-    for (i = 0; i < List_Nbr (Sim); i++){
-      List_Read (Sim, i, &S);
-      LiS (&S, NULL);
-    }
-    for (i = 0; i < List_Nbr (Sim); i++){
-      List_Read (Sim, i, &S);
-      RzS (&S, NULL);
-    }
-  }
-  else{
-    Tree_Action (Tim, LiS);
-    Tree_Action (Tim, RzS);
-  }
-  Tree_Delete (SimXFac);
-}
-
-void Box_6_Tetraedron (List_T * P, Mesh * m){
-#define FACT 1.1
-#define LOIN 0.2
-
-  int i, j;
-  static int pts[8][3] = { {0, 0, 0},
-                           {1, 0, 0},
-                           {1, 1, 0},
-                           {0, 1, 0},
-                           {0, 0, 1},
-                           {1, 0, 1},
-                           {1, 1, 1},
-                           {0, 1, 1}};
-  static int tet[6][4] = { {1, 5, 2, 4},
-                           {2, 5, 6, 4},
-                           {4, 5, 6, 8},
-                           {6, 4, 8, 7},
-                           {6, 4, 7, 3},
-                           {2, 3, 4, 6}};
-  double Xm, Ym, Zm, XM, YM, ZM, Xc, Yc, Zc;
-  Simplex *S, *ps;
-  Vertex *V, *v, *pv;
-  List_T *smp;
-
-  smp = List_Create (8, 1, sizeof (Simplex *));
-
-  V = (Vertex *) Malloc (8 * sizeof (Vertex));
-
-  for (i = 0; i < List_Nbr (P); i++){
-    List_Read (P, i, &v);
-    if (!i){
-      Xm = XM = v->Pos.X;
-      Ym = YM = v->Pos.Y;
-      Zm = ZM = v->Pos.Z;
-    }
-    else{
-      Xm = DMIN (Xm, v->Pos.X);
-      XM = DMAX (XM, v->Pos.X);
-      Ym = DMIN (Ym, v->Pos.Y);
-      YM = DMAX (YM, v->Pos.Y);
-      Zm = DMIN (Zm, v->Pos.Z);
-      ZM = DMAX (ZM, v->Pos.Z);
-    }
-  }
-  if (Xm == XM)
-    XM = Xm + 1.;
-  if (Ym == YM)
-    YM = Ym + 1.;
-  if (Zm == ZM)
-    ZM = Zm + 1.;
-
-  Xc = XM - Xm;
-  Yc = YM - Ym;
-  Zc = ZM - Zm;
-
-  /* initialisation de la grille */
-
-  m->Grid.init = 0;
-  m->Grid.min.X = Xm - LOIN * FACT * Xc;
-  m->Grid.min.Y = Ym - LOIN * FACT * Yc;
-  m->Grid.min.Z = Zm - LOIN * FACT * Zc;
-  m->Grid.max.X = XM + LOIN * FACT * Xc;
-  m->Grid.max.Y = YM + LOIN * FACT * Yc;
-  m->Grid.max.Z = ZM + LOIN * FACT * Zc;
-
-  m->Grid.Nx = m->Grid.Ny = m->Grid.Nz = 20;
-
-  /* Longueur Caracteristique */
-
-  LC3D = sqrt (Xc * Xc + Yc * Yc + Zc * Zc);
-
-  /* Points de la boite de 1 a 8 
-
-     Z    8____________7
-     |   /|           /|
-     |  / |          / |
-     | /  |         /  |
-    5|/___|________/6  |
-     |   4|________|___|3
-     |   /         |   /
-     |  / Y        |  /
-     | /           | /
-     |/____________|/___ X
-     1             2
-
-   */
-
-  for (i = 0; i < 8; i++){
-    if (pts[i][0])
-      V[i].Pos.X = Xm - LOIN * Xc;
-    else
-      V[i].Pos.X = XM + LOIN * Xc;
-    
-    if (pts[i][1])
-      V[i].Pos.Y = Ym - LOIN * Yc;
-    else
-      V[i].Pos.Y = YM + LOIN * Yc;
-    
-    if (pts[i][2])
-      V[i].Pos.Z = Zm - LOIN * Zc;
-    else
-      V[i].Pos.Z = ZM + LOIN * Zc;
-    
-    V[i].Num = -(++CurrentNodeNumber);
-    pv = &V[i];
-    pv->lc = 1.0;
-    pv->Mov = NULL;
-    Tree_Replace (m->Vertices, &pv);
-  }
-
-  /* 6 Tetraedres forment le maillage de la boite */
-
-  for (i = 0; i < 6; i++){
-    S = Create_Simplex (&V[tet[i][0] - 1], &V[tet[i][1] - 1], 
-                        &V[tet[i][2] - 1], &V[tet[i][3] - 1]);
-    List_Add (smp, &S);
-  }
-  
-  Link_Simplexes (smp, NULL);
-  for (i = 0; i < List_Nbr (smp); i++){
-    List_Read (smp, i, &ps);
-    for (j = 0; j < 4; j++)
-      if (ps->S[j] == NULL)
-        ps->S[j] = &MyNewBoundary;
-    Tree_Replace (m->Simplexes, &ps);
-  }
-  
-}
-
-
-void Fill_Sim_Des (void *a, void *b){
-  Simplex **S;
-  S = (Simplex **) a;
-  if (Pt_In_Circum (*S, THEV))
-    List_Add (Simplexes_Destroyed, a);
-}
-
-void TStoLS (void *a, void *b){
-  List_Add (Simplexes_Destroyed, a);
-}
-
-void TAtoLA (void *a, void *b){
-  List_Add (Simplexes_New, a);
-}
-
-void CrSi (void *a, void *b){
-  SxF *S;
-  Simplex *s;
-  S = (SxF *) a;
-  if (S->NumFaceSimpl == 1){
-    s = Create_Simplex (THEV, S->F.V[0], S->F.V[1], S->F.V[2]);
-    s->iEnt = ZONEELIMINEE;
-    THEM->Metric->setSimplexQuality (s);
-    List_Add (Simplexes_New, &s);
-  }
-  else if (S->NumFaceSimpl != 2){
-    Msg(WARNING, "Huh! Panic in CrSi");
-  }
-}
-
-
-void NewSimplexes (Mesh * m, List_T * Sim, List_T * news){
-  int i, j;
-  Tree_T *SimXFac;
-  Simplex *S;
-  SxF SXF, *pSXF;
-
-  SimXFac = Tree_Create (sizeof (SxF), compareSxF);
-
-  for (i = 0; i < List_Nbr (Sim); i++){
-    List_Read (Sim, i, &S);
-    if (!i)
-      ZONEELIMINEE = S->iEnt;
-    else {
-      if (S->iEnt != ZONEELIMINEE){
-        Msg(WARNING, "Huh! The elimination failed %d %d",
-            S->iEnt, ZONEELIMINEE);
-      }
-    }
-    for (j = 0; j < 4; j++){
-      SXF.F = S->F[j];
-      if ((pSXF = (SxF *) Tree_PQuery (SimXFac, &SXF))){
-        (pSXF->NumFaceSimpl)++;
-      }
-      else{
-        SXF.NumFaceSimpl = 1;
-        Tree_Add (SimXFac, &SXF);
-      }
-    }
-  }
-
-  /* Les faces non communes sont obligatoirement a la frontiere ... 
-     -> Nouveaux simplexes */
-
-  Tree_Action (SimXFac, CrSi);
-  Tree_Delete (SimXFac);
-}
-
-
-
-/* Methode recursive : Rempli Tsd les simplexes detruits 
-   Invariant : Le simplexe est a eliminer
-   Le simplexe n'est pas encore considere */
-
-int recur_bowyer (Simplex * s){
-  int i;
-
-  Tree_Insert (Tsd, &s);
-  for (i = 0; i < 4; i++){
-    if (s->S[i] && s->S[i] != &MyNewBoundary && !Tree_Query (Tsd, &s->S[i])){
-      if (Pt_In_Circum (s->S[i], THEV) && (s->iEnt == s->S[i]->iEnt)){
-        recur_bowyer (s->S[i]);
-      }
-      else{
-        if (s->iEnt != s->S[i]->iEnt){
-	  //Msg(WARNING, "Point scabreux %d", s->S[i]->Num);
-          Alerte_Point_Scabreux = 1;
-        }
-        Tree_Insert (Sim_Sur_Le_Bord, &s->S[i]);
-      }
-    }
-  }
-  return 1;
-}
-
-bool Bowyer_Watson (Mesh * m, Vertex * v, Simplex * S, int force){
-  int i;
-  Simplex *s;
-  //  static int init = 1;
-  double volumeold, volumenew;
-
-  THEV = v;
-
-  double x = (S->V[0]->Pos.X + S->V[1]->Pos.X + S->V[2]->Pos.X + S->V[3]->Pos.X) / 4.;
-  double y = (S->V[0]->Pos.Y + S->V[1]->Pos.Y + S->V[2]->Pos.Y + S->V[3]->Pos.Y) / 4.;
-  double z = (S->V[0]->Pos.Z + S->V[1]->Pos.Z + S->V[2]->Pos.Z + S->V[3]->Pos.Z) / 4.;
-
-  if (force)
-    THEM->Metric->Identity ();
-  else
-    THEM->Metric->setMetric (x, y, z);
-
-  Tsd = Tree_Create (sizeof (Simplex *), compareSimplex);
-  Sim_Sur_Le_Bord = Tree_Create (sizeof (Simplex *), compareSimplex);
-  //  if (init){
-    //    init = 0;
-    //  }
-  List_Reset (Simplexes_Destroyed);
-  List_Reset (Simplexes_New);
-
-
-  if (Methode){
-    Tree_Action (m->Simplexes, Fill_Sim_Des);
-  }
-  else{
-    recur_bowyer (S);
-  }
-  
-  Tree_Action (Tsd, TStoLS);
-  NewSimplexes (m, Simplexes_Destroyed, Simplexes_New);
-
-  /* calcul des volumes des simplexes crees */
-
-  if (Alerte_Point_Scabreux || !CTX.mesh.speed_max){
-    volume = 0.0;
-    for (i = 0; i < List_Nbr (Simplexes_Destroyed); i++){
-      VSIM (List_Pointer (Simplexes_Destroyed, i), NULL);
-    }
-    volumeold = volume;
-    volume = 0.0;
-    for (i = 0; i < List_Nbr (Simplexes_New); i++){
-      VSIM (List_Pointer (Simplexes_New, i), NULL);
-    }
-    volumenew = volume;
-  }
-  else{
-    volumeold = 1.0;
-    volumenew = 1.0;
-  }
-
-  /* critere du volume */
-
-  if ((fabs (volumeold - volumenew) / (volumeold + volumenew)) > 1.e-8){
-    if (Tree_Suppress (m->Simplexes, &S)){
-      S->Quality = 0.0;
-      Tree_Add (m->Simplexes, &S);
-    }
-    if(force){
-      List_Reset (Simplexes_Destroyed);
-      List_Reset (Simplexes_New);
-      Tree_Delete (Sim_Sur_Le_Bord);
-      Tree_Delete (Tsd);
-      //printf(" Aie Aie Aie volume changed %g -> %g\n",volumeold,volumenew);
-      return false;
-    }
-  }
-  else{
-    Tree_Add (m->Vertices, &THEV);
-    for (i = 0; i < List_Nbr (Simplexes_New); i++){
-      Tree_Add (m->Simplexes, List_Pointer (Simplexes_New, i));
-    }
-    
-    /* Suppression des simplexes elimines */
-    
-    for (i = 0; i < List_Nbr (Simplexes_Destroyed); i++){
-      List_Read (Simplexes_Destroyed, i, &s);
-      if (!Tree_Suppress (m->Simplexes, &s))
-        Msg(GERROR, "Impossible to delete simplex");
-      // CORRECTION FROM Free(s) to that
-      Free_Simplex (&s,0);
-    }
-    
-    /* Creation des liens entre nouveaux simplexes */
-    
-    Tree_Action (Sim_Sur_Le_Bord, TAtoLA);
-    Link_Simplexes (Simplexes_New, m->Simplexes);
-  }
-
-  Tree_Delete (Sim_Sur_Le_Bord);
-  Tree_Delete (Tsd);
-  return true;
-}
-
-double rand_sign(){
-  double d = ((double)rand()/(double)RAND_MAX) ;
-  return (d < 0.5)?-1.0:1.0;
-}
-
-void Convex_Hull_Mesh (List_T * Points, Mesh * m){
-  int i, j, N, n;
-  int Nbr_OK = 0, Nbr_NOTOK = 0;
-
-  N = List_Nbr (Points);
-  n = IMAX (N / 20, 1);
-
-  Box_6_Tetraedron (Points, m);
-  // List_Sort (Points, comparePosition);
-
-  for (i = 0; i < N; i++){
-    THES = NULL;
-    List_Read (Points, i, &THEV);
-
-    if (Simplexes_New)
-      for (j = 0; j < List_Nbr (Simplexes_New); j++){
-        Action_First_Simplexes (List_Pointer (Simplexes_New, j), NULL);
-      }
-    
-    if (!THES){
-      Tree_Action (m->Simplexes, Action_First_Simplexes);
-      Nbr_OK++;
-    }
-    else{
-      Nbr_NOTOK++;
-    }
-    if (i % n == n - 1){
-      volume = 0.0;
-      Tree_Action (m->Simplexes, VSIM);
-      Msg(STATUS3, "Nod=%d/%d Elm=%d", i+1,N,Tree_Nbr(m->Simplexes)); 
-      Msg(STATUS1, "Vol=%g",volume); 
-    }
-    if (!THES){
-      Msg(WARNING, "Vertex (%g,%g,%g) in no simplex",
-          THEV->Pos.X,THEV->Pos.Y,THEV->Pos.Z); 
-      THEV->Pos.X += 10 * CTX.mesh.rand_factor * LC3D * (double)rand()/(double)RAND_MAX;
-      THEV->Pos.Y += 10 * CTX.mesh.rand_factor * LC3D * (double)rand()/(double)RAND_MAX;
-      THEV->Pos.Z += 10 * CTX.mesh.rand_factor * LC3D * (double)rand()/(double)RAND_MAX;
-      Tree_Action (m->Simplexes, Action_First_Simplexes);
-    }
-    bool  ca_marche = Bowyer_Watson (m, THEV, THES, 1);
-    int count = 0;
-    while(!ca_marche){
-      //Msg(INFO, "Unable to add point %d (%g,%g,%g)",
-      //	  THEV->Num, THEV->Pos.X,THEV->Pos.Y,THEV->Pos.Z );
-      count ++;
-      double dx = rand_sign() * 1000 * CTX.mesh.rand_factor * LC3D *
-	(double)rand()/(double)RAND_MAX;
-      double dy = rand_sign() * 1000 * CTX.mesh.rand_factor * LC3D *
-	(double)rand()/(double)RAND_MAX;
-      double dz = rand_sign() * 1000 * CTX.mesh.rand_factor * LC3D *
-	(double)rand()/(double)RAND_MAX;
-      THEV->Pos.X += dx;
-      THEV->Pos.Y += dy;
-      THEV->Pos.Z += dz;
-      THES = NULL;
-      Tree_Action (m->Simplexes, Action_First_Simplexes);
-      ca_marche = Bowyer_Watson (m, THEV, THES, 1);
-      THEV->Pos.X -= dx;
-      THEV->Pos.Y -= dy;
-      THEV->Pos.Z -= dz;          
-      if(count > 5){
-        N++;
-        List_Add(POINTS,&THEV);
-        Msg(WARNING, "Unable to add point %d (will do it later)",
-            THEV->Num);
-        break;
-      }
-    }
-  }
-}
-
-void suppress_vertex (void *data, void *dum){
-  Vertex **pv;
-
-  pv = (Vertex **) data;
-  if ((*pv)->Num < 0)
-    List_Add (Suppress, pv);
-}
-
-void suppress_simplex (void *data, void *dum){
-  Simplex **pv;
-
-  pv = (Simplex **) data;
-  if ((*pv)->iEnt == 0)
-    List_Add (Suppress, pv);
-
-  /*
-  else{
-    for(i=0;i<List_Nbr(TrsfVolNum);i++)
-      if((*pv)->iEnt == (*(int*)List_Pointer(TrsfVolNum,i))->Num)
-        List_Add(Suppress,pv);
-  }
-  */
-}
-
-void add_in_bgm (void *a, void *b){
-  Simplex **s, *S;
-
-  s = (Simplex **) a;
-  S = *s;
-  List_Add (LLL, S);
-}
-
-void Bgm_With_Points (Mesh * bgm){
-  int i;
-  Simplex *s;
-
-  bgm->BGM.bgm = List_Create (Tree_Nbr (bgm->Simplexes), 10, sizeof (Simplex));
-  LLL = bgm->BGM.bgm;
-  Tree_Action (bgm->Simplexes, add_in_bgm);
-  for (i = 0; i < List_Nbr (LLL); i++){
-    s = (Simplex *) List_Pointer (LLL, i);
-    AddSimplexInGrid (bgm, s, BOITE);
-  }
-}
-
-void Create_BgMesh (int Type, double lc, Mesh * m){
-  m->BGM.Typ = Type;
-  switch (Type){
-  case CONSTANT:
-    m->BGM.lc = lc;
-    break;
-  case ONFILE:
-    break;
-  case WITHPOINTS:
-    m->BGM.bgm = NULL;
-    break;
-  }
-}
-
-void Maillage_Volume (void *data, void *dum){
-  Volume *v, **pv;
-  Mesh M;
-  Surface S, *s;
-  Simplex *simp;
-  Vertex *newv;
-  int n, N;
-  double uvw[3];
-  int i;
-
-  // WE SHOULD ALLOCATE THESE GUYS HERE AND NOT IN Bowyer_Watson 
-  // MEMORY BUG -JF
-
-  Simplexes_New = List_Create (10, 10, sizeof (Simplex *));
-  Simplexes_Destroyed = List_Create (10, 10, sizeof (Simplex *));
-
-  FACE_DIMENSION = 2;
-
-  pv = (Volume **) data;
-  v = *pv;
-
-  if(v->Dirty){
-    Msg(INFO, "Not meshing dirty Volume %d", v->Num);
-    return;
-  }
-
-  if (Extrude_Mesh (v)){
-  }
-  else if (MeshTransfiniteVolume (v)){
-  }
-  else if (v->Typ == 99999){
-
-    LOCAL = &M;
-    Create_BgMesh (THEM->BGM.Typ, .2, LOCAL);
-    s = &S;
-    
-    POINTS_TREE = Tree_Create (sizeof (Vertex *), comparePosition);
-    POINTS = List_Create (100, 100, sizeof (Vertex *));
-    LOCAL->Simplexes = v->Simplexes;
-    LOCAL->Vertices = v->Vertices;
-    
-    for (i = 0; i < List_Nbr (v->Surfaces); i++){
-      List_Read (v->Surfaces, i, &s);
-      Tree_Action (s->Vertices, add_points);
-    }
-    Tree_Action (POINTS_TREE, add_points_2);
-    Tree_Delete (POINTS_TREE);
-    
-    N = List_Nbr (POINTS);
-    n = N / 30 + 1;
-
-    if(!N) return;
-    
-    /* Creation d'un maillage initial respectant la frontiere */
-    
-    Msg(STATUS2, "Mesh 3D... (initial)");
-    
-    Convex_Hull_Mesh (POINTS, LOCAL);
-    
-    while (!Coherence (v, LOCAL));
-
-    Link_Simplexes (NULL, LOCAL->Simplexes);
-    
-    /* Suppression des noeuds de num < 0 */
-    
-    Suppress = List_Create (10, 10, sizeof (Vertex *));
-    Tree_Action (v->Vertices, suppress_vertex);
-    for (i = 0; i < List_Nbr (Suppress); i++){
-      Tree_Suppress (v->Vertices, List_Pointer (Suppress, i));
-    }
-    List_Delete (Suppress);
-
-    /* Suppression des elements dont le num de vol == 0 (cad qui
-       n'appartiennent a auncun volume defini) */
-
-    Suppress = List_Create (10, 10, sizeof (Simplex *));
-    Tree_Action (v->Simplexes, suppress_simplex);
-    for (i = 0; i < List_Nbr (Suppress); i++){
-      Tree_Suppress (v->Simplexes, List_Pointer (Suppress, i));
-    }
-    
-    List_Delete (Suppress);
-    
-    if (Tree_Nbr (LOCAL->Simplexes) == 0) return;
-
-    /* Si il reste quelque chose a mailler en volume : */
-
-    Msg(STATUS2, "Mesh 3D... (final)");
-    
-    v->Simplexes = LOCAL->Simplexes;
-    
-    Bgm_With_Points (LOCAL);
-    POINTS_TREE = THEM->Simplexes;
-    
-    Tree_Right (LOCAL->Simplexes, &simp);
-    i = 0;
-    Progress (102);
-    while (simp->Quality > CONV_VALUE){
-      newv = NewVertex (simp);
-      //double l;
-      //while(!Pt_In_Volume(newv->Pos.X,newv->Pos.Y,newv->Pos.Z,LOCAL,&l,0.0)){
-      
-      while (!simp->Pt_In_Simplexe (newv, uvw, 1.e-5) &&                 
-             (simp->S[0] == &MyNewBoundary ||
-              !simp->S[0]->Pt_In_Simplexe (newv, uvw, 1.e-5)) &&
-             (simp->S[1] == &MyNewBoundary ||
-              !simp->S[1]->Pt_In_Simplexe (newv, uvw, 1.e-5)) &&
-             (simp->S[2] == &MyNewBoundary ||
-              !simp->S[2]->Pt_In_Simplexe (newv, uvw, 1.e-5)) &&
-             (simp->S[3] == &MyNewBoundary ||
-              !simp->S[3]->Pt_In_Simplexe (newv, uvw, 1.e-5))) {
-        Tree_Suppress (LOCAL->Simplexes, &simp);
-        simp->Quality = 0.1;
-        Tree_Insert (LOCAL->Simplexes, &simp);
-        Tree_Right (LOCAL->Simplexes, &simp);
-        if (simp->Quality < CONV_VALUE)
-          break;
-        newv = NewVertex (simp);
-      }
-      if (simp->Quality < CONV_VALUE)
-        break;
-      i++;
-      if (i % n == n - 1){
-        volume = 0.0;
-        Tree_Action (LOCAL->Simplexes, VSIM);
-        Msg(STATUS3, "Nod=%d Elm=%d",
-            Tree_Nbr (LOCAL->Vertices), Tree_Nbr (LOCAL->Simplexes));
-        Msg(STATUS1, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
-        double adv = 100. * (CONV_VALUE / simp->Quality);
-        Progress ((int) adv);
-      }
-      Bowyer_Watson (LOCAL, newv, simp, 0);
-      Tree_Right (LOCAL->Simplexes, &simp);
-    }
-    
-    POINTS_TREE = THEM->Vertices;
-    Tree_Action (v->Vertices, add_points);
-    POINTS_TREE = THEM->Simplexes;
-    Tree_Action (v->Simplexes, add_points);
-    
-    Progress(-1);
-
-    if (CTX.mesh.quality){
-      extern void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order);
-      Msg(STATUS3, "Swapping edges (1st pass)");
-      SwapEdges3D (THEM, v, CTX.mesh.quality, true);
-      Msg(STATUS3, "Swapping edges (2nd pass)");
-      SwapEdges3D (THEM, v, CTX.mesh.quality, false);
-      Msg(STATUS3, "Swapping edges (last pass)");
-      SwapEdges3D (THEM, v, CTX.mesh.quality, true);
-    }
-
-    if (CTX.mesh.nb_smoothing){
-      /*
-      Msg(STATUS3, "Laplacian smoothing");
-      tnxe = Tree_Create (sizeof (NXE), compareNXE);
-      create_NXE (v->Vertices, v->Simplexes, tnxe);
-      for (int i = 0; i < CTX.mesh.nb_smoothing; i++)
-        Tree_Action (tnxe, ActionLiss);
-      delete_NXE (tnxe);
-      Msg(STATUS3, "Swapping edges (last pass)");
-      SwapEdges3D (THEM, v, 0.5, true);
-      */
-    }
-
-    if (CTX.mesh.degree == 2)
-      Degre2 (THEM->Vertices, THEM->VertexEdges, v->Simplexes, NULL, NULL);
-  }
-
-  THEM->Statistics[6] += Tree_Nbr(v->Vertices);
-  THEM->Statistics[9] += Tree_Nbr(v->Simplexes);
-  THEM->Statistics[10] += Tree_Nbr(v->Hexahedra);
-  THEM->Statistics[11] += Tree_Nbr(v->Prisms);
-
-  if(v->Typ == 99999){
-    Gamma_Maillage (THEM, &THEM->Statistics[17], &THEM->Statistics[18], &THEM->Statistics[19]);
-    Eta_Maillage (THEM, &THEM->Statistics[20], &THEM->Statistics[21], &THEM->Statistics[22]);
-    R_Maillage (THEM, &THEM->Statistics[23], &THEM->Statistics[24], &THEM->Statistics[25]);
-  }
-  // WE SHOULD DESALLOCATE THESE GUYS HERE AND NOT NOWHERE ;-)
-  // MEMORY BUG -JF
-  List_Delete(Simplexes_New);
-  List_Delete(Simplexes_Destroyed);
-}
diff --git a/Mesh/3D_Mesh.h b/Mesh/3D_Mesh.h
deleted file mode 100644
index 2b0d87bd67da28723e9945c604a6787dd663cbb9..0000000000000000000000000000000000000000
--- a/Mesh/3D_Mesh.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _3D_MESH_H_
-#define _3D_MESH_H_
-
-Brick LaBrique (Grid_T * pGrid, double X, double Y, double Z);
-void AddSimplexInGrid (Mesh * m, Simplex * s, int boule_boite);
-int Coherence (Volume * v, Mesh * m);
-int Pt_In_Volume (double X, double Y, double Z, Mesh * m,
-                  double *l, double tol);
-void findminmax (void *a, void *b);
-void getminmax (double *xmin, double *ymin, double *zmin,
-                double *xmax, double *ymax, double *zmax);
-void cut_tetraedre (Intersection * pI, Tree_T * AddedTet, Tree_T * TetDel,
-                    Tree_T * newpoints);
-void Impression_Resultats (void);
-void Restore_Volume (Volume * v);
-void Remise_A_Zero (void);
-
-#endif
diff --git a/Mesh/3D_SMesh.cpp b/Mesh/3D_SMesh.cpp
deleted file mode 100644
index 77d893b4925f25eef2f5297f7b03597115c7f9d9..0000000000000000000000000000000000000000
--- a/Mesh/3D_SMesh.cpp
+++ /dev/null
@@ -1,513 +0,0 @@
-// $Id: 3D_SMesh.cpp,v 1.10 2001-08-13 09:38:14 geuzaine Exp $
-
-/*  
-  Maillage transfini volumique
-
-                     a0   s0 s1  f0  s0 s1 s5 s4              s6      
-   s7        s6      a1   s1 s2  f1  s1 s2 s6 s4              *       
-     *-------*       a2   s3 s2  f2  s3 s2 s6 s7             /|\      
-     |\s4    |\      a3   s0 s3  f3  s0 s3 s7 s4            / | \     
-     | *-------* s5  a4   s4 s5  f4  s0 s1 s2 s3      s7/s4/  |s2\    
-     | |   s2| |     a5   s5 s6  f5  s4 s5 s6 s7          *---*---* s5
-  s3 *-|-----* |     a6   s7 s6                           |  / \  |   
-      \|      \|     a7   s4 s7                           | /   \ |   
-       *-------*     a8   s0 s4                           |/     \|   
- v w  s0       s1    a9   s1 s5                           *-------*     
-  \|                 a10  s2 s6                  v w    s3/s0     s1    
-   *--u              a11  s3 s7                   \|                 
-                                                   *--u              
-
-
-  Remarque : La definition d'un volume prismatique doit se faire dans l'ordre
-             donne sur le schema. (degenerescence obligatoirement en s0/s4)
-
-*/
-
-#include "Gmsh.h"
-#include "Mesh.h"
-#include "Interpolation.h"
-#include "Create.h"
-
-extern Mesh  *THEM;
-extern int    CurrentNodeNumber;
-
-int index2d (int flag, int M, int N, int m, int n){
-  switch(flag){    
-  case 0 : return(n + N*m);
-  case 1 : return(M*N - M*(n+1) + m);
-  case 2 : return(M*N - (n+N*m) - 1);
-  case 3 : return(M + n*M - m - 1);
-  case 4 : return(N + m*N - n - 1);
-  case 5 : return(M*N - (m+M*n) - 1);
-  case 6 : return(M*N - N*(m+1) + n);
-  case 7 : return(m + M*n);
-  default : return 0;
-  }
-}
-
-void index_uv (int flag, Vertex * ver, double *u, double *v){
-  switch (flag){
-  case 0: *u =      ver->us[0]; *v =      ver->us[1]; break;
-  case 1: *u =      ver->us[1]; *v = 1. - ver->us[0]; break;
-  case 2: *u = 1. - ver->us[0]; *v = 1. - ver->us[1]; break;
-  case 3: *u = 1. - ver->us[1]; *v =      ver->us[0]; break;
-  case 4: *u =      ver->us[0]; *v = 1. - ver->us[1]; break;
-  case 5: *u = 1. - ver->us[1]; *v = 1. - ver->us[0]; break;
-  case 6: *u = 1. - ver->us[0]; *v =      ver->us[1]; break;
-  case 7: *u =      ver->us[1]; *v =      ver->us[0]; break;
-  }
-}
-
-#define CREATE_HEX Create_Hexahedron(list[(i)   + N1*(j)   + N1*N2*(k)],   \
-                                     list[(i+1) + N1*(j)   + N1*N2*(k)],   \
-                                     list[(i+1) + N1*(j+1) + N1*N2*(k)],   \
-                                     list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                     list[(i)   + N1*(j)   + N1*N2*(k+1)], \
-                                     list[(i+1) + N1*(j)   + N1*N2*(k+1)], \
-                                     list[(i+1) + N1*(j+1) + N1*N2*(k+1)], \
-                                     list[(i)   + N1*(j+1) + N1*N2*(k+1)])
-
-#define CREATE_PRISM_1 Create_Prism(list[(i)   + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k+1)])
-
-#define CREATE_PRISM_2 Create_Prism(list[(i+1) + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i+1) + N1*(j+1) + N1*N2*(k+1)], \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k+1)])
-
-#define CREATE_SIM_1 Create_Simplex(list[(i)   + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j)   + N1*N2*(k+1)])
-
-#define CREATE_SIM_2 Create_Simplex(list[(i+1) + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k+1)])
-
-#define CREATE_SIM_3 Create_Simplex(list[(i)   + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k+1)])
-
-#define CREATE_SIM_4 Create_Simplex(list[(i+1) + N1*(j)   + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j+1) + N1*N2*(k)])
-
-#define CREATE_SIM_5 Create_Simplex(list[(i)   + N1*(j+1) + N1*N2*(k)],   \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j+1) + N1*N2*(k)])
-
-#define CREATE_SIM_6 Create_Simplex(list[(i+1) + N1*(j)   + N1*N2*(k+1)], \
-                                    list[(i)   + N1*(j+1) + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j+1) + N1*N2*(k+1)], \
-                                    list[(i+1) + N1*(j+1) + N1*N2*(k)])
-
-int MeshTransfiniteVolume (Volume *vol) {
-  int        i,j,k,flag,nbs,nbp,nbg;
-  int        nbtet=0, nbpri=0, nbhex=0;
-  Surface   *G[6],*GG[6];
-  Vertex     V,**vexist,*pV,*CP[4],**list;
-  double     u,v,w,dum;
-  int        F_flag[6];
-  int        N1,N2,N3;
-  Vertex    *F[6],*C[12],*Stmp[8],*S[8];
-  Hexahedron *hexa;
-  Prism     *prism;
-  Simplex   *simp;
-  int        NbFacesFound=0 ;
-
-  static int tab1hex[] = {0,1,5,4, 1,2,6,5, 3,2,6,7, 0,3,7,4, 0,1,2,3, 4,5,6,7};
-  static int tab2[] = {0,1,2,3, 1,2,3,0, 2,3,0,1, 3,0,1,2, 
-                       3,2,1,0, 2,1,0,3, 1,0,3,2, 0,3,2,1};
-
-  if (vol->Method != TRANSFINI) return(0);
-  
-  nbs = List_Nbr(vol->Surfaces);
-  
-  if(nbs == 5) nbp = 6;
-  else if(nbs == 6) nbp = 8;
-  else return(0);
-
-  Msg(STATUS3, "Meshing Volume %d", vol->Num);
-
-  for(i=0;i<6;i++) G[i] = NULL ;
-  
-  for(i=0;i<nbp;i++){
-    V.Num = vol->ipar[i];
-    pV = &V;
-    if((vexist = (Vertex**)Tree_PQuery(THEM->Vertices,&pV)) == NULL) {
-      Msg(WARNING, "Unknown control point %d in Transfinite Volume %d",
-          V.Num,vol->Num); 
-      return(0);
-    }
-    else{
-      Stmp[i]=*vexist;
-    }
-  }   
-  
-  if(nbp == 8){
-    for(i=0;i<8;i++) S[i]=Stmp[i];
-  }
-  else if(nbp == 6){
-    S[0] = S[3] = Stmp[0];
-    S[1] = Stmp[1];
-    S[2] = Stmp[2];
-    S[4] = S[7] = Stmp[3];
-    S[5] = Stmp[4];
-    S[6] = Stmp[5];
-  }
-
-  /*
-  for(i=0;i<8;i++) printf("S[%d]=%d \n", i, S[i]->Num);
-  */
-
-  for(i=0;i<nbs;i++) List_Read(vol->Surfaces,i,&GG[i]);
-  
-  for(i=0;i<nbs;i++){
-    nbg = List_Nbr(GG[i]->Generatrices);
-
-    for(j=0;j<nbg;j++){
-      V.Num = GG[i]->ipar[j];
-      pV = &V;
-      if((vexist = (Vertex**)Tree_PQuery(THEM->Vertices,&pV)) == NULL) {
-        Msg(WARNING, "Unknown control point %d in Transfinite Surface %d",
-            V.Num,GG[i]->Num); 
-        return(0);
-      }
-      else{
-        CP[j]=*vexist;
-      }
-    }       
-
-    if(nbg == 3) CP[3] = CP[0];
-
-    for(flag=0;flag<8;flag++){
-      for(k=0;k<6;k++){
-        if(S[tab1hex[4*k  ]]->Num == CP[tab2[4*flag  ]]->Num && 
-           S[tab1hex[4*k+1]]->Num == CP[tab2[4*flag+1]]->Num &&
-           S[tab1hex[4*k+2]]->Num == CP[tab2[4*flag+2]]->Num &&
-           S[tab1hex[4*k+3]]->Num == CP[tab2[4*flag+3]]->Num ){
-          G[k]=GG[i];
-          F_flag[k]=flag;
-          NbFacesFound++;
-          /*
-          printf("TR3D: (k=%d) face trouvee %d (flag = %d) : nodes %d %d %d %d \n", 
-                 k,GG[i]->Num, flag, 
-                 S[tab1hex[4*k  ]]->Num, 
-                 S[tab1hex[4*k+1]]->Num,
-                 S[tab1hex[4*k+2]]->Num,
-                 S[tab1hex[4*k+3]]->Num);
-          */
-        }
-      }
-    }
-  }
-
-  if(nbs == 6 && NbFacesFound != 6) {
-    Msg(WARNING, "Wrong definition of hexahedric Transfinite Volume %d", 
-        vol->Num); 
-    return(0);
-  }
-
-  if(nbs == 5 && NbFacesFound != 5) {
-    Msg(WARNING1, "Wrong definition of prismatic Transfinite Volume %d", vol->Num);
-    Msg(WARNING2, "Possibly because the first and fourth points are not the");
-    Msg(WARNING3, "degenerated ones"); 
-    return(0);
-  }
-
-  if(nbs == 6){
-    for(i=0;i<6;i++){
-      if(G[i] == NULL) {
-        Msg(WARNING, "Wrong definition of hexahedric Transfinite Volume %d",
-            vol->Num); 
-        return(0);
-      }
-    }
-  }
-  else if(nbs == 5){
-    for(i=0;i<6;i++){
-      if(i != 3) {
-        if(G[i] == NULL) {
-          Msg(WARNING1, "Wrong definition of prismatic Transfinite Volume %d", vol->Num);
-	  Msg(WARNING2, "Possibly because the first and fourth points are not the");
-	  Msg(WARNING3, "degenerated ones"); 
-          return(0);
-        }
-      }
-    }
-  }
-  
-
-  N1 = (F_flag[4] % 2 == 0) ? G[4]->Nu : G[4]->Nv ;
-  N2 = (F_flag[4] % 2 == 0) ? G[4]->Nv : G[4]->Nu ;
-  N3 = (F_flag[0] % 2 == 0) ? G[0]->Nv : G[0]->Nu ;
-
-  /*
-  printf("N1(%d) N2(%d) N3(%d)\n", N1,N2,N3);
-  */
-
-  list = (Vertex**)Malloc(N1*N2*N3*sizeof(Vertex*));
- 
-  for(i=0;i<N1;i++){
-
-    for(j=0;j<N2;j++){
-
-      List_Read(G[4]->TrsfVertices, index2d(F_flag[4],N1,N2, i,    0   ), &C[0]);
-      List_Read(G[4]->TrsfVertices, index2d(F_flag[4],N1,N2, N1-1, j   ), &C[1]);
-      List_Read(G[4]->TrsfVertices, index2d(F_flag[4],N1,N2, i,    N2-1), &C[2]);
-      List_Read(G[4]->TrsfVertices, index2d(F_flag[4],N1,N2, 0,    j   ), &C[3]);
-      List_Read(G[5]->TrsfVertices, index2d(F_flag[5],N1,N2, i,    0   ), &C[4]);
-      List_Read(G[5]->TrsfVertices, index2d(F_flag[5],N1,N2, N1-1, j   ), &C[5]);
-      List_Read(G[5]->TrsfVertices, index2d(F_flag[5],N1,N2, i,    N2-1), &C[6]);
-      List_Read(G[5]->TrsfVertices, index2d(F_flag[5],N1,N2, 0,    j   ), &C[7]);
-      
-      List_Read(G[4]->TrsfVertices, index2d(F_flag[4],N1,N2, i, j), &F[4]);
-      List_Read(G[5]->TrsfVertices, index2d(F_flag[5],N1,N2, i, j), &F[5]);
-
-      index_uv(F_flag[4],F[4],&u,&v);
-
-      for(k=0;k<N3;k++){
-
-        List_Read(G[0]->TrsfVertices, index2d(F_flag[0],N1,N3, 0,    k), &C[8]);
-        List_Read(G[0]->TrsfVertices, index2d(F_flag[0],N1,N3, N1-1, k), &C[9]);
-        List_Read(G[2]->TrsfVertices, index2d(F_flag[2],N1,N3, N1-1, k), &C[10]);
-        List_Read(G[2]->TrsfVertices, index2d(F_flag[2],N1,N3, 0,    k), &C[11]);
-
-        List_Read(G[0]->TrsfVertices, index2d(F_flag[0],N1,N3, i, k), &F[0]);
-        List_Read(G[1]->TrsfVertices, index2d(F_flag[1],N2,N3, j, k), &F[1]);
-        List_Read(G[2]->TrsfVertices, index2d(F_flag[2],N1,N3, i, k), &F[2]);
-        if(nbs==6)
-          List_Read(G[3]->TrsfVertices, index2d(F_flag[3],N2,N3, j, k), &F[3]);
-        else if(nbs == 5)
-          F[3]=C[8];
-
-        index_uv(F_flag[0],F[0],&dum,&w);
-        
-        if(i && j && k && i != N1-1 && j != N2-1 && k != N3-1){ 
-          V = TransfiniteHex(*F[0],*F[1],*F[2],*F[3],*F[4],*F[5],
-                             *C[0],*C[1],*C[2],*C[3],*C[4],*C[5],
-                             *C[6],*C[7],*C[8],*C[9],*C[10],*C[11],
-                             *S[0],*S[1],*S[2],*S[3],*S[4],*S[5],*S[6],*S[7],
-                             u,v,w);
-          list[i+N1*j+N1*N2*k] = Create_Vertex(++CurrentNodeNumber,
-                                               V.Pos.X,V.Pos.Y,V.Pos.Z,V.lc,0.0);
-          /*
-            printf(" NEW node : %f %f %f\n", list[i+N1*j+N1*N2*k]->Pos.X, 
-                   list[i+N1*j+N1*N2*k]->Pos.Y, list[i+N1*j+N1*N2*k]->Pos.Z);
-          */
-        }
-
-        else if(!i){
-          list[i+N1*j+N1*N2*k] = F[3];
-        }
-        else if(!j){
-          list[i+N1*j+N1*N2*k] = F[0];
-        }
-        else if(!k){
-          list[i+N1*j+N1*N2*k] = F[4];
-        }
-        else if(i == N1-1){
-          list[i+N1*j+N1*N2*k] = F[1];
-        }
-        else if(j == N2-1){
-          list[i+N1*j+N1*N2*k] = F[2];
-        }
-        else if(k == N3-1){
-          list[i+N1*j+N1*N2*k] = F[5];
-        }
-        
-      }
-    }
-  }
-  
-  for(i=0;i<N1;i++){
-    for(j=0;j<N2;j++){
-      for(k=0;k<N3;k++){
-        Tree_Replace(THEM->Vertices,&list[i+N1*j+N1*N2*k]);
-        Tree_Replace(vol->Vertices,&list[i+N1*j+N1*N2*k]);
-      }
-    }
-  }      
-
-  if(nbs == 6){      
-    for(i=0;i<N1-1;i++){
-      for(j=0;j<N2-1;j++){
-        for(k=0;k<N3-1;k++){
-          if(G[0]->Recombine && G[1]->Recombine && G[2]->Recombine && 
-             G[3]->Recombine && G[4]->Recombine && G[5]->Recombine) {
-            hexa = CREATE_HEX; hexa->iEnt = vol->Num; Tree_Replace(vol->Hexahedra,&hexa);
-
-            nbhex++;
-          }
-          else if (!G[0]->Recombine && G[1]->Recombine && !G[2]->Recombine && 
-                   G[3]->Recombine && G[4]->Recombine && G[5]->Recombine) {
-            prism = Create_Prism(list[(i)   + N1*(j)   + N1*N2*(k)],
-                                 list[(i+1) + N1*(j)   + N1*N2*(k)],
-                                 list[(i)   + N1*(j)   + N1*N2*(k+1)],
-                                 list[(i)   + N1*(j+1) + N1*N2*(k)],
-                                 list[(i+1) + N1*(j+1) + N1*N2*(k)],
-                                 list[(i)   + N1*(j+1) + N1*N2*(k+1)]);
-            prism->iEnt = vol->Num;
-            Tree_Replace(vol->Prisms,&prism);
-
-            prism = Create_Prism(list[(i+1) + N1*(j)   + N1*N2*(k+1)],
-                                 list[(i)   + N1*(j)   + N1*N2*(k+1)],
-                                 list[(i+1) + N1*(j)   + N1*N2*(k)],
-                                 list[(i+1) + N1*(j+1) + N1*N2*(k+1)],
-                                 list[(i)   + N1*(j+1) + N1*N2*(k+1)],
-                                 list[(i+1) + N1*(j+1) + N1*N2*(k)]);
-            prism->iEnt = vol->Num;
-            Tree_Replace(vol->Prisms,&prism);
-
-            nbpri +=2 ;
-          }
-          else if (G[0]->Recombine && !G[1]->Recombine && G[2]->Recombine && 
-                   !G[3]->Recombine && G[4]->Recombine && G[5]->Recombine) {
-            prism = Create_Prism(list[(i+1) + N1*(j)   + N1*N2*(k)],
-                                 list[(i+1) + N1*(j+1) + N1*N2*(k)],
-                                 list[(i+1) + N1*(j)   + N1*N2*(k+1)],
-                                 list[(i)   + N1*(j)   + N1*N2*(k)],
-                                 list[(i)   + N1*(j+1) + N1*N2*(k)],
-                                 list[(i)   + N1*(j)   + N1*N2*(k+1)]);
-            prism->iEnt = vol->Num;
-            Tree_Replace(vol->Prisms,&prism);
-
-            prism = Create_Prism(list[(i+1) + N1*(j+1) + N1*N2*(k+1)],
-                                 list[(i+1) + N1*(j)   + N1*N2*(k+1)],
-                                 list[(i+1) + N1*(j+1) + N1*N2*(k)],
-                                 list[(i)   + N1*(j+1) + N1*N2*(k+1)],
-                                 list[(i)   + N1*(j)   + N1*N2*(k+1)],
-                                 list[(i)   + N1*(j+1) + N1*N2*(k)]);
-            prism->iEnt = vol->Num;
-            Tree_Replace(vol->Prisms,&prism);
-
-            nbpri += 2 ;
-          }
-          else if (G[0]->Recombine && G[1]->Recombine && G[2]->Recombine && 
-                   G[3]->Recombine && !G[4]->Recombine && !G[5]->Recombine) {
-            prism = CREATE_PRISM_1; prism->iEnt = vol->Num; Tree_Replace(vol->Prisms,&prism);
-            prism = CREATE_PRISM_2; prism->iEnt = vol->Num; Tree_Replace(vol->Prisms,&prism);
-
-            nbpri += 2;
-          }
-          else if (!G[0]->Recombine && !G[1]->Recombine && !G[2]->Recombine && 
-                   !G[3]->Recombine && !G[4]->Recombine && !G[5]->Recombine) {
-            simp = CREATE_SIM_1; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_2; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_3; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_4; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_5; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_6; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-
-            nbtet += 6;
-          }
-          else{
-            Msg(WARNING, "Wrong surface recombining in Transfinite Volume %d", 
-                vol->Num); 
-            return(0);
-          }
-        }
-      }
-    }                  
-  }
-  else if (nbs == 5){
-    for(j=0;j<N2-1;j++){
-      for(k=0;k<N3-1;k++){      
-        if( ( G[0]->Recombine && G[1]->Recombine && G[2]->Recombine &&
-              G[4]->Recombine && G[5]->Recombine) ||
-            ( G[0]->Recombine && G[1]->Recombine && G[2]->Recombine &&
-              !G[4]->Recombine && !G[5]->Recombine) ){    
-          prism = Create_Prism(list[    N1*(j)   + N1*N2*(k)],
-                               list[1 + N1*(j)   + N1*N2*(k)],
-                               list[1 + N1*(j+1) + N1*N2*(k)],
-                               list[    N1*(j)   + N1*N2*(k+1)],
-                               list[1 + N1*(j)   + N1*N2*(k+1)],
-                               list[1 + N1*(j+1) + N1*N2*(k+1)]);
-          prism->iEnt = vol->Num;
-          Tree_Replace(vol->Prisms,&prism);
-          
-          nbpri++;
-        }
-        else if(!G[0]->Recombine && !G[1]->Recombine && !G[2]->Recombine &&
-                !G[4]->Recombine && !G[5]->Recombine){
-          simp = Create_Simplex(list[  + N1*(j)   + N1*N2*(k)],
-                                list[1 + N1*(j)   + N1*N2*(k)],
-                                list[1 + N1*(j+1) + N1*N2*(k)],
-                                list[  + N1*(j)   + N1*N2*(k+1)]);
-          simp->iEnt = vol->Num;
-          Tree_Replace(vol->Simplexes,&simp);
-          
-          simp = Create_Simplex(list[1 + N1*(j)   + N1*N2*(k)],
-                                list[1 + N1*(j+1) + N1*N2*(k)],
-                                list[  + N1*(j)   + N1*N2*(k+1)],
-                                list[1 + N1*(j)   + N1*N2*(k+1)]);
-          simp->iEnt = vol->Num;
-          Tree_Replace(vol->Simplexes,&simp);
-          
-          simp = Create_Simplex(list[  + N1*(j)   + N1*N2*(k+1)],
-                                list[1 + N1*(j+1) + N1*N2*(k+1)],
-                                list[1 + N1*(j)   + N1*N2*(k+1)],
-                                list[1 + N1*(j+1) + N1*N2*(k)]);
-          simp->iEnt = vol->Num;
-          Tree_Replace(vol->Simplexes,&simp);
-          
-          nbtet += 2;
-        }
-        else{
-          Msg(WARNING, "Wrong surface recombining in Transfinite Volume %d", 
-              vol->Num); 
-          return(0);              
-        }
-      }
-    }
-    for(i=1;i<N1-1;i++){
-      for(j=0;j<N2-1;j++){
-        for(k=0;k<N3-1;k++){
-          if(G[0]->Recombine && G[1]->Recombine && G[2]->Recombine &&
-             G[4]->Recombine && G[5]->Recombine){
-            hexa = CREATE_HEX; hexa->iEnt = vol->Num; Tree_Replace(vol->Hexahedra,&hexa);
-
-            nbhex ++;
-          }
-          else if(G[0]->Recombine && G[1]->Recombine && G[2]->Recombine &&
-                  !G[4]->Recombine && !G[5]->Recombine){
-            prism = CREATE_PRISM_1; prism->iEnt = vol->Num; Tree_Replace(vol->Prisms,&prism);
-            prism = CREATE_PRISM_2; prism->iEnt = vol->Num; Tree_Replace(vol->Prisms,&prism);
-
-            nbpri += 2;
-          }
-          else if(!G[0]->Recombine && !G[1]->Recombine && !G[2]->Recombine &&
-                  !G[4]->Recombine && !G[5]->Recombine){
-            simp = CREATE_SIM_1; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_2; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_3; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_4; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_5; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-            simp = CREATE_SIM_6; simp->iEnt = vol->Num; Tree_Replace(vol->Simplexes,&simp);
-
-            nbtet += 6;
-          }
-          else{
-            Msg(WARNING, "Wrong surface recombining in Transfinite Volume %d", 
-                vol->Num); 
-            return(0);
-          }
-        }
-      }
-    }
-  }
-
-  return(1);
-
-}
-
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
deleted file mode 100644
index c65a204159ea74c6ba713eac253e3b48d567419b..0000000000000000000000000000000000000000
--- a/Mesh/Create.cpp
+++ /dev/null
@@ -1,683 +0,0 @@
-// $Id: Create.cpp,v 1.23 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "Context.h"
-#include "Create.h"
-
-extern Mesh      *THEM;
-extern Context_T  CTX;
-extern int        CurrentSimplexNumber;
-
-//static double CIRC_GRAN = 2.2;
-
-int compareNXE (const void *a, const void *b){
-  NXE *q, *w;
-
-  q = (NXE *) a;
-  w = (NXE *) b;
-  return (compareVertex (&q->v, &w->v));
-}
-
-int compareFxE (const void *a, const void *b){
-  FxE *q, *w;
-
-  q = (FxE *) a;
-  w = (FxE *) b;
-  return (compareFace (&q->Sorted, &w->Sorted));
-}
-
-int compareHexahedron (const void *a, const void *b){
-  Hexahedron **q, **w;
-
-  q = (Hexahedron **) a;
-  w = (Hexahedron **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareSurfaceLoop (const void *a, const void *b){
-  SurfaceLoop **q, **w;
-
-  q = (SurfaceLoop **) a;
-  w = (SurfaceLoop **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareEdgeLoop (const void *a, const void *b){
-  EdgeLoop **q, **w;
-
-  q = (EdgeLoop **) a;
-  w = (EdgeLoop **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int comparePrism (const void *a, const void *b){
-  Prism **q, **w;
-
-  q = (Prism **) a;
-  w = (Prism **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareQuality (const void *a, const void *b){
-  double d;
-  Simplex **q, **w;
-
-  q = (Simplex **) a;
-  w = (Simplex **) b;
-  d = (*q)->Quality - (*w)->Quality;
-
-  if (d > 0)
-    return (1);
-  if (d < 0)
-    return (-1);
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareCurve (const void *a, const void *b){
-  Curve **q, **w;
-
-  q = (Curve **) a;
-  w = (Curve **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareAttractor (const void *a, const void *b){
-  Attractor **q, **w;
-
-  q = (Attractor **) a;
-  w = (Attractor **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareSurface (const void *a, const void *b){
-  Surface **q, **w;
-
-  q = (Surface **) a;
-  w = (Surface **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareVolume (const void *a, const void *b){
-  Volume **q, **w;
-
-  q = (Volume **) a;
-  w = (Volume **) b;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int compareSxF (const void *a, const void *b){
-  SxF *q, *w;
-
-  q = (SxF *) a;
-  w = (SxF *) b;
-  return compareFace (&q->F, &w->F);
-}
-
-Attractor * Create_Attractor (int Num, double lc1, double lc2, double Radius,
-                              Vertex * v, Curve * c, Surface * s){
-  Attractor *pA;
-
-  pA = (Attractor *) Malloc (sizeof (Attractor));
-  pA->v = v;
-  pA->c = c;
-  pA->s = s;
-  pA->lc1 = lc1;
-  pA->lc2 = lc2;
-  pA->Radius = Radius;
-  return pA;
-}
-
-void Add_SurfaceLoop (int Num, List_T * intlist, Mesh * M){
-  SurfaceLoop *pSL;
-  int i, j;
-  pSL = (SurfaceLoop *) Malloc (sizeof (SurfaceLoop));
-  pSL->Surfaces = List_Create (List_Nbr (intlist), 1, sizeof (int));
-  pSL->Num = Num;
-  for (i = 0; i < List_Nbr (intlist); i++){
-    List_Read (intlist, i, &j);
-    List_Add (pSL->Surfaces, &j);
-  }
-  Tree_Add (M->SurfaceLoops, &pSL);
-}
-
-void Add_PhysicalGroup (int Num, int typ, List_T * intlist, Mesh * M){
-  PhysicalGroup *pSL;
-  int i, j;
-  pSL = (PhysicalGroup *) Malloc (sizeof (PhysicalGroup));
-  pSL->Entities = List_Create (List_Nbr (intlist), 1, sizeof (int));
-  pSL->Num = Num;
-  pSL->Typ = typ;
-  for (i = 0; i < List_Nbr (intlist); i++){
-    List_Read (intlist, i, &j);
-    List_Add (pSL->Entities, &j);
-  }
-  List_Add (M->PhysicalGroups, &pSL);
-}
-
-void Add_EdgeLoop (int Num, List_T * intlist, Mesh * M){
-  EdgeLoop *pEL;
-  int i, j;
-  pEL = (EdgeLoop *) Malloc (sizeof (EdgeLoop));
-  pEL->Curves = List_Create (List_Nbr (intlist), 1, sizeof (int));
-  pEL->Num = Num;
-  for (i = 0; i < List_Nbr (intlist); i++){
-    List_Read (intlist, i, &j);
-    List_Add (pEL->Curves, &j);
-  }
-  Tree_Add (M->EdgeLoops, &pEL);
-}
-
-void End_Curve (Curve * c){
-  double det, R2, mat[3][3], R, A3, A1, A4;
-  Vertex *v[5], v1, v3, v4;
-  double dd[3], qq[3], AX, f1, f2, DP, dir32[3], dir12[3], n[3], m[3], dir42[3];
-  double rhs[2], sys[2][2], sol[2];
-  int i;
-  Curve *Curve;
-
-  if (c->Typ == MSH_SEGM_CIRC ||
-      c->Typ == MSH_SEGM_CIRC_INV ||
-      c->Typ == MSH_SEGM_ELLI ||
-      c->Typ == MSH_SEGM_ELLI_INV){
-
-    Curve = c;
-
-    if (List_Nbr (Curve->Control_Points) == 4)
-      List_Read (Curve->Control_Points, 2, &v[4]);
-    else
-      v[4] = NULL;
-    
-    if (Curve->Typ == MSH_SEGM_CIRC_INV ||
-        Curve->Typ == MSH_SEGM_ELLI_INV){
-      List_Read (Curve->Control_Points, 0, &v[3]);
-      List_Read (Curve->Control_Points, 1, &v[2]);
-      if (!v[4])
-        List_Read (Curve->Control_Points, 2, &v[1]);
-      else
-        List_Read (Curve->Control_Points, 3, &v[1]);
-    }
-    else{
-      List_Read (Curve->Control_Points, 0, &v[1]);
-      List_Read (Curve->Control_Points, 1, &v[2]);
-      if (!v[4])
-        List_Read (Curve->Control_Points, 2, &v[3]);
-      else
-        List_Read (Curve->Control_Points, 3, &v[3]);
-    }
-    
-    direction (v[2], v[3], dir32);
-    direction (v[2], v[1], dir12);
-    if (v[4])
-      direction (v[2], v[4], dir42);
-
-    /*
-      norme(dir32);
-      norme(dir12);
-      norme(dir42);
-    */
-
-    //prodve(dir12,dir32,n);
-    dd[0] = dir12[0];
-    dd[1] = dir12[1];
-    dd[2] = dir12[2];
-    qq[0] = dir32[0];
-    qq[1] = dir32[1];
-    qq[2] = dir32[2];
-    norme (dd);
-    norme (qq);
-    prodve (dd, qq, n);
-    if (fabs (n[0]) < 1.e-5 && fabs (n[1]) < 1.e-5 && fabs (n[2]) < 1.e-5){
-      n[0] = Curve->Circle.n[0];
-      n[1] = Curve->Circle.n[1];
-      n[2] = Curve->Circle.n[2];
-    }
-
-    /* BOF BOF BOF */
-    prodve (n, dir12, m);
-
-    v1.Pos.X = dir12[0];
-    v1.Pos.Y = dir12[1];
-    v1.Pos.Z = dir12[2];
-    v3.Pos.X = dir32[0];
-    v3.Pos.Y = dir32[1];
-    v3.Pos.Z = dir32[2];
-    if (v[4]){
-      v4.Pos.X = dir42[0];
-      v4.Pos.Y = dir42[1];
-      v4.Pos.Z = dir42[2];
-    }
-    norme (dir12);
-    norme (n);
-    norme (m);
-    
-    mat[2][0] = Curve->Circle.invmat[0][2] = n[0];
-    mat[2][1] = Curve->Circle.invmat[1][2] = n[1];
-    mat[2][2] = Curve->Circle.invmat[2][2] = n[2];
-    mat[1][0] = Curve->Circle.invmat[0][1] = m[0];
-    mat[1][1] = Curve->Circle.invmat[1][1] = m[1];
-    mat[1][2] = Curve->Circle.invmat[2][1] = m[2];
-    mat[0][0] = Curve->Circle.invmat[0][0] = dir12[0];
-    mat[0][1] = Curve->Circle.invmat[1][0] = dir12[1];
-    mat[0][2] = Curve->Circle.invmat[2][0] = dir12[2];
-    
-    if(CTX.geom.old_circle){
-      if(n[0] == 0.0 && n[1] == 0.0){
-        mat[2][0] = Curve->Circle.invmat[0][2] = 0;
-        mat[2][1] = Curve->Circle.invmat[1][2] = 0;
-        mat[2][2] = Curve->Circle.invmat[2][2] = 1;
-        mat[1][0] = Curve->Circle.invmat[0][1] = 0;
-        mat[1][1] = Curve->Circle.invmat[1][1] = 1;
-        mat[1][2] = Curve->Circle.invmat[2][1] = 0;
-        mat[0][0] = Curve->Circle.invmat[0][0] = 1;
-        mat[0][1] = Curve->Circle.invmat[1][0] = 0;
-        mat[0][2] = Curve->Circle.invmat[2][0] = 0;
-      }
-    }
-
-    Projette (&v1, mat);
-    Projette (&v3, mat);
-    if (v[4])
-      Projette (&v4, mat);
-
-    R = sqrt (v1.Pos.X * v1.Pos.X + v1.Pos.Y * v1.Pos.Y);
-    R2 = sqrt (v3.Pos.X * v3.Pos.X + v3.Pos.Y * v3.Pos.Y);
-    A3 = myatan2 (v3.Pos.Y, v3.Pos.X);
-    if (v[4])
-      A4 = myatan2 (v4.Pos.Y, v4.Pos.X);
-    else
-      A4 = 0.0;
-    A1 = myatan2 (v1.Pos.Y, v1.Pos.X);
-    
-    DP = 2 * Pi;
-    
-    A3 = angle_02pi (A3);
-    A1 = angle_02pi (A1);
-    if (v[4])
-      A4 = angle_02pi (A4);
-    if (A1 >= A3)
-      A3 += DP;
-    if (A4 > A1)
-      A4 -= DP;
-    
-    if (v[4]){
-      AX = (A1 - A4);
-      sys[0][0] = cos (AX) * cos (A4);
-      sys[0][1] = -sin (AX) * sin (A4);
-      sys[1][0] = cos (AX) * sin (A4);
-      sys[1][1] = sin (AX) * cos (A4);
-      rhs[0] = v1.Pos.X;
-      rhs[1] = v1.Pos.Y;
-      det = sys[0][0] * sys[1][1] - sys[1][0] * sys[0][1];
-      if (det < 1.e-12){
-        AX = (A3 - A4);
-        sys[0][0] = cos (AX) * cos (A4);
-        sys[0][1] = -sin (AX) * sin (A4);
-        sys[1][0] = cos (AX) * sin (A4);
-        sys[1][1] = sin (AX) * cos (A4);
-        rhs[0] = v3.Pos.X;
-        rhs[1] = v3.Pos.Y;
-        det = sys[0][0] * sys[1][1] - sys[1][0] * sys[0][1];
-      }
-      if (det < 1.e-12){
-        f1 = DMAX (R, R2);
-        f2 = DMIN (R, R2);
-      }
-      else{
-        sys2x2 (sys, rhs, sol);
-        f1 = sol[0];
-        f2 = sol[1];
-      }
-    }
-    else{
-      f1 = f2 = R;
-    }
-
-    Curve->Circle.t1 = A1;
-    Curve->Circle.t2 = A3;
-    Curve->Circle.f1 = f1;
-    Curve->Circle.f2 = f2;
-    Curve->Circle.incl = A4;
-    
-    for (i = 0; i < 4; i++)
-      Curve->Circle.v[i] = v[i];
-
-    /*
-    if (!c->Circle.done){
-      float proj[4][4];
-      for (i = 0; i < 4; i++){
-        for (int j = 0; j < 4; j++){
-          if (i != 3 && j != 3)
-            proj[i][j] = Curve->Circle.f1 * Curve->Circle.invmat[i][j];
-          else
-            proj[i][j] = 0.0;
-        }
-      }
-      proj[0][3] = Curve->Circle.v[2]->Pos.X;
-      proj[1][3] = Curve->Circle.v[2]->Pos.Y;
-      proj[2][3] = Curve->Circle.v[2]->Pos.Z;
-      proj[3][3] = 1.0;
-      c->Circle.done = 1;
-    }
-    */
-    // Un cercle a au moins 16 pts par pi radiants
-    
-    // c->beg->lc = DMIN (R*Pi/(fabs(c->Circle.t1-c->Circle.t2)*CIRC_GRAN),c->beg->lc);
-    // c->end->lc = DMIN (R*Pi/(fabs(c->Circle.t1-c->Circle.t2)*CIRC_GRAN),c->end->lc);
-    
-  }
-  // MEMORY LEAK (JF)
-  if (c->cp) Free (c->cp);
-  c->cp = (float *) Malloc (4 * List_Nbr (c->Control_Points) * sizeof (float));
-  for (i = 0; i < List_Nbr (c->Control_Points); i++){
-    List_Read (c->Control_Points, i, &v[0]);
-    c->cp[4 * i] = v[0]->Pos.X;
-    c->cp[4 * i + 1] = v[0]->Pos.Y;
-    c->cp[4 * i + 2] = v[0]->Pos.Z;
-    c->cp[4 * i + 3] = v[0]->w;
-  }
-
-}
-
-void End_Surface (Surface * s){
-  int i;
-  Vertex *v;
-
-  if (!s->Control_Points || !List_Nbr(s->Control_Points))
-    return;
-
-  s->cp = (float *) Malloc (4 * List_Nbr (s->Control_Points) * sizeof (float));
-  for (i = 0; i < List_Nbr (s->Control_Points); i++){
-    List_Read (s->Control_Points, i, &v);
-    s->cp[4 * i] = v->Pos.X;
-    s->cp[4 * i + 1] = v->Pos.Y;
-    s->cp[4 * i + 2] = v->Pos.Z;
-    s->cp[4 * i + 3] = v->w;
-  }
-
-}
-
-
-
-Curve *Create_Curve (int Num, int Typ, int Order, List_T * Liste,
-                     List_T * Knots, int p1, int p2, double u1, double u2){
-  Curve *pC;
-  Vertex *v;
-  int i, j, iPnt;
-  double d;
-  double matcr[4][4] = { {-0.5, 1.5, -1.5, 0.5},
-                         {1.0, -2.5, 2.0, -0.5},
-                         {-0.5, 0.0, 0.5, 0.0},
-                         {0.0, 1.0, 0.0, 0.0} };
-  double matbs[4][4] = { {-1.0, 3, -3, 1},
-                         {3, -6, 3.0, 0},
-                         {-3, 0.0, 3, 0.0},
-                         {1, 4, 1, 0.0} };
-  double matbez[4][4] = { {-1.0, 3, -3, 1},
-                          {3, -6, 3.0, 0},
-                          {-3, 3.0, 0, 0.0},
-                          {1, 0, 0, 0.0} };
-
-  pC = (Curve *) Malloc (sizeof (Curve));
-  pC->Dirty = 0;
-  pC->cp = NULL;
-  pC->Vertices = NULL;
-  pC->Extrude = NULL;
-  pC->Typ = Typ;
-  pC->Num = Num;
-  pC->Simplexes = Tree_Create (sizeof (Simplex *), compareSimplex);
-  pC->TrsfSimplexes = List_Create (1, 10, sizeof (Simplex *));
-  pC->Circle.done = 0;
-  pC->Method = LIBRE;
-  pC->degre = Order;
-  pC->Circle.n[0] = 1.0;
-  pC->Circle.n[1] = 0.0;
-  pC->Circle.n[2] = 0.0;
-  if (Typ == MSH_SEGM_SPLN){
-    for (i = 0; i < 4; i++)
-      for (j = 0; j < 4; j++)
-        pC->mat[i][j] = matcr[i][j];
-    
-  }
-  else if (Typ == MSH_SEGM_BSPLN){
-    for (i = 0; i < 4; i++)
-      for (j = 0; j < 4; j++)
-        pC->mat[i][j] = matbs[i][j] / 6.0;
-  }
-  else if (Typ == MSH_SEGM_BEZIER){
-    for (i = 0; i < 4; i++)
-      for (j = 0; j < 4; j++)
-        pC->mat[i][j] = matbez[i][j];
-  }
-
-  pC->ubeg = u1;
-  pC->uend = u2;
-
-  if (Knots){
-    pC->k = (float *) malloc (List_Nbr (Knots) * sizeof (float));
-    double kmin = .0, kmax = 1.;
-    List_Read (Knots, 0, &kmin);
-    List_Read (Knots, List_Nbr (Knots) - 1, &kmax);
-    pC->ubeg = kmin;
-    pC->uend = kmax;
-    for (i = 0; i < List_Nbr (Knots); i++){
-      List_Read (Knots, i, &d);
-      pC->k[i] = (float) d;
-    }
-  }
-  else
-    pC->k = NULL;
-
-  if (Liste){
-    pC->Control_Points = List_Create (List_Nbr (Liste), 1, sizeof (Vertex *));
-    for (j = 0; j < List_Nbr (Liste); j++){
-      List_Read (Liste, j, &iPnt);
-      if ((v = FindPoint (iPnt, THEM)))
-        List_Add (pC->Control_Points, &v);
-      else
-        Msg(FATAL, "Unknown control point %d in Curve %d", iPnt, pC->Num);
-    }
-  }
-  else {
-    pC->Control_Points = NULL;
-    return pC;
-  }
-
-  if (p1 < 0){
-    List_Read (pC->Control_Points, 0, &pC->beg);
-    List_Read (pC->Control_Points, List_Nbr (pC->Control_Points) - 1, &pC->end);
-  }
-  else {
-    if ((v = FindPoint (p1, THEM))){
-      pC->beg = v;
-      Msg(INFO, "Curve %d first control point %d ", pC->Num, v->Num);
-    }
-    else{
-      List_Read (pC->Control_Points, 0, &pC->beg);
-      Msg(GERROR, "Unknown control point %d in Curve %d", p1, pC->Num);
-    }
-    if ((v = FindPoint (p2, THEM))){
-      pC->end = v;
-      Msg(INFO, "Curve %d first control point %d ", pC->Num, v->Num);
-    }
-    else{
-      List_Read (pC->Control_Points, List_Nbr (pC->Control_Points) - 1, &pC->end);
-      Msg(GERROR, "Unknown control point %d in Curve %d", p2, pC->Num);
-    }
-  }
-
-  End_Curve (pC);
-
-  return pC;
-}
-
-void Free_Curve(void *a, void *b){
-  Curve *pC = *(Curve**)a;
-  if(pC){
-    List_Delete(pC->Vertices);
-    Tree_Action(pC->Simplexes, Free_Simplex);
-    Tree_Delete(pC->Simplexes);
-    List_Delete(pC->TrsfSimplexes);
-    Free(pC->k);
-    List_Delete(pC->Control_Points);
-    // MEMORY_LEAK (JF)
-    Free(pC->cp);
-    Free(pC);
-    pC = NULL;
-  }
-}
-
-Surface * Create_Surface (int Num, int Typ, int Mat){
-  Surface *pS;
-
-  pS = (Surface *) Malloc (sizeof (Surface));
-  pS->Dirty = 0;
-  pS->Num = Num;
-  pS->Typ = Typ;
-  pS->Mat = Mat;
-  pS->Method = LIBRE;
-  pS->Recombine = 0;
-  pS->RecombineAngle = 30;
-  pS->Simplexes = Tree_Create (sizeof (Simplex *), compareQuality);
-  pS->TrsfSimplexes = List_Create (1, 10, sizeof (Simplex *));
-  pS->Vertices = Tree_Create (sizeof (Vertex *), compareVertex);
-  pS->TrsfVertices = List_Create (1, 10, sizeof (Vertex *));
-  pS->Contours = List_Create (1, 1, sizeof (List_T *));
-  pS->Orientations = NULL;
-  pS->Support = pS;
-  pS->Control_Points = List_Create (1, 10, sizeof (Vertex *));
-  pS->Generatrices = NULL;
-  pS->Edges = NULL;
-  pS->Extrude = NULL;
-  pS->STL = NULL;
-  return (pS);
-}
-
-void Free_Surface(void *a, void *b){
-  Surface *pS = *(Surface**)a;
-  if(pS){
-    Tree_Action(pS->Simplexes, Free_Simplex);
-    Tree_Delete(pS->Simplexes);
-    List_Delete(pS->TrsfSimplexes);
-    Tree_Delete(pS->Vertices);
-    List_Delete(pS->TrsfVertices);
-    List_Delete(pS->Contours);
-    List_Delete(pS->Control_Points);
-    List_Delete(pS->Generatrices);
-    // MEMORY LEAK (JF)
-    if(pS->Edges)
-      {
-	Tree_Action(pS->Edges,Free_Edge);
-	Tree_Delete(pS->Edges);
-      }
-    Free(pS);
-    pS = NULL;
-  }
-}
-
-Volume * Create_Volume (int Num, int Typ, int Mat){
-  Volume *pV;
-
-  pV = (Volume *) Malloc (sizeof (Volume));
-  pV->Dirty = 0;
-  pV->Num = Num;
-  pV->Typ = Typ;
-  pV->Mat = Mat;
-  pV->Method = LIBRE;
-  pV->Surfaces = List_Create (1, 2, sizeof (Surface *));
-  pV->Simplexes = Tree_Create (sizeof (Simplex *), compareQuality);
-  pV->Vertices = Tree_Create (sizeof (Vertex *), compareVertex);
-  pV->Hexahedra = Tree_Create (sizeof (Hexahedron *), compareHexahedron);
-  pV->Prisms = Tree_Create (sizeof (Prism *), comparePrism);
-  pV->Simp_Surf = Tree_Create(sizeof(Simplex*),compareSimplex);// for old extrusion mesh generator
-  pV->Extrude = NULL;
-  pV->Edges = NULL;
-  pV->Faces = NULL;
-  return pV;
-}
-
-void Free_Volume(void *a, void *b){
-  
-  Volume *pV = *(Volume**)a;
-  if(pV){
-    List_Delete(pV->Surfaces); //surfaces freed elsewhere
-    Tree_Action(pV->Simplexes, Free_Simplex);
-    Tree_Delete(pV->Simplexes);
-    Tree_Delete(pV->Simp_Surf); // for old extrusion mesh generator
-    Tree_Delete(pV->Vertices); //vertices freed elsewhere
-    Tree_Action(pV->Hexahedra, Free_Hexahedron);
-    Tree_Delete(pV->Hexahedra);
-    Tree_Action(pV->Prisms, Free_Prism);
-    Tree_Delete(pV->Prisms);
-    // MEMORY LEAK (JF)
-    if(pV->Edges)
-      {
-	Tree_Action(pV->Edges,Free_Edge);
-	Tree_Delete(pV->Edges);
-      }
-    if(pV->Faces)
-      {
-	Tree_Delete(pV->Faces);
-      }
-    Free(pV);
-    pV = NULL;
-  }  
-}
-
-Hexahedron * Create_Hexahedron (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4,
-                                Vertex * v5, Vertex * v6, Vertex * v7, Vertex * v8){
-  Hexahedron *h;
-
-  h = (Hexahedron *) Malloc (sizeof (Hexahedron));
-  h->iEnt = -1;
-  h->Num = ++CurrentSimplexNumber;
-  h->V[0] = v1;
-  h->V[1] = v2;
-  h->V[2] = v3;
-  h->V[3] = v4;
-  h->V[4] = v5;
-  h->V[5] = v6;
-  h->V[6] = v7;
-  h->V[7] = v8;
-  h->VSUP = NULL;
-
-  return (h);
-}
-
-void Free_Hexahedron(void *a, void *b){
-  Hexahedron *pH = *(Hexahedron**)a;
-  if(pH){
-    Free(pH);
-    pH = NULL;
-  }
-}
-
-Prism * Create_Prism (Vertex * v1, Vertex * v2, Vertex * v3,
-                      Vertex * v4, Vertex * v5, Vertex * v6){
-  Prism *p;
-
-  p = (Prism *) Malloc (sizeof (Prism));
-  p->iEnt = -1;
-  p->Num = ++CurrentSimplexNumber;
-  p->V[0] = v1;
-  p->V[1] = v2;
-  p->V[2] = v3;
-  p->V[3] = v4;
-  p->V[4] = v5;
-  p->V[5] = v6;
-  p->VSUP = NULL;
-
-  return (p);
-}
-
-void Free_Prism(void *a, void *b){
-  Prism *pP = *(Prism**)a;
-  if(pP){
-    Free(pP);
-    pP = NULL;
-  }
-}
diff --git a/Mesh/Create.h b/Mesh/Create.h
deleted file mode 100644
index 0f7b2471bf56b7392db49f4caf94b3a0de5ed1f4..0000000000000000000000000000000000000000
--- a/Mesh/Create.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef _CREATE_H_
-#define _CREATE_H_
-
-int compareNXE (const void *a, const void *b);
-int compareFxE (const void *a, const void *b);
-int compareHexahedron (const void *a, const void *b);
-int compareSurfaceLoop (const void *a, const void *b);
-int compareEdgeLoop (const void *a, const void *b);
-int comparePrism (const void *a, const void *b);
-int compareQuality (const void *a, const void *b);
-int compareCurve (const void *a, const void *b);
-int compareAttractor (const void *a, const void *b);
-int compareSurface (const void *a, const void *b);
-int compareVolume (const void *a, const void *b);
-int compareSxF (const void *a, const void *b);
-
-Attractor * Create_Attractor (int Num, double lc1, double lc2, double Radius,
-                              Vertex * v, Curve * c, Surface * s);
-void Add_SurfaceLoop (int Num, List_T * intlist, Mesh * M);
-void Add_PhysicalGroup (int Num, int typ, List_T * intlist, Mesh * M);
-void Add_EdgeLoop (int Num, List_T * intlist, Mesh * M);
-
-void End_Curve (Curve * c);
-void End_Surface (Surface * s);
-
-Curve *Create_Curve (int Num, int Typ, int Order, List_T * Liste,
-                     List_T * Knots, int p1, int p2, double u1, double u2);
-void Free_Curve(void *a, void *b);
-
-Surface * Create_Surface (int Num, int Typ, int Mat);
-void Free_Surface(void *a, void *b);
-
-Volume * Create_Volume (int Num, int Typ, int Mat);
-void Free_Volume(void *a, void *b);
-
-Hexahedron * Create_Hexahedron (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4,
-                              Vertex * v5, Vertex * v6, Vertex * v7, Vertex * v8);
-void Free_Hexahedron(void *a, void *b);
-
-Prism * Create_Prism (Vertex * v1, Vertex * v2, Vertex * v3,
-                      Vertex * v4, Vertex * v5, Vertex * v6);
-void Free_Prism(void *a, void *b);
-
-#endif
diff --git a/Mesh/CrossData.cpp b/Mesh/CrossData.cpp
deleted file mode 100644
index ed863269e9a5c38ebce722b6c08ace611ae09b82..0000000000000000000000000000000000000000
--- a/Mesh/CrossData.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// $Id: CrossData.cpp,v 1.5 2001-06-06 21:29:58 remacle Exp $
-
-
-#include "Gmsh.h"
-#include "Mesh.h"
-
-Tree_T *TreeTemp;
-
-NXE::NXE()
-{
-  v = NULL;
-  Liste = NULL;
-}
-
-NXE::~NXE()
-{
-  //  if(Liste)List_Delete(Liste);
-}
-
-void Delete_NXE (void *data, void *dummy)
-{
-  NXE *pnxe = (NXE*)data;
-  if(pnxe->Liste)List_Delete(pnxe->Liste);
-}
-
-void AddTable (void *data, void *dummy){
-  Simplex *s;
-  NXE nxe, *pnxe;
-  int i;
-
-  s = *(Simplex **) data;
-
-  for (i = 0; i < 4; i++){
-    if (s->V[i]){
-      nxe.v = s->V[i];
-      if ((pnxe = (NXE *) Tree_PQuery (TreeTemp, &nxe))){
-        List_Add (pnxe->Liste, &s);
-      }
-      else{
-        nxe.Liste = List_Create (1, 1, sizeof (Simplex *));
-        List_Add (nxe.Liste, &s);
-        Tree_Add (TreeTemp, &nxe);
-      }
-    }
-  }
-}
-
-void create_NXE (Tree_T * TreeAllNod, Tree_T * TreeAllElg,
-                 Tree_T * TreeAllNXE){
-  TreeTemp = TreeAllNXE;
-  Tree_Action (TreeAllElg, AddTable);
-}
-
-void delete_NXE (Tree_T * TreeAllNXE){
-  Tree_Action (TreeAllNXE, Delete_NXE);
-  Tree_Delete (TreeAllNXE);
-}
diff --git a/Mesh/Edge.cpp b/Mesh/Edge.cpp
deleted file mode 100644
index 357b88a5f8aa9b11f2769f01e30e41cca0d992d7..0000000000000000000000000000000000000000
--- a/Mesh/Edge.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-// $Id: Edge.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Edge.h"
-#include "Tools.h"
-
-static int edges_quad[4][2] = { {0, 1},
-                                {1, 2},
-                                {2, 3},
-                                {3, 0} };
-static int edges_tetra[6][2] = { {0, 1},
-                                 {1, 2},
-                                 {2, 0},
-                                 {3, 0},
-                                 {3, 2},
-                                 {3, 1} };
-static int edges_non[3] = {2, 0, 1};
-
-int compareedge (const void *a, const void *b){
-  int i1, i2, j1, j2;
-  Edge *q, *w;
-
-  q = (Edge *) a;
-  w = (Edge *) b;
-  i1 = IMAX (q->V[0]->Num, q->V[1]->Num);
-  i2 = IMAX (w->V[0]->Num, w->V[1]->Num);
-  j1 = IMIN (q->V[0]->Num, q->V[1]->Num);
-  j2 = IMIN (w->V[0]->Num, w->V[1]->Num);
-
-  if (i1 < i2)
-    return (1);
-  if (i1 > i2)
-    return (-1);
-  if (j1 < j2)
-    return (1);
-  if (j1 > j2)
-    return (-1);
-  return 0;
-}
-
-int compareedge_angle (const void *a, const void *b){
-  Edge *q, *w;
-
-  q = (Edge *) a;
-  w = (Edge *) b;
-  if (q->a >= w->a)
-    return (1);
-  return (-1);
-}
-
-void EdgesContainer::AddEdges (Simplex * s, bool EdgesInVolume){
-  int N, i, j;
-  Edge E, *pE;
-  int edges[6][2];
-
-  if (s->V[3] && EdgesInVolume){
-    N = 6;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_tetra[i][j];
-  }
-  else if (s->V[3]){
-    N = 4;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_quad[i][j];
-  }
-  else if (s->V[2]){
-    N = 3;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_tetra[i][j];
-  }
-  else{
-    N = 1;
-    for (i = 0; i < N; i++)
-      for (j = 0; j < 2; j++)
-        edges[i][j] = edges_tetra[i][j];
-  }
-
-  for (i = 0; i < N; i++){
-    E.V[0] = s->V[edges[i][0]];
-    E.V[1] = s->V[edges[i][1]];
-    if ((pE = (Edge *) Tree_PQuery (AllEdges, &E))){
-      List_Add (pE->Simplexes, &s);
-      if (N == 3)
-        pE->O[1] = s->V[edges_non[i]];
-    }
-    else{
-      E.Simplexes = List_Create (2, 1, sizeof (Simplex *));
-      if (N == 3)
-        E.O[0] = s->V[edges_non[i]];
-      if (N == 3)
-        E.O[1] = NULL;
-      List_Add (E.Simplexes, &s);
-      E.newv = NULL;
-      Tree_Replace (AllEdges, &E);
-    }
-  }
-}
-
-EdgesContainer::EdgesContainer (Tree_T * Simplexes, bool EdgesInVolume){
-  AllEdges = Tree_Create (sizeof (Edge), compareedge);
-  AddTree (Simplexes, EdgesInVolume);
-}
-
-EdgesContainer::EdgesContainer (List_T * Surfaces){
-  AllEdges = Tree_Create (sizeof (Edge), compareedge);
-  Surface *s;
-  for (int i = 0; i < List_Nbr (Surfaces); i++){
-      List_Read (Surfaces, i, &s);
-      AddTree (s->Simplexes, false);
-    }
-}
-
-
-void EdgesContainer::AddTree (Tree_T * Simplexes, bool EdgesInVolume){
-  Simplex *s;
-  List_T *temp = Tree2List (Simplexes);
-  for (int i = 0; i < List_Nbr (temp); i++){
-    List_Read (temp, i, &s);
-    AddEdges (s, EdgesInVolume);
-  }
-  List_Delete (temp);
-}
-
-void Free_Edge (void *a, void *b)
-{
-  Edge *e = (Edge*)a;
-  if(e->Liste)List_Delete(e->Liste);
-  if(e->Simplexes)List_Delete(e->Simplexes);
-  if(e->Points)List_Delete(e->Points);  
-}
-
-EdgesContainer::~EdgesContainer (){
-  Tree_Action (AllEdges,Free_Edge);
-  Tree_Delete (AllEdges);
-}
-bool EdgesContainer::Search (Vertex * v1, Vertex * v2){
-  Edge E;
-  E.V[0] = v1;
-  E.V[1] = v2;
-  if (!Tree_Search (AllEdges, &E))
-    return false;
-  return true;
-}
-
-void EdgesContainer::SwapEdge (Vertex * V[2]){
-  Edge *e, E;
-  Simplex *s, *s1, *s2;
-  int i, j;
-  Vertex *p[2], *q[2];
-
-  E.V[0] = V[0];
-  E.V[1] = V[1];
-  e = (Edge *) Tree_PQuery (AllEdges, &E);
-  E = *e;
-  if (!e)
-    return;
-  List_Read (e->Simplexes, 0, &s1);
-  List_Read (e->Simplexes, 1, &s2);
-
-  for (i = 0; i < 3; i++){
-    if (s1->S[i] == s2){
-      s1->ExtractOppositeEdges (i, p, q);
-      if (!s1->SwapEdge (i))
-        return;
-      Tree_Suppress (AllEdges, &E);
-      E.V[0] = q[0];
-      E.V[1] = q[1];
-      Tree_Add (AllEdges, &E);
-      
-      E.V[0] = q[0];
-      E.V[1] = p[0];
-      e = (Edge *) Tree_PQuery (AllEdges, &E);
-      for (j = 0; j < 2; j++){
-        List_Read (e->Simplexes, j, &s);
-        if (s == s2)
-          List_Write (e->Simplexes, j, &s1);
-      }
-      
-      E.V[0] = q[1];
-      E.V[1] = p[1];
-      e = (Edge *) Tree_PQuery (AllEdges, &E);
-      for (j = 0; j < 2; j++){
-        List_Read (e->Simplexes, j, &s);
-        if (s == s1)
-          List_Write (e->Simplexes, j, &s2);
-      }
-      V[0] = q[0];
-      V[1] = q[1];
-    }
-  }
-}
diff --git a/Mesh/Edge.h b/Mesh/Edge.h
deleted file mode 100644
index e6f70741990f2e643a4b9408ab31dd23abded213..0000000000000000000000000000000000000000
--- a/Mesh/Edge.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef _EDGE_H_
-#define _EDGE_H_
-
-#include "List.h"
-#include "Tree.h"
-#include "Vertex.h"
-#include "Simplex.h"
-
-class Edge {
-public :
-  int Num;
-  Vertex *V[2];
-  List_T *Simplexes;
-  Vertex *newv;
-  Vertex *O[2];
-  double a;
-  List_T *Liste;
-  List_T *Points;
-  Edge()
-    {
-      Num = 0;
-      Liste = NULL;
-      Simplexes = NULL;
-      Points = NULL;
-    }
-  // MEMORY LEAK (JF)
-  ~Edge()
-    {
-      //if(Liste)List_Delete(Liste);
-      //if(Simplexes)List_Delete(Simplexes);
-      //if(Points)List_Delete(Points);
-    }
-};
-
-class EdgesContainer
-{
-  public :
-    Tree_T * AllEdges;
-    EdgesContainer (Tree_T *Simplexes, bool i = false);
-    EdgesContainer (List_T *Surfaces);
-    ~EdgesContainer();
-    void AddTree (Tree_T *Simplexes, bool EdgesInVolume);
-    void AddEdges(Simplex *s, bool i);
-    void GetEdges(Simplex *s, bool i, Edge *ed[4],int *ori);
-    void RemoveEdge(Edge *e);
-    void SwapEdge (Vertex *v[2]);
-    bool Search(Vertex *v1, Vertex *v2);
-};
-
-int compareedge (const void *a, const void *b);
-int compareedge_angle (const void *a, const void *b);
-void Free_Edge(void *a, void *b);
-
-#endif
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
deleted file mode 100644
index b3e132fc55516e499d967634205ece5da813b8df..0000000000000000000000000000000000000000
--- a/Mesh/Generator.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-// $Id: Generator.cpp,v 1.24 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "Create.h"
-#include "Context.h"
-#include "OpenFile.h"
-
-extern Mesh     *THEM;
-extern Context_T CTX;
-extern int       CurrentNodeNumber, CurrentSimplexNumber;
-
-static List_T *Curves;
-
-void GetStatistics (double s[50]){
-  int i;
-  THEM->Statistics[0] = Tree_Nbr (THEM->Points);
-  THEM->Statistics[1] = Tree_Nbr (THEM->Curves);
-  THEM->Statistics[2] = Tree_Nbr (THEM->Surfaces);
-  THEM->Statistics[3] = Tree_Nbr (THEM->Volumes);
-  for (i = 0; i < 50; i++) s[i] = THEM->Statistics[i];
-}
-
-void ApplyLcFactor_Point(void *a, void *b){
-  Vertex *v = *(Vertex**)a;
-  if(v->lc <= 0.0){
-    Msg(GERROR, "Wrong characteristic length (%g <= 0) for Point %d, defaulting to 1.0",
-        v->lc, v->Num);
-    v->lc = 1.0 ;
-  }
-  v->lc *= CTX.mesh.lc_factor;
-}
-void ApplyLcFactor_Attractor(void *a, void *b){
-  Attractor *v = *(Attractor**)a;
-  v->lc1 *= CTX.mesh.lc_factor;
-  v->lc2 *= CTX.mesh.lc_factor;
-}
-void ApplyLcFactor(Mesh *M){
-  Tree_Action(M->Points, ApplyLcFactor_Point);
-  List_Action(M->Metric->Attractors, ApplyLcFactor_Attractor);
-}
-
-void Maillage_Dimension_0 (Mesh * M){
-  for (int i = 0; i < 50; i++)
-    M->Statistics[i] = 0.0;
-  for (int i = 0; i < NB_HISTOGRAM; i++)
-    M->Histogram[0][i] = M->Histogram[1][i] = M->Histogram[2][i] = 0;
-  // This is the default type of BGM (lc associated with 
-  // points of the geometry). It can be changed to
-  // - ONFILE by loading a view containing a bgmesh
-  // - CONSTANT
-  // - FUNCTION
-  Create_BgMesh (WITHPOINTS, .2, M);
-}
-void Maillage_Dimension_1 (Mesh * M){
-  double t1, t2;
-  t1 = Cpu();
-  Tree_Action (M->Curves, Maillage_Curve);
-  t2 = Cpu();
-  M->Statistics[12] = t2 - t1;
-}
-
-void Maillage_Dimension_2 (Mesh * M){
-  int i;
-  Curve *c, *neew, C;
-  double t1, t2, shortest=1.e300;
-
-  t1 = Cpu();
-
-  /* maillage 1-D inverses */
-
-  Curves = Tree2List (M->Curves);
-  for (i = 0; i < List_Nbr (Curves); i++){
-    List_Read (Curves, i, &c);
-    if (c->Num > 0){
-      if(c->l < shortest) shortest = c->l ;
-      neew = &C;
-      neew->Num = -c->Num;
-      Tree_Query (M->Curves, &neew);
-      neew->Vertices = List_Create (List_Nbr (c->Vertices), 1, sizeof (Vertex *));
-      List_Invert (c->Vertices, neew->Vertices);
-    }
-  }
-  List_Delete (Curves);
-
-  Msg(DEBUG, "Shortest curve has length %g", shortest);
-
-  Tree_Action (M->Surfaces, Maillage_Surface);
-
-  t2 = Cpu();  
-
-  M->Statistics[13] = t2 - t1;
-}
-
-void Maillage_Dimension_3 (Mesh * M){
-  Volume *v;
-  double t1, t2;
-  Volume *vol;
-
-  t1 = Cpu();
-
-  v = Create_Volume (99999, 99999, 99999);
-
-  List_T *list = Tree2List (M->Volumes);
-  for (int i = 0; i < List_Nbr (list); i++){
-    List_Read (list, i, &vol);
-    if ((!vol->Extrude || !vol->Extrude->mesh.ExtrudeMesh) &&
-        (vol->Method != TRANSFINI)){
-      for (int j = 0; j < List_Nbr (vol->Surfaces); j++){
-        List_Replace (v->Surfaces, List_Pointer (vol->Surfaces, j), compareSurface);
-      }
-    }
-  }
-  List_Delete (list);
-  Tree_Insert (M->Volumes, &v);
-
-  if(CTX.mesh.oldxtrude){//old automatic extrusion algorithm
-    void Extrude_Mesh_Old(Mesh *M);
-    Extrude_Mesh_Old(M);
-  }
-  else{
-    Tree_Action (M->Volumes, Maillage_Volume);
-  }
-
-  t2 = Cpu();
-
-  M->Statistics[14] = t2 - t1;
-}
-
-
-void Init_Mesh (Mesh * M, int all){
-  THEM = M;
-
-  ExitExtrude();
-  
-  if (M->Vertices){
-    Tree_Action (M->Vertices, Free_Vertex);
-    Tree_Delete (M->Vertices);
-  }
-  if (M->VertexEdges){
-    Tree_Action (M->VertexEdges, Free_Vertex);
-    Tree_Delete (M->VertexEdges);
-  }
-  if (M->Simplexes){
-    // Tree_Action (M->Simplexes, Free_Simplex);
-    //produit des crashes innatendus...
-    // normal, cette memoire est dupliquee 
-    // dans les volumes. Je crois qu'on a besoin
-    // des 2, ce truc ne provoque pas de leaks.
-    Tree_Delete (M->Simplexes);
-  }
-  if (M->Points){
-    Tree_Action (M->Points, Free_Vertex);
-    Tree_Delete (M->Points);
-  }
-  if (M->Curves){
-    Tree_Action (M->Curves, Free_Curve);
-    Tree_Delete (M->Curves);
-  }
-  if (M->SurfaceLoops){
-    //Tree_Action (M->SurfaceLoops, Free_SurfaceLoop);
-    Tree_Delete (M->SurfaceLoops);
-  }
-  if (M->EdgeLoops){
-    //Tree_Action (M->EdgeLoops, Free_EdgeLoop);
-    Tree_Delete (M->EdgeLoops);
-  }
-  if (M->Surfaces){
-    Tree_Action (M->Surfaces, Free_Surface);
-    Tree_Delete (M->Surfaces);
-  }
-  if (M->Volumes){
-    Tree_Action (M->Volumes, Free_Volume);//produit des crashes innatendus...
-    Tree_Delete (M->Volumes);
-  }
-  if (M->PhysicalGroups){
-    //Tree_Action (M->PhysicalGroups, Free_PhysicalGroup);
-    List_Delete (M->PhysicalGroups);
-  }
-  if (M->Metric){
-    delete M->Metric;
-  }
-  
-  M->Vertices = Tree_Create (sizeof (Vertex *), compareVertex);
-  M->VertexEdges = Tree_Create (sizeof (Vertex *), compareVertex);
-  M->Simplexes = Tree_Create (sizeof (Simplex *), compareSimplex);
-  M->Points = Tree_Create (sizeof (Vertex *), compareVertex);
-  M->Curves = Tree_Create (sizeof (Curve *), compareCurve);
-  M->SurfaceLoops = Tree_Create (sizeof (SurfaceLoop *), compareSurfaceLoop);
-  M->EdgeLoops = Tree_Create (sizeof (EdgeLoop *), compareEdgeLoop);
-  M->Surfaces = Tree_Create (sizeof (Surface *), compareSurface);
-  M->Volumes = Tree_Create (sizeof (Volume *), compareVolume);
-  M->PhysicalGroups = List_Create (5, 5, sizeof (PhysicalGroup *));
-  M->Metric = new GMSHMetric;
-  M->BGM.bgm = NULL;
-  CurrentNodeNumber = 1;
-  CurrentSimplexNumber = 0;
-  M->status = 0;
-}
-
-void mai3d (Mesh * M, int Asked){
-  double t1, t2;
-  int oldstatus;
-
-  if(CTX.threads_lock){
-    Msg(INFO, "I'm busy! Ask me that later...");
-    return;
-  }
-
-  M->MeshParams.DelaunayAlgorithm = CTX.mesh.algo ;
-  M->MeshParams.NbSmoothing = CTX.mesh.nb_smoothing ;
-  M->MeshParams.InteractiveDelaunay = CTX.mesh.interactive ;
-
-  oldstatus = M->status;
-
-  /* initialisations - Maillage 0-D */
-
-  if ((Asked > oldstatus && Asked >= 0 && oldstatus < 0) ||
-      (Asked < oldstatus)){
-    OpenProblem (CTX.filename);
-    M->status = 0;
-  }
-
-  CTX.threads_lock = 1 ;
-  
-  /* Maillage 1-D */
-  
-  if ((Asked > oldstatus && Asked > 0 && oldstatus < 1) ||
-      (Asked < oldstatus && Asked > 0)){
-    Msg(STATUS2, "Mesh 1D...");
-    t1 = Cpu();
-
-    if(M->status > 1)
-      {
-	OpenProblem (CTX.filename);
-      }
-
-    Maillage_Dimension_1 (M);
-    t2 = Cpu();
-    Msg(STATUS2, "Mesh 1D complete (%g s)", t2 - t1);
-    M->status = 1;
-  }
-  
-  /* Maillage 2-D */
-  
-  if ((Asked > oldstatus && Asked > 1 && oldstatus < 2) ||
-      (Asked < oldstatus && Asked > 1)){
-    Msg(STATUS2, "Mesh 2D...");
-    t1 = Cpu();
-
-    if(M->status == 3)
-      {
-	OpenProblem (CTX.filename);
-	Maillage_Dimension_1 (M);
-      }
-
-    Maillage_Dimension_2 (M);
-    t2 = Cpu();
-    Msg(STATUS2, "Mesh 2D complete (%g s)", t2 - t1);
-    M->status = 2;
-  }
-
-  /* Maillage 3-D */
-
-  if ((Asked > oldstatus && Asked > 2 && oldstatus < 3) ||
-      (Asked < oldstatus && Asked > 2)){
-    Msg(STATUS2, "Mesh 3D...");
-    t1 = Cpu();
-    Maillage_Dimension_3 (M);
-    t2 = Cpu();
-    Msg(STATUS2, "Mesh 3D complete (%g s)", t2 - t1);
-    M->status = 3;
-  }
-  CTX.threads_lock = 0 ;
-}
diff --git a/Mesh/Interpolation.cpp b/Mesh/Interpolation.cpp
deleted file mode 100644
index 30583f26f34e49c1afa59ed95b89f25d0c4dd905..0000000000000000000000000000000000000000
--- a/Mesh/Interpolation.cpp
+++ /dev/null
@@ -1,557 +0,0 @@
-// $Id: Interpolation.cpp,v 1.11 2001-08-12 20:45:02 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "Interpolation.h"
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e C u r v e                                         */
-/* ------------------------------------------------------------------------ */
-
-extern Mesh *THEM;
-
-Vertex InterpolateCurve (Curve * Curve, double u, int derivee){
-
-  int N, i, j;
-  Vertex D[2], V;
-  Vertex *v[5];
-  double eps = 1.e-3, T[4], W, teta, t1, t2, t;
-  double vec[4];
-  Vertex temp1, temp2;
-
-  V.u = u;
-
-  if (derivee){
-    D[0] = InterpolateCurve (Curve, u, 0);
-    D[1] = InterpolateCurve (Curve, u + eps, 0);
-    V.Pos.X = (D[1].Pos.X - D[0].Pos.X) / eps;
-    V.Pos.Y = (D[1].Pos.Y - D[0].Pos.Y) / eps;
-    V.Pos.Z = (D[1].Pos.Z - D[0].Pos.Z) / eps;
-    return V;
-  }
-
-  switch (Curve->Typ){
-
-  case MSH_SEGM_LINE:
-    
-    N = List_Nbr (Curve->Control_Points);
-    i = (int) ((double) (N - 1) * u);
-    while (i >= N - 1)
-      i--;
-    while (i < 0)
-      i++;
-    t1 = (double) (i) / (double) (N - 1);
-    t2 = (double) (i + 1) / (double) (N - 1);
-    t = (u - t1) / (t2 - t1);
-    List_Read (Curve->Control_Points, i, &v[1]);
-    List_Read (Curve->Control_Points, i + 1, &v[2]);
-    
-    V.lc = t * v[2]->lc + (1. - t) * v[1]->lc;
-    V.Pos.X = v[1]->Pos.X + t * (v[2]->Pos.X - v[1]->Pos.X);
-    V.Pos.Y = v[1]->Pos.Y + t * (v[2]->Pos.Y - v[1]->Pos.Y);
-    V.Pos.Z = v[1]->Pos.Z + t * (v[2]->Pos.Z - v[1]->Pos.Z);
-    V.w = v[1]->w + t * (v[2]->w - v[1]->w);
-    return V;
-
-  case MSH_SEGM_PARAMETRIC:
-    V.Pos.X = evaluate_scalarfunction ("t", u, Curve->functu);
-    V.Pos.Y = evaluate_scalarfunction ("t", u, Curve->functv);
-    V.Pos.Z = evaluate_scalarfunction ("t", u, Curve->functw);
-    V.lc = (u * Curve->beg->lc + (1. - u) * Curve->end->lc);
-    V.w = (u * Curve->beg->w + (1. - u) * Curve->end->w);
-    return V;
-    
-  case MSH_SEGM_CIRC:
-  case MSH_SEGM_CIRC_INV:
-  case MSH_SEGM_ELLI:
-  case MSH_SEGM_ELLI_INV:
-    
-    if (Curve->Typ == MSH_SEGM_CIRC_INV ||
-        Curve->Typ == MSH_SEGM_ELLI_INV){
-      V.u = 1. - u;
-      u = V.u;
-    }
-    
-    teta = Curve->Circle.t1 - (Curve->Circle.t1 - Curve->Circle.t2) * u;
-    /* pour les ellipses */
-    teta -= Curve->Circle.incl;
-    
-    V.Pos.X = Curve->Circle.f1 * cos (teta) * cos (Curve->Circle.incl) -
-      Curve->Circle.f2 * sin (teta) * sin (Curve->Circle.incl);
-    V.Pos.Y = Curve->Circle.f1 * cos (teta) * sin (Curve->Circle.incl) +
-      Curve->Circle.f2 * sin (teta) * cos (Curve->Circle.incl);
-    V.Pos.Z = 0.0;
-    Projette (&V, Curve->Circle.invmat);
-    V.Pos.X += Curve->Circle.v[2]->Pos.X;
-    V.Pos.Y += Curve->Circle.v[2]->Pos.Y;
-    V.Pos.Z += Curve->Circle.v[2]->Pos.Z;
-    V.w = (u * Curve->beg->w + (1. - u) * Curve->end->w);
-
-    // ?????
-    V.lc = (u * Curve->end->lc + (1. - u) * Curve->beg->lc);
-    return V;
-    
-  case MSH_SEGM_BSPLN:
-  case MSH_SEGM_BEZIER:
-    V.lc = (u * Curve->beg->lc + (1. - u) * Curve->end->lc);
-    return InterpolateUBS (Curve, u, derivee);
-
-  case MSH_SEGM_NURBS:
-    V.lc = (u * Curve->beg->lc + (1. - u) * Curve->end->lc);
-    return InterpolateNurbs (Curve, u, derivee);
-
-  case MSH_SEGM_SPLN:
-    V.lc = (u * Curve->beg->lc + (1. - u) * Curve->end->lc);
-    N = List_Nbr (Curve->Control_Points);
-
-    /* 
-           0                   i    P     i+1                  N-1
-     vfirst*---------*---------*----X-----*----------*----------* vlast
-           0                  t1   absc   t2                    1
-                               0    t     1
-
-     Splines uniformes -> Le point se trouve entre v[1] et v[2] 
-     -> Calcul de l'abcisse curviligne locale t ( entre 0 et 1 )
-
-     0           -> t1 
-     1           -> t2
-     u -> t
-
-     Splines Lineiques -> Multilines
-    */
-
-    i = (int) ((double) (N - 1) * u);
-    if (i < 0)
-      i = 0;
-    if (i >= N - 1)
-      i = N - 2;
-    
-    t1 = (double) (i) / (double) (N - 1);
-    t2 = (double) (i + 1) / (double) (N - 1);
-    
-    t = (u - t1) / (t2 - t1);
-    
-    List_Read (Curve->Control_Points, i, &v[1]);
-    List_Read (Curve->Control_Points, i + 1, &v[2]);
-    
-    V.lc = t * v[1]->lc + (1. - t) * v[2]->lc;
-    
-    if (!i){
-      v[0] = &temp1;
-      v[0]->Pos.X = 2. * v[1]->Pos.X - v[2]->Pos.X;
-      v[0]->Pos.Y = 2. * v[1]->Pos.Y - v[2]->Pos.Y;
-      v[0]->Pos.Z = 2. * v[1]->Pos.Z - v[2]->Pos.Z;
-    }
-    else{
-      List_Read (Curve->Control_Points, i - 1, &v[0]);
-    }
-    
-    if (i == N - 2){
-      v[3] = &temp2;
-      v[3]->Pos.X = 2. * v[2]->Pos.X - v[1]->Pos.X;
-      v[3]->Pos.Y = 2. * v[2]->Pos.Y - v[1]->Pos.Y;
-      v[3]->Pos.Z = 2. * v[2]->Pos.Z - v[1]->Pos.Z;
-    }
-    else{
-      List_Read (Curve->Control_Points, i + 2, &v[3]);
-    }
-    
-    if (derivee){
-      T[3] = 0.;
-      T[2] = 1.;
-      T[1] = 2. * t;
-      T[0] = 3. * t * t;
-    }
-    else{
-      T[3] = 1.;
-      T[2] = t;
-      T[1] = t * t;
-      T[0] = t * t * t;
-    }
-    
-    V.Pos.X = V.Pos.Y = V.Pos.Z = W = 0.0;
-    for (i = 0; i < 4; i++){
-      vec[i] = 0.0;
-    }
-    
-    /* X */
-    for (i = 0; i < 4; i++){
-      for (j = 0; j < 4; j++){
-          vec[i] += Curve->mat[i][j] * v[j]->Pos.X;
-        }
-    }
-
-    for (j = 0; j < 4; j++){
-      V.Pos.X += T[j] * vec[j];
-      vec[j] = 0.0;
-    }
-
-    /* Y */
-    for (i = 0; i < 4; i++){
-      for (j = 0; j < 4; j++){
-        vec[i] += Curve->mat[i][j] * v[j]->Pos.Y;
-      }
-    }
-
-    for (j = 0; j < 4; j++){
-      V.Pos.Y += T[j] * vec[j];
-      vec[j] = 0.0;
-    }
-
-    /* Z */
-    for (i = 0; i < 4; i++){
-      for (j = 0; j < 4; j++){
-        vec[i] += Curve->mat[i][j] * v[j]->Pos.Z;
-      }
-    }
-    for (j = 0; j < 4; j++){
-      V.Pos.Z += T[j] * vec[j];
-      vec[j] = 0.0;
-    }
-    
-    /* W */
-    for (i = 0; i < 4; i++){
-      for (j = 0; j < 4; j++){
-        vec[i] += Curve->mat[i][j] * v[j]->lc;
-      }
-    }
-    for (j = 0; j < 4; j++){
-      W += T[j] * vec[j];
-    }
-
-    if (derivee){
-      V.Pos.X /= ((t2 - t1));
-      V.Pos.Y /= ((t2 - t1));
-      V.Pos.Z /= ((t2 - t1));
-    }
-    else{
-      // V.Pos.X /= ((W));
-      // V.Pos.Y /= ((W));
-      // V.Pos.Z /= ((W));
-    }
-    return V;
-
-  default :
-    Msg(FATAL, "Unknown curve type in interpolation");
-    return V;
-  }
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e S u r f a c e                                     */
-/* ------------------------------------------------------------------------ */
-
-/* Interpolation transfinie sur un quadrangle :
-   f(u,v) = (1-u)c4(v) + u c2(v) + (1-v)c1(u) + v c3(u)
-            - [ (1-u)(1-v)s1 + u(1-v)s2 + uv s3 + (1-u)v s4 ] */
-
-#define TRAN_QUA(c1,c2,c3,c4,s1,s2,s3,s4,u,v) \
-   (1.-u)*c4+u*c2+(1.-v)*c1+v*c3-((1.-u)*(1.-v)*s1+u*(1.-v)*s2+u*v*s3+(1.-u)*v*s4)
-
-Vertex TransfiniteQua (Vertex c1, Vertex c2, Vertex c3, Vertex c4,
-                       Vertex s1, Vertex s2, Vertex s3, Vertex s4,
-                       double u, double v){
-  Vertex V;
-
-  V.lc = TRAN_QUA (c1.lc, c2.lc, c3.lc, c4.lc, 
-                   s1.lc, s2.lc, s3.lc, s4.lc, u, v);
-  V.w = TRAN_QUA (c1.w, c2.w, c3.w, c4.w, 
-                  s1.w, s2.w, s3.w, s4.w, u, v);
-  V.Pos.X = TRAN_QUA (c1.Pos.X, c2.Pos.X, c3.Pos.X, c4.Pos.X, 
-                      s1.Pos.X, s2.Pos.X, s3.Pos.X, s4.Pos.X, u, v);
-  V.Pos.Y = TRAN_QUA (c1.Pos.Y, c2.Pos.Y, c3.Pos.Y, c4.Pos.Y, 
-                      s1.Pos.Y, s2.Pos.Y, s3.Pos.Y, s4.Pos.Y, u, v);
-  V.Pos.Z = TRAN_QUA (c1.Pos.Z, c2.Pos.Z, c3.Pos.Z, c4.Pos.Z, 
-                      s1.Pos.Z, s2.Pos.Z, s3.Pos.Z, s4.Pos.Z, u, v);
-  return (V);
-}
-
-/* Interpolation transfinie sur un triangle : TRAN_QUA avec s1=s4=c4
-   f(u,v) = u c2 (v) + (1-v) c1(u) + v c3(u) - u(1-v) s2 - uv s3 */
-
-#define TRAN_TRI(c1,c2,c3,s1,s2,s3,u,v) u*c2+(1.-v)*c1+v*c3-(u*(1.-v)*s2+u*v*s3);
-
-Vertex TransfiniteTri (Vertex c1, Vertex c2, Vertex c3,
-                       Vertex s1, Vertex s2, Vertex s3,
-                       double u, double v){
-  Vertex V;
-
-  V.lc = TRAN_TRI (c1.lc, c2.lc, c3.lc, s1.lc, s2.lc, s3.lc, u, v);
-  V.w = TRAN_TRI (c1.w, c2.w, c3.w, s1.w, s2.w, s3.w, u, v);
-  V.Pos.X = TRAN_TRI (c1.Pos.X, c2.Pos.X, c3.Pos.X, 
-                      s1.Pos.X, s2.Pos.X, s3.Pos.X, u, v);
-  V.Pos.Y = TRAN_TRI (c1.Pos.Y, c2.Pos.Y, c3.Pos.Y, 
-                      s1.Pos.Y, s2.Pos.Y, s3.Pos.Y, u, v);
-  V.Pos.Z = TRAN_TRI (c1.Pos.Z, c2.Pos.Z, c3.Pos.Z, 
-                      s1.Pos.Z, s2.Pos.Z, s3.Pos.Z, u, v);
-  return (V);
-}
-
-void TransfiniteSph (Vertex S, Vertex center, Vertex * T){
-  double r, s, dirx, diry, dirz;
-
-  r = sqrt (DSQR (S.Pos.X - center.Pos.X) + DSQR (S.Pos.Y - center.Pos.Y)
-            + DSQR (S.Pos.Z - center.Pos.Z));
-
-  s = sqrt (DSQR (T->Pos.X - center.Pos.X) + DSQR (T->Pos.Y - center.Pos.Y)
-            + DSQR (T->Pos.Z - center.Pos.Z));
-
-  dirx = (T->Pos.X - center.Pos.X) / s;
-  diry = (T->Pos.Y - center.Pos.Y) / s;
-  dirz = (T->Pos.Z - center.Pos.Z) / s;
-
-  T->Pos.X = center.Pos.X + r * dirx;
-  T->Pos.Y = center.Pos.Y + r * diry;
-  T->Pos.Z = center.Pos.Z + r * dirz;
-}
-
-Vertex InterpolateSurface (Surface * s, double u, double v, 
-                           int derivee, int u_v){
-  Vertex *c1, *c2, T, D[4], V[4], *S[4];
-  Curve *C[4];
-  int i, issphere;
-  double eps = 1.e-6;
-
-  if (derivee){
-    if (u_v == 1){
-      if (u - eps < 0.0){
-        D[0] = InterpolateSurface (s, u, v, 0, 0);
-        D[1] = InterpolateSurface (s, u + eps, v, 0, 0);
-      }
-      else{
-        D[0] = InterpolateSurface (s, u - eps, v, 0, 0);
-        D[1] = InterpolateSurface (s, u, v, 0, 0);
-      }
-    }
-    else if (u_v == 2){
-      if (v - eps < 0.0){
-        D[0] = InterpolateSurface (s, u, v, 0, 0);
-        D[1] = InterpolateSurface (s, u, v + eps, 0, 0);
-      }
-      else{
-        D[0] = InterpolateSurface (s, u, v - eps, 0, 0);
-        D[1] = InterpolateSurface (s, u, v, 0, 0);
-      }
-    }
-    else{
-      Msg(WARNING, "Arbitrary InterpolateSurface for derivative not done");
-      /*
-      double epsc = eps * cos (t);
-      double epss = eps * sin (t);
-      if (v - epss < 0.0 && u - epsc < 0.0){
-        D[0] = InterpolateSurface (s, u, v, 0, 0);
-        D[1] = InterpolateSurface (s, u + epsc, v + epss, 0, 0);
-      }
-      else if (v - epss < 0.0){
-        D[0] = InterpolateSurface (s, u - epsc, v, 0, 0);
-        D[1] = InterpolateSurface (s, u, v + epss, 0, 0);
-      }
-      else if (u - epsc < 0.0){
-        D[0] = InterpolateSurface (s, u, v - epss, 0, 0);
-        D[1] = InterpolateSurface (s, u + epsc, v, 0, 0);
-      }
-      else{
-        D[0] = InterpolateSurface (s, u - epsc, v - epss, 0, 0);
-        D[1] = InterpolateSurface (s, u, v, 0, 0);
-      }
-      */
-    }
-    T.Pos.X = (D[1].Pos.X - D[0].Pos.X) / eps;
-    T.Pos.Y = (D[1].Pos.Y - D[0].Pos.Y) / eps;
-    T.Pos.Z = (D[1].Pos.Z - D[0].Pos.Z) / eps;
-    return T;
-  }
-  
-  Vertex x (u, v, .0);
-  Vertex *xx = &x, *dum;
-
-  if (s->Extrude && s->Extrude->geo.Mode == EXTRUDED_ENTITY &&
-      s->Typ != MSH_SURF_PLAN){
-    Curve *c = FindCurve (s->Extrude->geo.Source, THEM);
-    Vertex v1 = InterpolateCurve (c, u, 0);
-    s->Extrude->Extrude (v, v1.Pos.X, v1.Pos.Y, v1.Pos.Z);
-    return v1;
-  }
-
-  switch (s->Typ){
-    
-  case MSH_SURF_PLAN:
-
-    Calcule_Z_Plan (&xx, &dum);
-    //Projette_Inverse(&xx, &dum);
-    return x;
-
-  case MSH_SURF_REGL:
-    issphere = 1;
-    for (i = 0; i < 4; i++){
-      List_Read (s->Generatrices, i, &C[i]);
-      if (C[i]->Typ != MSH_SEGM_CIRC && C[i]->Typ != MSH_SEGM_CIRC_INV){
-        issphere = 0;
-      }
-      else if (issphere){
-        if (!i){
-          List_Read (C[i]->Control_Points, 1, &c1);
-        }
-        else{
-          List_Read (C[i]->Control_Points, 1, &c2);
-          if (compareVertex (&c1, &c2))
-            issphere = 0;
-        }
-      }
-    }
-    
-    S[0] = C[0]->beg;
-    S[1] = C[1]->beg;
-    S[2] = C[2]->beg;
-    S[3] = C[3]->beg;
-    
-    /*
-      List_Read(C[0]->Control_Points, 0, &S[0]);
-      List_Read(C[1]->Control_Points, 0, &S[1]);
-      List_Read(C[2]->Control_Points, 0, &S[2]);
-      List_Read(C[3]->Control_Points, 0, &S[3]);
-    */
-
-    V[0] = InterpolateCurve (C[0], C[0]->ubeg + (C[0]->uend - C[0]->ubeg) * u, 0);
-    V[1] = InterpolateCurve (C[1], C[1]->ubeg + (C[1]->uend - C[1]->ubeg) * v, 0);
-    V[2] = InterpolateCurve (C[2], C[2]->ubeg + (C[2]->uend - C[2]->ubeg) * (1. - u), 0);
-    V[3] = InterpolateCurve (C[3], C[3]->ubeg + (C[3]->uend - C[3]->ubeg) * (1. - v), 0);
-    
-    T = TransfiniteQua (V[0], V[1], V[2], V[3], *S[0], *S[1], *S[2], *S[3], u, v);
-    if (issphere) TransfiniteSph (*S[0], *c1, &T);
-
-    return (T);
-    
-  case MSH_SURF_NURBS:
-    return InterpolateNurbsSurface (s, u, v);
-
-  case MSH_SURF_TRIC:
-    issphere = 1;
-    for (i = 0; i < 3; i++){
-      List_Read (s->Generatrices, i, &C[i]);
-      if (C[i]->Typ != MSH_SEGM_CIRC && C[i]->Typ != MSH_SEGM_CIRC_INV){
-        issphere = 0;
-      }
-      else if (issphere){
-        if (!i){
-          List_Read (C[i]->Control_Points, 1, &c1);
-        }
-        else{
-          List_Read (C[i]->Control_Points, 1, &c2);
-          if (compareVertex (&c1, &c2))
-            issphere = 0;
-        }
-      }
-    }
-    
-    List_Read (C[0]->Control_Points, 0, &S[0]);
-    List_Read (C[1]->Control_Points, 0, &S[1]);
-    List_Read (C[2]->Control_Points, 0, &S[2]);
-    
-    V[0] = InterpolateCurve (C[0], u, 0);
-    V[1] = InterpolateCurve (C[1], v, 0);
-    V[2] = InterpolateCurve (C[2], 1. - u, 0);
-    
-    T = TransfiniteTri (V[0], V[1], V[2], *S[0], *S[1], *S[2], u, v);
-    if (issphere) TransfiniteSph (*S[0], *c1, &T);
-
-    return (T);
-
-  default :
-    Msg(FATAL, "Unknown surface type in interpolation");
-    return T;
-  }
-
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e V o l u m e                                       */
-/* ------------------------------------------------------------------------ */
-
-/* Interpolation transfinie sur un hexaedre 
-                                   prisme (avec s1=s4=a4, s5=s8=a8, a9=a12=f4) 
-   f(u,v) = (1-u) f4(v,w) + u f2(v,w) 
-          + (1-v) f1(u,w) + v f3(u,w) 
-          + (1-w) f5(u,v) + w f6(u,v) 
-          - [ (1-u)(1-v) c9(w) + (1-u)v c12(w) + u(1-v) c10(w) + uv c11(w) ]
-          - [ (1-v)(1-w) c1(u) + (1-v)w c5(u)  + v(1-w) c3(u)  + vw c7(u)  ]
-          - [ (1-u)(1-w) c4(v) + (1-w)u c2(v)  + w(1-u) c8(v)  + uw c6(v)  ]
-          + [ (1-u)(1-v)(1-w) s1 + u(1-v)(1-w) s2 + uv(1-w) s3 + (1-u)v(1-w) s4 + 
-	      (1-u)(1-v)w     s5 + u(1-v)w     s6 + uvw     s7 + (1-u)vw     s8 ]
-*/
-
-#define TRAN_HEX(f1,f2,f3,f4,f5,f6,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,s1,s2,s3,s4,s5,s6,s7,s8,u,v,w) (1-u)*f4+u*f2+(1-v)*f1+v*f3+(1-w)*f5+w*f6-((1-u)*(1-v)*c9+(1-u)*v*c12+u*(1-v)*c10+u*v*c11)-((1-v)*(1-w)*c1+(1-v)*w*c5+v*(1-w)*c3+v*w*c7)-((1-u)*(1-w)*c4+(1-w)*u*c2+w*(1-u)*c8+u*w*c6)+(1-u)*(1-v)*(1-w)*s1+u*(1-v)*(1-w)*s2+u*v*(1-w)*s3+(1-u)*v*(1-w)*s4+(1-u)*(1-v)*w*s5+u*(1-v)*w*s6+u*v*w*s7+(1-u)*v*w*s8
-
-Vertex TransfiniteHex (Vertex f1, Vertex f2, Vertex f3, Vertex f4, Vertex f5, Vertex f6,
-		       Vertex c1, Vertex c2, Vertex c3, Vertex c4, Vertex c5, Vertex c6,
-		       Vertex c7, Vertex c8, Vertex c9, Vertex c10, Vertex c11, Vertex c12,
-		       Vertex s1, Vertex s2, Vertex s3, Vertex s4,
-		       Vertex s5, Vertex s6, Vertex s7, Vertex s8,
-		       double u, double v, double w){
-  Vertex V;
-
-  V.lc = TRAN_HEX (f1.lc, f2.lc, f3.lc, f4.lc, f5.lc, f6.lc,
-                   c1.lc, c2.lc, c3.lc, c4.lc, c5.lc, c6.lc,
-                   c7.lc, c8.lc, c9.lc, c10.lc, c11.lc, c12.lc,
-                   s1.lc, s2.lc, s3.lc, s4.lc, s5.lc, s6.lc, s7.lc, s8.lc,
-                   u, v, w);
-
-  V.Pos.X = TRAN_HEX (f1.Pos.X, f2.Pos.X, f3.Pos.X, f4.Pos.X, f5.Pos.X, f6.Pos.X,
-		      c1.Pos.X, c2.Pos.X, c3.Pos.X, c4.Pos.X, c5.Pos.X, c6.Pos.X,
-		      c7.Pos.X, c8.Pos.X, c9.Pos.X, c10.Pos.X, c11.Pos.X, c12.Pos.X,
-                      s1.Pos.X, s2.Pos.X, s3.Pos.X, s4.Pos.X, 
-		      s5.Pos.X, s6.Pos.X, s7.Pos.X, s8.Pos.X,
-                      u, v, w);
-
-  V.Pos.Y = TRAN_HEX (f1.Pos.Y, f2.Pos.Y, f3.Pos.Y, f4.Pos.Y, f5.Pos.Y, f6.Pos.Y,
-		      c1.Pos.Y, c2.Pos.Y, c3.Pos.Y, c4.Pos.Y, c5.Pos.Y, c6.Pos.Y,
-		      c7.Pos.Y, c8.Pos.Y, c9.Pos.Y, c10.Pos.Y, c11.Pos.Y, c12.Pos.Y,
-                      s1.Pos.Y, s2.Pos.Y, s3.Pos.Y, s4.Pos.Y, 
-		      s5.Pos.Y, s6.Pos.Y, s7.Pos.Y, s8.Pos.Y,
-                      u, v, w);
-
-  V.Pos.Z = TRAN_HEX (f1.Pos.Z, f2.Pos.Z, f3.Pos.Z, f4.Pos.Z, f5.Pos.Z, f6.Pos.Z,
-		      c1.Pos.Z, c2.Pos.Z, c3.Pos.Z, c4.Pos.Z, c5.Pos.Z, c6.Pos.Z,
-		      c7.Pos.Z, c8.Pos.Z, c9.Pos.Z, c10.Pos.Z, c11.Pos.Z, c12.Pos.Z,
-                      s1.Pos.Z, s2.Pos.Z, s3.Pos.Z, s4.Pos.Z, 
-		      s5.Pos.Z, s6.Pos.Z, s7.Pos.Z, s8.Pos.Z,
-                      u, v, w);
-
-  return (V);
-}
-
-void Normal2Surface (Surface * s, double u, double v, double n[3]){
-  Vertex du, dv;
-  double t1[3], t2[3];
-  du = InterpolateSurface (s, u, v, 1, 1);
-  dv = InterpolateSurface (s, u, v, 1, 2);
-  t1[0] = du.Pos.X;
-  t1[1] = du.Pos.Y;
-  t1[2] = du.Pos.Z;
-  t2[0] = dv.Pos.X;
-  t2[1] = dv.Pos.Y;
-  t2[2] = dv.Pos.Z;
-  prodve (t1, t2, n);
-  norme (n);
-}
-
-void HessianNormal2Surface (Surface * s, double u, double v, double n[3]){
-  Vertex du, dv;
-  double t1[3], t2[3];
-  du = InterpolateSurface (s, u, v, 1, 1);
-  dv = InterpolateSurface (s, u, v, 1, 2);
-  t1[0] = du.Pos.X;
-  t1[1] = du.Pos.Y;
-  t1[2] = du.Pos.Z;
-  t2[0] = dv.Pos.X;
-  t2[1] = dv.Pos.Y;
-  t2[2] = dv.Pos.Z;
-  prodve (t1, t2, n);
-  norme (n);
-}
diff --git a/Mesh/Interpolation.h b/Mesh/Interpolation.h
deleted file mode 100644
index 33ca717052fc6d3f86691f0163ab6c5424c62bec..0000000000000000000000000000000000000000
--- a/Mesh/Interpolation.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef _INTERPOLATION_H_
-#define _INTERPOLATION_H_
-
-Vertex InterpolateCurve (Curve * Curve, double u, int derivee);
-
-Vertex InterpolateSurface (Surface * s, double u, double v, 
-                           int derivee, int u_v);
-
-Vertex TransfiniteQua (Vertex c1, Vertex c2, Vertex c3, Vertex c4,
-                       Vertex s1, Vertex s2, Vertex s3, Vertex s4,
-                       double u, double v);
-
-Vertex TransfiniteTri (Vertex c1, Vertex c2, Vertex c3,
-                       Vertex s1, Vertex s2, Vertex s3,
-                       double u, double v);
-
-Vertex TransfiniteHex 
-  (Vertex f1, Vertex f2, Vertex f3, Vertex f4, Vertex f5, Vertex f6,
-   Vertex c1, Vertex c2, Vertex c3, Vertex c4, Vertex c5, Vertex c6,
-   Vertex c7, Vertex c8, Vertex c9, Vertex c10, Vertex c11, Vertex c12,
-   Vertex s1, Vertex s2, Vertex s3, Vertex s4,
-   Vertex s5, Vertex s6, Vertex s7, Vertex s8,
-   double u, double v, double w);
-
-void TransfiniteSph (Vertex S, Vertex center, Vertex * T);
-
-void Normal2Surface (Surface * s, double u, double v, double n[3]);
-
-Vertex InterpolateCubicSpline (Vertex * v[4], double t, double mat[4][4],
-                               int derivee, double t1, double t2);
-Vertex InterpolateUBS (Curve * Curve, double u, int derivee);
-  
-Vertex InterpolateNurbs (Curve * Curve, double u, int derivee);
-
-Vertex InterpolateNurbsSurface (Surface * s, double u, double v);
-
-#endif
-
-
diff --git a/Mesh/Makefile b/Mesh/Makefile
deleted file mode 100644
index 7e685396205660cc7c53564a01d134c4cba2a31e..0000000000000000000000000000000000000000
--- a/Mesh/Makefile
+++ /dev/null
@@ -1,300 +0,0 @@
-# $Id: Makefile,v 1.28 2001-08-11 23:32:22 geuzaine Exp $
-#
-# Makefile for "libMesh.a"
-#
-
-.IGNORE:
-
-CC      = c++
-AR      = ar ruvs
-RM      = rm
-RANLIB  = ranlib
-
-LIB     = ../lib/libMesh.a
-INCLUDE = -I../Adapt -I../Common -I../DataStr -I../Geo -I../Mesh\
-          -I../Graphics -I../Motif -I../Parser -I../Fltk
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = 
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(INCLUDE)
-
-SRC = 1D_Mesh.cpp \
-      2D_Mesh.cpp \
-        2D_SMesh.cpp \
-        2D_Elliptic.cpp \
-        2D_BGMesh.cpp \
-        2D_Recombine.cpp \
-        2D_InitMesh.cpp \
-        2D_Bowyer.cpp \
-        2D_Bricks.cpp \
-        2D_DivAndConq.cpp \
-        2D_Util.cpp \
-        2D_Links.cpp \
-        2D_Tree.cpp \
-        2D_Cylindrical.cpp \
-        2D_Parametric.cpp \
-        2D_Mesh_Aniso.cpp \
-      3D_Mesh.cpp \
-        3D_SMesh.cpp \
-        3D_BGMesh.cpp \
-        3D_Extrude.cpp \
-        3D_Extrude_Old.cpp \
-        3D_Coherence.cpp \
-        3D_Divide.cpp \
-        3D_Bricks.cpp \
-      MeshQuality.cpp \
-      Create.cpp \
-      Generator.cpp \
-      Print_Mesh.cpp \
-      Read_Mesh.cpp \
-      STL.cpp \
-      SMS.cpp \
-      SwapEdge.cpp \
-      Utils.cpp \
-      Metric.cpp \
-      Nurbs.cpp \
-      Interpolation.cpp \
-      SecondOrder.cpp \
-      Smoothing.cpp \
-      CrossData.cpp \
-      Vertex.cpp \
-      Edge.cpp \
-      Simplex.cpp 
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-1D_Mesh.o: 1D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- Utils.h ../Common/Context.h Interpolation.h
-2D_Mesh.o: 2D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h Utils.h \
- Create.h 2D_Mesh.h ../Common/Context.h
-2D_SMesh.o: 2D_SMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h ../Common/Numeric.h \
- Interpolation.h
-2D_Elliptic.o: 2D_Elliptic.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h
-2D_BGMesh.o: 2D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_Recombine.o: 2D_Recombine.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Utils.h \
- 2D_Mesh.h Create.h ../Common/Context.h
-2D_InitMesh.o: 2D_InitMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_Bowyer.o: 2D_Bowyer.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_Bricks.o: 2D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_DivAndConq.o: 2D_DivAndConq.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_Util.o: 2D_Util.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h \
- ../Common/Context.h
-2D_Links.o: 2D_Links.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_Tree.o: 2D_Tree.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h
-2D_Cylindrical.o: 2D_Cylindrical.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h ../Common/Context.h
-2D_Parametric.o: 2D_Parametric.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Interpolation.h Mesh.h \
- 2D_Mesh.h Create.h ../Common/Context.h
-2D_Mesh_Aniso.o: 2D_Mesh_Aniso.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h Interpolation.h \
- Create.h ../Common/Context.h
-3D_Mesh.o: 3D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 3D_Mesh.h \
- Create.h ../Common/Context.h
-3D_SMesh.o: 3D_SMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Interpolation.h Create.h
-3D_BGMesh.o: 3D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h 2D_Mesh.h 3D_Mesh.h ../Adapt/Adapt.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Numeric.h \
- ../Common/Context.h
-3D_Extrude.o: 3D_Extrude.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h \
- ../Common/Context.h Create.h
-3D_Extrude_Old.o: 3D_Extrude_Old.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h ../Common/Context.h \
- Create.h
-3D_Coherence.o: 3D_Coherence.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- 3D_Mesh.h Create.h
-3D_Divide.o: 3D_Divide.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h
-3D_Bricks.o: 3D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h
-MeshQuality.o: MeshQuality.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h
-Create.o: Create.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h Utils.h \
- ../Common/Context.h Create.h
-Generator.o: Generator.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Create.h \
- ../Common/Context.h ../Parser/OpenFile.h
-Print_Mesh.o: Print_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h \
- Create.h ../Common/Context.h
-Read_Mesh.o: Read_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h 3D_Mesh.h Create.h \
- ../Geo/MinMax.h ../Common/Context.h
-STL.o: STL.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h STL.h
-SMS.o: SMS.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Create.h \
- ../Geo/MinMax.h ../Geo/CAD.h ../Mesh/Mesh.h ../Common/Context.h
-SwapEdge.o: SwapEdge.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- SwapPatterns.h
-Utils.o: Utils.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h \
- Interpolation.h ../Adapt/nrutil.h ../Common/Context.h
-Metric.o: Metric.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h \
- Matrix.h Interpolation.h
-Nurbs.o: Nurbs.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h
-Interpolation.o: Interpolation.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Mesh.h Utils.h \
- Interpolation.h
-SecondOrder.o: SecondOrder.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Utils.h \
- Interpolation.h ../Common/Numeric.h
-Smoothing.o: Smoothing.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h
-CrossData.o: CrossData.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h
-Vertex.o: Vertex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Vertex.h ../Common/Context.h
-Edge.o: Edge.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h
-Simplex.o: Simplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- ../Common/Context.h
diff --git a/Mesh/Matrix.h b/Mesh/Matrix.h
deleted file mode 100644
index f4d546221883d9391e885af48770493fe4681e7a..0000000000000000000000000000000000000000
--- a/Mesh/Matrix.h
+++ /dev/null
@@ -1,195 +0,0 @@
-#ifndef _MATRIX_H_
-#define _MATRIX_H_
-
-#define _TAILLE_ 2
-
-template <class T> class Matrix2x2{
-  T mat[_TAILLE_][_TAILLE_];
-  T zero;
-
-public:
-
-  Matrix2x2 (const T& init){
-    zero = init;
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        mat[i][j] = zero;
-  }
-
-  Matrix2x2 (const T& init, T z[3][3]){
-    zero = init;
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        mat[i][j] = z[i][j];
-  }
-
-  Matrix2x2<T>& operator = (const Matrix2x2<T> &autre){
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        mat[i][j] = autre.mat[i][j];
-    return *this;
-  }
-
-  Matrix2x2<T> operator + (const Matrix2x2<T> &autre){
-    Matrix2x2<T> m(0.);
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        m.mat[i][j] = mat[i][j] + autre.mat[i][j];
-    return m;
-  }
-
-  Matrix2x2<T> operator - (const Matrix2x2<T> &autre){
-    Matrix2x2<T> m(0.);
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        m.mat[i][j] = mat[i][j] - autre.mat[i][j];
-    return m;
-  }
-
-  T* operator [] (int i){
-    return mat[i];
-  }
-
-  Matrix2x2 Identity(T id){
-    for(int i=0;i<_TAILLE_;i++)
-      mat[i][i] = id;
-  }
-
-  Matrix2x2 copy(T m[3][3]){
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        m[i][j] = mat[i][j];
-  }
-  
-  Matrix2x2 operator * (const Matrix2x2<T> &autre){
-    Matrix2x2 m(0.);
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++){
-        m.mat[i][j] = zero;
-        for(int k=0;k<_TAILLE_;k++)
-          m.mat[i][j] += mat[i][k] * autre.mat[k][j];
-      }
-    return m;
-  }
-  
-  bool invert (){
-    T det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
-    if(det == zero)return false;
-    mat[0][0] = mat[1][1] / det;
-    mat[1][1] = mat[0][0] / det;
-    mat[1][0] = -mat[1][0] / det;
-    mat[0][1] = -mat[0][1] / det;
-  }
-
-  void transpose(){
-    T temp;
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++){
-        if(i!=j){
-          temp = mat[i][j];
-          mat[i][j] = mat[j][i];
-          mat[j][i] = temp;
-        }
-      }
-  }
-};
-
-#undef _TAILLE_
-#define _TAILLE_ 3
-
-template <class T> class Matrix3x3{
-  T mat[_TAILLE_][_TAILLE_];
-  T zero;
-
-public:
-
-  Matrix3x3 (const T& init){
-    zero = init;
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        mat[i][j] = zero;
-  }
-
-  Matrix3x3 (const T& init, T z[3][3]){
-    zero = init;
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        mat[i][j] = z[i][j];
-  }
-
-  Matrix3x3<T>& operator = (const Matrix3x3<T> &autre){
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        mat[i][j] = autre.mat[i][j];
-    return *this;
-  }
-
-  Matrix3x3<T> operator + (const Matrix3x3<T> &autre){
-    Matrix3x3<T> m(0.);
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        m.mat[i][j] = mat[i][j] + autre.mat[i][j];
-    return m;
-  }
-
-  Matrix3x3<T> operator - (const Matrix3x3<T> &autre){
-    Matrix2x2<T> m(0.);
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        m.mat[i][j] = mat[i][j] - autre.mat[i][j];
-    return m;
-  }
-
-  T* operator [] (int i){
-    return mat[i];
-  }
-
-  void Identity(T id){
-    for(int i=0;i<_TAILLE_;i++)
-      mat[i][i] = id;
-  }
-
-  void copy(T m[3][3]){
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++)
-        m[i][j] = mat[i][j];
-  }
-  
-  Matrix3x3 operator * (const Matrix3x3<T> &autre){
-    Matrix3x3 m(0.);
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<_TAILLE_;j++){
-        m.mat[i][j] = zero;
-        for(int k=0;k<_TAILLE_;k++)
-          m.mat[i][j] += mat[i][k] * autre.mat[k][j];
-      }
-    return m;
-  }
-
-  /*
-    bool invert (){
-      T det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
-      if(det == zero)return false;
-      mat[0][0] = mat[1][1] / det;
-      mat[1][1] = mat[0][0] / det;
-      mat[1][0] = -mat[1][0] / det;
-      mat[0][1] = -mat[0][1] / det;
-    }
-  */
-
-  void transpose(){
-    T temp;
-    for(int i=0;i<_TAILLE_;i++)
-      for(int j=0;j<i;j++){
-        if(i!=j){
-          temp = mat[i][j];
-          mat[i][j] = mat[j][i];
-          mat[j][i] = temp;
-        }
-      }
-  }
-};
-
-#undef _TAILLE_
-
-#endif
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
deleted file mode 100644
index 064c0af77882095c1a34e8b4212e60c8893b07c2..0000000000000000000000000000000000000000
--- a/Mesh/Mesh.h
+++ /dev/null
@@ -1,457 +0,0 @@
-#ifndef _MESH_H_
-#define _MESH_H_
-
-#include "Vertex.h"
-#include "Simplex.h"
-#include "Edge.h"
-#include "ExtrudeParams.h"
-
-#define FORMAT_MSH     1
-#define FORMAT_UNV     2
-#define FORMAT_GREF    3
-#define FORMAT_XPM     4
-#define FORMAT_EPS     5
-#define FORMAT_BMP     6
-#define FORMAT_GIF     7
-#define FORMAT_GEO     8
-#define FORMAT_JPEG    9
-#define FORMAT_AUTO    10
-#define FORMAT_PPM     11
-#define FORMAT_YUV     12
-#define FORMAT_SMS     14
-
-#define CONV_VALUE    0.8
-
-#define NOTTOLINK 1
-#define TOLINK    2
-
-#define BOF         1
-#define A_TOUT_PRIX 2
-
-#define CENTER_CIRCCIRC 1
-#define VORONOI_INSERT  2
-#define BARYCENTER      3
-#define SQUARE_TRI      4
-
-#define EXTERN      1
-#define INTERN      2
-#define ACTIF       3
-#define WAITING     4
-#define ACCEPTED    5
-#define NONACCEPTED 6
-
-#define CONSTANT    1
-#define ONFILE      2
-#define WITHPOINTS  3
-#define FUNCTION    4
-
-#define TRANSFINI 1
-#define LIBRE     2
-#define ELLIPTIC  3
-
-#define BOULE 1
-#define BOITE 2
-
-#define NB_HISTOGRAM 100
-
-typedef struct _POINT PointRecord, *PointPeek;
-typedef struct _CONTOUR ContourRecord, *ContourPeek;
-typedef struct _DOC DocRecord, *DocPeek;
-typedef struct _CDLIST DListRecord, *DListPeek;
-typedef struct _MAILLAGE maillage, *maipeek;
-typedef struct _DELAUNAY Delaunay, *delpeek;
-typedef int PointNumero;
-class STL_Data;
-
-struct _DOC{
-  PointRecord *points;  /* points a trianguler */
-  List_T *hotpoints;    /* hotpoints */
-  int numPoints;        /* nombre de points */
-  int numTriangles;     /* nombre de triangles */
-  Delaunay *delaunay;   /* resultats 2D */
-};
-
-typedef struct{
-  double v;
-  double h;
-}MPoint;
-
-struct _POINT{
-  MPoint where;
-  DListPeek adjacent;
-  int initial, permu, info, info2, numcontour;
-  double quality, qualityy, angle;
-};
-
-typedef struct{
-  int Num;
-  double t, lc, p;
-}IntPoint;
-
-struct _CDLIST{
-  PointNumero point_num; /* numero du point */
-  DListPeek next, prev;
-};
-
-typedef struct{
-  PointNumero search;
-  PointNumero already;
-}demi_triangle;
-
-typedef struct{
-  demi_triangle *info;
-  PointNumero *t;
-  int t_length, info_length;
-}Striangle;
-
-typedef struct {
-  PointNumero from;
-  PointNumero to;
-  int num;
-  int seg;
-}edge;
-
-typedef struct{
-  PointNumero begin;
-  PointNumero end;
-}DT;
-
-typedef struct{
-  PointNumero from;
-  PointNumero to;
-}Segment;
-
-typedef struct{
-  PointNumero a, b, c;
-  double xc, yc;
-  double quality_value;
-  int position, info, info2;
-}Triangle;
-
-typedef struct {
-  Delaunay *voisin1, *voisin2, *voisin3;
-}Voronoi;
-
-struct _DELAUNAY{
-  Triangle t;
-  Voronoi v;
-};
-
-struct _CONTOUR{
-  PointRecord *oriented_points;
-  MPoint *perturbations;
-  int numpoints, numerocontour, numerozon, info;
-};
-
-struct _MAILLAGE{
-  PointRecord *points;
-  delpeek *listdel;
-  edge *listedges;
-  int numedges, numtriangles, numpoints;
-  int IncrAllocPoints, IncrAllocTri, IncrAllocEdges;
-  int NumAllocPoints, NumAllocTri, NumAllocEdges;
-  int zone;
-};
-
-class NXE{
-  public :
-  Vertex *v;
-  List_T *Liste;
-  ~NXE();
-  NXE();
-};
-
-typedef struct{
-  int Num;              /* Numero                                       */
-  int iEnt;             /* Entite geometrique                           */
-  Vertex *V[8];         /* 8 noeuds                                     */
-  Vertex **VSUP;        /* noeuds supplem pour les elts de degre eleves */
-}Hexahedron;
-
-typedef struct{
-  int Num;              /* Numero                                       */
-  int iEnt;             /* Entite geometrique                           */
-  Vertex *V[6];         /* 6 noeuds                                     */
-  Vertex **VSUP;        /* noeuds supplem pour les elts de degre eleves */
-}Prism;
-
-typedef struct{
-  int N;
-  List_T *pT;
-}Brick;
-
-typedef struct{
-  int init;
-  List_T *Bricks;
-  Coord min, max;
-  int Nx, Ny, Nz;
-}Grid_T;
-
-typedef struct{
-  double zaxis[3];
-  double radius1;
-  double radius2;
-  double xaxis[3];
-  double center[3];
-}CylParam;
-
-
-struct _Surf{
-  int Num;
-  int Typ;
-  int Mat;
-  int Method;
-  int Recombine;
-  double RecombineAngle;
-  int ipar[4];
-  int Nu, Nv;
-  List_T *Generatrices;       /* Surface reglee    */
-  List_T *Control_Points;       /* Patchs bicubiques */
-  double plan[3][3];
-  double invplan[3][3];
-  double a, b, c, d;
-  List_T *Orientations;
-  List_T *Contours;
-  Tree_T *Simplexes;
-  List_T *TrsfSimplexes;
-  Tree_T *Vertices;
-  List_T *TrsfVertices;
-  Tree_T *Edges;
-  int OrderU, OrderV;
-  float *ku, *kv, *cp;
-  struct _Surf *Support;
-  CylParam Cyl;
-  Grid_T Grid;          /* Grille de recherches rapides */
-  ExtrudeParams *Extrude;
-  STL_Data *STL;
-  int Dirty; //flag to prevent any meshing
-};
-typedef struct _Surf Surface;
-
-typedef struct{
-  int Num;
-  List_T *Curves;
-}EdgeLoop;
-
-typedef struct{
-  int Num;
-  List_T *Surfaces;
-}SurfaceLoop;
-
-typedef struct{
-  int Num;
-  int Typ;
-  List_T *Entities;
-}PhysicalGroup;
-
-typedef struct{
-  Face F;
-  Face Sorted;
-  Simplex *S[2];
-  int N;
-}FxE;
-
-typedef struct {
-  int Num;
-  int Mat;
-  int Typ;
-  int Method;
-  int ipar[8];
-  ExtrudeParams *Extrude;
-  List_T *Surfaces;
-  Tree_T *Vertices;
-  Tree_T *Edges;
-  Tree_T *Faces;
-  Tree_T *Simplexes;
-  Tree_T *Simp_Surf;//for old extrusion mesh generator
-  Tree_T *Hexahedra;
-  Tree_T *Prisms;
-  int Dirty; //flag to prevent any meshing
-}Volume;
-
-typedef struct {
-  Edge e1, e2;
-  int iFac;
-}exf_T;
-
-/* Structure intersection arete - Simplexe */
-
-typedef struct{
-  int NbIntersect;      /* nombre total d'intersections                   */
-  Edge *e;              /* arete                                          */
-  Simplex *s;           /* simplexe                                       */
-  Face *f;              /* face                                           */
-  int NbVertex;         /* nombre de noeuds du simplexe que coupe l'arete */
-  Vertex *V[12];        /* noeuds du simplexe que coupe l'arete           */
-  int iV[12];           /* noeuds du simplexe que coupe l'arete           */
-  int NbEdge;           /* nombre d'intersections arete-arete             */
-  int E[12];            /* aretes                                         */
-  Vertex *VE[12];       /* noeuds d'intersection                          */
-  int NbFace;           /* nombre d'intersections face-arete              */
-  Face *F[12];          /* faces                                          */
-  int iF[12];           /* faces                                          */
-  Vertex *VF[12];       /* position des points d'intersections face-arete */
-}Intersection;
-
-typedef struct _Mesh Mesh;
-
-typedef struct{
-  int Typ;
-  double lc;
-  struct _Mesh *m;
-  List_T *bgm;
-}LcField;
-
-typedef struct{
-  int done;
-  double t1, t2, f1, f2, incl;
-  Vertex *v[4];
-  double invmat[3][3];
-  double n[3];
-}CircParam;
-
-typedef struct{
-  int Num;
-  int Typ;
-  int Method;
-  int ipar[4];
-  double dpar[4];
-  double l;
-  double mat[4][4];
-  Vertex *beg, *end;
-  double ubeg, uend;
-  List_T *Control_Points;
-  List_T *Vertices;
-  Tree_T *Simplexes;
-  List_T *TrsfSimplexes;
-  ExtrudeParams *Extrude;
-  float *k, *cp;
-  int degre;
-  CircParam Circle;
-  char functu[256], functv[256], functw[256];
-  int Dirty; //flag to prevent any meshing
-}Curve;
-
-typedef struct{
-  int Num;
-  int Typ;
-  Vertex *v;
-  Curve *c;
-  Surface *s;
-  double lc1, lc2;
-  double Radius;
-}Attractor;
-
-#include "Metric.h"
-
-#define QUALITY_EDGES_BASED 1
-#define QUALITY_SIMPLEX_BASED 2
-#define INSERTION_CENTROID 1
-#define INSERTION_EDGE 2
-#define DELAUNAY_OLDALGO 1
-#define DELAUNAY_NEWALGO 2
-#define DELAUNAY_KERISO 1
-#define DELAUNAY_KERANISO 2
-
-class MeshParameters{
- public:
-  int NbSmoothing;
-  int DelaunayAlgorithm;
-  int DelaunayInsertionMethod;
-  int DelaunayQuality;
-  int DelaunayKernel;
-  bool InteractiveDelaunay;
-  MeshParameters ();
-};
-
-struct _Mesh{
-  char name[256];               /* Nom du probleme                       */
-  int status;                   /* Etat actuel du maillage               */
-  Tree_T *Points;               /* Points de controle                    */
-  Tree_T *Vertices;             /* Noeuds du maillage                    */
-  Tree_T *Simplexes;            /* Simplexes                             */
-  Tree_T *Curves;               /* Courbes                               */
-  Tree_T *Surfaces;             /* Surfaces                              */
-  Tree_T *Volumes;              /* Volumes                               */
-  Tree_T *SurfaceLoops;         /* Surface Loops                         */
-  Tree_T *EdgeLoops;            /* Edge Loops                            */
-  List_T *PhysicalGroups;       /* Physical Groups                       */
-  Tree_T *VertexEdges;          /* 2nd order Vertices on edges           */
-  Grid_T Grid;                  /* Grille de recherches rapides          */
-  LcField BGM;                  /* Background mesh                       */
-  double Statistics[50];        /* Mesh statistics                       */
-  int Histogram[3][NB_HISTOGRAM]; /* Quality histograms                 */
-  GMSHMetric *Metric;           /* Metric                                */
-  MeshParameters MeshParams;
-};
-
-typedef struct {
-  Simplex *S;
-  Face F;
-  int NumFaceSimpl;
-}SxF;
-
-struct Map{
-  int Num;
-  List_T *List;
-};
-
-
-/* public functions */
-
-void mai3d (Mesh * M, int Asked);
-
-void Init_Mesh (Mesh * M, int all);
-void Create_BgMesh (int i, double d, Mesh * m);
-void Print_Geo (Mesh * M, char *c);
-void Print_Mesh (Mesh * M, char *c, int Type);
-void Read_Mesh (Mesh * M, FILE * File_GEO, int Type);
-void GetStatistics (double s[50]);
-
-void Maillage_Dimension_0 (Mesh * M);
-void Maillage_Dimension_1 (Mesh * M);
-void Maillage_Dimension_2 (Mesh * M);
-void Maillage_Dimension_3 (Mesh * M);
-
-void Maillage_Curve (void *data, void *dummy);
-void Maillage_Surface (void *data, void *dum);
-void Maillage_Volume (void *data, void *dum);
-
-int Extrude_Mesh (Curve * c);
-int Extrude_Mesh (Surface * s);
-int Extrude_Mesh (Volume * v);
-void ExitExtrude();
-
-int MeshTransfiniteSurface (Surface *sur);
-int MeshTransfiniteVolume (Volume *vol);
-int MeshCylindricalSurface (Surface * s);
-int MeshParametricSurface (Surface * s);
-int MeshEllipticSurface (Surface * sur);
-
-int  AlgorithmeMaillage2DAnisotropeModeJF (Surface * s);
-void Maillage_Automatique_VieuxCode (Surface * pS, Mesh * m, int ori);
-
-int  Calcule_Contours (Surface * s);
-void Link_Simplexes (List_T * Sim, Tree_T * Tim);
-void Calcule_Z (void *data, void *dum);
-void Calcule_Z_Plan (void *data, void *dum);
-void Projette_Plan_Moyen (void *a, void *b);
-void Projette_Inverse (void *a, void *b);
-void Freeze_Vertex (void *a, void *b);
-void deFreeze_Vertex (void *a, void *b);
-void crEdges (Tree_T * TreeElem, Tree_T * treeedges);
-
-double Lc_XYZ (double X, double Y, double Z, Mesh * m);
-void Degre2 (Tree_T * AllNodes, Tree_T * TreeNodes, Tree_T * TreeElm,
-             Curve * c, Surface * s);
-void ActionLiss (void *data, void *dummy);
-void ActionLissSurf (void *data, void *dummy);
-int  Recombine (Tree_T *TreeAllVert, Tree_T *TreeAllElg, double a);
-void ApplyLcFactor(Mesh *M);
-
-void Gamma_Maillage (Mesh * m, double *gamma, double *gammamax, double *gammamin);
-void Eta_Maillage (Mesh * m, double *gamma, double *gammamax, double *gammamin);
-void R_Maillage (Mesh * m, double *gamma, double *gammamax, double *gammamin);
-void Print_Histogram(int *h);
-
-#endif
diff --git a/Mesh/MeshQuality.cpp b/Mesh/MeshQuality.cpp
deleted file mode 100644
index 570bf05a963a6a09f5c343b67b9dc2c917de40a2..0000000000000000000000000000000000000000
--- a/Mesh/MeshQuality.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-// $Id: MeshQuality.cpp,v 1.5 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-
-/* Fonctions calculant differents parametres donnant la qualite
-   d'un maillage (surtout 3-D)   */
-
-/* Fonction calculant le facteur gamma pour un element tetraedrique :
-               12       rho(in)
-   gamma = --------   ---------
-             sqrt(6)    max(lij)
- */
-
-static double GAMMAMAX, GAMMAMIN, GAMMA;
-static int NbCalcGamma, *Histogram;
-
-void CalculateGamma (void *a, void *b){
-  Simplex *s = *(Simplex **) a;
-  double gamma = s->GammaShapeMeasure ();
-  NbCalcGamma++;
-  GAMMAMAX = DMAX (GAMMAMAX, gamma);
-  GAMMA += gamma;
-  GAMMAMIN = DMIN (GAMMAMIN, gamma);
-  for(int i=0; i<NB_HISTOGRAM; i++)
-    if(gamma > i/(double)NB_HISTOGRAM && gamma < (i+1)/(double)NB_HISTOGRAM)
-      Histogram[i]++;
-}
-
-void CalculateEta (void *a, void *b){
-  Simplex *s = *(Simplex **) a;
-  double gamma = s->EtaShapeMeasure ();
-  NbCalcGamma++;
-  GAMMAMAX = DMAX (GAMMAMAX, gamma);
-  GAMMA += gamma;
-  GAMMAMIN = DMIN (GAMMAMIN, gamma);
-  for(int i=0; i<NB_HISTOGRAM; i++)
-    if(gamma > i/(double)NB_HISTOGRAM && gamma < (i+1)/(double)NB_HISTOGRAM)
-      Histogram[i]++;
-}
-
-void CalculateR (void *a, void *b){
-  Simplex *s = *(Simplex **) a;
-  double gamma = s->RhoShapeMeasure ();
-  NbCalcGamma++;
-  GAMMAMAX = DMAX (GAMMAMAX, gamma);
-  GAMMA += gamma;
-  GAMMAMIN = DMIN (GAMMAMIN, gamma);
-  for(int i=0; i<NB_HISTOGRAM; i++)
-    if(gamma > i/(double)NB_HISTOGRAM && gamma < (i+1)/(double)NB_HISTOGRAM)
-      Histogram[i]++;
-}
-
-
-
-static void g(void *a, void *b){
-  Volume *v = *(Volume**)a;
-  Tree_Action (v->Simplexes, CalculateGamma);  
-  Msg(DEBUG, "Gamma computed in volume %d (%d values)", v->Num, NbCalcGamma);
-}
-
-void Gamma_Maillage (Mesh * m, double *gamma, double *gammamax, double *gammamin){
-  GAMMA = 0.0;
-  GAMMAMAX = 0.0;
-  GAMMAMIN = 1.0;
-  NbCalcGamma = 0;
-  Histogram = m->Histogram[0];
-  for(int i=0; i<NB_HISTOGRAM; i++) Histogram[i] = 0;
-  Tree_Action (m->Volumes, g);
-  if(!NbCalcGamma) NbCalcGamma = 1;
-  *gamma = GAMMA / (double) NbCalcGamma;
-  *gammamax = GAMMAMAX;
-  *gammamin = GAMMAMIN;
-}
-
-static void e(void *a, void *b){
-  Volume *v = *(Volume**)a;
-  Tree_Action (v->Simplexes, CalculateEta);  
-  Msg(DEBUG, "Eta computed in volume %d (%d values)", v->Num, NbCalcGamma);
-}
-
-void Eta_Maillage (Mesh * m, double *gamma, double *gammamax, double *gammamin){
-  GAMMA = 0.0;
-  GAMMAMAX = 0.0;
-  GAMMAMIN = 1.0;
-  NbCalcGamma = 0;
-  Histogram = m->Histogram[1];
-  for(int i=0; i<NB_HISTOGRAM; i++) Histogram[i] = 0;
-  Tree_Action (m->Volumes, e);
-  if(!NbCalcGamma) NbCalcGamma = 1;
-  *gamma = GAMMA / (double) NbCalcGamma;
-  *gammamax = GAMMAMAX;
-  *gammamin = GAMMAMIN;
-}
-
-static void r(void *a, void *b){
-  Volume *v = *(Volume**)a;
-  Tree_Action (v->Simplexes, CalculateR);  
-  Msg(DEBUG, "Rho computed in volume %d (%d values)", v->Num, NbCalcGamma);
-}
-
-void R_Maillage (Mesh * m, double *gamma, double *gammamax, double *gammamin){
-  GAMMA = 0.0;
-  GAMMAMAX = 0.0;
-  GAMMAMIN = 1.0;
-  NbCalcGamma = 0;
-  Histogram = m->Histogram[2];
-  for(int i=0; i<NB_HISTOGRAM; i++) Histogram[i] = 0;
-  Tree_Action (m->Volumes, r);
-  if(!NbCalcGamma) NbCalcGamma = 1;
-  *gamma = GAMMA / (double) NbCalcGamma;
-  *gammamax = GAMMAMAX;
-  *gammamin = GAMMAMIN;
-}
-
-
-void Print_Histogram(int *h){
-  for(int i=0;i<NB_HISTOGRAM;i++)
-    Msg(DIRECT, "%g %d", (i+1)/(double)NB_HISTOGRAM, h[i]);
-}
-
diff --git a/Mesh/Metric.cpp b/Mesh/Metric.cpp
deleted file mode 100644
index 2b179b759c7d0ae522f1e67de3c1755d2b493771..0000000000000000000000000000000000000000
--- a/Mesh/Metric.cpp
+++ /dev/null
@@ -1,350 +0,0 @@
-// $Id: Metric.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Matrix.h"
-#include "Interpolation.h"
-
-GMSHMetric::GMSHMetric (){
-  Identity ();
-  Attractors = List_Create (2, 2, sizeof (Attractor *));
-  apply_costest = true;
-  apply_disttest = true;
-  min_cos = 0.0095;
-  max_dist = 1.e-3;
-  limite_aniso = 3000.;
-  quality_measure = QUALITY_SIMPLEX_BASED;
-}
-
-double GMSHMetric:: Local_Metric_Of_Attractors (double X, double Y, double Z,
-                                                double metric[3][3]){
-  int i;
-  Attractor *a, *amin;
-  double u, x1, x2, d, dmin;
-  Vertex v1 (X, Y, Z), v2, der, metr;
-
-  dmin = 1.e25;
-  amin = NULL;
-
-  for (i = 0; i < List_Nbr (Attractors); i++){
-    List_Read (Attractors, i, &a);
-    if (a->v){
-      d = sqrt ((X - a->v->Pos.X) * (X - a->v->Pos.X) +
-                (Y - a->v->Pos.Y) * (Y - a->v->Pos.Y) +
-                (Z - a->v->Pos.Z) * (Z - a->v->Pos.Z));
-    }
-    if (a->c){
-      ProjectPointOnCurve (a->c, &v1, &v2, &der);
-      d = sqrt ((X - v2.Pos.X) * (X - v2.Pos.X) +
-                (Y - v2.Pos.Y) * (Y - v2.Pos.Y) +
-                (Z - v2.Pos.Z) * (Z - v2.Pos.Z));
-      
-    }
-    /*
-      if(a->s){
-         ProjectPointOnSurface (a->c, &v1, &v2,&der);
-         d = sqrt((X-v2.Pos.X)*(X-v2.Pos.X)+
-         (Y-v2.Pos.Y)*(Y-v2.Pos.Y)+
-         (Z-v2.Pos.Z)*(Z-v2.Pos.Z));
-
-         }
-    */
-    if (d < dmin){
-      dmin = d;
-      amin = a;
-      metr = der;
-    }
-  }
-  if (amin){
-    double d1 = dmin * amin->Radius;
-    u = exp (-(d1 * d1));
-    x1 = (1. - u) + u * amin->lc1;
-    x2 = (1. - u) + u * amin->lc2;
-  }
-  if (amin && amin->v){
-    double q11 = 1. / (x1 * x1);
-    double q22 = 1. / (x2 * x2);
-    double q12 = 1. / (x1 * x2);
-    m[0][0] *= q11;
-    m[0][1] *= q12;
-    m[1][0] *= q12;
-    m[1][1] *= q22;
-    m[2][1] *= q11;
-    m[1][2] *= q12;
-    m[0][2] *= q12;
-    m[2][0] *= q12;
-    m[2][2] *= q11;
-  }
-  else if (amin && amin->c){
-    Matrix3x3 < double >NewMetric (0.), Rot (0.), RotTranspose (0.), Id (0.);
-    double xx = 0.0, yy = 0.0, zz = 0.0;
-    
-    if (metr.Pos.Z == 0.0)
-      zz = 1.0;
-    else if (metr.Pos.Y == 0.0)
-      yy = 1.0;
-    else
-      xx = 1.0;
-    
-    Vertex z (xx, yy, zz);
-    Vertex d2 = metr % z;
-    metr.norme ();
-    d2.norme ();
-    Vertex d3 = metr % d2;
-    d3.norme ();
-    
-    Id.Identity (1.0);
-    Rot.Identity (1.0);
-    
-    Id[0][0] = 1. / (x1 * x1);
-    Id[1][1] = 1. / (x2 * x2);
-    Id[2][2] = 1. / (x2 * x2);
-    
-    Rot[0][0] = metr.Pos.X;
-    Rot[0][1] = metr.Pos.Y;
-    Rot[0][2] = metr.Pos.Z;
-    Rot[1][0] = d2.Pos.X;
-    Rot[1][1] = d2.Pos.Y;
-    Rot[1][2] = d2.Pos.Z;
-    Rot[2][0] = d3.Pos.X;
-    Rot[2][1] = d3.Pos.Y;
-    Rot[2][2] = d3.Pos.Z;
-    
-    RotTranspose = Rot;
-    RotTranspose.transpose ();
-    NewMetric = RotTranspose * (Id * Rot);
-    NewMetric.copy (m);
-  }
-  else
-    u = 0.0;
-  return u;
-}
-
-
-void GMSHMetric:: setMetric (double u,double v, Surface * s){
-  double a, b, c;               // ellipsis axx+byy+cxy=1
-  double l1, l2;                // 2 eigenvalues
-
-  Identity ();
-  Vertex p = InterpolateSurface (s, u, v, 0, 0);
-  if (s->Typ != MSH_SURF_PLAN && s->Typ != MSH_SURF_REGL && s->Typ != MSH_SURF_TRIC){
-    Vertex du = InterpolateSurface (s, u, v, 1, 1);
-    Vertex dv = InterpolateSurface (s, u, v, 1, 2);
-    
-    a = du * du;
-    b = dv * dv;
-    c = du * dv;
-    
-    m[0][0] = a;
-    m[1][1] = b;
-    m[0][1] = c;
-    m[1][0] = c;
-    
-    l1 = 0.5 * ((a + b) + sqrt ((a - b) * (a - b) + 4. * c * c));
-    l2 = 0.5 * ((a + b) - sqrt ((a - b) * (a - b) + 4. * c * c));
-    
-    if (l1 == 0.0 && l2 == 0.0)
-      Identity ();
-    
-    else if (sqrt (l1 / l2) > limite_aniso){
-      // on limite les rapports de metrique a limite_ansio
-      double r = limite_aniso * limite_aniso * (l2 / l1);
-      m[0][0] = a / r;
-      m[1][1] = b * r;
-      m[0][1] = c;
-      m[1][0] = c;
-    }
-  }
-  Local_Metric_Of_Attractors (p.Pos.X, p.Pos.Y, p.Pos.Z, NULL);
-
-}
-
-void GMSHMetric:: setMetric (double x, double y, double z){
-  Identity ();
-  Local_Metric_Of_Attractors (x, y, z, NULL);
-  return;
-}
-
-void GMSHMetric:: setMetricMin (double u, double v, Surface * s){
-
-  Identity ();
-  if (s->Typ != MSH_SURF_PLAN && s->Typ != MSH_SURF_REGL && s->Typ != MSH_SURF_TRIC){
-    Vertex du = InterpolateSurface (s, u, v, 1, 1);
-    Vertex dv = InterpolateSurface (s, u, v, 1, 2);
-    double d = (du * du > dv * dv) ? du * du : dv * dv;
-    m[0][0] = d;
-    m[1][1] = d;
-  }
-
-}
-
-double GMSHMetric:: getWorstEdge (Simplex * s, Surface * surf, Vertex * v[2]){
-  double l1, l2, l3, q1, q2, q3;
-  v[0] = s->V[0];
-  v[1] = s->V[1];
-  l1 = EdgeLengthOnSurface (surf, v, 1);
-  v[0] = s->V[0];
-  v[1] = s->V[2];
-  l2 = EdgeLengthOnSurface (surf, v, 1);
-  v[0] = s->V[1];
-  v[1] = s->V[2];
-  l3 = EdgeLengthOnSurface (surf, v, 1);
-
-  q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc);
-  q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc);
-  q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc);
-
-  if (q1 >= q2 && q1 >= q3){
-    v[0] = s->V[0];
-    v[1] = s->V[1];
-    return l1;
-  }
-  else if (q2 >= q3){
-    v[0] = s->V[0];
-    v[1] = s->V[2];
-    return l2;
-  }
-  return l3;
-}
-
-void GMSHMetric:: setSimplexQuality (Simplex * s, Surface * surf){
-  if (quality_measure == QUALITY_EDGES_BASED){
-    Vertex *v[2], vv;
-    double l1, l2, l3, q1, q2, q3;
-    v[0] = s->V[0];
-    v[1] = s->V[1];
-    vv = (*v[1]) - (*v[0]);
-    l1 = LengthVector (&vv);
-    v[0] = s->V[0];
-    v[1] = s->V[2];
-    vv = (*v[1]) - (*v[0]);
-    l2 = LengthVector (&vv);
-    v[0] = s->V[1];
-    v[1] = s->V[2];
-    vv = (*v[1]) - (*v[0]);
-    l3 = LengthVector (&vv);
-    
-    q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc);
-    q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc);
-    q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc);
-    
-    s->Quality = DMAX (DMAX (q1, q2), q3) / (RacineDeTrois);
-  }
-  else{
-    s->Center_Ellipsum_2D (m);
-    s->Quality = 3. * s->Radius / (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc);
-  }
-}
-
-void GMSHMetric::setSimplexQuality (Simplex * s){
-  if (quality_measure == QUALITY_EDGES_BASED){
-    Vertex *v[2], vv;
-    double l1, l2, l3, l4, l5, l6, q1, q2, q3, q4, q5, q6;
-    v[0] = s->V[0];
-    v[1] = s->V[1];
-    vv = (*v[1]) - (*v[0]);
-    l1 = LengthVector (&vv);
-    v[0] = s->V[0];
-    v[1] = s->V[2];
-    vv = (*v[1]) - (*v[0]);
-    l2 = LengthVector (&vv);
-    v[0] = s->V[1];
-    v[1] = s->V[2];
-    vv = (*v[1]) - (*v[0]);
-    l3 = LengthVector (&vv);
-    v[0] = s->V[0];
-    v[1] = s->V[3];
-    vv = (*v[1]) - (*v[0]);
-    l4 = LengthVector (&vv);
-    v[0] = s->V[1];
-    v[1] = s->V[3];
-    vv = (*v[1]) - (*v[0]);
-    l5 = LengthVector (&vv);
-    v[0] = s->V[2];
-    v[1] = s->V[3];
-    vv = (*v[1]) - (*v[0]);
-    l6 = LengthVector (&vv);
-    
-    q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc);
-    q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc);
-    q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc);
-    q4 = 2. * l4 / (s->V[0]->lc + s->V[3]->lc);
-    q5 = 2. * l5 / (s->V[1]->lc + s->V[3]->lc);
-    q6 = 2. * l6 / (s->V[2]->lc + s->V[3]->lc);
-    
-    //s->Quality = (0.5/6.)*(q1+q2+q3+q4+q5+q6);
-    
-    //double qmax = (DMAX (q1, DMAX (q2, DMAX (q3, DMAX (q4, DMAX (q5, q6))))));
-    
-    s->Quality = (q1 + q2 + q3 + q4 + q5 + q6) / (6. * RacineDeDeux);
-  }
-  else{
-    s->Center_Ellipsum_3D (m);
-    s->Quality = 4. * s->Radius / (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc + s->V[3]->lc);
-  }
-}
-
-double GMSHMetric::operator () (int i, int j){
-  return m[i][j];
-}
-
-double *GMSHMetric::operator[] (int i){
-  if (i < 0 || i > 3)
-    return m[0];
-  return m[i];
-}
-
-void GMSHMetric::Identity (){
-  m[0][0] = m[1][1] = m[2][2] = 1.0;
-  m[1][0] = m[1][2] = m[0][1] = 0.0;
-  m[2][0] = m[2][1] = m[0][2] = 0.0;
-}
-
-void GMSHMetric::setMetric (double u, Curve * c){
-
-}
-
-double GMSHMetric::getLc (double u, Curve * c){
-  double l;
-  Identity ();
-  Vertex v = InterpolateCurve (c, u, 0);
-  Vertex du = InterpolateCurve (c, u, 1);
-  Local_Metric_Of_Attractors (v.Pos.X, v.Pos.Y, v.Pos.Z, NULL);
-  l = LengthVector (&du);
-
-  //printf("GetLC : u = %g l=%g  lc=%g  return=%g  ", u, l, v.lc, l/v.lc);
-
-  return l / v.lc;
-}
-
-double GMSHMetric::LengthVector (Vertex * v){
-  Vertex mult (v->Pos.X * m[0][0] + v->Pos.Y * m[0][1] + v->Pos.Z * m[0][2],
-               v->Pos.X * m[1][0] + v->Pos.Y * m[1][1] + v->Pos.Z * m[1][2],
-               v->Pos.X * m[2][0] + v->Pos.Y * m[2][1] + v->Pos.Z * m[2][2]);
-  return sqrt (mult * (*v));
-}
-
-double GMSHMetric::EdgeLengthOnSurface (Surface * s, Vertex * v[2], int cuts){
-  Vertex dv;
-
-  if (!s){
-    dv = (*v[1]) - (*v[0]);
-    return LengthVector (&dv);
-  }
-
-  dv.Pos.X = (v[1]->Pos.X - v[0]->Pos.X) / (double) cuts;
-  dv.Pos.Y = (v[1]->Pos.Y - v[0]->Pos.Y) / (double) cuts;
-
-  double l = 0.0, posu, posv;
-
-  for (int i = 0; i < cuts; i++){
-    posu = v[0]->Pos.X + dv.Pos.X * ((double) (i) + 0.5);
-    posv = v[0]->Pos.Y + dv.Pos.Y * ((double) (i) + 0.5);
-    setMetric (posu, posv, s);
-    l += LengthVector (&dv);
-  }
-  return l;
-}
diff --git a/Mesh/Metric.h b/Mesh/Metric.h
deleted file mode 100644
index af7c8f212862c191536483f95d0de5571b346196..0000000000000000000000000000000000000000
--- a/Mesh/Metric.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _METRIC_H_
-#define _METRIC_H_
-
-class GMSHMetric{
-
-public:
-  double m[3][3];
-  double min_cos;
-  double max_dist;
-  bool apply_costest;
-  bool apply_disttest;
-  double limite_aniso;
-  int quality_measure;
-  List_T  *Attractors;
-  GMSHMetric();
-  void Identity ();
-  double EdgeLengthOnSurface (Surface *s , Vertex *v[2], int cuts);
-  double LengthVector (Vertex *v);
-  void setMetric (double u,double v ,Surface *s);
-  void setMetric (double x,double y ,double z);
-  void setMetricMin (double u,double v ,Surface *s);
-  void setSimplexQuality (Simplex *s,  Surface *surf);
-  void  setSimplexQuality (Simplex *s);
-  void setMetric (double u,Curve *c);
-  double getLc ( double u , Curve *c );
-  double operator () (int i,int j);
-  double * operator [] (int i);
-  double Local_Metric_Of_Attractors (double X, double Y, double Z,
-                                     double metric[3][3]);
-  double getWorstEdge (Simplex *s, Surface *surf, Vertex *v[2]);
-
-} ;
-
-#endif
-
diff --git a/Mesh/Nurbs.cpp b/Mesh/Nurbs.cpp
deleted file mode 100644
index 196a1d08bf92f28e9822a2e3fec1f9d44b32ca9c..0000000000000000000000000000000000000000
--- a/Mesh/Nurbs.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-// $Id: Nurbs.cpp,v 1.5 2001-01-08 08:05:46 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Mesh.h"
-
-Vertex InterpolateCubicSpline (Vertex * v[4], double t, double mat[4][4],
-                               int derivee, double t1, double t2){
-  Vertex V;
-  int i, j;
-  double vec[4], T[4];
-
-  V.Pos.X = V.Pos.Y = V.Pos.Z = 0.0;
-  V.lc = t * v[1]->lc + (1. - t) * v[2]->lc;
-
-  if (derivee){
-    T[3] = 0.;
-    T[2] = 1.;
-    T[1] = 2. * t;
-    T[0] = 3. * t * t;
-  }
-  else{
-    T[3] = 1.;
-    T[2] = t;
-    T[1] = t * t;
-    T[0] = t * t * t;
-  }
-
-  for (i = 0; i < 4; i++){
-    vec[i] = 0.0;
-  }
-  
-  /* X */
-  for (i = 0; i < 4; i++){
-      for (j = 0; j < 4; j++){
-        vec[i] += mat[i][j] * v[j]->Pos.X;
-      }
-  }
-
-  for (j = 0; j < 4; j++){
-    V.Pos.X += T[j] * vec[j];
-    vec[j] = 0.0;
-  }
-
-  /* Y */
-  for (i = 0; i < 4; i++){
-    for (j = 0; j < 4; j++){
-      vec[i] += mat[i][j] * v[j]->Pos.Y;
-    }
-  }
-  
-  for (j = 0; j < 4; j++){
-    V.Pos.Y += T[j] * vec[j];
-    vec[j] = 0.0;
-  }
-  
-  /* Z */
-  for (i = 0; i < 4; i++){
-    for (j = 0; j < 4; j++){
-      vec[i] += mat[i][j] * v[j]->Pos.Z;
-    }
-  }
-  for (j = 0; j < 4; j++){
-    V.Pos.Z += T[j] * vec[j];
-    vec[j] = 0.0;
-  }
-  
-  if (derivee){
-    V.Pos.X /= ((t2 - t1));
-    V.Pos.Y /= ((t2 - t1));
-    V.Pos.Z /= ((t2 - t1));
-  }
-  
-  return V;
-}
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e N u r b s                                         */
-/* ------------------------------------------------------------------------ */
-
-/* B S p l i n e s   U n i f o r m e s */
-
-Vertex InterpolateUBS (Curve * Curve, double u, int derivee){
-
-  int NbControlPoints, NbCurves, iCurve;
-  double t, t1, t2;
-  Vertex *v[4];
-
-  NbControlPoints = List_Nbr (Curve->Control_Points);
-  NbCurves = NbControlPoints - 3;
-
-  iCurve = (int) (u * (double) NbCurves) + 1;
-
-  if (iCurve > NbCurves)
-    iCurve = NbCurves;
-
-  t1 = (double) (iCurve - 1) / (double) (NbCurves);
-  t2 = (double) (iCurve) / (double) (NbCurves);
-
-  t = (u - t1) / (t2 - t1);
-
-  List_Read (Curve->Control_Points, iCurve - 1, &v[0]);
-  List_Read (Curve->Control_Points, iCurve, &v[1]);
-  List_Read (Curve->Control_Points, iCurve + 1, &v[2]);
-  List_Read (Curve->Control_Points, iCurve + 2, &v[3]);
-
-  return InterpolateCubicSpline (v, t, Curve->mat, derivee, t1, t2);
-}
-
-/* B S p l i n e s   N o n   U n i f o r m e s */
-
-int findSpan (double u, int deg, int n, float *U){
-  if (u >= U[n])
-    return n - 1;
-  if (u <= U[0])
-    return deg;
-
-  int low = deg;
-  int high = n + 1;
-  int mid = (low + high) / 2;
-
-  while (u < U[mid] || u >= U[mid + 1]){
-    if (u < U[mid])
-      high = mid;
-    else
-      low = mid;
-    mid = (low + high) / 2;
-  }
-  return mid;
-}
-
-void basisFuns (double u, int i, int deg, float *U, double *N){
-
-  double left[1000];
-  double *right = &left[deg + 1];
-
-  double temp, saved;
-
-  //N.resize(deg+1) ;
-
-  N[0] = 1.0;
-  for (int j = 1; j <= deg; j++){
-    left[j] = u - U[i + 1 - j];
-    right[j] = U[i + j] - u;
-    saved = 0.0;
-    for (int r = 0; r < j; r++){
-      temp = N[r] / (right[r + 1] + left[j - r]);
-      N[r] = saved + right[r + 1] * temp;
-      saved = left[j - r] * temp;
-    }
-    N[j] = saved;
-  }
-}
-
-Vertex InterpolateNurbs (Curve * Curve, double u, int derivee){
-  static double Nb[1000];
-  int span = findSpan (u, Curve->degre, List_Nbr (Curve->Control_Points), Curve->k);
-  Vertex p, *v;
-
-  basisFuns (u, span, Curve->degre, Curve->k, Nb);
-  p.Pos.X = p.Pos.Y = p.Pos.Z = p.w = p.lc = 0.0;
-  for (int i = Curve->degre; i >= 0; --i){
-    List_Read (Curve->Control_Points, span - Curve->degre + i, &v);
-    p.Pos.X += Nb[i] * v->Pos.X;
-    p.Pos.Y += Nb[i] * v->Pos.Y;
-    p.Pos.Z += Nb[i] * v->Pos.Z;
-    p.w += Nb[i] * v->w;
-    p.lc += Nb[i] * v->lc;
-  }
-  return p;
-}
-
-Vertex InterpolateNurbsSurface (Surface * s, double u, double v){
-  int uspan = findSpan (u, s->OrderU, s->Nu, s->ku);
-  int vspan = findSpan (v, s->OrderV, s->Nv, s->kv);
-  double Nu[1000], Nv[1000];
-  Vertex sp, temp[1000], *pv;
-
-  basisFuns (u, uspan, s->OrderU, s->ku, Nu);
-  basisFuns (v, vspan, s->OrderV, s->kv, Nv);
-
-  int l, ll, kk;
-  for (l = 0; l <= s->OrderV; l++){
-    temp[l].Pos.X = temp[l].Pos.Y = temp[l].Pos.Z = temp[l].w = temp[l].lc = 0.0;
-    for (int k = 0; k <= s->OrderU; k++){
-      kk = uspan - s->OrderU + k;
-      ll = vspan - s->OrderV + l;
-      List_Read (s->Control_Points, kk + s->Nu * ll, &pv);
-      temp[l].Pos.X += Nu[k] * pv->Pos.X;
-      temp[l].Pos.Y += Nu[k] * pv->Pos.Y;
-      temp[l].Pos.Z += Nu[k] * pv->Pos.Z;
-      temp[l].w += Nu[k] * pv->w;
-      temp[l].lc += Nu[k] * pv->lc;
-    }
-  }
-  sp.Pos.X = sp.Pos.Y = sp.Pos.Z = sp.w = sp.lc = 0.0;
-  for (l = 0; l <= s->OrderV; l++){
-    sp.Pos.X += Nv[l] * temp[l].Pos.X;
-    sp.Pos.Y += Nv[l] * temp[l].Pos.Y;
-    sp.Pos.Z += Nv[l] * temp[l].Pos.Z;
-    sp.w += Nv[l] * temp[l].w;
-    sp.lc += Nv[l] * temp[l].lc;
-  }
-  return sp;
-}
diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp
deleted file mode 100644
index d81d43457e8bf9b44cc23b0d0e4f76512a92dc28..0000000000000000000000000000000000000000
--- a/Mesh/Print_Mesh.cpp
+++ /dev/null
@@ -1,1144 +0,0 @@
-// $Id: Print_Mesh.cpp,v 1.25 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Create.h"
-#include "Context.h"
-
-extern Context_T CTX ;
-
-/* ------------------------------------------------------------------------ */
-/*  M S H    F O R M A T                                                    */
-/* ------------------------------------------------------------------------ */
-
-#define LINE            1
-#define TRIANGLE        2
-#define QUADRANGLE      3
-#define TETRAHEDRON     4
-#define HEXAHEDRON      5
-#define PRISM           6
-#define PYRAMID         7
-#define LINE_2          8
-#define TRIANGLE_2      9
-#define QUADRANGLE_2   10
-#define TETRAHEDRON_2  11
-#define HEXAHEDRON_2   12
-#define PRISM_2        13
-#define PYRAMID_2      14
-#define POINT          15
-
-static FILE *mshfile;
-static int MSH_NODE_NUM;
-static int MSH_VOL_NUM, MSH_SUR_NUM, MSH_LIN_NUM;
-static int MSH_ELEMENT_NUM, MSH_ADD;
-static int MSH_PHYSICAL_NUM, MSH_PHYSICAL_ORI;
-
-void print_msh_node (void *a, void *b){
-  Vertex **V;
-
-  V = (Vertex **) a;
-
-  fprintf (mshfile, "%d %.16g %.16g %.16g\n",
-           (*V)->Num, 
-           (*V)->Pos.X * CTX.mesh.scaling_factor, 
-           (*V)->Pos.Y * CTX.mesh.scaling_factor, 
-           (*V)->Pos.Z * CTX.mesh.scaling_factor);
-}
-
-void process_msh_nodes (Mesh * M){
-  int i, j, Num;
-  PhysicalGroup *p;
-  Vertex *pv, *ppv, v;
-
-  for (i = 0; i < List_Nbr (M->PhysicalGroups); i++){
-    List_Read (M->PhysicalGroups, i, &p);
-    if(p->Typ == MSH_PHYSICAL_POINT){
-      for (j = 0; j < List_Nbr (p->Entities); j++){
-        List_Read (p->Entities, j, &Num);
-        pv = &v;
-        pv->Num = abs(Num);
-	if(!Tree_Search(M->Vertices, &pv)){
-	  if((ppv = *(Vertex**)Tree_PQuery(M->Points, &pv)))
-	    Tree_Add(M->Vertices, &ppv);
-	}
-      }
-    }
-  }
-
-  MSH_NODE_NUM = Tree_Nbr (M->Vertices) + Tree_Nbr (M->VertexEdges);
-
-  fprintf (mshfile, "$NOD\n");
-  fprintf (mshfile, "%d\n", MSH_NODE_NUM);
-  Tree_Action (M->Vertices, print_msh_node);
-  Tree_Action (M->VertexEdges, print_msh_node);
-  fprintf (mshfile, "$ENDNOD\n");
-}
-
-void add_msh_simplex (void *a, void *b){
-  Simplex **S;
-  int i, type, nbn, nbs = 0;
-
-  S = (Simplex **) a;
-
-  if (MSH_VOL_NUM && (MSH_VOL_NUM != (*S)->iEnt))
-    return;
-
-  if (MSH_SUR_NUM && (MSH_SUR_NUM != (*S)->iEnt))
-    return;
-
-  if (MSH_LIN_NUM && (MSH_LIN_NUM != (*S)->iEnt))
-    return;
-
-  if (!MSH_ADD){
-    MSH_ELEMENT_NUM++;
-    return;
-  }
-
-  if (!(*S)->V[2]){
-    nbn = 2;
-    if ((*S)->VSUP){
-      type = LINE_2;
-      nbs = 1;
-    }
-    else
-      type = LINE;
-  }
-  else if (!(*S)->V[3]){
-    nbn = 3;
-    if ((*S)->VSUP){
-      type = TRIANGLE_2;
-      nbs = 3;
-    }
-    else
-      type = TRIANGLE;
-  }
-  else{
-    nbn = 4;
-    if (!MSH_VOL_NUM){
-      if ((*S)->VSUP){
-        type = QUADRANGLE_2;
-        nbs = 5;
-      }
-      else
-        type = QUADRANGLE;
-    }
-    else if ((*S)->VSUP){
-      type = TETRAHEDRON_2;
-      nbs = 1;
-    }
-    else
-      type = TETRAHEDRON;
-  }
-  
-  if(type == TETRAHEDRON){
-    if ((*S)->Volume_Simplexe () < 0){
-      Vertex *temp;
-      temp = (*S)->V[0];
-      (*S)->V[0] = (*S)->V[1];
-      (*S)->V[1] = temp;
-    }
-  }
-
-  fprintf (mshfile, "%d %d %d %d %d",
-           MSH_ELEMENT_NUM++, type,MSH_PHYSICAL_NUM,(*S)->iEnt, nbn + nbs);
-
-  if (MSH_PHYSICAL_ORI > 0){
-    for (i = 0; i < nbn; i++)
-      fprintf (mshfile, " %d", (*S)->V[i]->Num);
-    for (i = 0; i < nbs; i++)
-      fprintf (mshfile, " %d", (*S)->VSUP[i]->Num);
-  }
-  else{
-    for (i = 0; i < nbn; i++)
-      fprintf (mshfile, " %d", (*S)->V[nbn - i - 1]->Num);
-    for (i = 0; i < nbs; i++)
-      fprintf (mshfile, " %d", (*S)->VSUP[nbs - i - 1]->Num);
-  }
-
-  fprintf (mshfile, "\n");
-}
-
-void add_msh_hexahedron (void *a, void *b){
-  Hexahedron **H;
-  int i, type, nbn, nbs = 0;
-
-  H = (Hexahedron **) a;
-
-  if (MSH_VOL_NUM && (MSH_VOL_NUM != (*H)->iEnt))
-    return;
-
-  if (!MSH_ADD){
-    MSH_ELEMENT_NUM++;
-    return;
-  }
-
-  nbn = 8;
-  if ((*H)->VSUP){
-    type = HEXAHEDRON_2;
-    nbs = 19;
-  }
-  else
-    type = HEXAHEDRON;
-
-  fprintf (mshfile, "%d %d %d %d %d",
-           MSH_ELEMENT_NUM++, type, MSH_PHYSICAL_NUM, (*H)->iEnt, nbn + nbs);
-
-  for (i = 0; i < nbn; i++)
-    fprintf (mshfile, " %d", (*H)->V[i]->Num);
-  for (i = 0; i < nbs; i++)
-    fprintf (mshfile, " %d", (*H)->VSUP[i]->Num);
-
-  fprintf (mshfile, "\n");
-}
-
-void add_msh_prism (void *a, void *b){
-  Prism **P;
-  int i, type, nbn, nbs = 0;
-
-  P = (Prism **) a;
-
-  if (MSH_VOL_NUM && (MSH_VOL_NUM != (*P)->iEnt))
-    return;
-
-  if (!MSH_ADD){
-    MSH_ELEMENT_NUM++;
-    return;
-  }
-
-  nbn = 6;
-  if ((*P)->VSUP){
-    type = PRISM_2;
-    nbs = 12;
-  }
-  else{
-    type = PRISM;
-  }
-
-  fprintf (mshfile, "%d %d %d %d %d",
-           MSH_ELEMENT_NUM++, type, MSH_PHYSICAL_NUM, (*P)->iEnt, nbn + nbs);
-
-  for (i = 0; i < nbn; i++)
-    fprintf (mshfile, " %d", (*P)->V[i]->Num);
-  for (i = 0; i < nbs; i++)
-    fprintf (mshfile, " %d", (*P)->VSUP[i]->Num);
-
-  fprintf (mshfile, "\n");
-}
-
-void add_msh_point (Vertex * V){
-
-  if (!MSH_ADD){
-    MSH_ELEMENT_NUM++;
-    return;
-  }
-
-  fprintf (mshfile, "%d %d %d %d 1 %d\n",
-           MSH_ELEMENT_NUM++, POINT, MSH_PHYSICAL_NUM, V->Num, V->Num);
-}
-
-void add_msh_elements (Mesh * M){
-  int i, j, k, Num;
-
-  PhysicalGroup *p;
-  Volume *pV;
-  Surface *ps, s;
-  Curve *pc, c;
-  Vertex *pv, v;
-
-  List_T *ListVolumes = Tree2List (M->Volumes);
-
-  for (i = 0; i < List_Nbr (M->PhysicalGroups); i++){
-    List_Read (M->PhysicalGroups, i, &p);
-    MSH_PHYSICAL_NUM = p->Num;
-    MSH_VOL_NUM = MSH_SUR_NUM = MSH_LIN_NUM = 0;
-
-    switch (p->Typ){
-
-    case MSH_PHYSICAL_POINT:
-      for (j = 0; j < List_Nbr (p->Entities); j++){
-        pv = &v;
-        List_Read (p->Entities, j, &Num);
-        pv->Num = abs (Num);
-        MSH_PHYSICAL_ORI = sign (Num);
-	if (Tree_Query (M->Vertices, &pv))
-	  add_msh_point (pv);
-      }
-      break;
-
-    case MSH_PHYSICAL_LINE:
-      if(CTX.mesh.oldxtrude){//for old extrusion mesh generator
-	for (k = 0; k < List_Nbr (ListVolumes); k++){
-	  List_Read (ListVolumes, k, &pV);
-	  for (j = 0; j < List_Nbr (p->Entities); j++){
-	    List_Read (p->Entities, j, &Num);
-	    MSH_LIN_NUM = abs (Num);
-	    MSH_PHYSICAL_ORI = sign (Num);
-	    Tree_Action (pV->Simp_Surf, add_msh_simplex);
-	  }
-	}
-	break;//done
-      }
-      
-      for (j = 0; j < List_Nbr (p->Entities); j++){
-	pc = &c;
-	List_Read (p->Entities, j, &Num);
-	pc->Num = abs (Num);
-	MSH_PHYSICAL_ORI = sign (Num);
-	if (Tree_Query (M->Curves, &pc))
-	  Tree_Action (pc->Simplexes, add_msh_simplex);
-      }
-      break;
-      
-    case MSH_PHYSICAL_SURFACE:
-      if(CTX.mesh.oldxtrude){//for old extrusion mesh generator
-	for (k = 0; k < List_Nbr (ListVolumes); k++){
-	  List_Read (ListVolumes, k, &pV);
-	  for (j = 0; j < List_Nbr (p->Entities); j++){
-	    List_Read (p->Entities, j, &Num);
-	    MSH_SUR_NUM = abs (Num);
-	    MSH_PHYSICAL_ORI = sign (Num);
-	    Tree_Action (pV->Simp_Surf, add_msh_simplex);
-	  }
-	}
-	break;//done
-      }
-      
-      for (j = 0; j < List_Nbr (p->Entities); j++){
-	ps = &s;
-	List_Read (p->Entities, j, &Num);
-	ps->Num = abs (Num);
-	MSH_PHYSICAL_ORI = sign (Num);
-	if (Tree_Query (M->Surfaces, &ps))
-	  Tree_Action (ps->Simplexes, add_msh_simplex);
-      }
-      break;
-      
-    case MSH_PHYSICAL_VOLUME:
-      for (k = 0; k < List_Nbr (ListVolumes); k++){
-        List_Read (ListVolumes, k, &pV);
-        for (j = 0; j < List_Nbr (p->Entities); j++){
-          List_Read (p->Entities, j, &Num);
-          MSH_VOL_NUM = abs (Num);
-          MSH_PHYSICAL_ORI = sign (Num);
-          Tree_Action (pV->Simplexes, add_msh_simplex);
-          Tree_Action (pV->Hexahedra, add_msh_hexahedron);
-          Tree_Action (pV->Prisms, add_msh_prism);
-        }
-      }
-      break;
-      
-    default :
-      Msg(GERROR, "Unknown type of Physical group");
-      break;
-    }
-
-  }
-
-}
-
-void process_msh_elements (Mesh * M){
-  MSH_ADD = 0;
-  MSH_ELEMENT_NUM = 1;
-  add_msh_elements (M);
-  fprintf (mshfile, "$ELM\n");
-  fprintf (mshfile, "%d\n", MSH_ELEMENT_NUM - 1);
-
-  if (MSH_ELEMENT_NUM == 1)
-    Msg (WARNING, "No elements (did you forget to define physical entities?)");
-
-  MSH_ADD = 1;
-  MSH_ELEMENT_NUM = 1;
-  add_msh_elements (M);
-  fprintf (mshfile, "$ENDELM\n");
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  U N V   F O R M A T                                                     */
-/* ------------------------------------------------------------------------ */
-
-/* Numeros des enregistrements IDEAS */
-#define HEADER       151
-#define UNITS        164
-#define NODES        2411
-#define ELEMENTS     2412
-#define RESNODE      55
-#define RESELEM      56
-#define RESVECT      57
-#define GROUPOFNODES 790
-
-/* Numeros des elements IDEAS */
-#define BEAM         21
-#define BEAM2        24
-#define THINSHLL     91
-#define THINSHLL2    92
-#define QUAD         94
-#define QUAD2        95         /* Ca c'est une impro !!! */
-#define SOLIDFEM     111
-#define WEDGE        112
-#define BRICK        115
-#define SOLIDFEM2    118
-
-void process_nodes (FILE * funv, Mesh * M){
-  int nbnod;
-  double x, y, z;
-  int i, idnod;
-  Vertex *v;
-
-  List_T *Nodes = Tree2List (M->Vertices);
-
-  fprintf (funv, "%6d\n", -1);
-  fprintf (funv, "%6d\n", NODES);
-  nbnod = List_Nbr (Nodes);
-
-  for (i = 0; i < nbnod; i++){
-    List_Read (Nodes, i, &v);
-    idnod = v->Num;
-    x = v->Pos.X * CTX.mesh.scaling_factor;
-    y = v->Pos.Y * CTX.mesh.scaling_factor;
-    z = v->Pos.Z * CTX.mesh.scaling_factor;
-    fprintf (funv, "%10d%10d%10d%10d\n", idnod, 1, 1, 11);
-    fprintf (funv, "%21.16fD+00 %21.16fD+00 %21.16fD+00\n", x, y, z);
-  }
-
-  List_Delete (Nodes);
-  Nodes = Tree2List (M->VertexEdges);
-  nbnod = List_Nbr (Nodes);
-
-  for (i = 0; i < nbnod; i++){
-    List_Read (Nodes, i, &v);
-    idnod = v->Num;
-    x = v->Pos.X * CTX.mesh.scaling_factor;
-    y = v->Pos.Y * CTX.mesh.scaling_factor;
-    z = v->Pos.Z * CTX.mesh.scaling_factor;
-    fprintf (funv, "%10d%10d%10d%10d\n", idnod, 1, 1, 11);
-    fprintf (funv, "%21.16fD+00 %21.16fD+00 %21.16fD+00\n", x, y, z);
-  }
-  
-  fprintf (funv, "%6d\n", -1);
-}
-
-static int ELEMENT_ID;
-
-int process_2D_elements (FILE * funv, Mesh * m){
-  List_T *ListSurfaces = Tree2List (m->Surfaces);
-  List_T *ListVolumes = Tree2List (m->Volumes);
-  List_T *Elements;
-  Volume *vol;
-  List_T *AllSurfaces = List_Create (2, 2, sizeof (Surface *));
-  Simplex *sx;
-  Surface *s;
-  int nbtri = 0, i, j, nsup, n, ntot, k, geo, fetyp;
-
-  for (i = 0; i < List_Nbr (ListVolumes); i++){
-    List_Read (ListVolumes, i, &vol);
-    for (j = 0; j < List_Nbr (vol->Surfaces); j++){
-      List_Read (vol->Surfaces, j, &s);
-      if (Tree_Nbr (s->Simplexes))
-        List_Add (AllSurfaces, &s);
-    }
-  }
-
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    if (!List_Search (AllSurfaces, &s, compareSurface)){
-      Elements = Tree2List (s->Simplexes);
-      for (j = 0; j < List_Nbr (Elements); j++){
-        List_Read (Elements, j, &sx);
-        if (sx->V[3]){
-          if (sx->VSUP){
-            fetyp = QUAD;
-            n = 4;
-            nsup = 4;
-          }
-          else{
-            fetyp = QUAD;
-            n = 4;
-            nsup = 0;
-          }
-        }
-        else{
-          if (sx->VSUP){
-            fetyp = THINSHLL;
-            n = 3;
-            nsup = 3;
-          }
-          else{
-            fetyp = THINSHLL;
-            nsup = 0;
-            n = 3;
-          }
-        }
-        geo = s->Num;
-        fprintf (funv, "%10d%10d%10d%10d%10d%10d\n", 
-                 /*ELEMENT_ID++ */ abs(sx->Num), fetyp, geo, geo, 7, n + nsup);
-                                //'abs' since extrusion can tag triangles
-	                        // with a negative number
-        ntot = 0;
-        for (k = 0; k < n; k++){
-          fprintf (funv, "%10d", sx->V[k]->Num);
-          if (ntot % 8 == 7)
-            fprintf (funv, "\n");
-          ntot++;
-        }
-        for (k = 0; k < nsup; k++){
-          fprintf (funv, "%10d", sx->VSUP[k]->Num);
-          if (ntot % 8 == 7)
-            fprintf (funv, "\n");
-          ntot++;
-        }
-        if (ntot - 1 % 8 != 7)
-          fprintf (funv, "\n");
-      }
-      List_Delete (Elements);
-      nbtri += Tree_Nbr (s->Simplexes);
-    }
-  }
-  List_Delete (ListSurfaces);
-  List_Delete (ListVolumes);
-  List_Delete (AllSurfaces);
-  return 0;
-}
-
-int process_1D_elements (FILE * funv, Mesh * m){
-  List_T *ListCurves = Tree2List (m->Curves);
-  List_T *AllCurves = List_Create (2, 2, sizeof (Surface *));
-  List_T *ListSurfaces = Tree2List (m->Surfaces);
-  List_T *Elements;
-  Simplex *sx;
-  Curve *c;
-  Surface *surf;
-  int nblig = 0, k, ntot, i, j, geo, fetyp, n, nsup;
-
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &surf);
-    for (j = 0; j < List_Nbr (surf->Generatrices); j++){
-      List_Read (surf->Generatrices, j, &c);
-      if (Tree_Nbr (c->Simplexes))
-        List_Add (AllCurves, &c);
-      c = FindCurve (-c->Num, m);
-      if (Tree_Nbr (c->Simplexes))
-        List_Add (AllCurves, &c);
-    }
-  }
-
-  for (i = 0; i < List_Nbr (ListCurves); i++){
-    List_Read (ListCurves, i, &c);
-    if (!List_Search (AllCurves, &c, compareCurve)){
-      Elements = Tree2List (c->Simplexes);
-      for (j = 0; j < List_Nbr (Elements); j++){
-        nblig++;
-        List_Read (Elements, j, &sx);
-        if (sx->VSUP){
-          fetyp = BEAM2;
-          n = 2;
-          nsup = 2;
-        }
-        else{
-          fetyp = BEAM;
-          n = 2;
-          nsup = 0;
-        }
-        geo = c->Num;
-        fprintf (funv, "%10d%10d%10d%10d%10d%10d\n", 
-                 /*ELEMENT_ID++ */ sx->Num, fetyp, geo, geo, 7, n + nsup);
-        ntot = 0;
-        fprintf (funv, "%10d%10d%10d\n", 0, 0, 0);
-        for (k = 0; k < n; k++){
-          fprintf (funv, "%10d", sx->V[k]->Num);
-          if (ntot % 8 == 7)
-            fprintf (funv, "\n");
-          ntot++;
-        }
-        for (k = 0; k < nsup; k++){
-          fprintf (funv, "%10d", sx->VSUP[k]->Num);
-          if (ntot % 8 == 7)
-            fprintf (funv, "\n");
-          ntot++;
-        }
-        if (ntot - 1 % 8 != 7)
-          fprintf (funv, "\n");
-      }
-      
-      List_Delete (Elements);
-    }
-  }
-  List_Delete (AllCurves);
-  List_Delete (ListSurfaces);
-  List_Delete (ListCurves);
-  return 0;
-}
-
-int process_3D_elements (FILE * funv, Mesh * m){
-  List_T *ListVolumes = Tree2List (m->Volumes);
-  List_T *Elements;
-  Simplex *sx;
-  Hexahedron *hx;
-  Prism *px;
-  Volume *v;
-  int nb = 0, i, j, nsup, n, ntot, k, geo, fetyp;
-
-  for (i = 0; i < List_Nbr (ListVolumes); i++){
-    List_Read (ListVolumes, i, &v);
-    // TETRAEDRON
-    Elements = Tree2List (v->Simplexes);
-    for (j = 0; j < List_Nbr (Elements); j++){
-      List_Read (Elements, j, &sx);
-      if (sx->VSUP){
-        fetyp = SOLIDFEM;
-        n = 4;
-        nsup = 6;
-      }
-      else{
-        fetyp = SOLIDFEM;
-        nsup = 0;
-        n = 4;
-      }
-      if (sx->Volume_Simplexe () < 0){
-        Vertex *temp;
-        temp = sx->V[0];
-        sx->V[0] = sx->V[1];
-        sx->V[1] = temp;
-        if (sx->Volume_Simplexe () < 0)
-          Msg(WARNING, "Negative volume for simplex %d", sx->Num);
-      }
-      geo = v->Num;
-      fprintf (funv, "%10d%10d%10d%10d%10d%10d\n",
-               ELEMENT_ID++, fetyp, geo, geo, 7, n + nsup);
-      ntot = 0;
-      for (k = 0; k < n; k++){
-        fprintf (funv, "%10d", sx->V[k]->Num);
-        if (ntot % 8 == 7)
-          fprintf (funv, "\n");
-        ntot++;
-      }
-      for (k = 0; k < nsup; k++){
-        fprintf (funv, "%10d", sx->VSUP[k]->Num);
-        if (ntot % 8 == 7)
-          fprintf (funv, "\n");
-        ntot++;
-      }
-      if (ntot - 1 % 8 != 7)
-        fprintf (funv, "\n");
-    }
-    List_Delete (Elements);
-    nb += Tree_Nbr (v->Simplexes);
-    
-    // PRISMS
-    Elements = Tree2List (v->Prisms);
-    for (j = 0; j < List_Nbr (Elements); j++){
-      List_Read (Elements, j, &px);
-      if (px->VSUP){
-        fetyp = WEDGE;
-        n = 6;
-        nsup = 9;
-      }
-      else{
-        fetyp = WEDGE;
-        nsup = 0;
-        n = 6;
-      }
-      
-      geo = v->Num;
-      fprintf (funv, "%10d%10d%10d%10d%10d%10d\n", 
-               ELEMENT_ID++, fetyp, geo, geo, 7, n + nsup);
-      ntot = 0;
-      for (k = 0; k < n; k++){
-        fprintf (funv, "%10d", px->V[k]->Num);
-        if (ntot % 8 == 7)
-          fprintf (funv, "\n");
-        ntot++;
-      }
-      for (k = 0; k < nsup; k++){
-        fprintf (funv, "%10d", px->VSUP[k]->Num);
-        if (ntot % 8 == 7)
-          fprintf (funv, "\n");
-        ntot++;
-      }
-      if (ntot - 1 % 8 != 7)
-        fprintf (funv, "\n");
-    }
-    List_Delete (Elements);
-    nb += Tree_Nbr (v->Prisms);
-    
-    // HEXAHEDRONS
-    Elements = Tree2List (v->Hexahedra);
-    for (j = 0; j < List_Nbr (Elements); j++){
-      List_Read (Elements, j, &hx);
-      if (hx->VSUP){
-        fetyp = BRICK;
-        n = 8;
-        nsup = 12;
-      }
-      else{
-        fetyp = BRICK;
-        nsup = 0;
-        n = 8;
-      }
-      
-      geo = v->Num;
-      fprintf (funv, "%10d%10d%10d%10d%10d%10d\n", 
-               ELEMENT_ID++, fetyp, geo, geo, 7, n + nsup);
-      ntot = 0;
-      for (k = 0; k < n; k++){
-        fprintf (funv, "%10d", hx->V[k]->Num);
-        if (ntot % 8 == 7)
-          fprintf (funv, "\n");
-        ntot++;
-      }
-      for (k = 0; k < nsup; k++){
-        fprintf (funv, "%10d", hx->VSUP[k]->Num);
-        if (ntot % 8 == 7)
-          fprintf (funv, "\n");
-        ntot++;
-      }
-      if (ntot - 1 % 8 != 7)
-        fprintf (funv, "\n");
-    }
-    List_Delete (Elements);
-    nb += Tree_Nbr (v->Hexahedra);
-  }
-  List_Delete (ListVolumes);
-  return nb;
-}
-
-FILE *unvfile;
-Tree_T *tree;
-
-void AddVertex (void *a, void *b){
-  Vertex *v;
-  v = *(Vertex **) a;
-  if (Tree_Search (tree, &v->Num))
-    return;
-  Tree_Add (tree, &v->Num);
-  fprintf (unvfile, "%10d%10d%2d%2d%2d%2d%2d%2d\n", v->Num, 1, 0, 1, 0, 0, 0, 0);
-  fprintf (unvfile, "%21.16fD+00 %21.16fD+00 %21.16fD+00\n", 0., 1., 0.);
-  fprintf (unvfile, "%21.16fD+00 %21.16fD+00 %21.16fD+00\n", 0., 0., 0.);
-  fprintf (unvfile, "%10d%10d%10d%10d%10d%10d\n", 0, 0, 0, 0, 0, 0);
-}
-
-void PrintGroups (Mesh * m){
-  int  nb, j, i, k;
-  Surface *ps, s;
-  Curve *pc, c;
-  Vertex *pv, v;
-  PhysicalGroup *p;
-
-  for (i = 0; i < List_Nbr (m->PhysicalGroups); i++){
-
-    List_Read (m->PhysicalGroups, i, &p);
-    if (p->Typ == MSH_PHYSICAL_SURFACE){
-      tree = Tree_Create (sizeof (int), fcmp_absint);
-      fprintf (unvfile, "%6d\n", -1);
-      fprintf (unvfile, "%6d\n", GROUPOFNODES);
-      fprintf (unvfile, "%10d%10d\n", p->Num, 1);
-      fprintf (unvfile, "LOAD SET %2d\n", 1);
-      nb = List_Nbr (p->Entities);
-      for (j = 0; j < nb; j++){
-        ps = &s;
-        List_Read (p->Entities, j, &ps->Num);
-        if (Tree_Query (m->Surfaces, &ps))
-          Tree_Action (ps->Vertices, AddVertex);
-      }
-      fprintf (unvfile, "%6d\n", -1);
-      //Tree_Delete(tree);
-      //free(tree);
-    }
-    if (p->Typ == MSH_PHYSICAL_LINE){
-      tree = Tree_Create (sizeof (int), fcmp_absint);
-      fprintf (unvfile, "%6d\n", -1);
-      fprintf (unvfile, "%6d\n", GROUPOFNODES);
-      fprintf (unvfile, "%10d%10d\n", p->Num, 1);
-      fprintf (unvfile, "LOAD SET %2d\n", 1);
-      nb = List_Nbr (p->Entities);
-      for (j = 0; j < nb; j++){
-        pc = &c;
-        List_Read (p->Entities, j, &pc->Num);
-        if (Tree_Query (m->Curves, &pc))
-          for (k = 0; k < List_Nbr (pc->Vertices); k++)
-            AddVertex (List_Pointer (pc->Vertices, k), NULL);
-      }
-      fprintf (unvfile, "%6d\n", -1);
-      //Tree_Delete(tree);
-    }
-    if (p->Typ == MSH_PHYSICAL_POINT){
-      tree = Tree_Create (sizeof (int), fcmp_absint);
-      fprintf (unvfile, "%6d\n", -1);
-      fprintf (unvfile, "%6d\n", GROUPOFNODES);
-      fprintf (unvfile, "%10d%10d\n", p->Num, 1);
-      fprintf (unvfile, "LOAD SET %2d\n", 1);
-      nb = List_Nbr (p->Entities);
-      for (j = 0; j < nb; j++){
-        pv = &v;
-        List_Read (p->Entities, j, &pv->Num);
-        if (Tree_Query (m->Vertices, &pv))
-          AddVertex (&pv, NULL);
-      }
-      fprintf (unvfile, "%6d\n", -1);
-      //Tree_Delete(tree);
-    }
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  G R E F   F O R M A T                                                   */
-/* ------------------------------------------------------------------------ */
-
-void ConsecutiveNodes (Mesh * M, Tree_T * ConstecutiveNTree, Tree_T * ConsecutiveETree);
-
-static int compareFrozen (const void *a, const void *b){
-  Vertex *q, *w;
-  q = *(Vertex **) a;
-  w = *(Vertex **) b;
-  return w->Frozen - q->Frozen;
-}
-
-int process_Gref_nodes (FILE * fGref, Mesh * M,
-                        Tree_T * ConsecutiveNTree, Tree_T * ConsecutiveETree){
-  int i, nbtri;
-  Vertex *v;
-  Surface *s;
-  Curve *c;
-  List_T *ListSurfaces, *ListCurves, *Nodes;
-
-  ListCurves = Tree2List (M->Curves);
-  for (i = 0; i < List_Nbr (ListCurves); i++){
-    List_Read (ListCurves, i, &c);
-    Degre2 (M->Vertices, M->VertexEdges, c->Simplexes, c, NULL);
-  }
-  List_Delete (ListCurves);
-
-  ListSurfaces = Tree2List (M->Surfaces);
-  nbtri = 0;
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Degre2 (M->Vertices, M->VertexEdges, s->Simplexes, NULL, s);
-    nbtri += Tree_Nbr (s->Simplexes);
-  }
-  List_Delete (ListSurfaces);
-
-  ConsecutiveNodes (M, ConsecutiveNTree, ConsecutiveETree);
-
-  fprintf (fGref, "%d %d %d\n", nbtri, Tree_Nbr (ConsecutiveNTree),
-           Tree_Nbr (ConsecutiveNTree) + Tree_Nbr (ConsecutiveETree));
-
-  Nodes = Tree2List (ConsecutiveNTree);
-  for (i = 0; i < List_Nbr (Nodes); i++){
-    List_Read (Nodes, i, &v);
-    fprintf (fGref, "%21.16e ", v->Pos.X * CTX.mesh.scaling_factor);
-    if (i % 3 == 2)
-      fprintf (fGref, "\n");
-  }
-  if ((List_Nbr (Nodes) - 1) % 3 != 2)
-    fprintf (fGref, "\n");
-  for (i = 0; i < List_Nbr (Nodes); i++){
-    List_Read (Nodes, i, &v);
-    fprintf (fGref, "%21.16e ", v->Pos.Y * CTX.mesh.scaling_factor);
-    if (i % 3 == 2)
-      fprintf (fGref, "\n");
-  }
-  if ((List_Nbr (Nodes) - 1) % 3 != 2)
-    fprintf (fGref, "\n");
-  i = Tree_Nbr (ConsecutiveNTree);
-  List_Delete (Nodes);
-  return i;
-}
-
-int find_physicalentity (Vertex * v, Mesh * m){
-  PhysicalGroup *p;
-  Curve *c;
-  int i, j;
-  for (i = 0; i < List_Nbr (m->PhysicalGroups); i++){
-    List_Read (m->PhysicalGroups, i, &p);
-    if (p->Typ == MSH_PHYSICAL_POINT){
-      if (List_Search (p->Entities, &v->Num, fcmp_absint)){
-        return p->Num;
-      }
-    }
-  }
-  
-  if (v->ListCurves){
-    for (i = 0; i < List_Nbr (m->PhysicalGroups); i++){
-      List_Read (m->PhysicalGroups, i, &p);
-      if (p->Typ == MSH_PHYSICAL_LINE){
-        for (j = 0; j < List_Nbr (v->ListCurves); j++){
-          List_Read (v->ListCurves, j, &c);
-          if (List_Search (p->Entities, &c->Num, fcmp_absint)){
-            return p->Num;
-          }
-        }
-      }
-    }
-  }
-  return 0;
-}
-
-void process_Gref_poundarybonditions (FILE * fGref, Mesh * M,
-                                      Tree_T * TRN, Tree_T * TRE){
-  int i, ent;
-  Vertex *v;
-
-  List_T *Nodes = Tree2List (TRN);
-  for (i = 0; i < List_Nbr (Nodes); i++){
-    List_Read (Nodes, i, &v);
-    ent = find_physicalentity (v, M);
-    fprintf (fGref, "%d %d ", ent, ent);
-    if (i % 3 == 2)
-      fprintf (fGref, "\n");
-  }
-  if ((List_Nbr (Nodes) - 1) % 3 != 2)
-    fprintf (fGref, "\n");
-  List_Delete (Nodes);
-
-  Nodes = Tree2List (TRE);
-  for (i = 0; i < List_Nbr (Nodes); i++){
-    List_Read (Nodes, i, &v);
-    ent = find_physicalentity (v, M);
-    fprintf (fGref, "%d %d ", ent, ent);
-    if (i % 3 == 2)
-      fprintf (fGref, "\n");
-  }
-  if ((List_Nbr (Nodes) - 1) % 3 != 2)
-    fprintf (fGref, "\n");
-  List_Delete (Nodes);
-}
-
-void process_Gref_elements (FILE * fGref, Mesh * M, int nn){
-  int i, j;
-  Simplex *sx;
-  Surface *s;
-  List_T *Triangles;
-  List_T *ListSurfaces;
-
-  ListSurfaces = Tree2List (M->Surfaces);
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Triangles = Tree2List (s->Simplexes);
-    for (j = 0; j < List_Nbr (Triangles); j++){
-      List_Read (Triangles, j, &sx);
-      if (!sx->V[3])
-        fprintf (fGref, "%d %d %d\n", -sx->V[0]->Frozen, 
-                 -sx->V[1]->Frozen, -sx->V[2]->Frozen);
-      else
-        fprintf (fGref, "%d %d %d %d\n", -sx->V[0]->Frozen,
-                 -sx->V[1]->Frozen,
-                 -sx->V[2]->Frozen,
-                 -sx->V[3]->Frozen);
-      
-    }
-    List_Delete (Triangles);
-  }
-
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Triangles = Tree2List (s->Simplexes);
-    for (j = 0; j < List_Nbr (Triangles); j++){
-      List_Read (Triangles, j, &sx);
-      if (!sx->V[3])
-        fprintf (fGref, "%d %d %d\n", -sx->VSUP[0]->Frozen - nn,
-                 -sx->VSUP[1]->Frozen - nn,
-                 -sx->VSUP[2]->Frozen - nn);
-      else
-        fprintf (fGref, "%d %d %d %d\n", -sx->VSUP[0]->Frozen - nn,
-                 -sx->VSUP[1]->Frozen - nn,
-                 -sx->VSUP[2]->Frozen - nn,
-                 -sx->VSUP[3]->Frozen - nn);
-    }
-    List_Delete (Triangles);
-  }
-  // Degres de Liberte
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Triangles = Tree2List (s->Simplexes);
-    for (j = 0; j < List_Nbr (Triangles); j++){
-      List_Read (Triangles, j, &sx);
-      if (!sx->V[3])
-        fprintf (fGref, "%d %d %d %d %d %d %d %d %d %d %d %d\n",
-                 -2 * sx->V[0]->Frozen - 1,
-                 -2 * sx->V[0]->Frozen,
-                 -2 * sx->VSUP[0]->Frozen - 1,
-                 -2 * sx->VSUP[0]->Frozen,
-                 -2 * sx->V[1]->Frozen - 1,
-                 -2 * sx->V[1]->Frozen,
-                 -2 * sx->VSUP[1]->Frozen - 1,
-                 -2 * sx->VSUP[1]->Frozen,
-                 -2 * sx->V[2]->Frozen - 1,
-                 -2 * sx->V[2]->Frozen,
-                 -2 * sx->VSUP[2]->Frozen - 1,
-                 -2 * sx->VSUP[2]->Frozen);
-      else
-        fprintf (fGref, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-                 -2 * sx->V[0]->Frozen - 1,
-                 -2 * sx->V[0]->Frozen,
-                 -2 * sx->VSUP[0]->Frozen - 1,
-                 -2 * sx->VSUP[0]->Frozen,
-                 -2 * sx->V[1]->Frozen - 1,
-                 -2 * sx->V[1]->Frozen,
-                 -2 * sx->VSUP[1]->Frozen - 1,
-                 -2 * sx->VSUP[1]->Frozen,
-                 -2 * sx->V[2]->Frozen - 1,
-                 -2 * sx->V[2]->Frozen,
-                 -2 * sx->VSUP[2]->Frozen - 1,
-                 -2 * sx->VSUP[2]->Frozen,
-                 -2 * sx->V[3]->Frozen - 1,
-                 -2 * sx->V[3]->Frozen,
-                 -2 * sx->VSUP[3]->Frozen - 1,
-                 -2 * sx->VSUP[3]->Frozen);
-    }
-    List_Delete (Triangles);
-  }
-  List_Delete (ListSurfaces);
-}
-
-FILE *Greffile;
-
-void ConsecutiveNodes (Mesh * M, Tree_T * ConsecutiveNTree, Tree_T * ConsecutiveETree){
-  int i, j, k;
-  Simplex *sx;
-  Surface *s;
-  List_T *Triangles;
-  int nbnod, nbedges, nbdof;
-  List_T *ListSurfaces;
-
-  int newnum = 0, N;
-
-  ListSurfaces = Tree2List (M->Surfaces);
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Triangles = Tree2List (s->Simplexes);
-    for (j = 0; j < List_Nbr (Triangles); j++){
-      List_Read (Triangles, j, &sx);
-      if (!sx->V[3])
-        N = 3;
-      else
-        N = 4;
-      for (k = 0; k < N; k++){
-        if (sx->V[k]->Frozen >= 0){
-          sx->V[k]->Frozen = --newnum;
-          Tree_Insert (ConsecutiveNTree, &(sx->V[k]));
-        }
-      }
-    }
-    List_Delete (Triangles);
-  }
-  nbnod = -newnum;
-  ListSurfaces = Tree2List (M->Surfaces);
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Triangles = Tree2List (s->Simplexes);
-    for (j = 0; j < List_Nbr (Triangles); j++){
-      List_Read (Triangles, j, &sx);
-      if (!sx->V[3])
-        N = 3;
-      else
-        N = 4;
-      for (k = 0; k < N; k++){
-        if (sx->VSUP[k]->Frozen >= 0){
-          sx->VSUP[k]->Frozen = --newnum;
-          Tree_Insert (ConsecutiveETree, &(sx->VSUP[k]));
-        }
-      }
-    }
-    List_Delete (Triangles);
-  }
-  nbedges = -newnum - nbnod;
-  nbdof = nbnod + nbedges;
-  Msg(INFO, "%d Dofs", nbdof);
-}
-
-void EndConsecutiveNodes (Mesh * M){
-  int i, j, k;
-  Simplex *sx;
-  Surface *s;
-  List_T *Triangles;
-  List_T *ListSurfaces;
-  int N;
-
-  ListSurfaces = Tree2List (M->Surfaces);
-  for (i = 0; i < List_Nbr (ListSurfaces); i++){
-    List_Read (ListSurfaces, i, &s);
-    Triangles = Tree2List (s->Simplexes);
-    for (j = 0; j < List_Nbr (Triangles); j++){
-      List_Read (Triangles, j, &sx);
-      if (!sx->V[3])
-        N = 3;
-      else
-        N = 4;
-      for (k = 0; k < N; k++)
-        sx->V[k]->Frozen = 0;
-      for (k = 0; k < N; k++)
-        sx->VSUP[k]->Frozen = 0;
-    }
-    List_Delete (Triangles);
-  }
-  List_Delete (ListSurfaces);
-}
-
-/* ------------------------------------------------------------------------ */
-/*  P r i n t _ M e s h                                                     */
-/* ------------------------------------------------------------------------ */
-
-void Print_Mesh (Mesh * M, char *c, int Type){
-  char name[256];
-  strcpy (name, M->name);
-
-  if (Type == FORMAT_MSH){
-    c ? strcpy (name, c) : strcat (name, ".msh");
-    mshfile = fopen (name, "w");
-    if (!mshfile){
-      Msg(WARNING, "Unable to open file '%s'", name);
-      return;
-    }
-    Msg(INFO, "Writing file '%s'", name);
-    process_msh_nodes (M);
-    process_msh_elements (M);
-    Msg(INFO, "Msh ouput complete '%s' (%d Nodes, %d Elements)",
-         name, MSH_NODE_NUM, MSH_ELEMENT_NUM - 1);
-    Msg(STATUS2, "Wrote '%s'", name);
-    fclose (mshfile);
-  }
-  else if (Type == FORMAT_UNV){
-    c ? strcpy (name, c) : strcat (name, ".unv");
-    unvfile = fopen (name, "w");
-    if (!unvfile){
-      Msg(WARNING, "Unable to open file '%s'", name);
-      return;
-    }
-    Msg(INFO, "Writing file '%s'", name);
-    process_nodes (unvfile, M);
-    fprintf (unvfile, "%6d\n", -1);
-    fprintf (unvfile, "%6d\n", ELEMENTS);
-    ELEMENT_ID = 1;
-    process_3D_elements (unvfile, M);
-    process_2D_elements (unvfile, M);
-    //    process_1D_elements (unvfile, M);
-    fprintf (unvfile, "%6d\n", -1);
-    PrintGroups (M);
-    fclose (unvfile);
-    Msg(INFO, "Unv ouput complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-  }
-  else if (Type == FORMAT_GREF){
-    c ? strcpy (name, c) : strcat (name, ".Gref");
-    Tree_T *TRN = Tree_Create (sizeof (Vertex *), compareFrozen);
-    Tree_T *TRE = Tree_Create (sizeof (Vertex *), compareFrozen);
-    Greffile = fopen (name, "w");
-    if (!Greffile){
-      Msg(WARNING, "Unable to open file '%s'", name);
-      return;
-    }
-    Msg(INFO, "Writing file '%s'", name);
-    process_Gref_nodes (Greffile, M, TRN, TRE);
-    process_Gref_elements (Greffile, M, Tree_Nbr (TRN));
-    process_Gref_poundarybonditions (Greffile, M, TRN, TRE);
-    fclose (Greffile);
-    Tree_Delete (TRN);
-    Tree_Delete (TRE);
-    EndConsecutiveNodes (M);
-    Msg(INFO, "Gref ouput complete '%s'", name);
-    Msg(STATUS2, "Wrote '%s'", name);
-  }
-}
diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
deleted file mode 100644
index b55b8e5c7159bcf306b2714f85c2f84e9c22d580..0000000000000000000000000000000000000000
--- a/Mesh/Read_Mesh.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-// $Id: Read_Mesh.cpp,v 1.23 2001-08-09 20:48:31 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "3D_Mesh.h"
-#include "Create.h"
-#include "MinMax.h"
-#include "Context.h"
-
-extern Context_T CTX;
-
-/* ------------------------------------------------------------------------ */
-/*  M S H    F O R M A T                                                    */
-/* ------------------------------------------------------------------------ */
-
-#define LGN1 1
-#define TRI1 2
-#define QUA1 3
-#define TET1 4
-#define HEX1 5
-#define PRI1 6
-#define PYR1 7
-#define LGN2 8
-#define TRI2 9
-#define QUA2 10
-#define TET2 11
-#define HEX2 12
-#define PRI2 13
-#define PYR2 14
-#define PNT  15 
-
-#define NB_NOD_MAX_ELM 20
-
-/* relecture maillage au format MSH */
-
-/* Note: the 'Dirty' flag only has an influence if one doesn't load
-   the geometry along with the mesh (since we make Tree_Insert for the
-   geometrical entities). And that's what we want. */
-
-void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
-
-  char String[256];
-  int  Nbr_Nodes, Nbr_Elements, i_Node, i_Element;
-  int  Num, Type, Physical, Elementary, i, j;
-  double x , y , z, lc1, lc2 ;
-  Vertex *vert , verts[NB_NOD_MAX_ELM] ,*vertsp[NB_NOD_MAX_ELM] , **vertspp;
-  Simplex *simp ;
-  Hexahedron *hex ;
-  Prism *pri ;
-  Curve   C , *c , **cc;
-  Surface S , *s , **ss;
-  Volume  V , *v , **vv;
-  Tree_T *Duplicates ;
-  
-  while (1) {
-    do { 
-      fgets(String,sizeof(String), File_GEO) ; 
-      if (feof(File_GEO))  break ;
-    } while (String[0] != '$') ;  
-    
-    if (feof(File_GEO))  break ;
-
-    /*  P T S  */
-
-    if (!strncmp(&String[1], "PTS", 3)) {
-
-      fscanf(File_GEO, "%d", &Nbr_Nodes) ;
-      Msg(INFO, "%d Points", Nbr_Nodes);
-
-      for (i_Node = 0 ; i_Node < Nbr_Nodes ; i_Node++) {
-        fscanf(File_GEO, "%d %lf %lf %lf %lf %lf", &Num, &x, &y, &z, &lc1, &lc2) ;
-        vert = Create_Vertex (Num, x, y, z, lc1 , lc2);
-        Tree_Replace(M->Points, &vert) ;
-      }
-    }
-
-    /*  N O E  */
-
-    if (!strncmp(&String[1], "NO", 2)) { /* $NOE or $NOD */
-      
-      fscanf(File_GEO, "%d", &Nbr_Nodes) ;
-      Msg(INFO, "%d Nodes", Nbr_Nodes);
-      
-      if(CTX.mesh.check_duplicates)
-	Duplicates = Tree_Create (sizeof (Vertex *), comparePosition);
-      for (i_Node = 0 ; i_Node < Nbr_Nodes ; i_Node++) {
-        fscanf(File_GEO, "%d %lf %lf %lf", &Num, &x, &y, &z) ;
-        vert = Create_Vertex (Num, x, y, z, 1.0 ,0.0);
-        Tree_Replace(M->Vertices, &vert);
-	if(CTX.mesh.check_duplicates){
-	  if((vertspp = (Vertex**)Tree_PQuery(Duplicates, &vert)))
-	    Msg(WARNING, "Nodes %d and %d have identical coordinates (%g, %g, %g)", 
-		Num, (*vertspp)->Num, x, y, z);
-	  else
-	    Tree_Add(Duplicates, &vert);
-	}
-      }
-      if(CTX.mesh.check_duplicates)
-	Tree_Delete(Duplicates);
-    }
-    
-    /* ELEMENTS */
-
-    else if (!strncmp(&String[1], "ELM", 3)) {
-
-      fscanf(File_GEO, "%d", &Nbr_Elements) ;
-      Msg(INFO, "%d Elements", Nbr_Elements);
-
-      if(CTX.mesh.check_duplicates)
-	Duplicates = Tree_Create (sizeof (Vertex *), comparePosition);
-
-      for (i_Element = 0 ; i_Element < Nbr_Elements ; i_Element++) {
-        
-	// HACK FROM JF
-	//        fscanf(File_GEO, "%d %d %d %d %d", 
-        //       &Num, &Type, &Physical, &Elementary, &Nbr_Nodes) ;
-        fscanf(File_GEO, "%d %d %d %d %d", 
-               &Num, &Type, &Elementary, &Physical, &Nbr_Nodes) ;
-        
-        for (j = 0 ; j < Nbr_Nodes ; j++)
-          fscanf(File_GEO, "%d", &verts[j].Num) ;
-        
-	if(Elementary >= 0){
-
-	  switch(Type){
-	  case LGN1: case LGN2:
-	    c = &C; c->Num = Elementary;
-	    if(!(cc = (Curve**)Tree_PQuery(M->Curves, &c))){
-	      c = Create_Curve(Elementary, MSH_SEGM_LINE, 0, NULL,
-			       NULL, -1, -1, 0., 1.);
-	      c->Dirty=1;
-	      Tree_Add(M->Curves, &c);
-	    }
-	    else
-	      c = *cc;
-	    break;
-	  case TRI1: case QUA1: case TRI2: case QUA2:
-	    s = &S; s->Num = Elementary;
-	    if(!(ss = (Surface**)Tree_PQuery(M->Surfaces, &s))){
-	      s = Create_Surface(Elementary, MSH_SURF_PLAN, Elementary);
-	      s->Dirty=1;
-	      Tree_Add(M->Surfaces, &s);
-	    }
-	    else
-	      s = *ss;
-	    break;
-	  case TET1: case HEX1: case PRI1: case TET2: case HEX2: case PRI2: 
-	    v = &V; v->Num = Elementary;
-	    if(!(vv = (Volume**)Tree_PQuery(M->Volumes, &v))){
-	      v = Create_Volume(Elementary, MSH_VOLUME, Elementary);
-	      v->Dirty=1;
-	      Tree_Add(M->Volumes, &v);
-	    }
-	    else
-	      v = *vv;
-	    break;
-	  default :
-	    break;
-	  }
-	  
-	  for(i=0 ; i<Nbr_Nodes ; i++) {
-	    vertsp[i] = &verts[i];
-	    if(!(vertspp = (Vertex**)Tree_PQuery(M->Vertices, &vertsp[i])))
-	      Msg(GERROR, "Unknown vertex %d in element %d", verts[i].Num, Num);
-	    else
-	      vertsp[i] = *vertspp;
-	  }
-	  
-	  if(CTX.mesh.check_duplicates){
-	    vert = Create_Vertex (Num, 0., 0., 0., 1.0 ,0.0);
-	    for(i=0 ; i<Nbr_Nodes ; i++){
-	      vert->Pos.X += vertsp[i]->Pos.X ;
-	      vert->Pos.Y += vertsp[i]->Pos.Y ;
-	      vert->Pos.Z += vertsp[i]->Pos.Z ;
-	    }
-	    vert->Pos.X /= (double) Nbr_Nodes;
-	    vert->Pos.Y /= (double) Nbr_Nodes;
-	    vert->Pos.Z /= (double) Nbr_Nodes;
-	    if((vertspp = (Vertex**)Tree_PQuery(Duplicates, &vert)))
-	      Msg(WARNING, "Elements %d and %d have identical barycenters", 
-		  Num, (*vertspp)->Num);
-	    else
-	      Tree_Add(Duplicates, &vert);
-	  }
-	  
-	  switch(Type){
-	  case LGN1:
-	    //simp = Create_Simplex(vertsp[0], vertsp[1], NULL , NULL);
-	    //simp->Num = Num ;
-	    //simp->iEnt = Elementary ;
-	    //Tree_Insert(c->Simplexes, &simp) ;
-	    //Tree_Insert(M->Simplexes, &simp) ; 
-	    break;
-	  case TRI1:
-	    simp = Create_Simplex(vertsp[0], vertsp[1], vertsp[2], NULL);
-	    simp->Num = Num ;
-	    simp->iEnt = Elementary ;
-	    Tree_Insert(s->Simplexes, &simp) ;
-	    Tree_Insert(M->Simplexes, &simp) ;
-	    M->Statistics[7]++;
-	    break;
-	  case QUA1:
-	    simp = Create_Quadrangle(vertsp[0], vertsp[1], vertsp[2], vertsp[3]);
-	    simp->Num = Num ;
-	    simp->iEnt = Elementary ;
-	    Tree_Insert(s->Simplexes, &simp) ;
-	    Tree_Insert(M->Simplexes, &simp) ;
-	    M->Statistics[8]++;
-	    break;
-	  case TET1:
-	    simp = Create_Simplex(vertsp[0], vertsp[1], vertsp[2], vertsp[3]);
-	    simp->Num = Num ;
-	    simp->iEnt = Elementary ;
-	    Tree_Insert(v->Simplexes, &simp) ;
-	    Tree_Insert(M->Simplexes, &simp) ;
-	    M->Statistics[9]++;
-	    break;
-	  case HEX1:
-	    hex = Create_Hexahedron(vertsp[0], vertsp[1], vertsp[2], vertsp[3],
-				    vertsp[4], vertsp[5], vertsp[6], vertsp[7]);
-	    hex->Num = Num ;
-	    hex->iEnt = Elementary ;
-	    Tree_Insert(v->Hexahedra, &hex) ;
-	    M->Statistics[10]++;
-	    break;
-	  case PRI1:
-	    pri = Create_Prism(vertsp[0], vertsp[1], vertsp[2], 
-			       vertsp[3], vertsp[4], vertsp[5]);
-	    pri->Num = Num ;
-	    pri->iEnt = Elementary ;
-	    Tree_Insert(v->Prisms, &pri) ;
-	    M->Statistics[11]++;
-	    break;
-	  case PNT:
-	    break;
-	  default :
-	    Msg(WARNING, "Unknown type of element in Read_Mesh");
-	    break;
-	  }
-	}
-      }
-
-      if(CTX.mesh.check_duplicates){
-	Tree_Action(Duplicates, Free_Vertex);
-	Tree_Delete(Duplicates);
-      }
-
-    }
-
-    do {
-      fgets(String, 256, File_GEO) ;
-      if (feof(File_GEO)) Msg(GERROR, "Prematured end of mesh file");
-    } while (String[0] != '$') ;
-    
-  }   
-
-  if(Tree_Nbr(M->Volumes)){
-    M->status = 3 ;
-    Gamma_Maillage(M, &M->Statistics[17], &M->Statistics[18], &M->Statistics[19]);
-    Eta_Maillage(M, &M->Statistics[20], &M->Statistics[21], &M->Statistics[22]);
-    R_Maillage(M, &M->Statistics[23], &M->Statistics[24], &M->Statistics[25]);
-    M->Statistics[6]=Tree_Nbr(M->Vertices); //incorrect, mais...
-  }
-  else if(Tree_Nbr(M->Surfaces)){
-    M->status = 2 ;
-    M->Statistics[5]=Tree_Nbr(M->Vertices); //incorrect, mais...
-  }
-  else if(Tree_Nbr(M->Curves)){
-    M->status = 1 ;
-    M->Statistics[4]=Tree_Nbr(M->Vertices); //incorrect, mais...
-  }
-  else if(Tree_Nbr(M->Points))
-    M->status = 0 ;
-  else
-    M->status = -1 ;
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  R e a d _ M e s h                                                       */
-/* ------------------------------------------------------------------------ */
-void Read_Mesh_SMS (Mesh *m, FILE *File_GEO);
-
-void Read_Mesh (Mesh *M, FILE *File_GEO, int type){
-
-  double s[50];
-  switch(type){
-  case FORMAT_MSH : Read_Mesh_MSH(M,File_GEO); break;
-  case FORMAT_SMS : Read_Mesh_SMS(M,File_GEO); break;
-  default : Msg(WARNING, "Unkown mesh file format to read"); break;
-  }
-  GetStatistics(s);
-}
diff --git a/Mesh/SMS.cpp b/Mesh/SMS.cpp
deleted file mode 100644
index e2491d215a057b103488722e7025e3cde140624b..0000000000000000000000000000000000000000
--- a/Mesh/SMS.cpp
+++ /dev/null
@@ -1,668 +0,0 @@
-#include <iostream.h>
-#include <assert.h>
-#include "Gmsh.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Create.h"
-#include "MinMax.h"
-#include "Vertex.h"
-#include "CAD.h"
-#include "Context.h"
-#include "Message.h"
-
-extern Context_T CTX;
-
-/*
-  Reads a SMS mesh file format.
-  Fills the Mesh structure and says
-  the interface that the state of the current
-  mesh is 3.
-
-*/
-
-#define ENTITY_VERTEX 0
-#define ENTITY_EDGE   1
-#define ENTITY_FACE   2
-#define ENTITY_REGION 3
-#define ENTITY_NONE   4
-extern int FACE_DIMENSION;
-void TRIE_MON_GARS2 (void *a, void *b)
-{
-  Simplex *s = *(Simplex **) a;
-  s->Fourre_Simplexe (s->V[0], s->V[1], s->V[2], s->V[3]);
-}
-
-void Read_VTK_File (char *file, Mesh *m)
-{
-  
-  FILE *in = fopen (file,"r");
-  if(!in)return;
-  char line[256],dumline1[256],dumline2[256];
-  int i;
-  int NbFaces,NbVertices,Vertex1,Vertex2,Vertex3,NbVerticesOnFace;
-  double x,y,z;
-  Vertex *v1,*v2,*v3,*v4;
-
-  fgets(line,255,in);
-  fgets(line,255,in);
-  fgets(line,255,in);
-  fgets(line,255,in);
-  fgets(line,255,in);
-  sscanf(line,"%s %d %s",dumline1,&NbVertices,dumline2);
-
-  Surface *surf = Create_Surface(1,MSH_SURF_DISCRETE,1);
-  surf->Generatrices = List_Create(1,1,sizeof(Curve*));
-  Tree_Add(m->Surfaces,&surf);
-  
-  for(i=0;i<NbVertices;i++)
-    {
-      fscanf(in,"%le %le %le",&x,&y,&z);
-      Vertex *v = Create_Vertex(i,x,y,z,1.0,1.0);
-      Tree_Add(m->Vertices,&v);
-      Tree_Add(surf->Vertices,&v);
-      v->ListSurf = List_Create(1,1,sizeof(Surface*));
-      List_Add(v->ListSurf,&surf);
-    }
-  fscanf(in,"%s %d %d",dumline1,&NbFaces,&i);
-  for(int i=0;i<NbFaces;i++)
-    {
-      fscanf(in,"%d",&NbVerticesOnFace); 
-      if(NbVerticesOnFace == 3)
-	{
-	  fscanf(in,"%d %d %d", &Vertex1,&Vertex2,&Vertex3);
-	  v1 = FindVertex(Vertex1,m);
-	  v2 = FindVertex(Vertex2,m);
-	  v3 = FindVertex(Vertex3,m);
-	  v4 = NULL;
-	}
-      else
-	{
-	  printf("no quads man !\n");
-	  exit(-1);
-	}
-      Simplex *s = Create_Simplex (v1,v2,v3,v4);
-      s->V[0] = v1;
-      s->V[1] = v2;
-      s->V[2] = v3;
-      s->Num = i;
-      s->iEnt = 1;
-      if((surf = FindSurface(1,m)))
-	{
-	}
-      else
-	{
-	  surf = Create_Surface(1,MSH_SURF_DISCRETE,1);
-	  surf->Generatrices = List_Create(1,1,sizeof(Curve*));
-	  Tree_Add(m->Surfaces,&surf);
-	}
-      Tree_Add(surf->Simplexes,&s);
-    }  
-  FACE_DIMENSION = 2;
-  Tree_Action (surf->Simplexes, TRIE_MON_GARS2);
-  if(NbFaces)m->status = 2;
-
-  Volume *vol = Create_Volume(1,MSH_VOLUME,1);
-  vol->Surfaces = List_Create(1,1,sizeof(Surface*));
-  List_Add(vol->Surfaces,&surf);
-  Tree_Add(m->Volumes,&vol);
-
-  fclose (in);
-}
-
-void Read_Mesh_SMS (Mesh *m, FILE *in)
-{
-  char line[1023];
-  int i,patch,nbPts;
-  int NbRegions,NbFaces,NbEdges,NbVertices,NbPoints,
-    GEntityType,GEntityId,EntityNbConnections,Dummy,
-    Edge1,Edge2,Edge3,Edge4,Face1,Face2,Face3,Face4;
-  int VertexId1,VertexId2,NbEdgesOnFace,NbFacesOnRegion;
-  double x,y,z,u,v;
-  List_T *AllEdges,*AllFaces;
-  Vertex *v1,*v2,*v3,*v4;
-
-
-  fscanf(in,"%s %d",line,&Dummy);
-  fscanf(in,"%d %d %d %d %d",&NbRegions,&NbFaces,&NbEdges,&NbVertices,&NbPoints);
-
-  Msg(INFO,"reading a mesh in scorec format");
-  Msg(INFO,"%d Vertices",NbVertices);
-    
-  for(i=0;i<NbVertices;i++)
-    {
-      fscanf(in,"%d",&GEntityId);       
-      if(GEntityId)
-	{
-	  fscanf(in,"%d %d %lf %lf %lf",&GEntityType,&EntityNbConnections,&x,&y,&z); 
-	  Vertex *vert = Create_Vertex(i,x,y,z,1.0,1.0);
-	  Tree_Add(m->Vertices,&vert);
-	  switch(GEntityType)
-	    {
-	    case 0:
-	      Tree_Add(m->Points,&vert);
-	      break;
-	    case 1:
-	      fscanf(in,"%le",&u);
-	      break;
-	    case 2:
-	      fscanf(in,"%le %le %d",&u,&v,&patch);
-	      break;
-	    case 3:
-	      break;
-	    }  
-	}
-    }
-  
-  Msg(INFO,"%d Edges",NbEdges);
-  AllEdges = List_Create(NbEdges,1,sizeof(Edge));
-  Edge e;
-
-  for(int i=0;i<NbEdges;i++)
-    {
-      fscanf(in,"%d",&GEntityId);
-
-      if(GEntityId)
-	{
-	  fscanf(in,"%d %d %d %d %d",&GEntityType, &VertexId1,&VertexId2,&EntityNbConnections,&nbPts); 
-	  for(int j=0;j<nbPts;j++)
-	    {
-	      switch(GEntityType)
-		{
-		case 0:
-		  break;
-		case 1:
-		  fscanf(in,"%le",&u);
-		  break;
-		case 2:
-		  fscanf(in,"%le %le %d",&u,&v,&patch);
-		  break;
-		case 3:
-		  break;
-		}
-	    }
-	  e.Points = NULL;
-	  Vertex *v1 = FindVertex(VertexId1-1,m);
-	  Vertex *v2 = FindVertex(VertexId2-1,m);
-	  e.V[0] = v1;
-	  e.V[1] = v2;
-	  List_Add(AllEdges,&e);
-	  switch(GEntityType)
-	   {
-	     case ENTITY_EDGE :
-	      Simplex *s = Create_Simplex(v1,v2,NULL,NULL);
-	      Curve *c;
-	      if((c = FindCurve(GEntityId,m)))
-	      	{
-	      	}
-	      else
-	      	{
-		  c = Create_Curve(GEntityId,MSH_SEGM_DISCRETE,1,NULL,NULL,-1,-1,0,1);
-		  c->beg = v1;
-		  c->end = v2;
-		  Tree_Add(m->Curves,&c);
-	      }
-	      s->iEnt = GEntityId;
-	      //	      List_Add(v1->ListCurves,&c);
-	      // List_Add(v2->ListCurves,&c);
-	      Tree_Add(c->Simplexes,&s);
-	      s->Num = i;
-	   }
-	}  
-    }
-  
-  AllFaces = List_Create(NbFaces,1,sizeof(Simplex*));
-
-  Volume *vol = Create_Volume(1,MSH_VOLUME,1);
-  vol->Surfaces = List_Create(1,1,sizeof(Surface*));
-  Tree_Add(m->Volumes,&vol);
-  FACE_DIMENSION = 2;
-
-  Msg(INFO,"%d Faces",NbFaces);
-  for(int i=0;i<NbFaces;i++)
-    {
-      fscanf(in,"%d",&GEntityId);
-      if(GEntityId)
-	{
-	  fscanf(in,"%d %d",&GEntityType, &NbEdgesOnFace);
-	  
-
-	  List_T *Lists[4] = {0,0,0,0};
-
-	  if(NbEdgesOnFace == 3)
-	    {
-	      fscanf(in,"%d %d %d %d",&Edge1,&Edge2,&Edge3,&nbPts);
-	      List_Read(AllEdges,abs(Edge1)-1,&e);
-	      Lists[0] = e.Points;
-	      if(Edge1 > 0)v1 = e.V[0];
-	      else v1 = e.V[1];
-	      List_Read(AllEdges,abs(Edge2)-1,&e);
-	      Lists[1] = e.Points;
-	      if(Edge2 > 0)v2 = e.V[0];
-	      else v2 = e.V[1];
-	      List_Read(AllEdges,abs(Edge3)-1,&e);
-	      Lists[2] = e.Points;
-	      if(Edge3 > 0)v3 = e.V[0];
-	      else v3 = e.V[1];
-	      v4 = NULL;
-	    }
-	  else if(NbEdgesOnFace == 4)
-	    {
-	      fscanf(in,"%d %d %d %d %d",&Edge1,&Edge2,&Edge3,&Edge4,&nbPts);
-	      List_Read(AllEdges,abs(Edge1)-1,&e);
-	      if(Edge1 > 0)v1 = e.V[0];
-	      else v1 = e.V[1];
-	      List_Read(AllEdges,abs(Edge2)-1,&e);
-	      if(Edge2 > 0)v2 = e.V[0];
-	      else v2 = e.V[1];
-	      List_Read(AllEdges,abs(Edge3)-1,&e);
-	      if(Edge3 > 0)v3 = e.V[0];
-	      else v3 = e.V[1];
-	      List_Read(AllEdges,abs(Edge4)-1,&e);
-	      if(Edge4 > 0)v4 = e.V[0];
-	      else v4 = e.V[1];
-	    }
-	  else
-	    {
-	      cout << "exiting" << endl;
-	      exit(-1);
-	    }
-	  for(int j=0;j<nbPts;j++)
-	    {
-	      switch(GEntityType)
-		{
-		case 0:
-		  break;
-		case 1:
-		  fscanf(in,"%le",&u);
-		  break;
-		case 2:
-		  fscanf(in,"%le %le %d",&u,&v,&patch);
-		  break;
-		case 3:
-		  break;
-		}
-	    }
-
-	  Simplex *s = Create_Simplex (v1,v2,v3,v4);
-	  //	  s->curvedBounds(Edge1,Edge2,Edge3,Edge4,Lists,m->VertexEdges);
-	  s->Num = i+1;
-	  s->iEnt = GEntityId+10000;
-	  Surface *surf;
-	  List_Add(AllFaces,&s);
-	  
-	  switch(GEntityType)
-	    {
-	    case ENTITY_REGION :
-	      break;
-	    case ENTITY_FACE :
-	      if((surf = FindSurface(GEntityId+10000,m)))
-		{
-		}
-	      else
-		{
-		  surf = Create_Surface(GEntityId+10000,MSH_SURF_DISCRETE,1);
-		  if(!NbRegions)List_Add(vol->Surfaces,&surf);
-		  surf->Generatrices = List_Create(1,1,sizeof(Curve*));
-		  Tree_Add(m->Surfaces,&surf);
-		}
-	      Tree_Add(surf->Vertices,&s->V[0]);
-	      Tree_Add(surf->Vertices,&s->V[1]);
-	      Tree_Add(surf->Vertices,&s->V[2]);
-	      Tree_Add(surf->Simplexes,&s);
-	    }	  
-	}  
-    }
-  
-
-  Msg(INFO,"%d Region",NbRegions);
-
-  for(int i=0;i<NbRegions;i++)
-    {
-      fscanf(in,"%d",&GEntityId);
-      if(GEntityId)
-	{
-	  fscanf(in,"%d",&NbFacesOnRegion);
-	  Simplex *myS1,*myS2;
-	  if(NbFacesOnRegion == 4)
-	    {
-	      fscanf(in,"%d %d %d %d %d",&Face1,&Face2,&Face3,&Face4,&Dummy);
-	      List_Read(AllFaces,abs(Face1)-1,&myS1);
-	      List_Read(AllFaces,abs(Face2)-1,&myS2);
-	      v1 = myS1->V[0];
-	      v2 = myS1->V[1];
-	      v3 = myS1->V[2];
-	      for(int hh =0;hh<3;hh++)if(compareVertex(&v1,&myS2->V[hh]) &&
-					 compareVertex(&v2,&myS2->V[hh]) &&
-					 compareVertex(&v3,&myS2->V[hh]))v4=myS2->V[hh];
-	    }
-	  if(!v1 || !v2 || !v3 || !v4)
-	    {
-	      printf("%d\n",NbFacesOnRegion);
-	      printf("%p %p %p %p\n",v1,v2,v3,v4);
-	      printf("%p %p %p \n",myS1->V[0],myS1->V[1],myS1->V[2]);
-	      printf("%p %p %p \n",myS2->V[0],myS2->V[1],myS2->V[2]);
-	      assert(1==0);
-	    }
-	  Simplex *s = Create_Simplex (v1,v2,v3,v4);
-
-	  if((vol = FindVolume(GEntityId,m)))
-	    {
-	    }
-	  else
-	    {
-	      vol = Create_Volume(GEntityId,MSH_VOLUME,GEntityId);
-	      Tree_Add(m->Volumes,&vol);
-	    }
-	  s->iEnt = GEntityId;
-	  Tree_Insert(vol->Simplexes,&s);
-	  Tree_Insert(m->Simplexes,&s);
-	}
-    }  
-
-  List_Delete(AllFaces);
-
-
-  if(NbRegions)m->status = 3;
-  else if(NbFaces)m->status = 2;
-  else if(NbEdges)m->status = 1; 
-  Msg(INFO,"Done.");
-}
-/*
-void Write_SMS_FILE (Mesh *m, char *filename)
-{
-  FILE *f = fopen (filename,"w");
-  // write first the global infos 
-  int i,j;
-//  Edge e;
-
-  List_T *l;
-  List_T *AllFaces = List_Create(100,100,sizeof(Simplex*));
-  Surface *surf;
-  Simplex *s;
-  Vertex *v;
-  Curve *c;
-
-
-  l = Tree2List(m->Surfaces);
-  EdgesContainer AllEdges(l);
-
-
-  for(i=0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&surf);
-      List_T *all = Tree2List(surf->Simplexes);
-      for(j=0;j<List_Nbr(all);j++)List_Add(AllFaces,List_Pointer(all,j));
-      List_Delete(all);
-    }
-  List_Delete(l);
-
-  fprintf(f,"gmsh 2\n");
-  fprintf(f,"0 %d %d %d %d\n"
-	  ,List_Nbr(AllFaces) 
-	  ,Tree_Nbr(AllEdges.AllEdges)
-	  ,Tree_Nbr(m->Vertices)
-	  ,Tree_Nbr(m->Vertices));
-
-
-
-  l = Tree2List(m->Vertices);
-  int MaxFrozen;
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&v);
-      MaxFrozen = (MaxFrozen>=v->Frozen)?MaxFrozen:v->Frozen;
-    }
-
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&v);
-      int mtype = ((v->ListCurves)?((List_Nbr(v->ListCurves)== 1)?ENTITY_EDGE:ENTITY_VERTEX):ENTITY_FACE);
-      int gent;
-      switch(mtype)
-	{
-	case ENTITY_VERTEX : gent = i+1;break;
-	case ENTITY_EDGE   : List_Read(v->ListCurves,0,&c);gent = c->ipar[3]+1;break;
-	case ENTITY_FACE   : List_Read(v->ListSurf,0,&surf);gent = surf->ipar[3]+1;break;
-	}
-      v->Frozen = i+1;
-      int nn = 7; // arbitrary 
-      fprintf(f,"%d %d %d\n",gent,mtype,nn);      
-      switch(mtype)
-	{
-	case ENTITY_VERTEX : fprintf(f,"%12.5E %12.5E %12.5E\n",v->Pos.X,v->Pos.Y,v->Pos.Z)      ;break;
-	case ENTITY_EDGE   : fprintf(f,"%12.5E %12.5E %12.5E 0 \n",v->Pos.X,v->Pos.Y,v->Pos.Z)      ;break;
-	case ENTITY_FACE   : fprintf(f,"%12.5E %12.5E %12.5E 0 0 1\n",v->Pos.X,v->Pos.Y,v->Pos.Z)      ;break;
-	}
-    }
-
-  //  extern int DEGRE2;
-
-  printf("%d edges\n",Tree_Nbr(AllEdges.AllEdges));
-  l = Tree2List(m->Curves);
-  for(i=0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&c);
-      AllEdges.AddTree(c->Simplexes,false);
-      //      if(c->Num > 0 && c->Typ != MSH_SEGM_LINE)AllEdges.AddPoints(c,DEGRE2-1);
-    }
-  List_Delete(l);
-  printf("%d edges\n",Tree_Nbr(AllEdges.AllEdges));
-  
-
-  l = Tree2List(AllEdges.AllEdges);
-  int compareEdgeNum (const void *a, const void *b);
-
-  List_Sort(l,compareEdgeNum);
-  
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      int mtype = ENTITY_FACE;
-      Edge *pe = (Edge*)List_Pointer(l,i);
-      int nn = 0,gent;
-      for(j=0;j<List_Nbr(pe->Simplexes);j++)
-	{
-	  List_Read(pe->Simplexes,j,&s);
-	  if(!s->V[2]){
-	    mtype = ENTITY_EDGE;
-	    gent = s->iEnt;
-	  }
-	  if(mtype == ENTITY_FACE)
-	    {
-	      nn ++;
-	      gent = s->iEnt;
-	    }
-	}  
-      if(!pe->Points)
-	fprintf(f,"%d %d %d %d %d 0\n",gent,mtype,pe->V[0]->Frozen,pe->V[1]->Frozen,nn);      
-      else
-	{
-	  fprintf(f,"%d %d %d %d %d %d\n",gent,mtype,pe->V[0]->Frozen,pe->V[1]->Frozen,nn,
-		  List_Nbr(pe->Points));      
-	  for(int k=0;k<List_Nbr(pe->Points);k++)
-	    {
-	      Coord cr;
-	      List_Read(pe->Points,k,&cr);
-	      fprintf(f,"%12.5E %12.5E %12.5E %12.5E ",cr.X,cr.Y,cr.Z,0.0);
-	    }
-	  fprintf(f,"\n");
-	}
-    }
-
-  Edge *ed[4];
-  int ori[4];
-  int *edids = new int[List_Nbr(l)+1];
-  for(i=0;i<List_Nbr(l)+1;i++)edids[i] = 0;
-  List_Delete(l);
-  for(i = 0;i<List_Nbr(AllFaces);i++)
-    {
-      List_Read(AllFaces,i,&s);
-      AllEdges.GetEdges(s,false,ed,ori);
-      if(!ed[3])
-	{
-	  for(int k=0;k<3;k++)
-	    {
-	      if(edids[ed[k]->Num] == ori[k])
-		{
-		  Simplex *s1,*s2;
-		  List_Read(ed[k]->Simplexes,0,&s1);
-		  List_Read(ed[k]->Simplexes,1,&s2);
-		  printf("Edge %d %d\n",ed[k]->V[0]->Num,ed[k]->V[1]->Num);
-		  printf("s1 = %d %d %d\n",s1->V[0]->Num,s1->V[1]->Num,s1->V[2]->Num);
-		  printf("s2 = %d %d %d\n",s2->V[0]->Num,s2->V[1]->Num,s2->V[2]->Num);
-		} 
-	      else
-		{
-		  edids[ed[k]->Num] = ori[k];
-		}
-	    }
-
-	  fprintf(f,"%d %d 3 %d %d %d 0\n",s->iEnt,ENTITY_FACE,ori[0] * ed[0]->Num,
-		  ori[1]*ed[1]->Num,ori[2]*ed[2]->Num);      
-	}
-      else fprintf(f,"%d %d 4 %d %d %d %d 0\n",s->iEnt,ENTITY_FACE,ori[0]*ed[0]->Num,
-		   ori[1]*ed[1]->Num,ori[2]*ed[2]->Num,ori[3]*ed[3]->Num);      
-    }
-  delete edids;
-  List_Delete(AllFaces);
-  fclose (f);
-  
-}
-*/
-int isTopologic (Vertex *v, List_T *curves)
-{
-  Curve *c;
-  for(int i=0;i<List_Nbr(curves);i++)
-    {
-      List_Read(curves,i,&c);
-      if(!compareVertex(&v,&c->beg))return 1;
-    }
-  return 0;
-}
-
-void Write_DMG_FILE (Mesh *m, char *filename)
-{
-  FILE *f = fopen (filename,"w");
-  int i,j;
-  List_T *ll,*l;
-  Vertex *v;
-  Curve *c;
-  Surface *s;
-  //Volume *vol;
-  int k;
-
-  l = Tree2List(m->Points);
-  ll = Tree2List(m->Curves);
-
-  k = 0;
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&v);
-      if(isTopologic(v,ll))
-	{
-	  k++;
-	}
-    }
-
-  // write first the global infos 
-
-  fprintf(f,"%d %d %d %d \n"
-	  ,Tree_Nbr(m->Volumes)
-	  ,Tree_Nbr(m->Surfaces) 
-	  ,Tree_Nbr(m->Curves)/2 // the 2 is for the reverse curves
-	  ,k);
-
-  // then write the bounding box
-
-  m->Grid.min.X = CTX.min[0];
-  m->Grid.min.Y = CTX.min[1];
-  m->Grid.min.Z = CTX.min[2];
-  m->Grid.max.X = CTX.max[0];
-  m->Grid.max.Y = CTX.max[1];
-  m->Grid.max.Z = CTX.max[2];
-
-  fprintf(f,"%12.5E %12.5E %12.5E \n",m->Grid.min.X,m->Grid.min.Y,m->Grid.min.Z);
-  fprintf(f,"%12.5E %12.5E %12.5E \n",m->Grid.max.X,m->Grid.max.Y,m->Grid.max.Z);
-
-  // write the points
-  k = 0;
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&v);
-      if(isTopologic(v,ll))
-	 {
-	   v->Frozen = k++;
-	   fprintf(f,"%d %12.5E %12.5E %12.5E \n",v->Frozen,v->Pos.X,v->Pos.Y,v->Pos.Z);    
-	 }
-    }
-  List_Delete(l);
-  // write the curves
-  l = ll;
-  k = 0;
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&c);
-      if(c->Num > 0){
-	c->ipar[3] = k;
-	Curve *cinv = FindCurve(-c->Num,m);
-	cinv->ipar[3] = k++;	
-	fprintf(f,"%d %d %d \n",c->ipar[3],c->beg->Frozen,c->end->Frozen);    
-      }
-    }
-
-  List_Delete(l);
-
-  // write the surfaces
-  l = Tree2List(m->Surfaces);
-  
-  for(i = 0;i<List_Nbr(l);i++)
-    {
-      List_Read(l,i,&s);
-      
-      int numEdgeLoop[2000],iLoop=0;
-      Vertex *beg = NULL;
-      numEdgeLoop[iLoop] = 0;
-      int deb = 1;
-      for(j=0;j<List_Nbr(s->Generatrices);j++)
-	{
-	  List_Read(s->Generatrices,j,&c);
-	  if(deb)
-	    {
-	      beg = c->beg;
-	      deb = 0;
-	    }
-	  cout << "beg-> " << c->beg->Num << " end-> " << c->end->Num << endl;
-	  (numEdgeLoop[iLoop]) ++ ;
-	  if(c->end == beg)
-	    {
-	      iLoop++;
-	      numEdgeLoop[iLoop] = 0;
-	      deb = 1;
-	    }
-	}
-      s->ipar[3] = i;
-      fprintf(f,"%d %d\n",i,iLoop);
-      fprintf(stdout,"%d %d\n",i,iLoop);
-      int iEdge = 0;
-      for(k=0;k<iLoop;k++)
-	{
-	  fprintf(f,"%d ",numEdgeLoop[k]);    
-	  fprintf(stdout,"%d ",numEdgeLoop[k]);    
-	  for(j=0;j<numEdgeLoop[k];j++)
-	    {
-	      List_Read(s->Generatrices,iEdge++,&c);
-	      fprintf(f,"%d %d ",abs(c->ipar[3]),(c->Num>0)?1:-1);    
-	      fprintf(stdout,"%d %d ",abs(c->ipar[3]),(c->Num>0)?1:-1);    
-	    }
-	  fprintf(f,"\n");
-	  fprintf(stdout,"\n");
-	}    
-    }
-  List_Delete(l);
-
-  // write the volumes (2 b continued)
-
-  // close the file
-
-  fclose(f);
-
-}
diff --git a/Mesh/STL.cpp b/Mesh/STL.cpp
deleted file mode 100644
index 80870de30b89531adab194b4c231d255e594a36a..0000000000000000000000000000000000000000
--- a/Mesh/STL.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-// $Id: STL.cpp,v 1.5 2001-04-26 17:58:00 remacle Exp $
-
-#include "Gmsh.h"
-#include "Mesh.h"
-#include "STL.h"
-
-extern Mesh *THEM;
-
-STL_Data::STL_Data (){
-  Vertices = Tree_Create (sizeof (Vertex *), comparePosition);
-  Simplexes = Tree_Create (sizeof (Simplex *), compareSimplex);
-  LSimplexes = NULL;
-  LVertices = NULL;
-}
-
-STL_Data::~STL_Data (){
-}
-
-void STL_Data::Add_Facet (double x1, double y1, double z1,
-                          double x2, double y2, double z2,
-                          double x3, double y3, double z3){
-  Vertex **ppv;
-  Vertex *v1 = Create_Vertex (Tree_Nbr (Vertices) + 1, x1, y1, z1, 1, 0);
-
-  if ((ppv = (Vertex **) Tree_PQuery (Vertices, &v1))){
-    delete v1;
-    v1 = *ppv;
-  }
-  else{
-    Tree_Add (Vertices, &v1);
-    Tree_Add (THEM->Points, &v1);
-  }
-
-  Vertex *v2 = Create_Vertex (Tree_Nbr (Vertices) + 1, x2, y2, z2, 1, 0);
-  if ((ppv = (Vertex **) Tree_PQuery (Vertices, &v2))){
-    delete v2;
-    v2 = *ppv;
-  }
-  else{
-    Tree_Add (Vertices, &v2);
-    Tree_Add (THEM->Points, &v2);
-  }
-
-  Vertex *v3 = Create_Vertex (Tree_Nbr (Vertices) + 1, x3, y3, z3, 1, 0);
-  if ((ppv = (Vertex **) Tree_PQuery (Vertices, &v3))){
-    delete v3;
-    v3 = *ppv;
-  }
-  else{
-    Tree_Add (Vertices, &v3);
-    Tree_Add (THEM->Points, &v3);
-  }
-  Simplex *s = Create_Simplex (v1, v2, v3, NULL);
-  Tree_Add (Simplexes, &s);
-}
-
-void STL_Data::GetFacet (int ifac, int &v1, int &v2, int &v3){
-  Simplex *s;
-  if (!LSimplexes)
-    LSimplexes = Tree2List (Simplexes);
-  List_Read (LSimplexes, ifac - 1, &s);
-  v1 = s->V[0]->Num;
-  v2 = s->V[1]->Num;
-  v3 = s->V[2]->Num;
-}
-
-void STL_Data::GetVertex (int i, double &x, double &y, double &z){
-  Vertex *v;
-  if (!LVertices)
-    LVertices = Tree2List (Vertices);
-  List_Read (LVertices, i - 1, &v);
-  x = v->Pos.X;
-  y = v->Pos.Y;
-  z = v->Pos.Z;
-}
diff --git a/Mesh/STL.h b/Mesh/STL.h
deleted file mode 100644
index a4b394f3366fe5611b0d37d4f8aca6c932af3302..0000000000000000000000000000000000000000
--- a/Mesh/STL.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _STL_H_
-#define _STL_H_
-
-class STL_Data
-{
- public:
-  Tree_T * Vertices;
-  Tree_T *Simplexes;
-  List_T *LVertices;
-  List_T *LSimplexes;
-  void Add_Facet (double x1, double y1, double z1,
-                  double x2, double y2, double z2,
-                  double x3, double y3, double z3);
-  int GetNbFacets (){
-    return Tree_Nbr (Simplexes);
-  }
-  int GetNbVertices (){
-    return Tree_Nbr (Vertices);
-  }
-  void GetFacet (int iFac, int &v1, int &v2, int &v3);
-  void GetVertex (int iVertex, double &x, double &y, double &z);
-  STL_Data ();
-  ~STL_Data ();
-};
-
-#endif
diff --git a/Mesh/SecondOrder.cpp b/Mesh/SecondOrder.cpp
deleted file mode 100644
index b893ed481a42988f831bbb7c4d58ad80e6c9710a..0000000000000000000000000000000000000000
--- a/Mesh/SecondOrder.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-// $Id: SecondOrder.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Utils.h"
-#include "Interpolation.h"
-#include "Numeric.h"
-
-extern int CurrentNodeNumber;
-
-static Surface *THES;
-static Curve *THEC;
-
-Vertex *middlecurve (Vertex * v1, Vertex * v2){
-  Vertex v, *pv;
-
-  if (!THEC)
-    return NULL;
-
-  if ((v1->ListCurves && List_Nbr (v1->ListCurves) != 1) ||
-      (v2->ListCurves && List_Nbr (v2->ListCurves) != 1)){
-    v.Pos.X = (v1->Pos.X + v2->Pos.X) * 0.5;
-    v.Pos.Y = (v1->Pos.Y + v2->Pos.Y) * 0.5;
-    v.Pos.Z = (v1->Pos.Z + v2->Pos.Z) * 0.5;
-  }
-  else
-    v = InterpolateCurve (THEC, 0.5 * (v1->u + v2->u), 0);
-
-  pv = Create_Vertex (++CurrentNodeNumber, v.Pos.X, v.Pos.Y, v.Pos.Z, v.lc, v.u);
-
-  if (!pv->ListCurves){
-    pv->ListCurves = List_Create (1, 1, sizeof (Curve *));
-  }
-  List_Add (pv->ListCurves, &THEC);
-  return pv;
-}
-
-Vertex *middleface (Vertex * v1, Vertex * v2){
-  Vertex v, *pv;
-  double U, V, U1, U2, V1, V2;
-
-  if (!THES)
-    return NULL;
-  if (THES->Typ == MSH_SURF_PLAN)
-    return NULL;
-
-  XYZtoUV ( THES , v1->Pos.X , v1->Pos.Y , v1->Pos.Z, &U1 , &V1 );    
-  XYZtoUV ( THES , v2->Pos.X , v2->Pos.Y , v2->Pos.Z, &U2 , &V2 );    
-
-  U = 0.5 *(U1+U2);
-  V = 0.5 *(V1+V2);
-  v = InterpolateSurface(THES,U,V,0,0);
-  pv = Create_Vertex(++CurrentNodeNumber,v.Pos.X,v.Pos.Y,v.Pos.Z,v.lc,v.u);
-  return pv;
-}
-
-extern int edges_tetra[6][2];
-extern int edges_quad[4][2];
-static Tree_T *THET;
-extern int EdgesInVolume;
-
-void PutMiddlePoint (void *a, void *b){
-  Edge *ed;
-  Simplex *s;
-  Vertex *v;
-  int i, j, k, N;
-  int edges[6][2];
-
-  ed = (Edge *) a;
-
-  if (ed->newv)
-    v = ed->newv;
-  else if ((v = middlecurve (ed->V[0], ed->V[1])));
-  else if ((v = middleface (ed->V[0], ed->V[1])));
-  else
-    v = Create_Vertex (++CurrentNodeNumber,
-                       0.5 * (ed->V[0]->Pos.X + ed->V[1]->Pos.X),
-                       0.5 * (ed->V[0]->Pos.Y + ed->V[1]->Pos.Y),
-                       0.5 * (ed->V[0]->Pos.Z + ed->V[1]->Pos.Z),
-                       0.5 * (ed->V[0]->lc + ed->V[1]->lc),
-                       0.5 * (ed->V[0]->u + ed->V[1]->u));
-  ed->newv = v;
-  Tree_Insert (THET, &v);
-  for (i = 0; i < List_Nbr (ed->Simplexes); i++){
-    List_Read (ed->Simplexes, i, &s);
-    if (s->V[3] && EdgesInVolume){
-      if (!s->VSUP)
-        s->VSUP = (Vertex **) Malloc (6 * sizeof (Vertex *));
-      N = 6;
-      for (k = 0; k < N; k++)
-        for (j = 0; j < 2; j++)
-          edges[k][j] = edges_tetra[k][j];
-    }
-    else if (s->V[3]){
-      if (!s->VSUP)
-        s->VSUP = (Vertex **) Malloc (4 * sizeof (Vertex *));
-      N = 4;
-      for (k = 0; k < N; k++)
-        for (j = 0; j < 2; j++)
-          edges[k][j] = edges_quad[k][j];
-    }
-    else if (s->V[2]){
-      if (!s->VSUP)
-        s->VSUP = (Vertex **) Malloc (3 * sizeof (Vertex *));
-      N = 3;
-      for (k = 0; k < N; k++)
-        for (j = 0; j < 2; j++)
-          edges[k][j] = edges_tetra[k][j];
-    }
-    else{
-      if (!s->VSUP)
-        s->VSUP = (Vertex **) Malloc (sizeof (Vertex *));
-      N = 1;
-      for (k = 0; k < N; k++)
-        for (j = 0; j < 2; j++)
-          edges[k][j] = edges_tetra[k][j];
-    }
-
-    for (j = 0; j < N; j++){
-      if ((!compareVertex (&s->V[edges[j][0]], &ed->V[0]) &&
-           !compareVertex (&s->V[edges[j][1]], &ed->V[1])) ||
-          (!compareVertex (&s->V[edges[j][0]], &ed->V[1]) &&
-           !compareVertex (&s->V[edges[j][1]], &ed->V[0]))){
-        s->VSUP[j] = v;
-      }
-    }
-  }
-}
-
-void Degre2 (Tree_T * AllNodes, Tree_T * TreeNodes, Tree_T * TreeElm,
-             Curve * c, Surface * s){
-  static Tree_T *TreeEdges = NULL;
-
-  THES = s;
-  THEC = c;
-  THET = TreeNodes;
-
-  if (!TreeEdges)
-    TreeEdges = Tree_Create (sizeof (Edge), compareedge);
-
-  if (THES || THEC)
-    EdgesInVolume = 0;
-
-  crEdges (TreeElm, TreeEdges);
-  Tree_Action (TreeEdges, PutMiddlePoint);
-  EdgesInVolume = 1;
-}
diff --git a/Mesh/Simplex.cpp b/Mesh/Simplex.cpp
deleted file mode 100644
index 5bb46fd95cd8cbe9be491a21c1cff2c3dc5e3495..0000000000000000000000000000000000000000
--- a/Mesh/Simplex.cpp
+++ /dev/null
@@ -1,778 +0,0 @@
-// $Id: Simplex.cpp,v 1.16 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Simplex.h"
-#include "Context.h"
-
-extern Context_T   CTX;
-
-int Simplex::TotalAllocated = 0;
-int Simplex::TotalNumber = 0;
-
-extern Simplex MyNewBoundary;
-
-int FACE_DIMENSION = 2;
-
-Simplex::Simplex (){
-  TotalAllocated++;
-  TotalNumber++;
-  VSUP = NULL;
-  V[0] = V[1] = V[2] = V[3] = NULL;
-  S[0] = S[1] = S[2] = S[3] = NULL;
-  iEnt = -1;
-  Quality = 0. ;
-  Num = TotalNumber;
-}
-
-Simplex::Simplex (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){
-  TotalAllocated++;
-  TotalNumber++;
-  VSUP = NULL;
-  S[0] = S[1] = S[2] = S[3] = NULL;
-  Quality = 0. ;
-  Fourre_Simplexe (v1, v2, v3, v4);
-  Num = TotalNumber;
-  iEnt = -1;
-}
-
-Simplex::~Simplex (){
-  TotalAllocated--;
-}
-
-int Simplex:: CircumCircle (double x1, double y1, 
-                            double x2, double y2, 
-                            double x3, double y3,
-                            double *xc, double *yc){
-  double d, a1, a2, a3;
-
-  d = 2. * (double) (y1 * (x2 - x3) + y2 * (x3 - x1) + y3 * (x1 - x2));
-  if (d == 0.0){
-    *xc = *yc = -99999.;
-    Msg(WARNING, "Degenerated simplex");
-    return 0;
-  }
-
-  a1 = x1 * x1 + y1 * y1;
-  a2 = x2 * x2 + y2 * y2;
-  a3 = x3 * x3 + y3 * y3;
-  *xc = (double) ((a1 * (y3 - y2) + a2 * (y1 - y3) + a3 * (y2 - y1)) / d);
-  *yc = (double) ((a1 * (x2 - x3) + a2 * (x3 - x1) + a3 * (x1 - x2)) / d);
-
-  return 1;
-}
-
-void Simplex::Center_Circum (){
-  /* Calcul du centre de la boule circonscrite */
-  int i, N;
-  double X[4], Y[4], Z[4];
-  double res[3];
-
-  if (!V[3])
-    N = 3;
-  else
-    N = 4;
-
-  for (i = 0; i < N; i++){
-    X[i] = V[i]->Pos.X;
-    Y[i] = V[i]->Pos.Y;
-    Z[i] = V[i]->Pos.Z;
-  }
-
-  if (N == 3){
-    CircumCircle (V[0]->Pos.X, V[0]->Pos.Y,
-                  V[1]->Pos.X, V[1]->Pos.Y,
-                  V[2]->Pos.X, V[2]->Pos.Y,
-                  &Center.X, &Center.Y);
-    Center.Z = 0.0;
-    if (fabs (Center.X) > 1.e10)
-      Center.X = 1.e10;
-    if (fabs (Center.Y) > 1.e10)
-      Center.Y = 1.e10;
-    Radius = sqrt ((X[0] - Center.X) * (X[0] - Center.X) +
-                   (Y[0] - Center.Y) * (Y[0] - Center.Y));
-  }
-  else{
-    center_tet (X, Y, Z, res);
-    
-    Center.X = res[0];
-    Center.Y = res[1];
-    Center.Z = res[2];
-    Radius = sqrt ((X[0] - Center.X) * (X[0] - Center.X) +
-                   (Y[0] - Center.Y) * (Y[0] - Center.Y) +
-                   (Z[0] - Center.Z) * (Z[0] - Center.Z));
-  }
-}
-
-int Simplex::Pt_In_Ellipsis (Vertex * v, double Metric[3][3]){
-  double eps, d1, d2, x[2];
-
-  Center_Ellipsum_2D (Metric);
-
-  x[0] = Center.X - v->Pos.X;
-  x[1] = Center.Y - v->Pos.Y;
-
-  d1 = Radius;
-  d2 = sqrt (x[0] * x[0] * Metric[0][0]
-             + x[1] * x[1] * Metric[1][1]
-             + 2. * x[0] * x[1] * Metric[0][1]);
-
-  eps = fabs (d1 - d2) / (d1 + d2);
-  if (eps < 1.e-12)
-    {
-      return (1); // Ou Zero ???
-    }
-  if (d2 < d1)
-    return 1;
-  return 0;
-
-}
-
-double Simplex::Volume_Simplexe2D (){
-  return ((V[1]->Pos.X - V[0]->Pos.X) *
-          (V[2]->Pos.Y - V[1]->Pos.Y) -
-          (V[2]->Pos.X - V[1]->Pos.X) *
-          (V[1]->Pos.Y - V[0]->Pos.Y));
-}
-
-void Simplex::center_tet (double X[4], double Y[4], double Z[4], double res[3]){
-  double mat[3][3], b[3], dum;
-  int i;
-  b[0] = X[1] * X[1] - X[0] * X[0] +
-    Y[1] * Y[1] - Y[0] * Y[0] +
-    Z[1] * Z[1] - Z[0] * Z[0];
-  b[1] = X[2] * X[2] - X[1] * X[1] +
-    Y[2] * Y[2] - Y[1] * Y[1] +
-    Z[2] * Z[2] - Z[1] * Z[1];
-  b[2] = X[3] * X[3] - X[2] * X[2] +
-    Y[3] * Y[3] - Y[2] * Y[2] +
-    Z[3] * Z[3] - Z[2] * Z[2];
-
-  for (i = 0; i < 3; i++)
-    b[i] *= 0.5;
-
-  mat[0][0] = X[1] - X[0];
-  mat[0][1] = Y[1] - Y[0];
-  mat[0][2] = Z[1] - Z[0];
-  mat[1][0] = X[2] - X[1];
-  mat[1][1] = Y[2] - Y[1];
-  mat[1][2] = Z[2] - Z[1];
-  mat[2][0] = X[3] - X[2];
-  mat[2][1] = Y[3] - Y[2];
-  mat[2][2] = Z[3] - Z[2];
-
-  if (!sys3x3 (mat, b, res, &dum)){
-    Msg(WARNING, "Coplanar points in circum sphere computation"); 
-    Msg(WARNING, "(%g,%g,%g) (%g,%g,%g) (%g,%g,%g) (%g,%g,%g)", 
-	X[0],Y[0],Z[0],  X[1],Y[1],Z[1], X[2],Y[2],Z[2], X[3],Y[3],Z[3] );
-    res[0] = res[1] = res[2] = 10.0e10;
-  }
-  
-}
-
-double Simplex::matsimpl (double mat[3][3]){
-  mat[0][0] = V[1]->Pos.X - V[0]->Pos.X;
-  mat[0][1] = V[2]->Pos.X - V[0]->Pos.X;
-  mat[0][2] = V[3]->Pos.X - V[0]->Pos.X;
-  mat[1][0] = V[1]->Pos.Y - V[0]->Pos.Y;
-  mat[1][1] = V[2]->Pos.Y - V[0]->Pos.Y;
-  mat[1][2] = V[3]->Pos.Y - V[0]->Pos.Y;
-  mat[2][0] = V[1]->Pos.Z - V[0]->Pos.Z;
-  mat[2][1] = V[2]->Pos.Z - V[0]->Pos.Z;
-  mat[2][2] = V[3]->Pos.Z - V[0]->Pos.Z;
-  return (mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -
-          mat[1][0] * (mat[0][1] * mat[2][2] - mat[2][1] * mat[0][2]) +
-          mat[2][0] * (mat[0][1] * mat[1][2] - mat[1][1] * mat[0][2]));
-}
-
-double Simplex::rhoin (){
-  double s1, s2, s3, s4;
-  if (V[3]){
-    s1 = fabs (AireFace (F[0].V));
-    s2 = fabs (AireFace (F[1].V));
-    s3 = fabs (AireFace (F[2].V));
-    s4 = fabs (AireFace (F[3].V));
-    return 3. * fabs (Volume_Simplexe ()) / (s1 + s2 + s3 + s4);
-  }
-  else{
-    return 1.0;
-  }
-}
-
-double Simplex::lij (int i, int j){
-  return sqrt (DSQR (V[i]->Pos.X - V[j]->Pos.X) +
-               DSQR (V[i]->Pos.Y - V[j]->Pos.Y) +
-               DSQR (V[i]->Pos.Z - V[j]->Pos.Z));
-}
-
-double Simplex::Volume_Simplexe (){
-  double mat[3][3];
-
-  if (V[3])
-    return (matsimpl (mat) / 6.);
-  else
-    return (surfsimpl ());
-}
-
-double Simplex::EtaShapeMeasure (){
-  int i, j;
-  double lij2 = 0.0;
-  for (i = 0; i <= 3; i++){
-    for (j = i + 1; j <= 3; j++){
-      lij2 += DSQR (lij (i, j));
-    }
-  }
-  return 12. * pow (9./10. * DSQR (fabs (Volume_Simplexe ())), 1./3.) / (lij2);
-}
-
-double Simplex::RhoShapeMeasure (){
-  int i, j;
-  double minlij = 1.e25, maxlij = 0.0;
-  for (i = 0; i <= 3; i++){
-    for (j = i + 1; j <= 3; j++){
-      if (i != j){
-        minlij = DMIN (minlij, fabs (lij (i, j)));
-        maxlij = DMAX (maxlij, fabs (lij (i, j)));
-      }
-    }
-  }
-  return minlij / maxlij;
-}
-
-double Simplex::GammaShapeMeasure (){
-  int i, j, N;
-  double maxlij = 0.0;
-
-  if (V[3])
-    N = 4;
-  else
-    N = 3;
-
-  for (i = 0; i <= N - 1; i++){
-    for (j = i + 1; j <= N - 1; j++){
-      if (i != j)
-        maxlij = DMAX (maxlij, lij (i, j));
-    }
-  }
-  return 12. * rhoin () / (sqrt (6.) * maxlij);
-}
-
-
-void Simplex::Fourre_Simplexe (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){
-  int i, N;
-  V[0] = v1;
-  V[1] = v2;
-  V[2] = v3;
-  V[3] = v4;
-  VSUP = NULL;
-
-  if (!v3)    {
-    F[0].V[0] = (v1->Num > v2->Num) ? v2 : v1;
-    F[0].V[1] = (v1->Num > v2->Num) ? v1 : v2;
-    F[0].V[2] = NULL;
-    return;
-  }
-
-  F[0].V[0] = v1;
-  F[0].V[1] = v2;
-  F[0].V[2] = v3;
-
-  F[1].V[0] = v1;
-  F[1].V[1] = v3;
-  F[1].V[2] = v4;
-  if (FACE_DIMENSION == 1){
-    F[2].V[0] = v2;
-    F[2].V[1] = v3;
-    F[2].V[2] = v4;
-    
-    F[3].V[0] = v1;
-    F[3].V[1] = v2;
-    F[3].V[2] = v4;
-  }
-  else{
-    F[2].V[0] = v1;
-    F[2].V[1] = v2;
-    F[2].V[2] = v4;
-    
-    F[3].V[0] = v2;
-    F[3].V[1] = v3;
-    F[3].V[2] = v4;
-  }
-  if (!v4){
-    N = 3;
-    if (Volume_Simplexe2D () < 0.0){
-      V[0] = v1;
-      V[1] = v3;
-      V[2] = v2;
-    }
-    if (FACE_DIMENSION == 1){
-      //qsort(F[0].V,3,sizeof(Vertex*),compareVertex);
-      Center_Circum ();
-      Quality = (double) N *Radius / (V[0]->lc + V[1]->lc + V[2]->lc
-                                      + ((V[3]) ? V[3]->lc : 0.0));
-    }
-    else{
-      qsort (F[0].V, 3, sizeof (Vertex *), compareVertex);
-      return;
-    }
-  }
-  else{
-    N = 4;
-  }
-  
-  Center_Circum ();
-
-  /*
-  extern Mesh *THEM, *LOCAL;
-  if (LOCAL && N == 4 && CTX.mesh.algo == DELAUNAY_OLDALGO && THEM->BGM.Typ == ONFILE){
-    Quality = fabs(Radius) / Lc_XYZ(Center.X, Center.Y, Center.Z, LOCAL);
-    if(Quality < 0.){
-      Msg(WARNING, "Negative simplex quality !?");
-      Quality = 4 * Radius / (V[0]->lc + V[1]->lc + V[2]->lc + V[3]->lc);
-    }
-  }
-  */
-
-  Quality = (double) N * Radius / (V[0]->lc + V[1]->lc + V[2]->lc
-				   + ((V[3]) ? V[3]->lc : 0.0));
-
-  for (i = 0; i < N; i++)
-    qsort (F[i].V, N - 1, sizeof (Vertex *), compareVertex);
-
-  //qsort(F,N,sizeof(Face),compareFace);
-}
-
-Simplex *Create_Simplex (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){
-  Simplex *s;
-
-  s = new Simplex (v1, v2, v3, v4);
-  return s;
-}
-
-void Free_Simplex (void *a, void *b){
-  Simplex *s = *(Simplex**)a;
-  if(s){
-    delete s;
-    s = NULL;
-  }
-}
-
-Simplex *Create_Quadrangle (Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4){
-  Simplex *s;
-  /* pour eviter le reordonnement des noeuds */
-  s = new Simplex ();
-  s->V[0] = v1 ;
-  s->V[1] = v2 ;
-  s->V[2] = v3 ;
-  s->V[3] = v4 ;
-  return s;
-}
-
-int compareSimplex (const void *a, const void *b){
-  Simplex **q, **w;
-
-  /* Les simplexes sont definis une seule fois :
-     1 pointeur par entite -> on compare les pointeurs */
-
-  q = (Simplex **) a;
-  w = (Simplex **) b;
-  //if((*q)->iEnt != (*w)->iEnt) return (*q)->iEnt - (*w)->iEnt;
-  return ((*q)->Num - (*w)->Num);
-}
-
-int Simplex::Pt_In_Simplexe (Vertex * v, double uvw[3], double tol){
-  double mat[3][3];
-  double b[3], dum;
-
-  matsimpl (mat);
-  b[0] = v->Pos.X - V[0]->Pos.X;
-  b[1] = v->Pos.Y - V[0]->Pos.Y;
-  b[2] = v->Pos.Z - V[0]->Pos.Z;
-
-  sys3x3 (mat, b, uvw, &dum);
-  if (uvw[0] >= -tol && uvw[1] >= -tol && uvw[2] >= -tol &&
-      uvw[0] <= 1. + tol && uvw[1] <= 1. + tol && uvw[2] <= 1. + tol &&
-      1. - uvw[0] - uvw[1] - uvw[2] > -tol)
-    {
-      return (1);
-    }
-  return (0);
-}
-
-void Simplex::Center_Ellipsum_2D (double m[3][3]){
-  double sys[2][2], x[2];
-  double rhs[2], a, b, d;
-  double x1, y1, x2, y2, x3, y3;
-
-  x1 = V[0]->Pos.X;
-  y1 = V[0]->Pos.Y;
-  x2 = V[1]->Pos.X;
-  y2 = V[1]->Pos.Y;
-  x3 = V[2]->Pos.X;
-  y3 = V[2]->Pos.Y;
-
-  a = m[0][0];
-  b = 0.5 * (m[0][1] + m[1][0]);
-  d = m[1][1];
-
-  sys[0][0] = 2. * a * (x1 - x2) + 2. * b * (y1 - y2);
-  sys[0][1] = 2. * d * (y1 - y2) + 2. * b * (x1 - x2);
-  sys[1][0] = 2. * a * (x1 - x3) + 2. * b * (y1 - y3);
-  sys[1][1] = 2. * d * (y1 - y3) + 2. * b * (x1 - x3);
-
-  rhs[0] = a * (x1 * x1 - x2 * x2) + d * (y1 * y1 - y2 * y2) + 2. * b * (x1 * y1 - x2 * y2);
-  rhs[1] = a * (x1 * x1 - x3 * x3) + d * (y1 * y1 - y3 * y3) + 2. * b * (x1 * y1 - x3 * y3);
-
-  sys2x2 (sys, rhs, x);
-
-  Center.X = x[0];
-  Center.Y = x[1];
-
-  Radius = sqrt ((x[0] - x1) * (x[0] - x1) * a
-                 + (x[1] - y1) * (x[1] - y1) * d
-                 + 2. * (x[0] - x1) * (x[1] - y1) * b);
-}
-
-void Simplex::Center_Ellipsum_3D (double m[3][3]){
-  double sys[3][3], x[3];
-  double rhs[3], det;
-  double x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4;
-
-  x1 = V[0]->Pos.X;
-  y1 = V[0]->Pos.Y;
-  z1 = V[0]->Pos.Z;
-  x2 = V[1]->Pos.X;
-  y2 = V[1]->Pos.Y;
-  z2 = V[1]->Pos.Z;
-  x3 = V[2]->Pos.X;
-  y3 = V[2]->Pos.Y;
-  z3 = V[2]->Pos.Z;
-  x4 = V[3]->Pos.X;
-  y4 = V[3]->Pos.Y;
-  z4 = V[3]->Pos.Z;
-
-  sys[0][0] = 2. * m[0][0] * (x1 - x2) + 2. * m[1][0] * (y1 - y2) + 2. * m[2][0] * (z1 - z2);
-  sys[0][1] = 2. * m[0][1] * (x1 - x2) + 2. * m[1][1] * (y1 - y2) + 2. * m[2][1] * (z1 - z2);
-  sys[0][2] = 2. * m[0][2] * (x1 - x2) + 2. * m[1][2] * (y1 - y2) + 2. * m[2][2] * (z1 - z2);
-
-  sys[1][0] = 2. * m[0][0] * (x1 - x3) + 2. * m[1][0] * (y1 - y3) + 2. * m[2][0] * (z1 - z3);
-  sys[1][1] = 2. * m[0][1] * (x1 - x3) + 2. * m[1][1] * (y1 - y3) + 2. * m[2][1] * (z1 - z3);
-  sys[1][2] = 2. * m[0][2] * (x1 - x3) + 2. * m[1][2] * (y1 - y3) + 2. * m[2][2] * (z1 - z3);
-
-  sys[2][0] = 2. * m[0][0] * (x1 - x4) + 2. * m[1][0] * (y1 - y4) + 2. * m[2][0] * (z1 - z4);
-  sys[2][1] = 2. * m[0][1] * (x1 - x4) + 2. * m[1][1] * (y1 - y4) + 2. * m[2][1] * (z1 - z4);
-  sys[2][2] = 2. * m[0][2] * (x1 - x4) + 2. * m[1][2] * (y1 - y4) + 2. * m[2][2] * (z1 - z4);
-
-  rhs[0] = m[0][0] * (x1 * x1 - x2 * x2)
-    + m[1][1] * (y1 * y1 - y2 * y2)
-    + m[2][2] * (z1 * z1 - z2 * z2)
-    + 2. * m[1][0] * (x1 * y1 - x2 * y2)
-    + 2. * m[2][0] * (x1 * z1 - x2 * z2)
-    + 2. * m[2][1] * (z1 * y1 - z2 * y2);
-  rhs[1] = m[0][0] * (x1 * x1 - x3 * x3)
-    + m[1][1] * (y1 * y1 - y3 * y3)
-    + m[2][2] * (z1 * z1 - z3 * z3)
-    + 2. * m[1][0] * (x1 * y1 - x3 * y3)
-    + 2. * m[2][0] * (x1 * z1 - x3 * z3)
-    + 2. * m[2][1] * (z1 * y1 - z3 * y3);
-  rhs[2] = m[0][0] * (x1 * x1 - x4 * x4)
-    + m[1][1] * (y1 * y1 - y4 * y4)
-    + m[2][2] * (z1 * z1 - z4 * z4)
-    + 2. * m[1][0] * (x1 * y1 - x4 * y4)
-    + 2. * m[2][0] * (x1 * z1 - x4 * z4)
-    + 2. * m[2][1] * (z1 * y1 - z4 * y4);
-
-  sys3x3 (sys, rhs, x, &det);
-
-  Center.X = x[0];
-  Center.Y = x[1];
-  Center.Z = x[2];
-
-  Radius = sqrt ((x[0] - x1) * (x[0] - x1) * m[0][0]
-                 + (x[1] - y1) * (x[1] - y1) * m[1][1]
-                 + (x[2] - z1) * (x[2] - z1) * m[2][2]
-                 + 2. * (x[0] - x1) * (x[1] - y1) * m[0][1]
-                 + 2. * (x[0] - x1) * (x[2] - z1) * m[0][2]
-                 + 2. * (x[1] - y1) * (x[2] - z1) * m[1][2]
-                 );
-}
-
-
-int Simplex::Pt_In_Simplex_2D (Vertex * v){
-  double Xmin, Xmax, Ymin, Ymax, Xtr[4], Ytr[4], A[2], B[2], X, Y, Signus[3];
-  int i;
-
-  X = v->Pos.X;
-  Y = v->Pos.Y;
-  Xtr[0] = Xmax = Xmin = V[0]->Pos.X;
-  Xtr[3] = V[0]->Pos.X;
-  Xtr[1] = V[1]->Pos.X;
-  Xtr[2] = V[2]->Pos.X;
-  Ytr[0] = Ymax = Ymin = V[0]->Pos.Y;
-  Ytr[3] = V[0]->Pos.Y;
-  Ytr[1] = V[1]->Pos.Y;
-  Ytr[2] = V[2]->Pos.Y;
-
-  for (i = 1; i < 3; i++){
-    Xmin = (Xtr[i] < Xmin) ? Xtr[i] : Xmin;
-    Xmax = (Xtr[i] > Xmax) ? Xtr[i] : Xmax;
-    Ymin = (Ytr[i] < Ymin) ? Ytr[i] : Ymin;
-    Ymax = (Ytr[i] > Ymax) ? Ytr[i] : Ymax;
-  }
-
-  if (X > Xmax || X < Xmin || Y > Ymax || Y < Ymin)
-    return (0);
-
-  for (i = 0; i < 3; i++){
-    A[0] = Xtr[i + 1] - Xtr[i];
-    A[1] = Ytr[i + 1] - Ytr[i];
-    B[0] = X - Xtr[i];
-    B[1] = Y - Ytr[i];
-    Signus[i] = A[0] * B[1] - A[1] * B[0];
-  }
-  for (i = 0; i < 2; i++){
-    if ((Signus[i] * Signus[i + 1]) < 0)
-      return 0;
-  }
-  return 1;
-}
-
-void Simplex::ExportLcField (FILE * f){
-  if (!V[3]){
-    fprintf (f, "ST(%f,%f,%f,%f,%f,%f,%f,%f,%f){%12.5E,%12.5E,%12.5E};\n"
-             ,V[0]->Pos.X, V[0]->Pos.Y, V[0]->Pos.Z
-             ,V[1]->Pos.X, V[1]->Pos.Y, V[1]->Pos.Z
-             ,V[2]->Pos.X, V[2]->Pos.Y, V[2]->Pos.Z
-             ,V[0]->lc, V[1]->lc, V[2]->lc);
-  }
-  else{
-    fprintf (f, "SS(%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f){%12.5E,%12.5E,%12.5E,%12.5E};\n"
-             ,V[0]->Pos.X, V[0]->Pos.Y, V[0]->Pos.Z
-             ,V[1]->Pos.X, V[1]->Pos.Y, V[1]->Pos.Z
-             ,V[2]->Pos.X, V[2]->Pos.Y, V[2]->Pos.Z
-             ,V[3]->Pos.X, V[3]->Pos.Y, V[3]->Pos.Z
-             ,V[0]->lc, V[1]->lc, V[2]->lc, V[3]->lc);
-  }
-  
-}
-
-double Simplex::AireFace (Vertex * V[3]){
-  double a[3], b[3], c[3];
-
-  a[0] = V[2]->Pos.X - V[1]->Pos.X;
-  a[1] = V[2]->Pos.Y - V[1]->Pos.Y;
-  a[2] = V[2]->Pos.Z - V[1]->Pos.Z;
-
-  b[0] = V[0]->Pos.X - V[1]->Pos.X;
-  b[1] = V[0]->Pos.Y - V[1]->Pos.Y;
-  b[2] = V[0]->Pos.Z - V[1]->Pos.Z;
-
-  prodve (a, b, c);
-  return (0.5 * sqrt (c[0] * c[0] + c[1] * c[1] + c[2] * c[2]));
-}
-
-double Simplex::surfsimpl (){
-  return AireFace (V);
-}
-
-bool Simplex::VertexIn (Vertex * v){
-  if (!this || this == &MyNewBoundary)
-    return false;
-  int N = 4;
-  if (!V[3])
-    N = 3;
-  for (int i = 0; i < N; i++)
-    if (!compareVertex (&V[i], &v))
-      return true;
-  return false;
-}
-
-bool Simplex::EdgeIn (Vertex * v1, Vertex * v2, Vertex * v[2]){
-  if (!this || this == &MyNewBoundary)
-    return false;
-  int N = 4;
-  if (!V[3])
-    N = 3;
-  int n = 0;
-  for (int i = 0; i < N; i++){
-    if (compareVertex (&V[i], &v1) && compareVertex (&V[i], &v2)){
-      v[n++] = V[i];
-      if (n > 2)
-        return false;
-    }
-  }
-  return true;
-}
-
-bool Simplex::ExtractOppositeEdges (int iFac, Vertex * p[2], Vertex * q[2]){
-  Simplex *s1 = this;
-  if (!s1 || s1 == &MyNewBoundary || !s1->iEnt)
-    return false;
-  Simplex *s2 = s1->S[iFac];
-  if (!s2 || s2 == &MyNewBoundary || !s2->iEnt)
-    return false;
-  int i, ip = 0, iq = 0;
-
-  for (i = 0; i < 3; i++)
-    if (s1->VertexIn (s2->V[i]))
-      p[ip++] = s2->V[i];
-    else
-      q[iq++] = s2->V[i];
-
-  for (i = 0; i < 3; i++)
-    if (!s2->VertexIn (s1->V[i]))
-      q[iq++] = s1->V[i];
-
-  if (ip != 2 || iq != 2){
-    return false;
-  }
-  return true;
-}
-
-bool Simplex::SwapEdge (int iFac){
-  Simplex *s1 = NULL, *s2 = NULL, *s11 = NULL, *s21 = NULL;
-  Vertex *p[4] = {NULL, NULL, NULL, NULL};
-  Vertex *q[4] = {NULL, NULL, NULL, NULL};
-  int i, ip, iq;
-
-  s1 = this;
-  if (!s1 || s1 == &MyNewBoundary || !s1->iEnt)
-    return false;
-  s2 = s1->S[iFac];
-  if (!s2 || s2 == &MyNewBoundary || !s2->iEnt)
-    return false;
-  ip = iq = 0;
-
-  for (i = 0; i < 3; i++)
-    if (s1->VertexIn (s2->V[i]))
-      p[ip++] = s2->V[i];
-    else
-      q[iq++] = s2->V[i];
-
-  for (i = 0; i < 3; i++)
-    if (!s2->VertexIn (s1->V[i]))
-      q[iq++] = s1->V[i];
-
-  if (ip != 2 || iq != 2){
-    return false;
-  }
-
-  for (i = 0; i < 3; i++)
-    if (s1->S[i]->VertexIn (p[1]) && s1->S[i]->VertexIn (q[1]))
-      s11 = s1->S[i];
-
-  for (i = 0; i < 3; i++)
-    if (s2->S[i]->VertexIn (p[0]) && s2->S[i]->VertexIn (q[0]))
-      s21 = s2->S[i];
-
-  if (!s11 || !s21)
-    return false;
-
-  double vol1 = s1->Volume_Simplexe () + s2->Volume_Simplexe ();
-
-  s1->V[0] = p[0];
-  s1->V[1] = q[0];
-  s1->V[2] = q[1];
-  s2->V[0] = p[1];
-  s2->V[1] = q[0];
-  s2->V[2] = q[1];
-
-  double vol2 = s1->Volume_Simplexe () + s2->Volume_Simplexe ();
-
-  if (s1->Volume_Simplexe () == 0.0 || s2->Volume_Simplexe () == 0.0 ||
-      fabs (fabs (vol1) - fabs (vol2)) > 1.e-5 * (fabs (vol1) + fabs (vol2))){
-    s1->V[0] = p[0];
-    s1->V[1] = p[1];
-    s1->V[2] = q[1];
-    s2->V[0] = p[0];
-    s2->V[1] = p[1];
-    s2->V[2] = q[0];
-    return false;
-  }
-
-  for (i = 0; i < 3; i++)
-    if (s1->S[i] == s11)
-      s1->S[i] = s21;
-  for (i = 0; i < 3; i++)
-    if (s2->S[i] == s21)
-      s2->S[i] = s11;
-
-  if (s21 != &MyNewBoundary && s21 && s21->iEnt)
-    for (i = 0; i < 3; i++)
-      if (s21->S[i] == s2)
-        s21->S[i] = s1;
-  if (s11 != &MyNewBoundary && s11 && s11->iEnt)
-    for (i = 0; i < 3; i++)
-      if (s11->S[i] == s1)
-        s11->S[i] = s2;
-  return true;
-}
-
-
-bool Simplex::SwapFace (int iFac, List_T * newsimp, List_T * delsimp){
-  Simplex *s = S[iFac], *s1, *s2, *s3;
-  Vertex *o[2];
-  int i;
-
-  if (!s || s == &MyNewBoundary || !s->iEnt)
-    return false;
-  if (!this || this == &MyNewBoundary || !this->iEnt)
-    return false;
-
-  for (i = 0; i < 4; i++)
-    if (!VertexIn (s->V[i]))
-      o[0] = s->V[i];
-  for (i = 0; i < 4; i++)
-    if (!s->VertexIn (V[i]))
-      o[1] = V[i];
-
-  s1 = Create_Simplex (s->F[iFac].V[0], s->F[iFac].V[1], o[0], o[1]);
-  s2 = Create_Simplex (s->F[iFac].V[1], s->F[iFac].V[2], o[0], o[1]);
-  s3 = Create_Simplex (s->F[iFac].V[2], s->F[iFac].V[0], o[0], o[1]);
-
-  double vol1 = s->Volume_Simplexe () + Volume_Simplexe ();
-  double vol2 = s1->Volume_Simplexe () + s2->Volume_Simplexe () + s3->Volume_Simplexe ();
-
-  if (fabs (fabs (vol1) - fabs (vol2)) > 1.e-5 * (fabs (vol1) + fabs (vol2))){
-    delete s1;
-    delete s2;
-    delete s3;
-    return false;
-  }
-  
-  double gamma1 = GammaShapeMeasure ();
-
-  if (s1->GammaShapeMeasure () < gamma1 ||
-      s2->GammaShapeMeasure () < gamma1 ||
-      s3->GammaShapeMeasure () < gamma1)
-    return false;
-
-  return true;
-}
-
-int compareFace (const void *a, const void *b){
-  Face *q, *w;
-
-  q = (Face *) a;
-  w = (Face *) b;
-  if (q->V[0]->Num > w->V[0]->Num)
-    return (1);
-  if (q->V[0]->Num < w->V[0]->Num)
-    return (-1);
-
-  if (q->V[1]->Num > w->V[1]->Num)
-    return (1);
-  if (q->V[1]->Num < w->V[1]->Num)
-    return (-1);
-
-  if (FACE_DIMENSION == 1 || !q->V[2] || !w->V[2])
-    return 0;
-
-  if (q->V[2]->Num > w->V[2]->Num)
-    return (1);
-  if (q->V[2]->Num < w->V[2]->Num)
-    return (-1);
-  return (0);
-}
diff --git a/Mesh/Simplex.h b/Mesh/Simplex.h
deleted file mode 100644
index f3a5a39c868a09a14825642bef1dab4c54a57784..0000000000000000000000000000000000000000
--- a/Mesh/Simplex.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef _SIMPLEX_H_
-#define _SIMPLEX_H_
-
-#include "Vertex.h"
-
-typedef struct {
-  Vertex *V[3];
-}Face;
-
-class Simplex{
-
-public:
-  int     Num;           /* Numero                                       */
-  int     iEnt;          /* Entite geometrique                           */
-  Face    F[4];          /* 4 faces                                      */
-  Vertex  **VSUP;        /* noeuds supplem pour les elts de degre eleves */
-  Vertex  *V[4];         /* 4 noeuds                                     */
-  double  Quality;       /* Qualite du simplexe                          */
-  Coord   Center;        /* centre du CC                                 */
-  double  Radius;        /* Rayon du CC                                  */
-  Simplex *S[4];         /* 4 Voisins                                    */
-  static  int TotalNumber;
-  static  int TotalAllocated;
-  Simplex();
-  ~Simplex();
-  Simplex(Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4);
-  void Fourre_Simplexe(Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4);
-  int Pt_In_Simplexe (Vertex *v, double uvw[3], double tol);
-  int Pt_In_Simplex_2D(Vertex *v);
-  void Center_Circum();
-  double Volume_Simplexe ();
-  double matsimpl(double mat[3][3]);
-  void center_tet(double X[4],double Y[4], double Z[4], double res[3]);
-  double AireFace (Vertex *V[3]);
-  double surfsimpl();
-  int CircumCircle(double x1,double y1,double x2,double y2,double x3,double y3,
-                   double *xc,double *yc);
-  double Volume_Simplexe2D();
-  void Center_Ellipsum_2D (double m[3][3]);
-  int Pt_In_Ellipsis (Vertex *v,double m[3][3]);
-  bool VertexIn(Vertex *v);
-  bool EdgeIn(Vertex *v1, Vertex *v2, Vertex *v[2]);
-  bool SwapEdge (int iFac);
-  bool SwapFace (int iFac, List_T *newsimp, List_T *delsimp);
-  bool ExtractOppositeEdges ( int iFac, Vertex *p[2], Vertex *q[2]);
-  void ExportLcField (FILE *f);
-  void Center_Ellipsum_3D (double m[3][3]);
-  double GammaShapeMeasure ();
-  double RhoShapeMeasure ();
-  double EtaShapeMeasure ();
-  double lij (int i, int j);
-  double rhoin ();
-};
-
-int compareSimplex(const void *a, const void *b);
-int compareFace (const void *a, const void *b);
-
-Simplex *Create_Simplex (Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4);
-void Free_Simplex (void *a, void *b);
-Simplex *Create_Quadrangle (Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4);
-
-
-#endif
diff --git a/Mesh/Smoothing.cpp b/Mesh/Smoothing.cpp
deleted file mode 100644
index 003331721e64cb836d155f3b27f6d5f9f4aa8b76..0000000000000000000000000000000000000000
--- a/Mesh/Smoothing.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-// $Id: Smoothing.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-
-
-void AmelioreSurface_EliminationTripet (Surface * surf, Mesh * m, Tree_T * tnxe){
-  int i, j, k;
-  List_T *lnxe = Tree2List (tnxe);
-  Vertex *v1, *v2, *v3;
-  List_T *ListNoeuds = List_Create (2, 1, sizeof (Vertex *));
-  Simplex *s[3], *news;
-  NXE nxe;
-  bool ok;
-
-  for (i = 0; i < List_Nbr (lnxe); i++){
-    List_Read (lnxe, i, &nxe);
-    if (List_Nbr (nxe.Liste) == 3){
-      ok = true;
-      if (nxe.v->ListCurves)
-        ok = false;
-      else{
-        for (j = 0; j < 3; j++){
-          List_Read (nxe.Liste, j, &s[j]);
-          if (!Tree_Search (surf->Simplexes, &s[j]))
-            ok = false;
-          for (k = 0; k < 3; k++)
-            if (compareVertex (&nxe.v, &s[j]->V[k]))
-              List_Insert (ListNoeuds, &s[j]->V[k], compareVertex);
-        }
-      }
-      if (ok){
-        List_Read (ListNoeuds, 0, &v1);
-        List_Read (ListNoeuds, 1, &v2);
-        List_Read (ListNoeuds, 2, &v3);
-        news = Create_Simplex (v1, v2, v3, 0);
-        Tree_Suppress (surf->Simplexes, &s[0]);
-        Tree_Suppress (surf->Simplexes, &s[1]);
-        Tree_Suppress (surf->Simplexes, &s[2]);
-        Tree_Suppress (m->Vertices, &nxe.v);
-        Tree_Add (surf->Simplexes, &news);
-      }
-      List_Reset (ListNoeuds);
-    }
-  }
-  List_Delete (ListNoeuds);
-  List_Delete (lnxe);
-}
-
-
-void ActionLiss (void *data, void *dummy){
-  List_T *nodes;
-
-  NXE *pnxe;
-  Simplex *s;
-  double X, Y, Z, Sum;
-  int i, j;
-
-
-  pnxe = (NXE *) data;
-
-  /* On Ne Lisse Point Les Points sur les courbes (quelle horreur) */
-  if (pnxe->v->ListCurves)
-    return;
-  nodes = List_Create (2, 2, sizeof (Vertex *));
-
-  X = Y = Z = Sum = 0.0;
-  double volume_before = 0.0;
-  double min_quality_old = 1.0;
-  for (i = 0; i < List_Nbr (pnxe->Liste); i++){
-    List_Read (pnxe->Liste, i, &s);
-    min_quality_old = DMIN (min_quality_old, s->GammaShapeMeasure ());
-    volume_before += s->Volume_Simplexe ();
-    /* On Ne Lisse Point Les Points sur les surfaces quand les volumes sont mailles */
-    if (s->V[3] && pnxe->v->ListSurf)
-      return;
-    for (j = 0; j < 4; j++){
-      if (s->V[j] && compareVertex (&pnxe->v, &s->V[j])){
-        Sum += 0.5;
-        X += s->V[j]->Pos.X * 0.5;
-        Y += s->V[j]->Pos.Y * 0.5;
-        Z += s->V[j]->Pos.Z * 0.5;
-      }
-    }
-  }
-  
-  double xold = pnxe->v->Pos.X;
-  double yold = pnxe->v->Pos.Y;
-  double zold = pnxe->v->Pos.Z;
-  double a = 0.5;
-
-  if (Sum != 0.0){
-    pnxe->v->Pos.X = a * (X / Sum) + (1. - a) * pnxe->v->Pos.X;
-    pnxe->v->Pos.Y = a * (Y / Sum) + (1. - a) * pnxe->v->Pos.Y;
-    pnxe->v->Pos.Z = a * (Z / Sum) + (1. - a) * pnxe->v->Pos.Z;
-  }
-
-  double min_quality_new = 1.0;
-  for (i = 0; i < List_Nbr (pnxe->Liste); i++){
-    List_Read (pnxe->Liste, i, &s);
-    min_quality_new = DMIN (min_quality_new, s->GammaShapeMeasure ());
-  }
-  
-  double volume_after = 0.0;
-  for (i = 0; i < List_Nbr (pnxe->Liste); i++){
-    List_Read (pnxe->Liste, i, &s);
-    volume_after += s->Volume_Simplexe ();
-  }
-  if (fabs (volume_after - volume_before) > 1.e-8 * fabs (volume_after + volume_before)
-      || min_quality_old > min_quality_new){
-    pnxe->v->Pos.X = xold;
-    pnxe->v->Pos.Y = yold;
-    pnxe->v->Pos.Z = zold;
-  }
-  List_Delete(nodes);
-}
-
-
-void ActionLissSurf (void *data, void *dummy){
-  NXE *pnxe;
-  Simplex *s;
-  double X, Y, Z, Sum;
-  int i, j;
-
-  pnxe = (NXE *) data;
-
-  /*
-     On Ne Lisse Point Les Points sur les courbes
-   */
-  if (pnxe->v->ListCurves)
-    return;
-
-  X = Y = Z = Sum = 0.0;
-  for (i = 0; i < List_Nbr (pnxe->Liste); i++){
-    List_Read (pnxe->Liste, i, &s);
-    /*
-      On Ne Lisse Point Les Points sur les surfaces quand les
-      volumes sont mailles
-    */
-    for (j = 0; j < 4; j++){
-      if (s->V[j] && compareVertex (&pnxe->v, &s->V[j])){
-        Sum += 0.5;
-        X += s->V[j]->Pos.X * 0.5;
-        Y += s->V[j]->Pos.Y * 0.5;
-        Z += s->V[j]->Pos.Z * 0.5;
-      }
-    }
-  }
-  if (Sum != 0.0){
-    pnxe->v->Pos.X = X / Sum;
-    pnxe->v->Pos.Y = Y / Sum;
-    pnxe->v->Pos.Z = Z / Sum;
-  }
-}
-
-void RandomSwapEdges (Surface * s){
-  int i;
-  List_T *AllTrg = Tree2List (s->Simplexes);
-  Simplex *t;
-  for (i = 0; i < List_Nbr (AllTrg); i++){
-    List_Read (AllTrg, i, &t);
-    t->SwapEdge (1);
-  }
-}
diff --git a/Mesh/SwapEdge.cpp b/Mesh/SwapEdge.cpp
deleted file mode 100644
index 74b695638f71ab7dbfc84d4f336248d7e2283a50..0000000000000000000000000000000000000000
--- a/Mesh/SwapEdge.cpp
+++ /dev/null
@@ -1,304 +0,0 @@
-// $Id: SwapEdge.cpp,v 1.7 2001-08-11 23:28:32 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Mesh.h"
-#include "SwapPatterns.h"
-
-extern Simplex MyNewBoundary;
-extern int edges_tetra[6][2];
-
-
-int TrouveCoquille (Simplex * s, Vertex * Ed[2],
-                    List_T * Coquille, Tree_T * TreeSimpl,
-                    Vertex * Contour[100]){
-  Simplex *stack[256], *actual;
-  Vertex *other[2];
-  int K, i, N = 0;
-  List_T *Edges = List_Create (12, 2, sizeof (Edge));
-  Edge E;
-
-  stack[N++] = s;
-
-  while (N > 0){
-    actual = stack[--N];
-    if (!Tree_Search (TreeSimpl, &actual)){
-      Tree_Add (TreeSimpl, &actual);
-      if (actual->EdgeIn (Ed[0], Ed[1], other)){
-        List_Add (Coquille, &actual);
-        if (actual != s)
-          actual->Radius = -1.;
-        E.V[0] = other[0];
-        E.V[1] = other[1];
-        List_Add (Edges, &E);
-        for (i = 0; i < 4; i++){
-          if (actual->S[i] && actual->S[i] != &MyNewBoundary)
-            stack[N++] = actual->S[i];
-          else
-            return 0;
-        }
-      }
-    }
-  }
-
-  List_Read (Edges, 0, &E);
-  N = 0;
-  Contour[N++] = E.V[0];
-  Contour[N++] = E.V[1];
-  List_Suppress (Edges, &E, compareedge);
-  K = 0;
-
-  while (List_Nbr (Edges)){
-    if (K++ > Tree_Nbr (TreeSimpl))
-      return 0;
-    for (i = 0; i < List_Nbr (Edges); i++){
-      List_Read (Edges, i, &E);
-      if (!compareVertex (&Contour[N - 1], &E.V[0]) &&
-          compareVertex (&Contour[N - 2], &E.V[1])){
-        Contour[N++] = E.V[1];
-        List_Suppress (Edges, &E, compareedge);
-        break;
-      }
-      if (!compareVertex (&Contour[N - 1], &E.V[1]) &&
-          compareVertex (&Contour[N - 2], &E.V[0])){
-        Contour[N++] = E.V[0];
-        List_Suppress (Edges, &E, compareedge);
-        break;
-      }
-    }
-    
-  }
-  if (!compareVertex (&Contour[0], &Contour[N - 1]))
-    return N - 1;
-  return 0;
-}
-
-bool FindBestPattern (int N, Vertex * Contour[100], Vertex * Ed[2],
-                      List_T * Coquille, List_T * Pattern){
-  int i, j, k, kk, tri[3];
-  Simplex *s, *Pat[100];
-  double old_volume, new_volume;
-  double worst_tet_old, worst_tet_new;
-  bool stop = false;
-  SwapPattern *sp = NULL;
-  SwapPattern3 *x3;
-  SwapPattern4 *x4;
-  SwapPattern5 *x5;
-  SwapPattern6 *x6;
-  SwapPattern7 *x7;
-  SwapPatternN *xN;
-  switch (N){
-  case 3:
-    x3 = new SwapPattern3;
-    sp = x3;
-    break;
-  case 4:
-    x4 = new SwapPattern4;
-    sp = x4;
-    break;
-  case 5:
-    if (stop)
-      return false;
-    x5 = new SwapPattern5;
-    sp = x5;
-    break;
-  case 6:
-    if (stop)
-      return false;
-    x6 = new SwapPattern6;
-    sp = x6;
-    break;
-  case 7:
-    if (stop)
-      return false;
-    x7 = new SwapPattern7;
-    sp = x7;
-    break;
-  default:
-    if (stop)
-      return false;
-    xN = new SwapPatternN (N);
-    sp = xN;
-    break;
-  }
-
-  old_volume = 0.0;
-  worst_tet_old = 1.;
-  int IENT;
-  for (k = 0; k < List_Nbr (Coquille); k++){
-    List_Read (Coquille, k, &s);
-    IENT = s->iEnt;
-    old_volume += fabs (s->Volume_Simplexe ());
-    worst_tet_old = DMIN (worst_tet_old, s->GammaShapeMeasure ());
-  }
-
-  for (i = 0; i < sp->GetNbPatterns (); i++){
-    for (j = 0; j < sp->GetNbRotations (i); j++){
-      new_volume = 0.;
-      worst_tet_new = 1.;
-      kk = 0;
-      for (k = 0; k < sp->GetNbTriangles (); k++){
-        sp->GetTriangle (i, k, tri);
-        s = Create_Simplex (Contour[tri[0]],
-                            Contour[tri[1]],
-                            Contour[tri[2]],
-                            Ed[0]);
-        s->iEnt = IENT;
-        Pat[kk++] = s;
-        new_volume += fabs (s->Volume_Simplexe ());
-        worst_tet_new = DMIN (worst_tet_new, s->GammaShapeMeasure ());
-        s = Create_Simplex (Contour[tri[0]],
-                            Contour[tri[1]],
-                            Contour[tri[2]],
-                            Ed[1]);
-        s->iEnt = IENT;
-        Pat[kk++] = s;
-        new_volume += fabs (s->Volume_Simplexe ());
-        worst_tet_new = DMIN (worst_tet_new, s->GammaShapeMeasure ());
-      }
-      if (fabs (new_volume - old_volume) > 1.e-5 * fabs (new_volume + old_volume))
-        Msg(WARNING, "Edge swapping failed");
-      if (fabs (new_volume - old_volume) > 1.e-5 * fabs (new_volume + old_volume)
-          || worst_tet_new < worst_tet_old){
-        for (k = 0; k < 2 * sp->GetNbTriangles (); k++){
-          delete Pat[k];
-        }
-      }
-      else{
-        for (k = 0; k < List_Nbr (Pattern); k++){
-          List_Read (Pattern, k, &s);
-          delete s;
-        }
-        List_Reset (Pattern);
-        for (k = 0; k < 2 * sp->GetNbTriangles (); k++){
-          List_Add (Pattern, &Pat[k]);
-        }
-        worst_tet_old = worst_tet_new;
-      }
-    }
-  }
-  
-  delete sp;
-  return true ;
-}
-
-
-bool SwapEdge (Mesh * M, Volume * v, Simplex * s, int iEdge){
-  int i;
-  Vertex *Contour[100];
-  Vertex *Ed[2];
-  Simplex *simp;
-  Tree_T *TreeSimpl = Tree_Create (sizeof (Simplex *), compareSimplex);
-  List_T *Coquille = List_Create (10, 10, sizeof (Simplex *));
-  Ed[0] = s->V[edges_tetra[iEdge][0]];
-  Ed[1] = s->V[edges_tetra[iEdge][1]];
-  int N = TrouveCoquille (s, Ed, Coquille, TreeSimpl, Contour);
-
-  List_T *Pattern = List_Create (2 * N - 4, 1, sizeof (Simplex *));
-
-  FindBestPattern (N, Contour, Ed, Coquille, Pattern);
-
-  if (List_Nbr (Pattern)){
-    for (i = 0; i < List_Nbr (Coquille); i++){
-      List_Read (Coquille, i, &simp);
-      Tree_Suppress (v->Simplexes, &simp);
-      Tree_Suppress (TreeSimpl, &simp);
-    }
-    for (i = 0; i < List_Nbr (Pattern); i++){
-      List_Read (Pattern, i, &simp);
-      Tree_Add (v->Simplexes, &simp);
-      Tree_Add (TreeSimpl, &simp);
-    }
-    Link_Simplexes (NULL, TreeSimpl /*v->Simplexes */ );
-  }
-  Tree_Delete (TreeSimpl);
-  List_Delete (Coquille);
-  List_Delete (Pattern);
-  return true ;
-}
-
-int GetWorstEdge (Simplex * s, EdgesContainer & ec, bool order){
-  Vertex *v11, *v12;
-  Vertex *v21, *v22;
-  v11 = s->V[edges_tetra[0][0]];
-  v12 = s->V[edges_tetra[0][1]];
-  v21 = s->V[edges_tetra[4][0]];
-  v22 = s->V[edges_tetra[4][1]];
-  Vertex d11 = *(v12) - *(v11);
-  Vertex d12 = *(v22) - *(v21);
-  d12.norme ();
-  d11.norme ();
-  double prosc1 = fabs (d11 * d12);
-
-  v11 = s->V[edges_tetra[1][0]];
-  v12 = s->V[edges_tetra[1][1]];
-  v21 = s->V[edges_tetra[3][0]];
-  v22 = s->V[edges_tetra[3][1]];
-  Vertex d21 = *(v12) - *(v11);
-  Vertex d22 = *(v22) - *(v21);
-  d22.norme ();
-  d21.norme ();
-  double prosc2 = fabs (d21 * d22);
-
-  v11 = s->V[edges_tetra[2][0]];
-  v12 = s->V[edges_tetra[2][1]];
-  v21 = s->V[edges_tetra[5][0]];
-  v22 = s->V[edges_tetra[5][1]];
-  Vertex d31 = *(v12) - *(v11);
-  Vertex d32 = *(v22) - *(v21);
-  d32.norme ();
-  d31.norme ();
-  double prosc3 = fabs (d31 * d32);
-
-  if (prosc1 < prosc2 && prosc1 < prosc3){
-    if (!order && !ec.Search (s->V[edges_tetra[0][0]], s->V[edges_tetra[0][1]]))
-      return 0;
-    if (!ec.Search (s->V[edges_tetra[4][0]], s->V[edges_tetra[4][1]]))
-      return 4;
-    if (!ec.Search (s->V[edges_tetra[0][0]], s->V[edges_tetra[0][1]]))
-      return 0;
-    return -1;
-  }
-  if (prosc2 < prosc1 && prosc2 < prosc3){
-    if (!order && !ec.Search (s->V[edges_tetra[1][0]], s->V[edges_tetra[1][1]]))
-      return 1;
-    if (!ec.Search (s->V[edges_tetra[3][0]], s->V[edges_tetra[3][1]]))
-      return 3;
-    if (!ec.Search (s->V[edges_tetra[1][0]], s->V[edges_tetra[1][1]]))
-      return 1;
-    return -1;
-  }
-  if (prosc3 < prosc2 && prosc3 < prosc1){
-    if (!order && !ec.Search (s->V[edges_tetra[2][0]], s->V[edges_tetra[2][1]]))
-      return 2;
-    if (!ec.Search (s->V[edges_tetra[5][0]], s->V[edges_tetra[5][1]]))
-      return 5;
-    if (!ec.Search (s->V[edges_tetra[2][0]], s->V[edges_tetra[2][1]]))
-      return 2;
-    return -1;
-  }
-  return -1;
-}
-
-void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order){
-  List_T *list = Tree2List (v->Simplexes);
-  List_T *srfs = Tree2List (M->Surfaces);
-  if (!List_Nbr (srfs))
-    return;
-  EdgesContainer ec (srfs);
-  Simplex *s;
-  Progress (102);
-  for (int i = 0; i < List_Nbr (list); i++){
-    if (i % 100 == 1)
-      Progress ((100 * i) / List_Nbr (list));
-    List_Read (list, i, &s);
-    if (s->GammaShapeMeasure () < GammaPrescribed){
-      int iEdge = GetWorstEdge (s, ec, order);
-      if (iEdge >= 0)
-        SwapEdge (M, v, s, iEdge);
-    }
-  }
-  Progress (-1);
-  List_Delete (srfs);
-  List_Delete (list);
-}
diff --git a/Mesh/SwapPatterns.h b/Mesh/SwapPatterns.h
deleted file mode 100644
index db379bdf2b670add6bc229b8cc3342952d7f83b5..0000000000000000000000000000000000000000
--- a/Mesh/SwapPatterns.h
+++ /dev/null
@@ -1,203 +0,0 @@
-#ifndef _SWAP_PATTERNS_H_
-#define _SWAP_PATTERNS_H_
-
-int swap_patterns_3 [1][1][3] = {
-  {
-    {0,1,2}
-  }
-};
-
-int swap_patterns_4 [1][2][3] = {
-  {
-    {0,1,3},
-    {1,2,3}
-  }
-};
-
-int swap_patterns_5 [1][3][3] = {
-  {
-    {0,1,2},
-    {0,2,4},
-    {2,3,4}
-  }
-};
-
-int swap_patterns_6 [4][4][3] = {
-  {
-    {0,1,2},
-    {0,2,5},
-    {5,2,4},
-    {4,2,3}
-  },
-  {
-    {0,1,2},
-    {0,2,3},
-    {5,2,3},
-    {5,3,4}
-  },
-  {
-    {0,1,5},
-    {5,1,2},
-    {5,2,4},
-    {4,2,3}
-  },
-  {
-    {0,1,2},
-    {4,0,2},
-    {4,2,3},
-    {0,4,5}
-  }
-};
-
-int swap_patterns_7 [6][5][3] = {
-  {
-    {0,1,3},
-    {1,2,3},
-    {0,3,6},
-    {6,3,5},
-    {5,3,4}
-  },
-  {
-    {0,1,3},
-    {1,2,3},
-    {0,3,4},
-    {0,4,6},
-    {6,4,5}
-  },
-  {
-    {0,1,3},
-    {1,2,3},
-    {0,3,6},
-    {6,3,4},
-    {6,4,5}
-  },
-  {
-    {0,1,2},
-    {0,2,3},
-    {0,3,6},
-    {6,3,5},
-    {5,3,4}
-  },
-  {
-    {0,1,6},
-    {1,2,3},
-    {6,1,3},
-    {6,3,5},
-    {5,3,4}
-  },
-  {
-    {0,1,3},
-    {1,2,3},
-    {0,3,5},
-    {5,3,4},
-    {0,5,6}
-  }
-};
-
-
-class SwapPattern{
-protected :
-  int NbPatterns;
-  int NbNod;
-  int Rot;
-  virtual void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3])=0;
-public :
-  SwapPattern(){Rot = 0;}
-  int GetNbPatterns() {return NbPatterns;}
-  virtual int GetNbRotations(int iPattern) = 0;
-  int GetNbTriangles(){return NbNod-2;}
-  void GetTriangle(int iPattern, int iTriangle,int tri[3]){
-    GetTriangleWithoutRot(iPattern,iTriangle,tri);
-    for(int i=0;i<3;i++){
-      tri[i] = (tri[i]+Rot)%NbNod;
-    }
-  }
-  void Rotate (){Rot++;};
-};
-
-class SwapPattern3 : public SwapPattern{
-  void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3]){
-    tri[0] = swap_patterns_3[iPattern][iTriangle][0];
-    tri[1] = swap_patterns_3[iPattern][iTriangle][1];
-    tri[2] = swap_patterns_3[iPattern][iTriangle][2];
-  }
-public :
-  SwapPattern3(){NbPatterns = 1;NbNod = 3;}
-  int GetNbRotations (int iPattern){
-    return 1;
-  };
-};
-
-class SwapPattern4 : public SwapPattern{
-  void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3]){
-    tri[0] = swap_patterns_4[iPattern][iTriangle][0];
-    tri[1] = swap_patterns_4[iPattern][iTriangle][1];
-    tri[2] = swap_patterns_4[iPattern][iTriangle][2];
-  }
-public :
-  SwapPattern4(){NbPatterns = 1;NbNod = 4;}
-  int GetNbRotations (int iPattern){
-    return 2;
-  };
-};
-
-class SwapPattern5 : public SwapPattern{
-  void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3]){
-    tri[0] = swap_patterns_5[iPattern][iTriangle][0];
-    tri[1] = swap_patterns_5[iPattern][iTriangle][1];
-    tri[2] = swap_patterns_5[iPattern][iTriangle][2];
-  }
-public :
-  SwapPattern5(){NbPatterns = 1;NbNod = 5;}
-  int GetNbRotations (int iPattern){
-    return 5;
-  };
-};
-
-class SwapPattern6 : public SwapPattern{
-  void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3]){
-    tri[0] = swap_patterns_6[iPattern][iTriangle][0];
-    tri[1] = swap_patterns_6[iPattern][iTriangle][1];
-    tri[2] = swap_patterns_6[iPattern][iTriangle][2];
-  }
-public :
-  SwapPattern6(){NbPatterns = 4;NbNod = 6;}
-  int GetNbRotations (int iPattern){
-    switch(iPattern){
-    case 0:return 6;
-    case 1:return 3;
-    case 2:return 3;
-    case 3:return 2;
-    default: return 0;
-    }
-  }
-};
-
-class SwapPattern7 : public SwapPattern{
-  void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3]){
-    tri[0] = swap_patterns_7[iPattern][iTriangle][0];
-    tri[1] = swap_patterns_7[iPattern][iTriangle][1];
-    tri[2] = swap_patterns_7[iPattern][iTriangle][2];
-  }
-public :
-  SwapPattern7(){NbPatterns = 6;NbNod = 7;}
-  int GetNbRotations (int iPattern){
-    return 7;
-  }
-};
-
-class SwapPatternN : public SwapPattern{
-  void GetTriangleWithoutRot(int iPattern, int iTriangle,int tri[3]){
-    tri[0] = 0;
-    tri[1] = iTriangle+1;
-    tri[2] = iTriangle+2;
-  }
-public :
-  SwapPatternN(int N){NbPatterns = 1;NbNod = N;}
-  int GetNbRotations (int iPattern){
-    return 8;
-  }
-};
-
-
-#endif
diff --git a/Mesh/Utils.cpp b/Mesh/Utils.cpp
deleted file mode 100644
index 7c0deec3f3dad83feaafa8f64f82be2558d218f7..0000000000000000000000000000000000000000
--- a/Mesh/Utils.cpp
+++ /dev/null
@@ -1,606 +0,0 @@
-// $Id: Utils.cpp,v 1.2 2001-08-12 20:45:58 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Mesh.h"
-#include "Interpolation.h"
-#include "nrutil.h"
-#include "Context.h"
-
-extern Context_T CTX;
-
-void direction (Vertex * v1, Vertex * v2, double d[3]){
-  d[0] = v2->Pos.X - v1->Pos.X;
-  d[1] = v2->Pos.Y - v1->Pos.Y;
-  d[2] = v2->Pos.Z - v1->Pos.Z;
-}
-
-void Projette (Vertex * v, double mat[3][3]){
-  double X, Y, Z;
-
-  X = v->Pos.X * mat[0][0] + v->Pos.Y * mat[0][1] + v->Pos.Z * mat[0][2];
-  Y = v->Pos.X * mat[1][0] + v->Pos.Y * mat[1][1] + v->Pos.Z * mat[1][2];
-  Z = v->Pos.X * mat[2][0] + v->Pos.Y * mat[2][1] + v->Pos.Z * mat[2][2];
-  v->Pos.X = X;
-  v->Pos.Y = Y;
-  v->Pos.Z = Z;
-}
-
-void MeanPlane(List_T *points, Surface *s){
-  int       i, j, ix, iy, iz, N;
-  double    det,sys[3][3],b[3],res[3],mod,t1[3],t2[3],ex[3],s2s[2][2],r2[2],X,Y,Z;
-  Vertex   *v;
-
-  N = List_Nbr (points);
-
-  for (i = 0; i < 3; i++){
-    b[i] = 0.0;
-    for (j = 0; j < 3; j++){
-      sys[i][j] = 0.0;
-    }
-  }
-
-  /* ax + by + cz = 1 */
-
-  ix = iy = iz = 0;
-
-  // TOLERANCE ! WARNING WARNING
-  double eps = 1.e-6 * CTX.lc;
-
-  for (i = 0; i < N; i++){
-    List_Read (points, i, &v);
-
-    if (!i){
-      X = v->Pos.X;
-      Y = v->Pos.Y;
-      Z = v->Pos.Z;
-    }
-    else{
-      if(fabs(X-v->Pos.X) > eps) ix = 1;
-      if(fabs(Y-v->Pos.Y) > eps) iy = 1;
-      if(fabs(Z-v->Pos.Z) > eps) iz = 1;
-    }
-    
-    sys[0][0] += v->Pos.X * v->Pos.X;
-    sys[1][1] += v->Pos.Y * v->Pos.Y;
-    sys[2][2] += v->Pos.Z * v->Pos.Z;
-    sys[0][1] += v->Pos.X * v->Pos.Y;
-    sys[0][2] += v->Pos.X * v->Pos.Z;
-    sys[1][2] += v->Pos.Y * v->Pos.Z;
-    sys[2][1] = sys[1][2];
-    sys[1][0] = sys[0][1];
-    sys[2][0] = sys[0][2];
-    b[0] += v->Pos.X;
-    b[1] += v->Pos.Y;
-    b[2] += v->Pos.Z;
-  }
-
-  s->d = 1.0;
-
-  /* x = X */
-
-  if (!ix){
-    s->d = X;
-    res[0] = 1.;
-    res[1] = res[2] = 0.0;
-    Msg(DEBUG, "Mean plane of type 'x = c'");
-  }
-
-  /* y = Y */
-
-  else if (!iy){
-    s->d = Y;
-    res[1] = 1.;
-    res[0] = res[2] = 0.0;
-    Msg(DEBUG, "Mean plane of type 'y = c'");
-  }
-
-  /* z = Z */
-
-  else if (!iz){
-    s->d = Z;
-    res[2] = 1.;
-    res[1] = res[0] = 0.0;
-    Msg(DEBUG, "Mean plane of type 'z = c'");
-  }
-
-  /* by + cz = -x */
-
-  else if (!sys3x3_with_tol (sys, b, res, &det)){
-    s->d = 0.0;
-    s2s[0][0] = sys[1][1];
-    s2s[0][1] = sys[1][2];
-    s2s[1][0] = sys[1][2];
-    s2s[1][1] = sys[2][2];
-    b[0] = -sys[0][1];
-    b[1] = -sys[0][2];
-    if (sys2x2 (s2s, b, r2)){
-      res[0] = 1.;
-      res[1] = r2[0];
-      res[2] = r2[1];
-      Msg(DEBUG, "Mean plane of type 'by + cz = -x'");
-    }
-
-    /* ax + cz = -y */
-    
-    else{
-      s->d = 0.0;
-      s2s[0][0] = sys[0][0];
-      s2s[0][1] = sys[0][2];
-      s2s[1][0] = sys[0][2];
-      s2s[1][1] = sys[2][2];
-      b[0] = -sys[0][1];
-      b[1] = -sys[1][2];
-      if (sys2x2 (s2s, b, r2)){
-        res[0] = r2[0];
-        res[1] = 1.;
-        res[2] = r2[1];
-        Msg(DEBUG, "Mean plane of type 'ax + cz = -y'");
-      }
-      
-      /* ax + by = -z */
-      
-      else{
-        s->d = 1.0;
-        s2s[0][0] = sys[0][0];
-        s2s[0][1] = sys[0][1];
-        s2s[1][0] = sys[0][1];
-        s2s[1][1] = sys[1][1];
-        b[0] = -sys[0][2];
-        b[1] = -sys[1][2];
-        if (sys2x2 (s2s, b, r2)){
-          res[0] = r2[0];
-          res[1] = r2[1];
-          res[2] = 1.;
-          Msg(DEBUG, "Mean plane of type 'ax + by = -z'");
-        }
-        else{
-          Msg(GERROR, "Problem in mean plane computation");
-        }
-      }
-    }
-  }
-
-  s->a = res[0];
-  s->b = res[1];
-  s->c = res[2];
-  mod = sqrt (res[0] * res[0] + res[1] * res[1] + res[2] * res[2]);
-  for (i = 0; i < 3; i++)
-    res[i] /= mod;
-
-  /* L'axe n'est pas l'axe des x */
-
-  ex[0] = ex[1] = ex[2] = 0.0;
-  if(res[0] == 0.0)
-    ex[0] = 1.0;
-  else if(res[1] == 0.0)
-    ex[1] = 1.0;
-  else
-    ex[2] = 1.0;
-
-  prodve (res, ex, t1);
-
-  mod = sqrt (t1[0] * t1[0] + t1[1] * t1[1] + t1[2] * t1[2]);
-  for (i = 0; i < 3; i++)
-    t1[i] /= mod;
-
-  prodve (t1, res, t2);
-
-  mod = sqrt (t2[0] * t2[0] + t2[1] * t2[1] + t2[2] * t2[2]);
-  for (i = 0; i < 3; i++)
-    t2[i] /= mod;
-
-  for (i = 0; i < 3; i++)
-    s->plan[0][i] = t1[i];
-  for (i = 0; i < 3; i++)
-    s->plan[1][i] = t2[i];
-  for (i = 0; i < 3; i++)
-    s->plan[2][i] = res[i];
-
-  Msg(DEBUG1, "Plane  : (%g x + %g y + %g z = %g)", s->a, s->b, s->c, s->d);
-  Msg(DEBUG2, "Normal : (%g , %g , %g )", res[0], res[1], res[2]);
-  Msg(DEBUG2, "t1     : (%g , %g , %g )", t1[0], t1[1], t1[2]);
-  Msg(DEBUG3, "t2     : (%g , %g , %g )", t2[0], t2[1], t2[2]);
-
-  /* Matrice orthogonale */
-
-  if (!iz){
-    for (i = 0; i < 3; i++){
-      for (j = 0; j < 3; j++){
-        s->invplan[i][j] = (i == j) ? 1. : 0.;
-        s->plan[i][j] = (i == j) ? 1. : 0.;
-      }
-    }
-  }
-  else{
-    for (i = 0; i < 3; i++){
-      for (j = 0; j < 3; j++){
-        s->invplan[i][j] = s->plan[j][i];
-      }
-    }
-  }
-
-
-// this is the end of the algo as it was used for surface drawing:
-
-#if 0
-  /* L'axe n'est pas l'axe des x */
-  if(res[0] > res[1]){
-    ex[0] = 0.;
-    ex[1] = 1.;
-    ex[2] = 0.;
-  }
-  else{
-    ex[0] = 1.;
-    ex[1] = 0.;
-    ex[2] = 0.;
-  }
-  
-  prodve(res,ex,t1);
-  
-  mod = sqrt (t1[0] * t1[0] + t1[1] * t1[1] + t1[2] * t1[2] ) ;
-  for(i=0;i<3;i++) t1[i]/=mod;
-
-  prodve(t1,res,t2);
-
-  mod = sqrt (t2[0] * t2[0] + t2[1] * t2[1] + t2[2] * t2[2] ) ;
-  for(i=0;i<3;i++) t2[i]/=mod;
-
-  for(i=0;i<3;i++)s->plan[0][i] = t1[i];
-  for(i=0;i<3;i++)s->plan[1][i] = t2[i];
-  for(i=0;i<3;i++)s->plan[2][i] = res[i];
-
-  /* Matrice orthogonale */
-
-  for(i=0;i<3;i++){
-    for(j=0;j<3;j++){
-      s->invplan[i][j] = s->plan[j][i];
-    }
-  }
-#endif
-}
-
-
-
-#define  Precision 1.e-10
-#define  MaxIter 20
-
-void find_bestuv (Surface * s, double X, double Y,
-                  double *U, double *V, double *Z, int N){
-  double d, mina, min, minu, minv, Unew, Vnew;
-  static int i, j;
-  Vertex P;
-
-  d = 1. / (double) N;
-
-  for (i = 0; i <= N; i++){
-    for (j = 0; j <= N; j++){
-      Unew = ((double) i) * d;
-      Vnew = ((double) j) * d;
-      P = InterpolateSurface (s, Unew, Vnew, 0, 0);
-      if (!i && !j){
-        min = myhypot (X - P.Pos.X, Y - P.Pos.Y);
-        minu = Unew;
-        minv = Vnew;
-        *Z = P.Pos.Z;
-      }
-      else{
-        if ((mina = myhypot (X - P.Pos.X, Y - P.Pos.Y)) < min){
-          min = mina;
-          minu = Unew;
-          minv = Vnew;
-          *Z = P.Pos.Z;
-        }
-      }
-    }
-  }
-  *U = minu;
-  *V = minv;
-}
-
-void invert_singular_matrix(double **M, int n, double **I);
-
-void XYZtoUV (Surface *s, double X, double Y, double Z, double *U, double *V) {
-  double Unew,Vnew,err;
-  int    iter;
-  Vertex D_u,D_v,P;
-  double **mat, **jac ;
-
-  mat = dmatrix(1,3,1,3);
-  jac = dmatrix(1,3,1,3);
-
-  *U = *V = 0.487;
-  err = 1.0;
-  iter = 1;    
-
-  while ( err > Precision && iter < MaxIter ){
-    P   = InterpolateSurface(s, *U, *V, 0, 0);
-    D_u = InterpolateSurface(s, *U, *V, 1, 1);
-    D_v = InterpolateSurface(s, *U, *V, 1, 2);
-
-    mat[1][1] = D_u.Pos.X; 
-    mat[1][2] = D_u.Pos.Y; 
-    mat[1][3] = D_u.Pos.Z; 
-    mat[2][1] = D_v.Pos.X; 
-    mat[2][2] = D_v.Pos.Y; 
-    mat[2][3] = D_v.Pos.Z; 
-    mat[3][1] = 0.; 
-    mat[3][2] = 0.; 
-    mat[3][3] = 0.; 
-    invert_singular_matrix(mat,3,jac);
-
-    Unew = *U + jac[1][1] * (X-P.Pos.X) + jac[2][1] * (Y-P.Pos.Y) + jac[3][1] * (Z-P.Pos.Z) ;
-    Vnew = *V + jac[1][2] * (X-P.Pos.X) + jac[2][2] * (Y-P.Pos.Y) + jac[3][2] * (Z-P.Pos.Z) ;
-
-    err = DSQR(Unew - *U) + DSQR(Vnew - *V) ;
-
-    iter++;    
-    *U = Unew;
-    *V = Vnew;
-  }
-
-  if(iter > 10){
-    if(iter == MaxIter) Msg(WARNING, "Could not converge in XYZtoUV");
-    else Msg(WARNING, "Many (%d) iterations in XYZtoUV", iter);
-  }
-
-  free_dmatrix(mat,1,3,1,3);
-  free_dmatrix(jac,1,3,1,3);
-
-}
-
-void XYtoUV (Surface * s, double *X, double *Y,
-             double *U, double *V, double *Z){
-
-  double det, Unew, Vnew, err, mat[2][2], jac[2][2];
-  int iter;
-  Vertex D_u, D_v, P;
-  double umin, umax, vmin, vmax;
-
-  if (s->Typ == MSH_SURF_NURBS){
-    umin = s->ku[0];
-    umax = s->ku[s->OrderU + s->Nu];
-    vmin = s->kv[0];
-    vmax = s->kv[s->OrderV + s->Nv];
-  }
-  else{
-    umin = vmin = 0.0;
-    umax = vmax = 1.0;
-  }
-
-  *U = *V = 0.487;
-  err = 1.0;
-  iter = 1;
-
-  while (err > Precision && iter < MaxIter){
-    P = InterpolateSurface (s, *U, *V, 0, 0);
-    D_u = InterpolateSurface (s, *U, *V, 1, 1);
-    D_v = InterpolateSurface (s, *U, *V, 1, 2);
-    mat[0][0] = D_u.Pos.X;
-    mat[0][1] = D_u.Pos.Y;
-    mat[1][0] = D_v.Pos.X;
-    mat[1][1] = D_v.Pos.Y;
-    det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
-    
-    if (det == 0.0){
-      iter = MaxIter;
-      break;
-    }
-
-    jac[0][0] = mat[1][1] / det;
-    jac[0][1] = -mat[0][1] / det;
-    jac[1][0] = -mat[1][0] / det;
-    jac[1][1] = mat[0][0] / det;
-    
-    Unew = *U + 1.0 * (jac[0][0] * (*X - P.Pos.X) + jac[1][0] * (*Y - P.Pos.Y));
-    Vnew = *V + 1.0 * (jac[0][1] * (*X - P.Pos.X) + jac[1][1] * (*Y - P.Pos.Y));
-    
-    err = DSQR (Unew - *U) + DSQR (Vnew - *V);
-    
-    iter++;
-    *U = Unew;
-    *V = Vnew;
-  }
-  
-  *Z = P.Pos.Z;
-
-  if(iter > 10){
-    if(iter == MaxIter) Msg(WARNING, "Could not converge in XYtoUV");
-    else Msg(WARNING, "Many (%d) iterations in XYtoUV...", iter);
-  }
-
-  if (Unew > umax || Vnew > vmax || Unew < umin || Vnew < vmin){
-    Msg(WARNING, "(U,V) thresholded in XYtoUV (surface mesh may be wrong)");
-    if(Unew > umax) *U = umax;
-    if(Vnew > vmax) *V = vmax;
-    if(Unew < umin) *U = umin;
-    if(Vnew < vmin) *V = vmin;
-  }
-
-#if 0
-  if (iter == MaxIter || Unew > umax || Vnew > vmax || Unew < umin || Vnew < vmin){
-    static int first_try=1;
-    if(first_try){
-      Msg(WARNING, "Entering rescue mode in XYtoUV...");
-      first_try=0;
-    }
-    find_bestuv (s, *X, *Y, U, V, Z, 30);
-    P = InterpolateSurface (s, *U, *V, 0, 0);
-    
-    *X = P.Pos.X;
-    *Y = P.Pos.Y;
-    *Z = P.Pos.Z;
-  }
-#endif
-}
-
-int Oriente (List_T * cu, double n[3]){
-  int N, i, a, b, c;
-  double cosa, sina, sum, v[3], w[3], u[3];
-  Vertex *ver[3];
-
-  N = List_Nbr (cu);
-
-  sum = 0.0;
-  for (i = 0; i < N; i++){
-    if (i == N - 1){
-      a = N - 1;
-      b = 1;
-      c = 2;
-    }
-    else if (i == N - 2){
-      a = N - 2;
-      b = N - 1;
-      c = 1;
-    }
-    else{
-      a = i;
-      b = i + 1;
-      c = i + 2;
-    }
-    List_Read (cu, a, &ver[0]);
-    List_Read (cu, b, &ver[1]);
-    List_Read (cu, c, &ver[2]);
-    
-    u[0] = ver[1]->Pos.X - ver[0]->Pos.X;
-    u[1] = ver[1]->Pos.Y - ver[0]->Pos.Y;
-    u[2] = ver[1]->Pos.Z - ver[0]->Pos.Z;
-    
-    v[0] = ver[2]->Pos.X - ver[1]->Pos.X;
-    v[1] = ver[2]->Pos.Y - ver[1]->Pos.Y;
-    v[2] = ver[2]->Pos.Z - ver[1]->Pos.Z;
-    norme (u);
-    norme (v);
-    prodve (u, v, w);
-    prosca (w, n, &sina);
-    prosca (u, v, &cosa);
-    sum += myatan2 (sina, cosa);
-  }
-
-  if (sum < 0)
-    return (1);
-  else
-    return (0);
-}
-
-double angle_3p (Vertex * V, Vertex * P1, Vertex * P2){
-  double PA[3], PB[3], angplan;
-  double cosc, sinc, c[3];
-
-  PA[0] = P1->Pos.X - V->Pos.X;
-  PA[1] = P1->Pos.Y - V->Pos.Y;
-  PA[2] = P1->Pos.Z - V->Pos.Z;
-
-  PB[0] = P2->Pos.X - V->Pos.X;
-  PB[1] = P2->Pos.Y - V->Pos.Y;
-  PB[2] = P2->Pos.Z - V->Pos.Z;
-
-  norme (PA);
-  norme (PB);
-
-  prodve (PA, PB, c);
-
-  prosca (PA, PB, &cosc);
-  sinc = sqrt (c[0] * c[0] + c[1] * c[1] + c[2] * c[2]);
-
-  angplan = myatan2 (sinc, cosc);
-
-  return angplan;
-}
-
-double angle_plan (Vertex * V, Vertex * P1, Vertex * P2, double n[3]){
-  double PA[3], PB[3], angplan;
-  double cosc, sinc, c[3];
-
-  PA[0] = P1->Pos.X - V->Pos.X;
-  PA[1] = P1->Pos.Y - V->Pos.Y;
-  PA[2] = P1->Pos.Z - V->Pos.Z;
-
-  PB[0] = P2->Pos.X - V->Pos.X;
-  PB[1] = P2->Pos.Y - V->Pos.Y;
-  PB[2] = P2->Pos.Z - V->Pos.Z;
-
-  norme (PA);
-  norme (PB);
-
-  prodve (PA, PB, c);
-
-  prosca (PA, PB, &cosc);
-  prosca (c, n, &sinc);
-
-  angplan = myatan2 (sinc, cosc);
-
-  return angplan;
-}
-
-double angle_3pts (Vertex * a, Vertex * b, Vertex * c){
-  double L, prosca, angle;
-
-  L = myhypot ((a->Pos.X - b->Pos.X), (a->Pos.Y - b->Pos.Y)) *
-    myhypot ((b->Pos.X - c->Pos.X), (b->Pos.Y - c->Pos.Y));
-
-  prosca = ((a->Pos.X - b->Pos.X) * (c->Pos.X - b->Pos.X) +
-            (a->Pos.Y - b->Pos.Y) * (c->Pos.Y - b->Pos.Y)) / L;
-
-  angle = acos (prosca) * 180. / Pi ;
-  return (angle);
-}
-
-double trapeze (IntPoint * P1, IntPoint * P2){
-  return (0.5 * (P1->lc + P2->lc) * (P2->t - P1->t));
-}
-
-
-void RecursiveIntegration (IntPoint * from, IntPoint * to, double (*f) (double X),
-                           List_T * pPoints, double Prec, int *depth){
-  IntPoint P, p1;
-  double err, val1, val2, val3;
-
-  (*depth)++;
-
-  P.t = 0.5 * (from->t + to->t);
-  P.lc = f (P.t);
-
-  val1 = trapeze (from, to);
-  val2 = trapeze (from, &P);
-  val3 = trapeze (&P, to);
-
-  err = fabs (val1 - val2 - val3);
-
-  if ((err < Prec) && (*depth > 1)){
-    List_Read (pPoints, List_Nbr (pPoints) - 1, &p1);
-    P.p = p1.p + val2;
-    List_Add (pPoints, &P);
-    
-    List_Read (pPoints, List_Nbr (pPoints) - 1, &p1);
-    to->p = p1.p + val3;
-    List_Add (pPoints, to);
-  }
-  else{
-    RecursiveIntegration (from, &P, f, pPoints, Prec, depth);
-    RecursiveIntegration (&P, to, f, pPoints, Prec, depth);
-  }
-  (*depth)--;
-}
-
-double Integration (double t1, double t2, double (*f) (double X),
-                    List_T * pPoints, double Prec){
-  int depth;
-  IntPoint from, to;
-
-  depth = 0;
-
-  from.t = t1;
-  from.lc = f(from.t);
-  from.p = 0.0;
-  List_Add (pPoints, &from);
-
-  to.t = t2;
-  to.lc = f(to.t);
-  RecursiveIntegration (&from, &to, f, pPoints, Prec, &depth);
-  
-  List_Read (pPoints, List_Nbr (pPoints) - 1, &to);
-  return (to.p);
-}
diff --git a/Mesh/Utils.h b/Mesh/Utils.h
deleted file mode 100644
index 12c5a589c0b7dd4a2245427f1b6d2c647e0907af..0000000000000000000000000000000000000000
--- a/Mesh/Utils.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _UTILS_H_
-#define _UTILS_H_
-
-void direction (Vertex * v1, Vertex * v2, double d[3]);
-void Projette (Vertex * v, double mat[3][3]);
-void MeanPlane(List_T *point, Surface *s);
-void find_bestuv (Surface * s, double X, double Y,
-                  double *U, double *V, double *Z, int N);
-void XYtoUV (Surface * s, double *X, double *Y,
-             double *U, double *V, double *Z);
-void XYZtoUV (Surface *s, double X, double Y, double Z, double *U, double *V);
-int Oriente (List_T * cu, double n[3]);
-double angle_3p (Vertex * V, Vertex * P1, Vertex * P2);
-double angle_plan (Vertex * V, Vertex * P1, Vertex * P2, double n[3]);
-double angle_3pts (Vertex * a, Vertex * b, Vertex * c);
-double trapeze (IntPoint * P1, IntPoint * P2);
-void RecursiveIntegration (IntPoint * from, IntPoint * to, double (*f) (double X),
-                           List_T * pPoints, double Prec, int *depth);
-double Integration (double t1, double t2, double (*f) (double X),
-                    List_T * pPoints, double Prec);
-
-#endif
diff --git a/Mesh/Vertex.cpp b/Mesh/Vertex.cpp
deleted file mode 100644
index d3397144de00be9eee0fd1572880dedc3d1c041d..0000000000000000000000000000000000000000
--- a/Mesh/Vertex.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-// $Id: Vertex.cpp,v 1.8 2001-06-06 15:30:18 remacle Exp $
-
-#include "Gmsh.h"
-#include "Vertex.h"
-#include "Context.h"
-
-extern Context_T CTX ;
-
-Vertex::Vertex (){
-  Frozen = 0;
-  Pos.X = 0.0;
-  Pos.Y = 0.0;
-  Pos.Z = 0.0;
-  lc = 1.0;
-  Mov = NULL;
-  ListSurf = ListCurves = Extruded_Points = NULL;
-}
-
-Vertex::Vertex (double X, double Y, double Z, double l, double W){
-  Frozen = 0;
-  Pos.X = X;
-  Pos.Y = Y;
-  Pos.Z = Z;
-  w = W;
-  lc = l;
-  Mov = NULL;
-  ListSurf = ListCurves = Extruded_Points = NULL;
-}
-
-void Vertex::norme (){
-  double d = sqrt (Pos.X * Pos.X + Pos.Y * Pos.Y + Pos.Z * Pos.Z);
-  if (d == 0.0)
-    return;
-  Pos.X /= d;
-  Pos.Y /= d;
-  Pos.Z /= d;
-}
-
-
-Vertex Vertex::operator + (const Vertex & other){
-  return Vertex (Pos.X + other.Pos.X, Pos.Y + 
-                 other.Pos.Y, Pos.Z + other.Pos.Z, lc, w);
-}
-
-Vertex Vertex::operator - (const Vertex & other){
-  return Vertex (Pos.X - other.Pos.X, Pos.Y - 
-                 other.Pos.Y, Pos.Z - other.Pos.Z, lc, w);
-}
-
-Vertex Vertex::operator / (double d){
-  return Vertex (Pos.X / d, Pos.Y / d, Pos.Z / d, lc, w);
-}
-Vertex Vertex::operator * (double d){
-  return Vertex (Pos.X * d, Pos.Y * d, Pos.Z * d, lc, w);
-}
-
-Vertex Vertex::operator % (Vertex & autre){ // cross product
-  return Vertex (Pos.Y * autre.Pos.Z - Pos.Z * autre.Pos.Y,
-                 -(Pos.X * autre.Pos.Z - Pos.Z * autre.Pos.X),
-                 Pos.X * autre.Pos.Y - Pos.Y * autre.Pos.X, lc, w);
-}
-
-double Vertex::operator * (const Vertex & other){
-  return Pos.X * other.Pos.X + Pos.Y * other.Pos.Y + Pos.Z * other.Pos.Z;
-}
-
-Vertex *Create_Vertex (int Num, double X, double Y, double Z, double lc, double u){
-  Vertex *pV;
-
-  pV = new Vertex (X, Y, Z, lc);
-  pV->w = 1.0;
-  pV->Num = Num;
-  pV->u = u;
-  return pV;
-}
-
-void Delete_Vertex ( Vertex *pV )
-{
-  if(pV)
-    {
-      List_Delete(pV->ListSurf);
-      List_Delete(pV->ListCurves);
-      List_Delete(pV->Extruded_Points);
-      delete pV;
-    }
-}
-
-void Free_Vertex (void *a, void *b)
-{
-  Delete_Vertex ( *(Vertex**)a );
-}
-
-int compareVertex (const void *a, const void *b){
-  int i, j;
-  Vertex **q, **w;
-
-  q = (Vertex **) a;
-  w = (Vertex **) b;
-  i = abs ((*q)->Num);
-  j = abs ((*w)->Num);
-
-  return (i - j);
-}
-
-int comparePosition (const void *a, const void *b){
-  int i, j;
-  Vertex **q, **w;
-  // TOLERANCE ! WARNING WARNING
-  double eps = 1.e-6 * CTX.lc;
-
-  q = (Vertex **) a;
-  w = (Vertex **) b;
-  i = ((*q)->Num);
-  j = ((*w)->Num);
-
-  if ((*q)->Pos.X - (*w)->Pos.X > eps)
-    return (1);
-  if ((*q)->Pos.X - (*w)->Pos.X < -eps)
-    return (-1);
-  if ((*q)->Pos.Y - (*w)->Pos.Y > eps)
-    return (1);
-  if ((*q)->Pos.Y - (*w)->Pos.Y < -eps)
-    return (-1);
-  if ((*q)->Pos.Z - (*w)->Pos.Z > eps)
-    return (1);
-  if ((*q)->Pos.Z - (*w)->Pos.Z < -eps)
-    return (-1);
-
-  if (i != j){
-      /*
-         *w = *q;
-         printf("Les points %d et %d sont a la meme position\n",i,j);
-         printf("%12.5E %12.5E %12.5E\n",(*w)->Pos.X,(*w)->Pos.Y,(*w)->Pos.Z);
-         printf("%12.5E %12.5E %12.5E\n",(*q)->Pos.X,(*q)->Pos.Y,(*q)->Pos.Z);
-       */
-    }
-  return 0;
-
-}
diff --git a/Mesh/Vertex.h b/Mesh/Vertex.h
deleted file mode 100644
index 5ea12b41461887a1ae2ce909babc755a48a1af7a..0000000000000000000000000000000000000000
--- a/Mesh/Vertex.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef _VERTEX_H_
-#define _VERTEX_H_
-
-#include "List.h"
-
-typedef struct {
-  double X,Y,Z;
-}Coord;
-
-class Vertex {
-  public :
-  int     Num;
-  int     Frozen;
-  double  lc,u,us[3],w;
-  Coord   Pos;
-  Coord  *Mov;
-  Coord   Freeze;
-  List_T *ListSurf;
-  List_T *ListCurves;
-  List_T *Extruded_Points;
-  Vertex ();
-  Vertex (double x,double y,double z =0.0, double lc = 1.0, double w = 1.0);
-  Vertex operator + ( const Vertex &other);
-  Vertex operator - ( const Vertex &other);
-  double operator * ( const Vertex &other);
-  Vertex operator * ( double d );
-  Vertex operator / ( double d );
-  Vertex operator % (Vertex &autre); // cross product
-  void norme();
-};
-
-int compareVertex (const void *a, const void *b);
-int comparePosition (const void *a, const void *b);
-
-Vertex *Create_Vertex (int Num, double X, double Y, double Z, double lc, double u);
-void Delete_Vertex ( Vertex *pV );
-void Free_Vertex (void *a, void *b);
-
-#endif
diff --git a/Motif/CbColorbar.cpp b/Motif/CbColorbar.cpp
deleted file mode 100644
index 3e2490deb9c875cde640645cc77d71358cbb5720..0000000000000000000000000000000000000000
--- a/Motif/CbColorbar.cpp
+++ /dev/null
@@ -1,643 +0,0 @@
-// $Id: CbColorbar.cpp,v 1.3 2001-08-12 14:24:50 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "XColors.h"
-#include "Widgets.h"
-#include "Register.h"
-#include "Context.h"
-#include "XContext.h"
-#include "ColorTable.h"
-
-#include "CbColorbar.h"
-
-extern Context_T   CTX ;
-extern XContext_T  XCTX ;
-extern Widgets_T   WID;
-
-/* RGB/HSV transformation */
-
-#define RETURN_HSV(h,s,v) {*H=h; *S=s; *V=v; return;} 
-#define RETURN_RGB(r,g,b) {*R=r; *G=g; *B=b; return;} 
-#define UNDEFINED 0
-#define EPS       1.e-10
-
-/* rgb on [0, 1], sv returned on [0, 1] and h on [0, 6]. 
-   Exception: h is returned UNDEFINED if S==0. */
-                                                                             
-void RGB_to_HSV(double  R, double  G, double  B,
-                double *H, double *S, double *V) { 
-  double v, x, f;   
-  int i; 
-   
-  x = DMIN(DMIN(R, G), B);   
-  v = DMAX(DMAX(R, G), B);   
-  if(v == x) RETURN_HSV(UNDEFINED, 0, v);   
-  f = (R == x) ? G - B : ((G == x) ? B - R : R - G);   
-  i = (R == x) ? 3 : ((G == x) ? 5 : 1);   
-  RETURN_HSV(i - f /(v - x), (v - x)/v, v);   
-} 
-
-/* h given on [0, 6] or UNDEFINED. s and v given on [0, 1].      
-   rgb each returned on [0, 1]. */
-
-void HSV_to_RGB(double  H, double  S, double  V,
-                double *R, double *G, double *B) {     
-  double m, n, f;   
-  int i; 
-      
-  if (H == UNDEFINED) RETURN_RGB(V, V, V);
-  i = (int)floor(H);
-  f = H - i;   
-  if ( !(i&1) ) f = 1 - f; /* if i is even */
-  m = V * (1 - S);   
-  n = V * (1 - S * f); 
-  
-  switch (i) {         
-  case 6:         
-  case 0: RETURN_RGB(V, n, m);        
-  case 1: RETURN_RGB(n, V, m);         
-  case 2: RETURN_RGB(m, V, n);        
-  case 3: RETURN_RGB(m, n, V);                
-  case 4: RETURN_RGB(n, m, V);         
-  case 5: RETURN_RGB(V, m, n);     
-  } 
-} 
-
-
-/* Convert window X coordinate to color table index */
-
-static int x_to_index(ColorBar *cb, int x){
-  int index;
-  index = (int) (x * (float) cb->ct->size / (float) cb->width );
-  if (index<0) 
-    index = 0;
-  else if (index>=cb->ct->size)
-    index = cb->ct->size-1;
-  return index;
-}
-
-/* Convert color table index to window X coordinate */
-
-static int index_to_x(ColorBar *cb, int index){
-  int x;
-  x = (int) (index * (float) cb->width / (float)(cb->ct->size-1) );
-  if (x>=cb->width)
-    x = cb->width - 1;
-  return x;
-}
-
-/* Convert a color intensity to a window Y coordinate */
-
-static int intensity_to_y(ColorBar *cb, int intensity){
-  int y;
-  y = (int) (cb->wedge_y - intensity * (float) cb->wedge_y / 255.0 );
-  if (y<0)
-    y = 0;
-  else if (y>=cb->wedge_y)
-    y = cb->wedge_y - 1;
-  return y;
-}
-
-/* Convert a window Y coordinate to a color intensity */
-
-static int y_to_intensity(ColorBar *cb, int y){
-  int intensity;
-  intensity = (int) ((cb->wedge_y - y ) * 255.0 / (float) cb->wedge_y );
-  if (intensity<0)
-    intensity = 0;
-  else if (intensity>255)
-    intensity = 255;
-  return intensity;
-}
-
-
-/* Redraw part of a Color Widget (between a and b) */
-
-#define HELP_LINES 9
-
-static void redraw_range(ColorBar *cb, int a, int b){
-   Window win;
-   int i;
-   int x,y, px,py;
-   int x1, y1, x2, y2;
-   int intensity;
-   double H,S,V;
-   char rgb_str[] = "RGB", hsv_str[] = "HSV" ;
-   char help_str[HELP_LINES][100] = {
-     "h           show this message",
-     "1 -> 6      choose predefined colormap",
-     "m           switch color mode",
-     "c/p/r       copy/paste/reset",
-     "mouse       draw color or alpha",
-     "left/right  move or rotate",
-     "up/down     color or alpha curvature",
-     "i           invert x or y range",
-     "b           increase or decrease gamma"
-   };
-
-   win = cb->window;
-
-   if (a<0)  a = 0;
-   if (b>=cb->ct->size)  b = cb->ct->size-1;
-
-   /* calc region to update */
-   x1 = index_to_x( cb, a );
-   x2 = index_to_x( cb, b);
-
-   y1 = intensity_to_y( cb, 255 );
-   y2 = intensity_to_y( cb, 0 ); 
-
-   /* erase region */
-   XFillRectangle( XCTX.display, win, XCTX.xgc.black,
-                   x1,y1, x2-x1+1, y2-y1+1 );
-
-   /* redraw region of entries in interval [a,b] */
-   if (a>0) a--;
-   if (b<cb->ct->size-1)  b++;
-
-   /* draw red or hue levels */
-   for (i=a;i<=b;i++) {
-      x = index_to_x( cb, i );
-
-      if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB){
-        intensity = UNPACK_RED(cb->ct->table[i]);
-      }
-      else if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_HSV){
-        RGB_to_HSV(UNPACK_RED  (cb->ct->table[i])/255., 
-                   UNPACK_GREEN(cb->ct->table[i])/255.,
-                   UNPACK_BLUE (cb->ct->table[i])/255.,
-                   &H,&S,&V);
-        intensity = (int) (H/6.*255.+EPS);
-      }
-
-      y = intensity_to_y( cb, intensity );
-      if (i!=a)
-         XDrawLine( XCTX.display, win, XCTX.xgc.red, px, py, x, y );
-      px = x;  py = y;
-   }
-
-   /* draw green or saturation levels */
-   for (i=a;i<=b;i++) {
-      x = index_to_x( cb, i );
-
-      if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB){
-        intensity = UNPACK_GREEN(cb->ct->table[i]);
-      }
-      else if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_HSV){
-        RGB_to_HSV(UNPACK_RED  (cb->ct->table[i])/255., 
-                   UNPACK_GREEN(cb->ct->table[i])/255.,
-                   UNPACK_BLUE (cb->ct->table[i])/255.,
-                   &H,&S,&V);
-        intensity = (int) (S*255.);
-      }
-
-      y = intensity_to_y( cb, intensity);
-      if (i!=a)
-         XDrawLine( XCTX.display, win, XCTX.xgc.green, px,py, x,y );
-      px = x;  py = y;
-   }
-
-   /* draw blue or value levels */
-   for (i=a;i<=b;i++) {
-      x = index_to_x( cb, i );
-
-      if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB){
-        intensity = UNPACK_BLUE(cb->ct->table[i]);
-      }
-      else if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_HSV){
-        RGB_to_HSV(UNPACK_RED  (cb->ct->table[i])/255., 
-                   UNPACK_GREEN(cb->ct->table[i])/255.,
-                   UNPACK_BLUE (cb->ct->table[i])/255.,
-                   &H,&S,&V);
-        intensity = (int) (V*255.);
-      }
-
-      y = intensity_to_y( cb, intensity );
-      if (i!=a)
-         XDrawLine( XCTX.display, win, XCTX.xgc.blue, px,py, x,y );
-      px = x;  py = y;
-   }
-
-   /* draw alpha levels */   
-   for (i=a;i<=b;i++) {
-     x = index_to_x( cb, i );
-     y = intensity_to_y( cb, UNPACK_ALPHA(cb->ct->table[i]) );
-     if (i!=a)
-       XDrawLine( XCTX.display, win, XCTX.xgc.white, px,py, x,y );
-     px = x;  py = y;
-   }
-
-   /* draw the color bar */
-   for (x=x1;x<=x2;x++) {
-      int r, g, b;
-      unsigned int color;
-      i = x_to_index( cb, x );
-      color = cb->ct->table[i];
-      r = UNPACK_RED( color );
-      g = UNPACK_GREEN( color );
-      b = UNPACK_BLUE( color );
-      XSetForeground( XCTX.display, XCTX.xgc.xgc, AllocateColorInt(r,g,b) );
-      XDrawLine( XCTX.display, win, XCTX.xgc.xgc, x, cb->wedge_y,
-                 x, cb->wedge_y + WEDGE_HEIGHT-1 ); 
-   }
-
-   /* print colortable mode and help */
-
-   if (cb->helpflag) {
-     for (i=0;i<HELP_LINES;i++) {
-       XDrawString( XCTX.display, win, XCTX.xgc.white,
-                    10,10+(i+1)*XCTX.xfont.fixed_h,
-                    help_str[i], strlen(help_str[i]) );
-     }
-   }
-   else{
-     if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB)
-       XDrawString( XCTX.display, win, XCTX.xgc.white,
-                    10, 10+XCTX.xfont.fixed_h, 
-                    rgb_str, strlen(rgb_str) );
-     else if(cb->ct->ipar[COLORTABLE_MODE]==COLORTABLE_HSV)
-       XDrawString( XCTX.display, win, XCTX.xgc.white,
-                    10, 10+XCTX.xfont.fixed_h, 
-                    hsv_str, strlen(hsv_str) );
-   }
-}
-
-
-/* Redraw the marker and the text */
-
-static void redraw_marker(ColorBar *cb){
-   Window win;
-   int x, y0, y1;
-   char str[50];
-   int dir,ascent, descent;
-   XCharStruct overall;
-   int xpos;
-   float val;
-
-   win = cb->window;
-
-   y0 = cb->marker_y;
-   y1 = cb->height - 1;
-   XFillRectangle( XCTX.display, win, XCTX.xgc.black,
-                   0, y0, cb->width, y1-y0+1 );
-
-   /* draw marker below color wedge */
-   x = index_to_x( cb, cb->markerpos );
-   XDrawLine( XCTX.display, win, XCTX.xgc.white,
-              x, cb->marker_y, x, cb->marker_y+MARKER_HEIGHT );
-   XDrawLine( XCTX.display, win, XCTX.xgc.white,
-              x, cb->marker_y, x-3, cb->marker_y+6 );
-   XDrawLine( XCTX.display, win, XCTX.xgc.white,
-              x, cb->marker_y, x+3, cb->marker_y+6 );
-
-   /* draw min value */
-   sprintf( str, "%.2g", cb->minval );
-   XDrawString( XCTX.display, win, XCTX.xgc.white,
-                2, cb->label_y, str, strlen(str) );
-
-   /* draw marker value */
-   val = cb->minval + (cb->maxval-cb->minval)
-                  * ( (float) cb->markerpos / (float) (cb->ct->size-1));
-   sprintf(str,"(%.2g)", val );
-   XTextExtents(XCTX.xfont.fixed, str, strlen(str), &dir,&ascent,&descent,&overall );
-   xpos = (cb->width - overall.width) / 2;
-   XDrawString( XCTX.display, win, XCTX.xgc.white,
-                xpos, cb->label_y, str, strlen(str) );
-
-   /* draw max value */
-   sprintf( str, "%.2g", cb->maxval );
-   XTextExtents( XCTX.xfont.fixed, str, strlen(str), &dir,&ascent,&descent,&overall );
-   xpos = cb->width - overall.width - 2;
-   XDrawString( XCTX.display, win, XCTX.xgc.white,
-                xpos, cb->label_y, str, strlen(str) );
-
-}
-
-
-static void set_size(ColorBar *cb, int width, int height){
-   cb->width = width;
-   cb->height = height;
-   cb->label_y = cb->height - 5; 
-   cb->marker_y = cb->label_y + 1 - MARKER_HEIGHT - XCTX.xfont.fixed_h;
-   cb->wedge_y = cb->marker_y - WEDGE_HEIGHT;
-}
-
-
-
-
-/* creation, manipulation and callbacks functions */
-
-static ColorBar *TheCB=NULL ;
-
-void ColorBarCreate(Window win, int width, int height){
-  static int first=1 ;
-
-  if(!TheCB) TheCB = (ColorBar *) calloc(1, sizeof(ColorBar));
-  TheCB->window = win;
-  set_size(TheCB, width, height);
-
-  if(first){
-    TheCB->helpflag = 1;
-    first=0;
-  }
-}
-
-void ColorBarShow(void){
-  XMapWindow(XCTX.display, TheCB->window);
-}
-
-void ColorBarHide(void){
-  XUnmapWindow(XCTX.display, TheCB->window);
-}
-
-void ColorBarRedraw(void){
-  if(!TheCB) return;
-  redraw_range(TheCB, 0, TheCB->ct->size-1);
-  redraw_marker(TheCB);
-}
-
-void ColorBarChange(char *label, float min, float max, ColorTable *ct, int rgb){
-  strncpy(TheCB->label, label, 31);
-  TheCB->ct     = ct;
-  TheCB->minval = min;
-  TheCB->maxval = max;
-  if (rgb) redraw_range(TheCB, 0, TheCB->ct->size-1);
-  redraw_marker(TheCB);
-}
-
-void ColorBarResizeCb(Widget w, XtPointer client_data, 
-                      XmDrawingAreaCallbackStruct *call_data){
-  Dimension w1,h1;
-
-  if(!TheCB) return;
-  
-  XtVaGetValues(WID.PD.colorDrawingArea, 
-                XmNwidth, &w1, 
-                XmNheight, &h1, 
-                NULL);    
-
-  set_size(TheCB, (int)w1, (int)h1);
-  XResizeWindow(XCTX.display, TheCB->window, (int)w1, (int)h1);
-  ColorBarRedraw();
-}
-
-void ColorBarExposeCb(Widget w,XtPointer client_data, 
-                      XmDrawingAreaCallbackStruct *call_data){
-  ColorBarRedraw();
-}
-
-#define ANY_MODIFIER (ShiftMask|ControlMask|Mod1Mask)
-
-void ColorBarInputCb (Widget w, XtPointer client_data, 
-                      XmDrawingAreaCallbackStruct *call_data){
-
-  XEvent         *event;
-  static int      p1=0, p2=0, p3=0, p4=0; /* red, green, blue, alpha */
-  static int      pentry, move_marker;
-  int             i, modify, entry, compute;
-  char            keybuf[50];
-  KeySym          key;
-  XComposeStatus  compose;
-
-  event  = call_data->event;   
-  modify = 0;
-  compute = 0;
-
-  /* touche */
-  
-  if (event->type==KeyPress) {
-    XLookupString(&event->xkey, keybuf, 50, &key, &compose);
-
-    switch(key){
-    case XK_1 : ColorTable_InitParam(1, TheCB->ct, 1, 1); compute=1; break;
-    case XK_2 : ColorTable_InitParam(2, TheCB->ct, 1, 1); compute=1; break;
-    case XK_3 : ColorTable_InitParam(3, TheCB->ct, 1, 1); compute=1; break;
-    case XK_4 : ColorTable_InitParam(4, TheCB->ct, 1, 1); compute=1; break;
-    case XK_5 : ColorTable_InitParam(5, TheCB->ct, 1, 1); compute=1; break;
-    case XK_6 : ColorTable_InitParam(6, TheCB->ct, 1, 1); compute=1; break;
-    case XK_7 : ColorTable_InitParam(7, TheCB->ct, 1, 1); compute=1; break;
-    case XK_8 : ColorTable_InitParam(8, TheCB->ct, 1, 1); compute=1; break;
-    case XK_9 : ColorTable_InitParam(9, TheCB->ct, 1, 1); compute=1; break;
-    case XK_0 : ColorTable_InitParam(0, TheCB->ct, 1, 1); compute=1; break;
-
-    case XK_c : case XK_C : ColorTable_Copy(TheCB->ct); break;
-    case XK_p : case XK_P : ColorTable_Paste(TheCB->ct); ColorBarRedraw(); break;
-    case XK_h : case XK_H : TheCB->helpflag = !TheCB->helpflag; ColorBarRedraw(); break;
-
-    case XK_r : 
-    case XK_R : 
-      ColorTable_InitParam(TheCB->ct->ipar[COLORTABLE_NUMBER], 
-                           TheCB->ct, 1, 1); 
-      compute=1; 
-      break;
-
-    case XK_m : 
-    case XK_M : 
-      if(TheCB->ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB)
-        TheCB->ct->ipar[COLORTABLE_MODE] = COLORTABLE_HSV;
-      else
-        TheCB->ct->ipar[COLORTABLE_MODE] = COLORTABLE_RGB;
-      ColorBarRedraw(); 
-      break;
-
-    case XK_i : 
-    case XK_I : 
-      if (event->xkey.state&ANY_MODIFIER)
-        TheCB->ct->ipar[COLORTABLE_INVERT] = !TheCB->ct->ipar[COLORTABLE_INVERT]; 
-      else
-        TheCB->ct->ipar[COLORTABLE_SWAP] = !TheCB->ct->ipar[COLORTABLE_SWAP];   
-      compute=1;
-      break;
-
-    case XK_b :
-    case XK_B :
-      if (event->xkey.state&ANY_MODIFIER) {
-        TheCB->ct->fpar[COLORTABLE_BETA] -= 0.05;
-        if(TheCB->ct->fpar[COLORTABLE_BETA]<-1.0) 
-          TheCB->ct->fpar[COLORTABLE_BETA] = -1.0;
-      }
-      else{
-        TheCB->ct->fpar[COLORTABLE_BETA] += 0.05;
-        if(TheCB->ct->fpar[COLORTABLE_BETA]>1.0) 
-          TheCB->ct->fpar[COLORTABLE_BETA] = 1.0;
-      }
-      compute = 1;
-      break;
-
-    case XK_Left  : 
-      if (event->xkey.state&ANY_MODIFIER) {
-        TheCB->ct->ipar[COLORTABLE_ROTATE] += 5;
-        if(TheCB->ct->ipar[COLORTABLE_ROTATE] > TheCB->ct->size-1) 
-          TheCB->ct->ipar[COLORTABLE_ROTATE] -= TheCB->ct->size-1;
-      }
-      else
-        TheCB->ct->fpar[COLORTABLE_BIAS] -= 0.05; 
-      compute = 1; 
-      break;
-
-    case XK_Right : 
-      if (event->xkey.state&ANY_MODIFIER) {
-        TheCB->ct->ipar[COLORTABLE_ROTATE] -= 5;
-        if(TheCB->ct->ipar[COLORTABLE_ROTATE]<-(TheCB->ct->size-1)) 
-          TheCB->ct->ipar[COLORTABLE_ROTATE] += TheCB->ct->size-1;
-      }
-      else{
-        TheCB->ct->fpar[COLORTABLE_BIAS] += 0.05; 
-      }
-      compute = 1;
-      break;
-
-    case XK_Up :
-      if (event->xkey.state&ANY_MODIFIER) {
-        TheCB->ct->fpar[COLORTABLE_ALPHAPOW] -= 0.05;
-        if (TheCB->ct->fpar[COLORTABLE_ALPHAPOW]<0.0)
-          TheCB->ct->fpar[COLORTABLE_ALPHAPOW] = 0.0;
-      }
-      else
-        TheCB->ct->fpar[COLORTABLE_CURVE] -= 0.05;
-      compute = 1; 
-      break;
-
-    case XK_Down :
-      if (event->xkey.state&ANY_MODIFIER)
-        TheCB->ct->fpar[COLORTABLE_ALPHAPOW] += 0.05;
-      else
-        TheCB->ct->fpar[COLORTABLE_CURVE] += 0.05;
-      compute = 1; 
-      break;
-
-    }
-
-    if(compute){
-      ColorTable_Recompute(TheCB->ct, 1, 1);
-      ColorBarRedraw();
-    }
-
-  }
-
-  /* souris enfoncee */
-
-  else if (event->type==ButtonPress) {
-
-    if(TheCB->helpflag){
-      TheCB->helpflag = 0;
-      ColorBarRedraw();
-    }
-
-    if (event->xbutton.y<TheCB->wedge_y) {
-      /* change color function */
-      move_marker = 0;
-    }
-    else {
-      /* change marker position */
-      move_marker = 1;
-    }
-    /* determine which curve to modify */
-    if (event->xbutton.state&ANY_MODIFIER) {
-      p4 = 1;
-    }
-    else {
-      if (event->xbutton.button==Button1)  p1 = 1;
-      if (event->xbutton.button==Button2)  p2 = 1;
-      if (event->xbutton.button==Button3)  p3 = 1;
-    }
-    pentry = x_to_index(TheCB, event->xbutton.x);
-    modify = 1;
-  }
-
-  /* souris relachee */
-
-  else if (event->type==ButtonRelease) {
-    if (event->xbutton.button==Button1)  p1 = 0;
-    if (event->xbutton.button==Button2)  p2 = 0;
-    if (event->xbutton.button==Button3)  p3 = 0;
-    p4 = 0;
-  }
-
-  /* bouger */
-
-  else if (event->type==MotionNotify) {
-    /* Flush extra MotionNotify events */
-    while (QLength(XCTX.display)>0) {
-      XEvent next;
-      XPeekEvent(XCTX.display, &next);
-      if (next.type!=MotionNotify)
-        break;
-      XNextEvent(XCTX.display, event);
-    }
-    modify = 1;
-  }
-
-  /* Modify one or more of the color curves */
-  
-   if (modify && (p1 || p2 || p3 || p4)) {
-     /* calculate which entry in color table to change */
-     entry = x_to_index(TheCB, event->xbutton.x);
-     /* update */
-     if (move_marker) {
-       /* changing marker position */
-       TheCB->markerpos = entry;
-       redraw_marker(TheCB);
-     }
-     else {
-       /* changing color graph */
-       int a, b, value;
-       
-       value = y_to_intensity(TheCB, event->xbutton.y);
-
-       if (pentry<=entry) {
-         a = pentry;
-         b = entry;
-       }
-       else {
-         a = entry;
-         b = pentry;
-       }
-       
-       /* update entries from 'pentry' to 'entry' */
-       for (i=a; i<=b; i++) {
-         int red, green, blue, alpha;
-         double R,G,B,H,S,V;
-         
-         red   = UNPACK_RED  (TheCB->ct->table[i]);
-         green = UNPACK_GREEN(TheCB->ct->table[i]);
-         blue  = UNPACK_BLUE (TheCB->ct->table[i]);
-         alpha = UNPACK_ALPHA(TheCB->ct->table[i]);
-         
-         if(TheCB->ct->ipar[COLORTABLE_MODE]==COLORTABLE_RGB){
-           if (p1) { red = value; }
-           if (p2) { green = value; }
-           if (p3) { blue = value; }
-           if (p4) { alpha = value; }
-         }         
-         else if(TheCB->ct->ipar[COLORTABLE_MODE]==COLORTABLE_HSV){
-           RGB_to_HSV((double)red/255.,(double)green/255.,(double)blue/255.,
-                      &H,&S,&V);
-           if (p1) { H = 6.*(double)value/255.+EPS ; }
-           if (p2) { S = (double)value/255.; }
-           if (p3) { V = (double)value/255.; }
-           if (p4) { alpha = value; }         
-           HSV_to_RGB(H, S, V, &R,&G,&B);
-           red   = (int)(255 * R);
-           green = (int)(255 * G);
-           blue  = (int)(255 * B);
-         }
-         
-         TheCB->ct->table[i] = PACK_COLOR(red,green,blue,alpha);
-       } 
-       
-       /* redraw the color curves */
-       if (pentry<entry)
-         redraw_range(TheCB, pentry-1, entry+1);
-       else
-         redraw_range(TheCB, entry-1, pentry+1);
-       
-       pentry = entry;
-       
-     }
-   }
-   
-}
-
diff --git a/Motif/CbColorbar.h b/Motif/CbColorbar.h
deleted file mode 100644
index bd2d8ab71bf48f8f714eaf84cb72462bddce0ac6..0000000000000000000000000000000000000000
--- a/Motif/CbColorbar.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _CB_COLORBAR_H
-#define _CB_COLORBAR_H
-
-typedef struct _colorbar {
-  Window window;
-  int width, height;           /* size */
-  int wedge_y;                 /* top coord of color wedge */
-  int marker_y;                /* top coord of marker arrow */
-  int label_y;                 /* y coord of text labels */
-  char label[32];              /* text label at bottom */
-  float minval, maxval;        /* min and max data values */
-  int markerpos;               /* position of marker as index into table */
-  int helpflag;                /* if nonzero, print help messages */  
-  ColorTable *ct;              /* pointer to color table (allocated in Post_View) */
-} ColorBar;
-
-#define WEDGE_HEIGHT    12  /* epaisseur de la colorbar */
-#define MARKER_HEIGHT   10  /* hauteur de la fleche */
-
-void ColorBarCreate(Window win, int width, int height);
-void ColorBarShow(void);
-void ColorBarChange(char *label, float min, float max, ColorTable *ct, int rgb);
-void ColorBarCopy(ColorTable *ct);
-void ColorBarPaste(ColorTable *ct);
-void ColorBarResizeCb(Widget w, XtPointer client_data, 
-                      XmDrawingAreaCallbackStruct *call_data);
-void ColorBarRedraw(void);
-
-#endif
diff --git a/Motif/CbContext.cpp b/Motif/CbContext.cpp
deleted file mode 100644
index 510f1ff020515d93d1cc0307195d6b895fe6a7e9..0000000000000000000000000000000000000000
--- a/Motif/CbContext.cpp
+++ /dev/null
@@ -1,653 +0,0 @@
-// $Id: CbContext.cpp,v 1.6 2001-08-11 23:28:33 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Views.h"
-#include "Widgets.h"
-#include "Context.h"
-#include "XContext.h"
-#include "CbContext.h"
-#include "CbGeom.h"
-#include "CbMesh.h"
-
-extern Context_T   CTX;
-extern XContext_T  XCTX;
-extern Widgets_T   WID; 
-extern Mesh        M;
-
-static char *txt_new [] = 
-  { "Parameter", "Point", "Line", "Spline", "Bezier", "BSpline", "Circle", "Ellipsis", 
-    "Plane Surface", "Ruled Surface", "Nurbs Surface", "Volume", NULL };  
-
-static char *txt_translate_rotate_dilate_symmetry_delete [] = 
-  { "Point", "Line", "Surface", NULL };  
-
-static char *txt_add [] = 
-  { "Create", "Translate", "Rotate", "Dilate", "Symmetry", NULL };  
-
-static char *txt_move [] = 
-  { "Translate", "Rotate", "Dilate", "Symmetry", NULL };  
-
-static char *txt_elem [] = 
-  { "Add", "Move", "Extrude", "Delete", NULL };  
-
-static char *txt_phys [] = 
-  { "Add", "Delete", NULL };  
-
-static char *txt_phys_add [] = 
-  { "Point", "Line", "Surface", "Volume", NULL };  
-
-static char *txt_geom [] = 
-  { "Elementary", "Physical", "Reload", NULL };  
-
-static char *txt_mesh [] = 
-  { "Define", "1D", "2D", "3D", NULL };  
-
-static char *txt_mesh_define [] = 
-  { "Length", "Recombine", "Transfinite Line", "Transfinite Surface", 
-    "Transfinite Volume", NULL };  
-
-static char *txt_post[NB_BUTT_MAX] = 
-  {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-   NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-   NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-   NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-   NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
-
-static long int   actual_context, actual_global_context;
-
-void UpdatePostButtons(void){
-  Post_View  *v;
-  int         i;
-
-  for(i = 0 ; i < NB_BUTT_MAX ; i++) {
-    
-    if(txt_post[i]){
-      
-      v = (Post_View*)List_Pointer(Post_ViewList,i);
-
-      /* defaultButt[i] */
-      if(i==0 && XtIsManaged(WID.M.defaultButt)) XtUnmanageChild(WID.M.defaultButt);
-
-      /* pushButt[i] */
-      if(XtIsManaged(WID.M.pushButt[i])) XtUnmanageChild(WID.M.pushButt[i]);
-
-      /* toggleButt[i] */
-      XtVaSetValues(WID.M.toggleButt[i],
-                    XmNlabelString, XmStringCreateSimple(txt_post[i]),
-                    XmNset, v->Visible?True:False,
-                    NULL);      
-      XtManageChild(WID.M.toggleButt[i]);
-
-      /* timeStepButt[i] */
-      XtSetSensitive(WID.M.timeStepButt[i], (v->NbTimeStep>1)?1:0);
-      XtManageChild(WID.M.timeStepButt[i]);
-
-      /* vectorButt[i] */
-      XtSetSensitive(WID.M.vectorButt[i], v->ScalarOnly?0:1);
-      XtManageChild(WID.M.vectorButt[i]);
-
-      /* exportBGMButt[i] */
-      XtSetSensitive(WID.M.exportBGMButt[i], v->ScalarOnly?1:0);
-      XtManageChild(WID.M.exportBGMButt[i]);
-
-      /* applyBGMButtXXX */
-      XtSetSensitive(WID.M.applyBGMButt[i], v->ScalarOnly?1:0);
-      XtManageChild(WID.M.applyBGMButt[i]);
-    }
-    else{
-      if(XtIsManaged(WID.M.pushButt[i])) XtUnmanageChild(WID.M.pushButt[i]);
-      if(XtIsManaged(WID.M.toggleButt[i])) XtUnmanageChild(WID.M.toggleButt[i]);
-      if(i==0) XtManageChild(WID.M.defaultButt);      
-    }
-  }
-
-}
-
-
-#define NB_HISTORY_MAX 100
-
-void ActualizeContextCb (Widget w, XtPointer client_data, XtPointer call_data){
-  char         **ButtonText;
-  int            i, last;
-  static int     last_context[NB_HISTORY_MAX], numc = 0, numf = 0;
-
-  if((long int)client_data == CONTEXT_BACKWARD){
-    if(numc > 1){
-      numc--;
-      numf++;
-      actual_context = last_context[numc-1];
-    }
-    else return;
-  }
-  else if((long int)client_data == CONTEXT_FORWARD){
-    if(numf > 0){
-      numc++;
-      numf--;
-      actual_context = last_context[numc-1];
-    }
-    else return;
-  }
-  else{
-    actual_context = (long int)client_data;
-    if(last_context[numc-1] != actual_context){
-      last_context[numc] = actual_context;
-      numc++;
-    }
-    numf = 0;
-  }
-
-  if(numc > NB_HISTORY_MAX-1) numc = 1; /* Il faudrait faire un truc circulaire */
-
-  switch (actual_context){
-
-  case CONTEXT_GEOM :
-    actual_global_context = CONTEXT_GEOM;
-    XtVaSetValues(WID.M.modButt, XmNlabelString, XmStringCreateSimple("Geometry"), NULL);
-    CTX.geom.level = ELEMENTARY;
-    //if(M.status>0) mesh_event_handler(MESH_DELETE);
-    Msg(STATUS2, "");
-    ButtonText = txt_geom;
-    break;
-
-  case CONTEXT_GEOM_ELEM :
-    actual_global_context = CONTEXT_GEOM;
-    CTX.geom.level = ELEMENTARY;
-    Msg(STATUS2, "Elementary");
-    ButtonText = txt_elem;
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD :       
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Add");
-    ButtonText = txt_add;
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_NEW :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Add Create");
-    ButtonText = txt_new;
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_TRANSLATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Add Translate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_ROTATE : 
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Add Rotate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_DILATE : 
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Add Dilate"); 
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_SYMMETRY :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Add Symmetry");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Move");
-    ButtonText = txt_move;
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE_TRANSLATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Move Translate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE_ROTATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Move Rotate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE_DILATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Move Dilate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE_SYMMETRY :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Move Symmetry");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Extrude");
-    ButtonText = txt_move;
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_TRANSLATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Extrude Translate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_ROTATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Extrude Rotate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_DILATE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Extrude Dilate");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_SYMMETRY :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Extrude Symmetry");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_ELEM_DELETE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Elementary Delete");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_GEOM_PHYS :
-    actual_global_context = CONTEXT_GEOM;
-    CTX.geom.level = PHYSICAL;
-    Msg(STATUS2, "Physical");
-    ButtonText = txt_phys;
-    break;
-
-  case CONTEXT_GEOM_PHYS_ADD :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Physical Add");
-    ButtonText = txt_phys_add;
-    break;
-
-  case CONTEXT_GEOM_PHYS_DELETE :
-    actual_global_context = CONTEXT_GEOM;
-    Msg(STATUS2, "Physical Delete");
-    ButtonText = txt_translate_rotate_dilate_symmetry_delete;
-    break;
-
-  case CONTEXT_MESH :
-    actual_global_context = CONTEXT_MESH;
-    XtVaSetValues(WID.M.modButt, XmNlabelString, 
-                  XmStringCreateSimple("Mesh"), NULL); 
-    Msg(STATUS2,"");
-    ButtonText = txt_mesh;
-    break;
-
-  case CONTEXT_MESH_DEFINE :
-    actual_global_context = CONTEXT_MESH;
-    Msg(STATUS2,"Define");
-    ButtonText = txt_mesh_define;
-    break;
-
-  case CONTEXT_POST :
-    actual_global_context = CONTEXT_POST;
-    XtVaSetValues(WID.M.modButt, XmNlabelString, 
-                  XmStringCreateSimple("Post Processing"), NULL);
-    Msg(STATUS2,"");
-    UpdatePostButtons();
-    return;    
-
-  default :
-    Msg(WARNING, "Unknown Event in ActualizeContextCb (%d)", actual_context); 
-    return;
-
-  }
-
-  last = 0;
-
-  if(XtIsManaged(WID.M.defaultButt)) XtUnmanageChild(WID.M.defaultButt);
-
-  for(i=0 ; i < NB_BUTT_MAX ; i++){
-
-    if(!last && ButtonText[i] != NULL){
-      if(XtIsManaged(WID.M.toggleButt[i])) XtUnmanageChild(WID.M.toggleButt[i]);
-      XtVaSetValues(WID.M.pushButt[i], 
-                    XmNlabelString,XmStringCreateSimple(ButtonText[i]),
-                    NULL);
-      XtManageChild(WID.M.pushButt[i]);
-    }
-    else {
-      last = 1 ;
-      if(XtIsManaged(WID.M.pushButt[i])) XtUnmanageChild(WID.M.pushButt[i]);
-      if(XtIsManaged(WID.M.toggleButt[i])) XtUnmanageChild(WID.M.toggleButt[i]);
-    }
-  }
-}  
-
-#undef NB_HISTORY_MAX
-
-
-void PreviousContextCb (Widget w, XtPointer client_data, XtPointer call_data){
-  ActualizeContextCb(w,client_data,call_data);
-}
-
-void NextContextCb (Widget w, XtPointer client_data, XtPointer call_data){
-
-  switch(actual_context){
-
-  case CONTEXT_GEOM :
-    switch((long int)client_data){
-    case 1: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM,call_data); break;
-    case 2: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_PHYS,call_data); break;
-    case 3: geom_event_handler(GEOM_PARSE); break;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM :
-    switch((long int)client_data){
-    case 1: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_ADD,call_data); break;
-    case 2: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_MOVE,call_data); break;
-    case 3: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_EXTRUDE,call_data); break;
-    case 4: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_DELETE,call_data); break;
-    //case 5: geom_event_handler(GEOM_ELEM_SKETCH); break;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD :
-    switch((long int)client_data){
-    case 1: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_ADD_NEW,call_data); break;
-    case 2: 
-      XtManageChild(WID.GD.tranDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_ADD_TRANSLATE,call_data);
-      break;
-    case 3:
-      XtManageChild(WID.GD.rotDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_ADD_ROTATE,call_data);
-      break;
-    case 4:
-      XtManageChild(WID.GD.dilatDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_ADD_DILATE,call_data);
-      break;
-    case 5: 
-      XtManageChild(WID.GD.symmDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_ADD_SYMMETRY,call_data); 
-      break;
-    }
-    break;    
-
-  case CONTEXT_GEOM_ELEM_ADD_NEW :
-    switch((long int)client_data){
-    case 1: XtManageChild(WID.GD.paramDialog); break ;
-    case 2: XtManageChild(WID.GD.pointDialog); break ;
-    case 3: geom_event_handler(GEOM_ELEM_ADD_NEW_LINE); break;
-    case 4: geom_event_handler(GEOM_ELEM_ADD_NEW_SPLINE); break;
-    case 5: geom_event_handler(GEOM_ELEM_ADD_NEW_BEZIER); break;
-    case 6: geom_event_handler(GEOM_ELEM_ADD_NEW_BSPLINE); break;
-    case 7: geom_event_handler(GEOM_ELEM_ADD_NEW_CIRCLE); break;
-    case 8: geom_event_handler(GEOM_ELEM_ADD_NEW_ELLIPSIS); break;
-    case 9: geom_event_handler(GEOM_ELEM_ADD_NEW_PLANE_SURF); break;
-    case 10:geom_event_handler(GEOM_ELEM_ADD_NEW_RULED_SURF); break;
-    case 11:geom_event_handler(GEOM_ELEM_ADD_NEW_NURBS_SURF); break;
-    case 12:geom_event_handler(GEOM_ELEM_ADD_NEW_VOLUME); break;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_TRANSLATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_ADD_TRANSLATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_ADD_TRANSLATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_ADD_TRANSLATE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_ROTATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_ADD_ROTATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_ADD_ROTATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_ADD_ROTATE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_DILATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_ADD_DILATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_ADD_DILATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_ADD_DILATE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_ADD_SYMMETRY :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_ADD_SYMMETRY_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_ADD_SYMMETRY_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_ADD_SYMMETRY_SURF); break ;
-    }
-    break;
-     
-  case CONTEXT_GEOM_ELEM_MOVE :
-    switch((long int)client_data){
-    case 1:
-      XtManageChild(WID.GD.tranDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_MOVE_TRANSLATE,call_data);
-      break;
-    case 2:
-      XtManageChild(WID.GD.rotDialog);
-      ActualizeContextCb(w,(XtPointer) CONTEXT_GEOM_ELEM_MOVE_ROTATE,call_data);
-      break;
-    case 3:
-      XtManageChild(WID.GD.dilatDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_MOVE_DILATE,call_data);
-      break;
-    case 4:
-      XtManageChild(WID.GD.symmDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_MOVE_SYMMETRY,call_data);
-      break;
-    }
-    break;    
-
-  case CONTEXT_GEOM_ELEM_MOVE_TRANSLATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_MOVE_TRANSLATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_MOVE_TRANSLATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_MOVE_TRANSLATE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE_ROTATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_MOVE_ROTATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_MOVE_ROTATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_MOVE_ROTATE_SURF); break ;
-    }
-    break;
-    
-  case CONTEXT_GEOM_ELEM_MOVE_DILATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_MOVE_DILATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_MOVE_DILATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_MOVE_DILATE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_MOVE_SYMMETRY :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_MOVE_SYMMETRY_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_MOVE_SYMMETRY_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_MOVE_SYMMETRY_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE :
-    switch((long int)client_data){
-    case 1:
-      XtManageChild(WID.GD.tranDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_EXTRUDE_TRANSLATE,call_data);
-      break;
-    case 2:
-      XtManageChild(WID.GD.rotDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_EXTRUDE_ROTATE,call_data);
-      break;
-    case 3:
-      XtManageChild(WID.GD.dilatDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_EXTRUDE_DILATE,call_data);
-      break;
-    case 4:
-      XtManageChild(WID.GD.symmDialog);
-      ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_ELEM_EXTRUDE_SYMMETRY,call_data);
-      break;
-    }
-    break;    
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_TRANSLATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_EXTRUDE_TRANSLATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_EXTRUDE_TRANSLATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_EXTRUDE_TRANSLATE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_ROTATE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_EXTRUDE_ROTATE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_EXTRUDE_ROTATE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_EXTRUDE_ROTATE_SURF); break ;
-    }
-    break;
-    
-  case CONTEXT_GEOM_ELEM_EXTRUDE_DILATE :
-    Msg(WARNING, "Extrude Dilate is not implemented"); 
-    break;
-
-  case CONTEXT_GEOM_ELEM_EXTRUDE_SYMMETRY :
-    Msg(WARNING, "Extrude Symmetry is not implemented"); 
-    break;
-     
-  case CONTEXT_GEOM_ELEM_DELETE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_ELEM_DELETE_POINT); break ;
-    case 2: geom_event_handler(GEOM_ELEM_DELETE_LINE); break ;
-    case 3: geom_event_handler(GEOM_ELEM_DELETE_SURF); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_PHYS :
-    switch((long int)client_data){
-    case 1: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_PHYS_ADD,call_data); break;
-    case 2: ActualizeContextCb(w,(XtPointer)CONTEXT_GEOM_PHYS_DELETE,call_data); break;
-    }
-    break;
-
-  case CONTEXT_GEOM_PHYS_ADD :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_PHYS_ADD_POINT); break ;
-    case 2: geom_event_handler(GEOM_PHYS_ADD_LINE); break ;
-    case 3: geom_event_handler(GEOM_PHYS_ADD_SURF); break ;
-    case 4: geom_event_handler(GEOM_PHYS_ADD_VOLUME); break ;
-    }
-    break;
-
-  case CONTEXT_GEOM_PHYS_DELETE :
-    switch((long int)client_data){
-    case 1: geom_event_handler(GEOM_PHYS_DELETE_POINT); break ;
-    case 2: geom_event_handler(GEOM_PHYS_DELETE_LINE); break ;
-    case 3: geom_event_handler(GEOM_PHYS_DELETE_SURF); break ;
-    case 4: geom_event_handler(GEOM_PHYS_DELETE_VOLUME); break ;
-    }
-    break;
-    
-  case CONTEXT_MESH :
-
-    switch((long int)client_data){
-    case 1: ActualizeContextCb(w,(XtPointer)CONTEXT_MESH_DEFINE,call_data); break;
-    case 2: mesh_event_handler(MESH_1D); break;
-    case 3: mesh_event_handler(MESH_2D); break;
-    case 4: mesh_event_handler(MESH_3D); break;
-    }
-    break;
-
-  case CONTEXT_MESH_DEFINE :
-    switch((long int)client_data){
-    case 1: 
-      XtManageChild(WID.MD.charLengthDialog);      
-      mesh_event_handler(MESH_DEFINE_CHAR_LENGTH); break;
-    case 2: 
-      mesh_event_handler(MESH_DEFINE_RECOMBINE); break;
-    case 3: 
-      XtManageChild(WID.MD.trsfLineDialog);
-      mesh_event_handler(MESH_DEFINE_TRSF_LINE); break;
-    case 4: 
-      mesh_event_handler(MESH_DEFINE_TRSF_SURFACE); break;
-    case 5: 
-      XtManageChild(WID.MD.trsfVolumeDialog);
-      mesh_event_handler(MESH_DEFINE_TRSF_VOLUME); break;
-    }
-    break;
-
-  default :
-    Msg(WARNING, "Unknown Context in NextContextCb (%d)", actual_global_context); 
-    break;
-    
-  }
-}
-
-
-int AddViewInUI(int i, char *Name, int Num){
-
-  if(i > NB_BUTT_MAX -1) return 1;
-
-  txt_post[i-1] = (char*)Malloc(256*sizeof(char));
-  strncpy(txt_post[i-1],Name,255);
-
-  if(actual_global_context == CONTEXT_POST)
-    ActualizeContextCb(NULL,(XtPointer)actual_global_context,NULL);
-
-  return 0;
-}
-
-static int All = 0 ;
-
-void RemoveViewCb(Widget w, XtPointer client_data, XtPointer call_data){
-  Post_View      *v;
-  int            i;
-  
-  i = (long int)client_data ;
-
-  v = (Post_View*)List_Pointer(Post_ViewList,(long int)i-1);
-
-  while(txt_post[i]){
-    strncpy(txt_post[i-1], txt_post[i], 255);
-    i++;
-  }
-  Free(txt_post[i-1]);
-  txt_post[i-1] = NULL;
-
-  FreeView(v);
-
-  if(!List_Suppress(Post_ViewList, v, fcmpPostViewNum))
-    Msg(GERROR, "Could Not Suppress View from List");
-
-  CTX.post.nb_views = List_Nbr(Post_ViewList);
-
-  if(actual_global_context == CONTEXT_POST)
-    ActualizeContextCb(NULL,(XtPointer)actual_global_context,NULL);  
-
-  if(!All) Draw();
-
-}
-
-void RemoveAllViewsCb(Widget w, XtPointer client_data, XtPointer call_data){
-  int i=1;
-  if(!Post_ViewList) return;
-  All = 1;
-  while(List_Nbr(Post_ViewList))
-    RemoveViewCb(NULL, (XtPointer)i, NULL);
-  All = 0;
-  Draw();
-}
-
diff --git a/Motif/CbContext.h b/Motif/CbContext.h
deleted file mode 100644
index 7a888f7c709ed32d4082324b784b74268dfa3f57..0000000000000000000000000000000000000000
--- a/Motif/CbContext.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _CB_CONTEXT_H_
-#define _CB_CONTEXT_H_
-
-#define  CONTEXT_GEOM                         101
-#define  CONTEXT_GEOM_ELEM                    102
-#define  CONTEXT_GEOM_ELEM_ADD                103
-#define  CONTEXT_GEOM_ELEM_ADD_NEW            104
-#define  CONTEXT_GEOM_ELEM_ADD_TRANSLATE      105
-#define  CONTEXT_GEOM_ELEM_ADD_ROTATE         106
-#define  CONTEXT_GEOM_ELEM_ADD_DILATE         107
-#define  CONTEXT_GEOM_ELEM_ADD_SYMMETRY       108
-#define  CONTEXT_GEOM_ELEM_MOVE               109
-#define  CONTEXT_GEOM_ELEM_MOVE_TRANSLATE     110
-#define  CONTEXT_GEOM_ELEM_MOVE_ROTATE        111
-#define  CONTEXT_GEOM_ELEM_MOVE_DILATE        112
-#define  CONTEXT_GEOM_ELEM_MOVE_SYMMETRY      113
-#define  CONTEXT_GEOM_ELEM_EXTRUDE            114
-#define  CONTEXT_GEOM_ELEM_EXTRUDE_TRANSLATE  115
-#define  CONTEXT_GEOM_ELEM_EXTRUDE_ROTATE     116
-#define  CONTEXT_GEOM_ELEM_EXTRUDE_DILATE     117
-#define  CONTEXT_GEOM_ELEM_EXTRUDE_SYMMETRY   118
-#define  CONTEXT_GEOM_ELEM_DELETE             119
-#define  CONTEXT_GEOM_PHYS                    120
-#define  CONTEXT_GEOM_PHYS_ADD                121
-#define  CONTEXT_GEOM_PHYS_DELETE             122
-#define  CONTEXT_MESH                         123
-#define  CONTEXT_MESH_DEFINE                  124
-#define  CONTEXT_POST                         125
-#define  CONTEXT_BACKWARD                     126
-#define  CONTEXT_FORWARD                      127
-
-#endif
diff --git a/Motif/CbFile.cpp b/Motif/CbFile.cpp
deleted file mode 100644
index 0a2b3de02755975853443471a2440858d5d3c77d..0000000000000000000000000000000000000000
--- a/Motif/CbFile.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// $Id: CbFile.cpp,v 1.7 2001-02-20 18:32:58 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "OpenFile.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Widgets.h"
-#include "Context.h"
-#include "Options.h"
-#include "CreateFile.h"
-
-#include "CbFile.h"
-#include "CbColorbar.h"
-
-extern Context_T   CTX;
-extern Widgets_T   WID;
-extern Mesh        M;
-
-void SaveToDisk (char *FileName, Widget warning, 
-                 void (*function)(char *filename, int format)){
-  FILE    *fp ;
-  static char KeepFileName[256];
-
-  if(FileName){
-    fp = fopen(FileName,"r");
-    if(fp) {      
-      XtManageChild(warning);
-      strcpy(KeepFileName,FileName);
-      fclose(fp);
-      return;
-    }
-    else{
-      strcpy(KeepFileName,FileName);
-    }
-  }
-
-  function(KeepFileName, CTX.print.format);
-}
-
-/* ------------------------------------------------------------------------ 
-    F i l e C b                                                       
-   ------------------------------------------------------------------------ */
-
-void FileCb(Widget w, XtPointer client_data, XtPointer call_data){
-  char      *c;
-  XmString  xms;
-
-  switch ((long int)client_data) {
-  case FILE_SAVE_MESH :
-    Print_Mesh(&M, NULL, CTX.mesh.format); 
-    return;
-  case FILE_SAVE_AS_OVERWRITE :
-    SaveToDisk(NULL, WID.ED.saveAsDialog, CreateOutputFile);
-    return;
-  }
-
-  XtVaGetValues(w, XmNtextString, &xms, NULL);
-  XmStringGetLtoR(xms, XmSTRING_DEFAULT_CHARSET, &c);
-  XmStringFree(xms);
-  
-  switch ((long int)client_data) {
-  case FILE_LOAD_GEOM       : OpenProblem(c); Draw(); break;
-  case FILE_LOAD_POST       : MergeProblem(c); ColorBarRedraw(); Draw(); break;
-  case FILE_SAVE_AS         : SaveToDisk(c, WID.ED.saveAsDialog, CreateOutputFile); break;
-  case FILE_SAVE_OPTIONS_AS : Print_Options(0,GMSH_FULLRC,c); break;
-  default :
-    Msg(WARNING, "Unknown event in FileCb : %d", (long int)client_data); 
-    break;
-  }
-
-}
-
diff --git a/Motif/CbFile.h b/Motif/CbFile.h
deleted file mode 100644
index d2405785e718148ea8b066339e487d0968f9972b..0000000000000000000000000000000000000000
--- a/Motif/CbFile.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _CB_FILE_H_
-#define _CB_FILE_H_
-
-#define  FILE_LOAD_GEOM                         301
-#define  FILE_LOAD_POST                         302
-#define  FILE_SAVE_MESH                         303
-#define  FILE_SAVE_AS                           304
-#define  FILE_SAVE_AS_OVERWRITE                 305
-#define  FILE_SAVE_OPTIONS_AS                   306
-
-#endif
diff --git a/Motif/CbGeneral.cpp b/Motif/CbGeneral.cpp
deleted file mode 100644
index e57b74b98d83cc90cdc358688f1fd1f16ecffc4f..0000000000000000000000000000000000000000
--- a/Motif/CbGeneral.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-// $Id: CbGeneral.cpp,v 1.2 2001-01-09 14:24:11 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Views.h"
-#include "Context.h"
-#include "XContext.h"
-#include "Widgets.h"
-
-extern Context_T   CTX;
-extern XContext_T  XCTX;
-extern Widgets_T   WID;
-
-extern void GetStatistics(double s[50]);
-
-static char label[32];
-
-/* ------------------------------------------------------------------------ 
-    E x i t C b                                                             
-   ------------------------------------------------------------------------ */
-
-void ExitCb(Widget w, XtPointer cd, XtPointer cb){
-  exit(0);
-}
-
-/* ------------------------------------------------------------------------ 
-    M a n a g e C b                                                         
-   ------------------------------------------------------------------------ */
-
-void ManageCb (Widget w, XtPointer client_data, XtPointer call_data){
-  XtIsManaged((Widget)client_data) ? 
-    XtUnmanageChild((Widget)client_data) : 
-    XtManageChild((Widget)client_data) ;
-}
-
-
-/* ------------------------------------------------------------------------ 
-    P o p u p H a n d l e r                                                 
-   ------------------------------------------------------------------------ */
-
-void PopupHandler (Widget w, Widget pw, XEvent *event, Boolean *ctd ){
-  if(((XButtonEvent *)event)->button != Button3) return;
-
-  /* force the pointer to be slightly over the first button */
-  ((XButtonEvent *)event)->x_root -= 7 ;
-  ((XButtonEvent *)event)->y_root -= 7 ;
-
-  XmMenuPosition(pw, (XButtonEvent *)event);
-  XtManageChild(pw);
-}
-
-
-
-/* ------------------------------------------------------------------------ 
-    CurrentInfoCb
-   ------------------------------------------------------------------------ */
-
-void CurrentInfoCb (Widget w, XtPointer client_data, XtPointer call_data){
-  double  s[50];
-  int     i;
-  Post_View  *v ;
-
-  if((long int)client_data && XtIsManaged(WID.OD.infoDialog)){
-    XtUnmanageChild(WID.OD.infoDialog);
-  }
-  else{
-    GetStatistics(s);
-
-#define VLAB(caca)  WID.OD.infoValueLabel[(caca)], XmNlabelString, \
-                    XmStringCreateSimple(label), NULL
-
-    /* info geom */
-    sprintf(label, "%g", s[0]);   XtVaSetValues(VLAB(0));
-    sprintf(label, "%g", s[1]);   XtVaSetValues(VLAB(1));
-    sprintf(label, "%g", s[2]);   XtVaSetValues(VLAB(2));
-    sprintf(label, "%g", s[3]);   XtVaSetValues(VLAB(3));
-                                                
-    /* info mesh */                             
-    sprintf(label, "%g", s[4]);   XtVaSetValues(VLAB(4));
-    sprintf(label, "%g", s[5]);   XtVaSetValues(VLAB(5));
-    sprintf(label, "%g", s[6]);   XtVaSetValues(VLAB(6));
-
-    sprintf(label, "%g", s[7]-s[8]);   XtVaSetValues(VLAB(7));
-    sprintf(label, "%g", s[8]);   XtVaSetValues(VLAB(8));
-    sprintf(label, "%g", s[9]);   XtVaSetValues(VLAB(9));
-    sprintf(label, "%g", s[10]);  XtVaSetValues(VLAB(10));
-    sprintf(label, "%g", s[11]);  XtVaSetValues(VLAB(11));
-
-    sprintf(label, "%g", s[12]);  XtVaSetValues(VLAB(12));
-    sprintf(label, "%g", s[13]);  XtVaSetValues(VLAB(13));
-    sprintf(label, "%g", s[14]);  XtVaSetValues(VLAB(14));
-
-    sprintf(label, "%.4g (%.4g->%.4g)", s[17], s[19], s[18]); XtVaSetValues(VLAB(15));
-    sprintf(label, "%.4g (%.4g->%.4g)", s[20], s[22], s[21]); XtVaSetValues(VLAB(16));
-    sprintf(label, "%.4g (%.4g->%.4g)", s[23], s[25], s[24]); XtVaSetValues(VLAB(17));
-
-    /* info post */
-
-    s[15] = List_Nbr(Post_ViewList) ;
-    sprintf(label, "%g", s[15]);  XtVaSetValues(VLAB(18));
-
-    s[16] = s[17] = s[18] = s[19] = 0 ;
-    for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){
-      v = (Post_View*)List_Pointer(Post_ViewList, i);
-      if(v->Visible){
-	s[16] += v->NbSP + v->NbVP + v->NbTP;
-	s[17] += v->NbSL + v->NbVL + v->NbTL;
-	s[18] += v->NbST + v->NbVT + v->NbTT;
-	s[19] += v->NbSS + v->NbVS + v->NbTS;
-      }
-    }
-    sprintf(label, "%g", s[16]); XtVaSetValues(VLAB(19));
-    sprintf(label, "%g", s[17]); XtVaSetValues(VLAB(20));
-    sprintf(label, "%g", s[18]); XtVaSetValues(VLAB(21));
-    sprintf(label, "%g", s[19]); XtVaSetValues(VLAB(22));
-
-#undef VLAB
-
-    if((long int)client_data)
-      XtManageChild(WID.OD.infoDialog) ;
-    else
-      XmUpdateDisplay(WID.OD.infoDialog);
-  }
-  
-}
-
-/* ------------------------------------------------------------------------ 
-    set_XXX
-   ------------------------------------------------------------------------ */
-
-void set_r(int i, double val){
-  if(CTX.useTrackball){
-    if(XtIsManaged(WID.OD.viewportDialog)){
-      sprintf(label, "---");
-      XtVaSetValues(WID.OD.viewportText[0][i], XmNvalue, label, NULL);
-      XmUpdateDisplay(WID.OD.viewportText[0][i]);  
-    }
-  }
-  else{
-    if(!CTX.rlock[i]){
-      CTX.r[i] = val;
-      if(XtIsManaged(WID.OD.viewportDialog)){
-	sprintf(label, "%.5g", CTX.r[i]);
-	XtVaSetValues(WID.OD.viewportText[0][i], XmNvalue, label, NULL);
-	XmUpdateDisplay(WID.OD.viewportText[0][i]);  
-      }
-    }
-  }
-}
-
-void set_t(int i, double val){
-  if(!CTX.tlock[i]){
-    CTX.t[i] = val;
-    if(XtIsManaged(WID.OD.viewportDialog)){
-      sprintf(label, "%.5g", CTX.t[i]);
-      XtVaSetValues(WID.OD.viewportText[1][i], XmNvalue, label, NULL);
-      XmUpdateDisplay(WID.OD.viewportText[1][i]);  
-    }
-  }
-}
-
-void set_s(int i, double val){
-  if(!CTX.slock[i]){
-    CTX.s[i] = val;
-    if(XtIsManaged(WID.OD.viewportDialog)){
-      sprintf(label, "%.5g", CTX.s[i]);
-      XtVaSetValues(WID.OD.viewportText[2][i], XmNvalue, label, NULL);
-      XmUpdateDisplay(WID.OD.viewportText[2][i]);  
-    }
-  }
-}
-
-
-/* ------------------------------------------------------------------------ 
-    CurrentViewportCb
-   ------------------------------------------------------------------------ */
-
-void CurrentViewportCb (Widget w, XtPointer client_data, XtPointer call_data){
-  int     i;
-
-  if(XtIsManaged(WID.OD.viewportDialog)){ 
-    XtUnmanageChild(WID.OD.viewportDialog);
-  }
-  else{
-    for(i=0 ; i<3 ; i++){
-      sprintf(label, "%.5g", CTX.r[i]);
-      XtVaSetValues(WID.OD.viewportText[0][i], XmNvalue, label, NULL);
-      sprintf(label, "%.5g", CTX.t[i]);
-      XtVaSetValues(WID.OD.viewportText[1][i], XmNvalue, label, NULL);
-      sprintf(label, "%.5g", CTX.s[i]);
-      XtVaSetValues(WID.OD.viewportText[2][i], XmNvalue, label, NULL);
-    }    
-    XtManageChild(WID.OD.viewportDialog) ;    
-  }
-
-}
-
diff --git a/Motif/CbGeom.cpp b/Motif/CbGeom.cpp
deleted file mode 100644
index 5e6928b49c8d4dcad819398a73d7219511a0ccb4..0000000000000000000000000000000000000000
--- a/Motif/CbGeom.cpp
+++ /dev/null
@@ -1,621 +0,0 @@
-// $Id: CbGeom.cpp,v 1.5 2001-01-29 08:43:44 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Widgets.h"
-#include "Context.h"
-#include "Verif.h"
-#include "OpenFile.h"
-
-#include "CbGeom.h"
-
-extern Context_T  CTX;
-extern Widgets_T  WID;
-extern Mesh       M;
-	     
-static char  name_text[100], value_text[100];
-
-int SelectContour (int type, int num, List_T *Liste1){
-  int      k,ip,i;
-  List_T  *Liste2;
-
-  Liste2 = List_Create(1,1,sizeof(int));
-
-  if(!List_Nbr(Liste1)){
-    switch(type){
-    case ENT_LINE    : k = alledgeslinked (num, Liste1, (List_T*)NULL); break;
-    case ENT_SURFACE : k = allfaceslinked (num, Liste1, (List_T*)NULL); break;
-    }
-  }
-  else{
-    List_Reset(Liste2);
-    for(i=0;i<List_Nbr(Liste1);i++)
-      List_Add(Liste2,List_Pointer(Liste1,i));
-    List_Reset(Liste1);
-    switch(type){
-    case ENT_LINE    : k = alledgeslinked (num, Liste1, Liste2); break;
-    case ENT_SURFACE : k = allfaceslinked (num, Liste1, Liste2); break;
-    }
-  }
-
-  for(i=0;i<List_Nbr(Liste1);i++){
-    List_Read(Liste1,i,&ip);
-    switch(type){
-    case ENT_LINE    : HighlightEntityNum(0,abs(ip),0,1); break ;
-    case ENT_SURFACE : HighlightEntityNum(0,0,abs(ip),1); break ;
-    }
-  }
-
-  List_Delete(Liste2);
-  return k;
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  g e o m _ e v e n t _ h a n d l e r                                     */
-/* ------------------------------------------------------------------------ */
-
-void geom_event_handler (int event) {
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  static int n=0, p[100];
-
-  int      ib,zone,type;
-  List_T  *Liste1, *Liste2;
-
-  if(CTX.threads_lock) return ;
-
-  switch (event) {
-
-  case GEOM_PARSE :
-    OpenProblem(CTX.filename);
-    Draw();
-    break;
-
-  case GEOM_ELEM_ADD_NEW_POINT :
-    add_point(CTX.filename);
-    ZeroHighlight(&M);
-    Replot();
-    break;
-
-  case GEOM_ELEM_ADD_NEW_LINE :
-  case GEOM_ELEM_ADD_NEW_SPLINE :   
-  case GEOM_ELEM_ADD_NEW_BEZIER :
-  case GEOM_ELEM_ADD_NEW_BSPLINE :
-    n=0;
-    while(1){
-      Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)");
-      ib = SelectEntity(ENT_POINT, &v,&c,&s);
-      if(ib == 1){ /* left mouse butt */
-        p[n++] = v->Num; 
-      }
-      if (ib == -1){ /* 'e' */
-        if(n >= 2) {
-          switch(event){
-          case GEOM_ELEM_ADD_NEW_LINE   : add_multline(n,p,CTX.filename); break;
-          case GEOM_ELEM_ADD_NEW_SPLINE : add_spline  (n,p,CTX.filename); break;
-          case GEOM_ELEM_ADD_NEW_BEZIER : add_bezier  (n,p,CTX.filename); break;
-          case GEOM_ELEM_ADD_NEW_BSPLINE: add_bspline (n,p,CTX.filename); break;
-          }
-        }
-        n=0;
-        ZeroHighlight(&M);
-        Replot();
-      }
-      if(ib == 0){ /* 'q' */
-        n=0 ;
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-    }
-    break;
-
-  case GEOM_ELEM_ADD_NEW_CIRCLE :
-    n=0;
-    while(1){
-      if(n == 0) Msg(STATUS3,"Select Center ('q'=quit)");
-      if(n == 1) Msg(STATUS3,"Select Starting Point ('q'=quit)");
-      if(n == 2) Msg(STATUS3,"Select Ending Point ('q'=quit)");
-      ib = SelectEntity(ENT_POINT, &v,&c,&s);
-      if(ib == 1) { /* left mouse butt */
-        p[n++] = v->Num; 
-      }
-      if(ib == 0) { /* 'q' */
-        n=0 ;
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      if(n == 3){
-        add_circ(p[1],p[0],p[2],CTX.filename); /* begin, center, end */
-        ZeroHighlight(&M);
-        Replot();
-        n=0;
-      }
-    }
-    break;
-
-  case GEOM_ELEM_ADD_NEW_ELLIPSIS :
-    n = 0;
-    while(1){
-      if(n == 0) Msg(STATUS3,"Select Center ('q'=quit)");
-      if(n == 1) Msg(STATUS3,"Select an Axis Point ('q'=quit)");
-      if(n == 2) Msg(STATUS3,"Select Starting Point ('q'=quit)");
-      if(n == 3) Msg(STATUS3,"Select Ending Point ('q'=quit)");
-      ib = SelectEntity(ENT_POINT, &v,&c,&s);
-      if(ib == 1) { /* left mouse butt */
-        p[n++] = v->Num; 
-      }
-      if(ib == 0){ /* 'q' */
-        n=0 ;
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      if(n == 4){
-        add_ell(p[3],p[2],p[0],p[1],CTX.filename);
-        ZeroHighlight(&M);
-        Replot();
-        n=0;
-      }
-    }
-    break;
-
-  case GEOM_ELEM_ADD_NEW_PLANE_SURF :
-  case GEOM_ELEM_ADD_NEW_RULED_SURF :
-  case GEOM_ELEM_ADD_NEW_VOLUME :
-    Liste1 = List_Create(10,10,sizeof(int));
-    Liste2 = List_Create(10,10,sizeof(int));
-
-    if(event == GEOM_ELEM_ADD_NEW_VOLUME)
-      type = ENT_SURFACE;
-    else
-      type = ENT_LINE;      
-
-    while(1){      
-      List_Reset(Liste1);
-      List_Reset(Liste2);
-      
-      while(1) {        
-        Msg(STATUS3,"Select Boundary ('q'=quit)");
-        ib = SelectEntity(type, &v,&c,&s);
-        if(ib <= 0){
-          ZeroHighlight(&M);
-          Replot();
-          goto stopall;
-        }       
-        if(SelectContour (type, (type==ENT_LINE)?c->Num:s->Num, Liste1)){
-          if(type==ENT_LINE) 
-            add_loop(Liste1,CTX.filename,&zone);
-          else
-            add_vol(Liste1,CTX.filename,&zone);
-          List_Reset(Liste1);
-          List_Add(Liste2,&zone);
-          while(1){
-            Msg(STATUS3,"Select Holes ('q'=quit)");
-            ib = SelectEntity(type, &v,&c,&s); 
-            if(ib <= 0){
-              ZeroHighlight(&M);
-              Replot();
-              break;
-            }
-            if(SelectContour (type, (type==ENT_LINE)?c->Num:s->Num, Liste1)){
-              if(type==ENT_LINE) 
-                add_loop(Liste1,CTX.filename,&zone);
-              else
-                add_vol(Liste1,CTX.filename,&zone);
-              List_Reset(Liste1);
-              List_Add(Liste2,&zone);
-            }
-          }
-          if(List_Nbr(Liste2)){
-            switch(event){
-            case GEOM_ELEM_ADD_NEW_RULED_SURF : add_surf(Liste2,CTX.filename,0,1); break;
-            case GEOM_ELEM_ADD_NEW_PLANE_SURF : add_surf(Liste2,CTX.filename,0,2); break;
-            case GEOM_ELEM_ADD_NEW_VOLUME :  add_multvol(Liste2,CTX.filename); break;
-            }
-            ZeroHighlight(&M);
-            Replot();
-            break;
-          }
-        }
-      }
-    }
-    stopall : ;
-    List_Delete(Liste1);
-    List_Delete(Liste2);
-    break;
-
-
-  case GEOM_ELEM_ADD_TRANSLATE_POINT :
-  case GEOM_ELEM_MOVE_TRANSLATE_POINT :
-    while(1){
-      Msg(STATUS3,"Select Point ('q'=quit)");
-      if(!SelectEntity(ENT_POINT, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      translate(event==GEOM_ELEM_ADD_TRANSLATE_POINT?1:0,v->Num,CTX.filename, "Point");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_ADD_TRANSLATE_LINE :
-  case GEOM_ELEM_MOVE_TRANSLATE_LINE :
-    while(1){
-      Msg(STATUS3,"Select Line ('q'=quit)");
-      if(!SelectEntity(ENT_LINE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      translate(event==GEOM_ELEM_ADD_TRANSLATE_LINE?1:0,c->Num,CTX.filename, "Line");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_ADD_TRANSLATE_SURF :
-  case GEOM_ELEM_MOVE_TRANSLATE_SURF :
-    while(1){
-      Msg(STATUS3,"Select Surface ('q'=quit)");
-      if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      translate(event==GEOM_ELEM_ADD_TRANSLATE_SURF?1:0,s->Num,CTX.filename, "Surface");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-
-
-  case GEOM_ELEM_ADD_ROTATE_POINT :
-  case GEOM_ELEM_MOVE_ROTATE_POINT :
-    while(1){
-      Msg(STATUS3,"Select Point ('q'=quit)");
-      if(!SelectEntity(ENT_POINT, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      rotate(event==GEOM_ELEM_ADD_ROTATE_POINT?1:0,v->Num,CTX.filename,"Point");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_ADD_ROTATE_LINE :
-  case GEOM_ELEM_MOVE_ROTATE_LINE :
-    while(1){
-      Msg(STATUS3,"Select Line ('q'=quit)");
-      if(!SelectEntity(ENT_LINE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      rotate(event==GEOM_ELEM_ADD_ROTATE_LINE?1:0,c->Num,CTX.filename,"Line");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_ADD_ROTATE_SURF :
-  case GEOM_ELEM_MOVE_ROTATE_SURF :
-    while(1){
-      Msg(STATUS3,"Select Surface ('q'=quit)");
-      if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      rotate(event==GEOM_ELEM_ADD_ROTATE_SURF?1:0,s->Num,CTX.filename,"Surface");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-
-
-
-  case GEOM_ELEM_EXTRUDE_TRANSLATE_POINT :
-  case GEOM_ELEM_EXTRUDE_ROTATE_POINT :
-    while(1){
-      Msg(STATUS3,"Select Point ('q'=quit)");
-      if(!SelectEntity(ENT_POINT, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot(); 
-        break;
-      }
-      event==GEOM_ELEM_EXTRUDE_TRANSLATE_POINT ? 
-        extrude(v->Num,CTX.filename, "Point") :
-        protude(v->Num,CTX.filename, "Point") ;
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_EXTRUDE_TRANSLATE_LINE :
-  case GEOM_ELEM_EXTRUDE_ROTATE_LINE :
-    while(1){
-      Msg(STATUS3,"Select Line ('q'=quit)");
-      if(!SelectEntity(ENT_LINE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      event==GEOM_ELEM_EXTRUDE_TRANSLATE_LINE ? 
-        extrude(c->Num,CTX.filename, "Line") :
-        protude(c->Num,CTX.filename, "Line") ;
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_EXTRUDE_TRANSLATE_SURF :
-  case GEOM_ELEM_EXTRUDE_ROTATE_SURF :
-    while(1){
-      Msg(STATUS3,"Select Surface ('q'=quit)");
-      if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      event==GEOM_ELEM_EXTRUDE_TRANSLATE_SURF ? 
-        extrude(s->Num,CTX.filename, "Surface") :
-        protude(s->Num,CTX.filename, "Surface") ;
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-
-
-  case GEOM_ELEM_ADD_DILATE_POINT :
-  case GEOM_ELEM_MOVE_DILATE_POINT :
-  case GEOM_ELEM_ADD_SYMMETRY_POINT :
-  case GEOM_ELEM_MOVE_SYMMETRY_POINT :
-    while(1){
-      Msg(STATUS3,"Select Point ('q'=quit)");
-      if(!SelectEntity(ENT_POINT, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      switch(event){
-      case GEOM_ELEM_ADD_DILATE_POINT :
-	dilate(1,v->Num,CTX.filename,"Point");
-	break;
-      case GEOM_ELEM_MOVE_DILATE_POINT :
-	dilate(0,v->Num,CTX.filename,"Point");
-	break;
-      case GEOM_ELEM_ADD_SYMMETRY_POINT :
-	symmetry(1,v->Num,CTX.filename,"Point");
-	break;
-      case GEOM_ELEM_MOVE_SYMMETRY_POINT :
-	symmetry(0,v->Num,CTX.filename,"Point");
-	break;
-      }
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_ADD_DILATE_LINE :
-  case GEOM_ELEM_MOVE_DILATE_LINE :
-  case GEOM_ELEM_ADD_SYMMETRY_LINE :
-  case GEOM_ELEM_MOVE_SYMMETRY_LINE :
-    while(1){
-      Msg(STATUS3,"Select Line ('q'=quit)");
-      if(!SelectEntity(ENT_LINE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      switch(event){
-      case GEOM_ELEM_ADD_DILATE_LINE :
-	dilate(1,c->Num,CTX.filename,"Line");
-	break;
-      case GEOM_ELEM_MOVE_DILATE_LINE :
-	dilate(0,c->Num,CTX.filename,"Line");
-	break;
-      case GEOM_ELEM_ADD_SYMMETRY_LINE :
-	symmetry(1,c->Num,CTX.filename,"Line");
-	break;
-      case GEOM_ELEM_MOVE_SYMMETRY_LINE :
-	symmetry(0,c->Num,CTX.filename,"Line");
-	break;
-      }
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_ADD_DILATE_SURF :
-  case GEOM_ELEM_MOVE_DILATE_SURF :
-  case GEOM_ELEM_ADD_SYMMETRY_SURF :
-  case GEOM_ELEM_MOVE_SYMMETRY_SURF :
-    while(1){
-      Msg(STATUS3,"Select Surface ('q'=quit)");
-      if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      switch(event){
-      case GEOM_ELEM_ADD_DILATE_SURF :
-	dilate(1,s->Num,CTX.filename,"Surface");
-	break;
-      case GEOM_ELEM_MOVE_DILATE_SURF :
-	dilate(0,s->Num,CTX.filename,"Surface");
-	break;
-      case GEOM_ELEM_ADD_SYMMETRY_SURF :
-	symmetry(1,s->Num,CTX.filename,"Surface");
-	break;
-      case GEOM_ELEM_MOVE_SYMMETRY_SURF :
-	symmetry(0,s->Num,CTX.filename,"Surface");
-	break;
-      }
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-
-
-
-
-  case GEOM_ELEM_DELETE_POINT :
-    while(1){
-      Msg(STATUS3,"Select Point ('q'=quit)");
-      if(!SelectEntity(ENT_POINT, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      delet(v->Num,CTX.filename, "Point");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_DELETE_LINE :
-    while(1){
-      Msg(STATUS3,"Select Line ('q'=quit)");
-      if(!SelectEntity(ENT_LINE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      delet(c->Num,CTX.filename, "Line");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-  case GEOM_ELEM_DELETE_SURF :
-    while(1){
-      Msg(STATUS3,"Select Point ('q'=quit)");
-      if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-      delet(s->Num,CTX.filename, "Surface");
-      ZeroHighlight(&M);
-      Replot();
-    }
-    break;
-
-
-  case GEOM_ELEM_SKETCH :
-    Msg(STATUS3,"Verifying Geometry");
-    add_infile("Coherence;",CTX.filename);
-    ZeroHighlight(&M);
-    Replot();
-    break;
-
-  case GEOM_PHYS_ADD_POINT:
-  case GEOM_PHYS_ADD_LINE:
-  case GEOM_PHYS_ADD_SURF:
-    Liste1 = List_Create(5,5,sizeof(int));
-    while(1){
-      switch(event){
-        case GEOM_PHYS_ADD_POINT:
-          Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)"); 
-          type = ENT_POINT;
-          break;
-        case GEOM_PHYS_ADD_LINE:
-          Msg(STATUS3,"Select Line ('e'=end, 'q'=quit)"); 
-          type = ENT_LINE;
-          break;
-        case GEOM_PHYS_ADD_SURF:
-          Msg(STATUS3,"Select Surface ('e'=end, 'q'=quit)"); 
-          type = ENT_SURFACE;
-          break;
-      }
-      ib = SelectEntity(type, &v,&c,&s);
-      if(ib == 1){ /* left mouse */
-        switch(event){
-        case GEOM_PHYS_ADD_POINT: List_Add(Liste1, &v->Num); break;
-        case GEOM_PHYS_ADD_LINE:  List_Add(Liste1, &c->Num); break;
-        case GEOM_PHYS_ADD_SURF:  List_Add(Liste1, &s->Num); break;
-        }
-      }
-      if(ib == -1){ /* end */
-        if(List_Nbr(Liste1)){
-          add_physical(Liste1,CTX.filename,type,&zone);
-          List_Reset(Liste1);
-          ZeroHighlight(&M);
-          Replot();
-        }
-      }
-      if(ib == 0){
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-    }
-    break;
-
-  case GEOM_PHYS_ADD_VOLUME :  
-    Msg(WARNING, "Add Physical Volume not done Interactively (Please Edit File Manually)"); 
-    break;
-
-  case GEOM_PHYS_DELETE_POINT :
-  case GEOM_PHYS_DELETE_LINE :
-  case GEOM_PHYS_DELETE_SURF :
-  case GEOM_PHYS_DELETE_VOLUME :
-    Msg(WARNING, "Deletetion of Physical Entities not Done"); 
-    break;
-
-  case GEOM_ELEM_ADD_NEW_NURBS_SURF :
-    Msg(WARNING, "Add NURBS not not done Interactively (Please Edit File Manually)"); 
-    break;
-
-  default :
-    Msg(WARNING, "Unknown Event in geom_event_handler"); 
-    break;
-
-  }
-
-  Msg(STATUS3,"Ready");
-}
-
-
-/* ------------------------------------------------------------------------ 
-    G e o m C b                                                       
-   ------------------------------------------------------------------------ */
-
-void GeomCb (Widget w, XtPointer client_data, XtPointer call_data){
-
-  switch((long int)client_data){
-
-  case GEOM_PARAMETER_ADD   : add_param(name_text,value_text,CTX.filename); break;
-  case GEOM_PARAMETER_NAME  : strcpy(name_text,XmTextGetString(w)); break;
-  case GEOM_PARAMETER_VALUE : strcpy(value_text,XmTextGetString(w)); break;
-  case GEOM_POINT_ADD  : geom_event_handler(GEOM_ELEM_ADD_NEW_POINT); Replot(); break;
-  case GEOM_POINT_X    : strcpy(x_text,XmTextGetString(w)); break;
-  case GEOM_POINT_Y    : strcpy(y_text,XmTextGetString(w)); break;
-  case GEOM_POINT_Z    : strcpy(z_text,XmTextGetString(w)); break;
-  case GEOM_POINT_L    : strcpy(l_text,XmTextGetString(w)); break;
-  case GEOM_TRAN_X     : strcpy(tx_text,XmTextGetString(w)); break;
-  case GEOM_TRAN_Y     : strcpy(ty_text,XmTextGetString(w)); break;
-  case GEOM_TRAN_Z     : strcpy(tz_text,XmTextGetString(w)); break;
-  case GEOM_ROT_PX     : strcpy(px_text,XmTextGetString(w)); break;
-  case GEOM_ROT_PY     : strcpy(py_text,XmTextGetString(w)); break;
-  case GEOM_ROT_PZ     : strcpy(pz_text,XmTextGetString(w)); break;
-  case GEOM_ROT_AX     : strcpy(ax_text,XmTextGetString(w)); break;  
-  case GEOM_ROT_AY     : strcpy(ay_text,XmTextGetString(w)); break; 
-  case GEOM_ROT_AZ     : strcpy(az_text,XmTextGetString(w)); break;
-  case GEOM_ROT_ANGLE  : strcpy(angle_text,XmTextGetString(w)); break;
-  case GEOM_DILAT_X    : strcpy(dx_text,XmTextGetString(w)); break;
-  case GEOM_DILAT_Y    : strcpy(dy_text,XmTextGetString(w)); break;
-  case GEOM_DILAT_Z    : strcpy(dz_text,XmTextGetString(w)); break;
-  case GEOM_DILAT_F    : strcpy(df_text,XmTextGetString(w)); break;
-  case GEOM_SYMMETRY_A : strcpy(sa_text,XmTextGetString(w)); break;
-  case GEOM_SYMMETRY_B : strcpy(sb_text,XmTextGetString(w)); break;
-  case GEOM_SYMMETRY_C : strcpy(sc_text,XmTextGetString(w)); break;
-  case GEOM_SYMMETRY_D : strcpy(sd_text,XmTextGetString(w)); break;
-  default :
-    Msg(WARNING, "Unknown Value in GeomCb (%d)", (long int)client_data); 
-    break;
-
-  }
-}
-
diff --git a/Motif/CbGeom.h b/Motif/CbGeom.h
deleted file mode 100644
index 08f85e139e6cdc7984268fd3eda05c50cf9f66f0..0000000000000000000000000000000000000000
--- a/Motif/CbGeom.h
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef _CB_GEOM_H_
-#define _CB_GEOM_H_
-
-/* geom event handler */
-
-#define  GEOM_ELEM_ADD_NEW_PARAMETER         1
-#define  GEOM_ELEM_ADD_NEW_POINT             2
-#define  GEOM_ELEM_ADD_NEW_LINE              3
-#define  GEOM_ELEM_ADD_NEW_SPLINE            4
-#define  GEOM_ELEM_ADD_NEW_BEZIER            5
-#define  GEOM_ELEM_ADD_NEW_BSPLINE           6
-#define  GEOM_ELEM_ADD_NEW_CIRCLE            7
-#define  GEOM_ELEM_ADD_NEW_ELLIPSIS          8
-#define  GEOM_ELEM_ADD_NEW_PLANE_SURF        9
-#define  GEOM_ELEM_ADD_NEW_RULED_SURF        10
-#define  GEOM_ELEM_ADD_NEW_NURBS_SURF        11
-#define  GEOM_ELEM_ADD_NEW_VOLUME            12
-#define  GEOM_ELEM_ADD_TRANSLATE_POINT       13
-#define  GEOM_ELEM_ADD_TRANSLATE_LINE        14
-#define  GEOM_ELEM_ADD_TRANSLATE_SURF        15
-#define  GEOM_ELEM_ADD_ROTATE_POINT          16
-#define  GEOM_ELEM_ADD_ROTATE_LINE           17
-#define  GEOM_ELEM_ADD_ROTATE_SURF           18
-#define  GEOM_ELEM_ADD_DILATE_POINT          19
-#define  GEOM_ELEM_ADD_DILATE_LINE           20
-#define  GEOM_ELEM_ADD_DILATE_SURF           21
-#define  GEOM_ELEM_ADD_SYMMETRY_POINT        22
-#define  GEOM_ELEM_ADD_SYMMETRY_LINE         23
-#define  GEOM_ELEM_ADD_SYMMETRY_SURF         24
-#define  GEOM_ELEM_MOVE_TRANSLATE_POINT      25
-#define  GEOM_ELEM_MOVE_TRANSLATE_LINE       26
-#define  GEOM_ELEM_MOVE_TRANSLATE_SURF       27
-#define  GEOM_ELEM_MOVE_ROTATE_POINT         28
-#define  GEOM_ELEM_MOVE_ROTATE_LINE          29
-#define  GEOM_ELEM_MOVE_ROTATE_SURF          30
-#define  GEOM_ELEM_MOVE_DILATE_POINT         31
-#define  GEOM_ELEM_MOVE_DILATE_LINE          32
-#define  GEOM_ELEM_MOVE_DILATE_SURF          33
-#define  GEOM_ELEM_MOVE_SYMMETRY_POINT       34
-#define  GEOM_ELEM_MOVE_SYMMETRY_LINE        35
-#define  GEOM_ELEM_MOVE_SYMMETRY_SURF        36
-#define  GEOM_ELEM_EXTRUDE_TRANSLATE_POINT   37
-#define  GEOM_ELEM_EXTRUDE_TRANSLATE_LINE    38
-#define  GEOM_ELEM_EXTRUDE_TRANSLATE_SURF    39
-#define  GEOM_ELEM_EXTRUDE_ROTATE_POINT      40
-#define  GEOM_ELEM_EXTRUDE_ROTATE_LINE       41
-#define  GEOM_ELEM_EXTRUDE_ROTATE_SURF       42
-#define  GEOM_ELEM_DELETE_POINT              43
-#define  GEOM_ELEM_DELETE_LINE               44
-#define  GEOM_ELEM_DELETE_SURF               45
-#define  GEOM_ELEM_SKETCH                    46
-#define  GEOM_PHYS_ADD_POINT                 47
-#define  GEOM_PHYS_ADD_LINE                  48
-#define  GEOM_PHYS_ADD_SURF                  49
-#define  GEOM_PHYS_ADD_VOLUME                50
-#define  GEOM_PHYS_DELETE_POINT              51
-#define  GEOM_PHYS_DELETE_LINE               52
-#define  GEOM_PHYS_DELETE_SURF               53
-#define  GEOM_PHYS_DELETE_VOLUME             54
-#define  GEOM_PARSE                          55
-
-/* GeomCb */
-
-#define  GEOM_PARAMETER_ADD                  1
-#define  GEOM_PARAMETER_NAME                 2
-#define  GEOM_PARAMETER_VALUE                3
-#define  GEOM_POINT_ADD                      4
-#define  GEOM_POINT_X                        5
-#define  GEOM_POINT_Y                        6
-#define  GEOM_POINT_Z                        7
-#define  GEOM_POINT_L                        8
-#define  GEOM_TRAN_X                         9
-#define  GEOM_TRAN_Y                         10
-#define  GEOM_TRAN_Z                         11
-#define  GEOM_ROT_PX                         12
-#define  GEOM_ROT_PY                         13
-#define  GEOM_ROT_PZ                         14
-#define  GEOM_ROT_AX                         15
-#define  GEOM_ROT_AY                         16
-#define  GEOM_ROT_AZ                         17
-#define  GEOM_ROT_ANGLE                      18
-#define  GEOM_DILAT_X                        19
-#define  GEOM_DILAT_Y                        20
-#define  GEOM_DILAT_Z                        21
-#define  GEOM_DILAT_F                        22
-#define  GEOM_SYMMETRY_A                     23
-#define  GEOM_SYMMETRY_B                     24
-#define  GEOM_SYMMETRY_C                     25
-#define  GEOM_SYMMETRY_D                     26
-
-void geom_event_handler (int event);
-
-#endif
diff --git a/Motif/CbInput.cpp b/Motif/CbInput.cpp
deleted file mode 100644
index 17a80f5206ef237d9caf3a9299ec94b43e4a56ff..0000000000000000000000000000000000000000
--- a/Motif/CbInput.cpp
+++ /dev/null
@@ -1,719 +0,0 @@
-// $Id: CbInput.cpp,v 1.7 2001-02-17 22:04:05 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Widgets.h"
-#include "Context.h"
-#include "Options.h"
-#include "XContext.h"
-#include "Register.h"
-
-#include "CbContext.h"
-#include "CbGeom.h"
-#include "CbPost.h"
-#include "CbMesh.h"
-
-extern Context_T   CTX ;
-extern XContext_T  XCTX ;
-extern Widgets_T   WID ;
-extern Mesh        M;
-
-static int        Modifier=0;
-
-void KeyboardAccel(XEvent *event){
-  XComposeStatus  stat;
-  KeySym          keysym;
-  char            buf[100];
-
-  XLookupString(&event->xkey, buf, sizeof(buf), &keysym, &stat);
-
-  switch(Modifier){
-
-    /* ----------------------------------------------------- */
-    /* No modifier or shift is pressed                       */
-    /* ----------------------------------------------------- */
-
-  case 0 : 
-
-      /* modifier check and trash */
-    switch (keysym) {
-    case XK_Control_L : case XK_Control_R : 
-      Modifier = 1; 
-      break;
-    case XK_Alt_L : case XK_Alt_R : 
-    case XK_Meta_L : case XK_Meta_R : 
-      Modifier = 2; 
-      break;
-
-      /* hacks */
-
-      /*
-    case XK_Up :
-      CTX.clip_plane0[2] = 1. ;
-      if(fabs(CTX.clip_plane0[3]-CTX.lc/20. <1.)) CTX.clip_plane0[3] -= CTX.lc/20. ;
-      Draw();
-      break;
-    case XK_Down :
-      CTX.clip_plane0[2] = 1. ;
-      if(fabs(CTX.clip_plane0[3]+CTX.lc/20 <1.)) CTX.clip_plane0[3] += CTX.lc/20. ;
-      Draw();
-      break;
-      */
-
-      /* mesh shortcuts */
-    case XK_0 : case XK_KP_0 : 
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_GEOM,NULL); 
-      geom_event_handler(GEOM_PARSE);
-      break;
-    case XK_1 : case XK_KP_1 :
-    case XK_F1 : case XK_KP_F1 :
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_MESH,NULL); 
-      mesh_event_handler(MESH_1D);
-      break;
-    case XK_2 : case XK_KP_2 :
-    case XK_F2 : case XK_KP_F2 :
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_MESH,NULL);
-      mesh_event_handler(MESH_2D);
-      break;
-    case XK_3 : case XK_KP_3 :
-    case XK_F3 : case XK_KP_F3 :
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_MESH,NULL);
-      mesh_event_handler(MESH_3D);
-      break;
-
-      /* post shortcuts */
-    case XK_s: 
-      CTX.post.anim_delay += 0.01 ;
-      XtVaSetValues(WID.OD.postAnimScale, XmNvalue, (int)(CTX.post.anim_delay), NULL);
-      XmUpdateDisplay(WID.OD.postAnimScale);
-      break ;
-    case XK_S: 
-      CTX.post.anim_delay -= 0.01 ;
-      if(CTX.post.anim_delay < 0.) CTX.post.anim_delay = 0. ;
-      XtVaSetValues(WID.OD.postAnimScale, XmNvalue, (int)(CTX.post.anim_delay), NULL);
-      XmUpdateDisplay(WID.OD.postAnimScale);
-      break ;
-
-      /* module shortcuts */
-    case XK_g :
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_GEOM,NULL); 
-      break;
-    case XK_m :
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_MESH,NULL); 
-      break;
-    case XK_p :
-      ActualizeContextCb (NULL,(XtPointer)CONTEXT_POST,NULL); 
-      break;
-
-      /* options menu shortcuts */
-    case XK_G :
-      ManageCb(NULL,(XtPointer)WID.OD.geomDialog,NULL); 
-      break;
-    case XK_M :
-      ManageCb(NULL,(XtPointer)WID.OD.meshDialog,NULL); 
-      break;
-    case XK_P :
-      ManageCb(NULL,(XtPointer)WID.OD.postDialog,NULL); 
-      break;
-    case XK_O :
-      ManageCb(NULL,(XtPointer)WID.OD.miscDialog,NULL); 
-      break;
-    case XK_I :  
-      Modifier = 0 ;
-      CurrentInfoCb(NULL, (XtPointer)1, NULL); 
-      break;
-    case XK_V : 
-      Modifier = 0 ;
-      CurrentViewportCb (NULL, NULL, NULL);
-      break;
-    }
-    break;
-
-
-    /* ----------------------------------------------------- */
-    /* Control is pressed                                    */
-    /* ----------------------------------------------------- */
-
-  case 1 :
-
-    switch (keysym) {
-
-      /* file menu shortcuts */
-    case XK_q : case XK_Q : 
-      exit(1);
-    case XK_a : case XK_A : 
-    case XK_c : case XK_C : 
-      CancelMeshThread();
-      break;
-    case XK_s :  
-      Print_Mesh(&M,NULL, CTX.mesh.format); 
-      break; 
-    case XK_p : 
-    case XK_S : 
-      Modifier = 0 ;
-      ManageCb(NULL,(XtPointer)WID.FD.saveAsDialog,NULL); 
-      break ;
-    case XK_o : case XK_O : 
-      Modifier = 0 ;
-      ManageCb(NULL,(XtPointer)WID.FD.openDialog,NULL); 
-      break;
-    case XK_m : case XK_M : 
-      Modifier = 0 ;
-      ManageCb(NULL,(XtPointer)WID.FD.mergeDialog,NULL); 
-      break;
-    case XK_l : case XK_L : 
-      Modifier = 0 ;
-      ReloadAllViewsCb(NULL,NULL,NULL); 
-      break;
-    case XK_r : case XK_R : 
-      Modifier = 0 ;
-      RemoveAllViewsCb(NULL,NULL,NULL); 
-      break;
-    }
-    break ;
-    
-
-    /* ----------------------------------------------------- */
-    /* Alt is pressed                                        */
-    /* ----------------------------------------------------- */
-
-  case 2 :
-    
-    /* everything that is not "cascade menu" */
-    switch (keysym) {
-    case XK_f : case XK_F : 
-      CTX.fast = !CTX.fast; 
-      XtVaSetValues(WID.OD.miscMiscButt[2], XmNset, CTX.fast, NULL);
-      XmUpdateDisplay(WID.OD.miscMiscCheck);
-      break;
-    case XK_b : case XK_B :
-      CTX.post.scales = !CTX.post.scales;
-      Draw();
-      break;
-    case XK_o : case XK_O :
-      CTX.ortho = !CTX.ortho; 
-      XtVaSetValues(WID.OD.miscProjButt[0], XmNset, CTX.ortho, NULL);
-      XtVaSetValues(WID.OD.miscProjButt[1], XmNset, !CTX.ortho, NULL);
-      XmUpdateDisplay(WID.OD.miscProjCheck);
-      Draw();
-      break;
-    case XK_h : case XK_H :
-      CTX.geom.highlight = !CTX.geom.highlight;
-      CTX.geom.highlight ? Msg(INFO, "Highlight Enabled") : 
-        Msg(INFO, "Highlight Disabled");
-      break;
-    case XK_c : case XK_C :
-      opt_general_color_scheme(0,GMSH_SET,opt_general_color_scheme(0,GMSH_GET,0)+1);
-      opt_geometry_color_scheme(0,GMSH_SET,opt_general_color_scheme(0,GMSH_GET,0));
-      opt_mesh_color_scheme(0,GMSH_SET,opt_general_color_scheme(0,GMSH_GET,0));
-      XtVaSetValues(WID.OD.miscColorSchemeScale,XmNvalue, CTX.color_scheme, NULL);
-      XmUpdateDisplay(WID.OD.miscColorSchemeScale);  
-      Draw();
-      break;
-    case XK_d : case XK_D :
-      if(!CTX.mesh.hidden && !CTX.mesh.shade)
-        CTX.mesh.hidden = 1;
-      else if(CTX.mesh.hidden && !CTX.mesh.shade)  
-        CTX.mesh.shade = 1;
-      else{
-        CTX.mesh.hidden = 0; CTX.mesh.shade = 0; 
-      }
-      XtVaSetValues(WID.OD.meshAspectButt[2],XmNset,CTX.mesh.hidden&&CTX.mesh.shade, NULL);
-      XtVaSetValues(WID.OD.meshAspectButt[1],XmNset,CTX.mesh.hidden&&!CTX.mesh.shade, NULL);
-      XtVaSetValues(WID.OD.meshAspectButt[0],XmNset,!CTX.mesh.hidden&&!CTX.mesh.shade, NULL);
-      XmUpdateDisplay(WID.OD.meshAspectCheck);  
-      Draw();
-      break;
-    case XK_x : case XK_X :
-      if(CTX.useTrackball)
-	CTX.setQuaternion(0.,-1./sqrt(2.),0.,1./sqrt(2.));
-      set_r(0,0.);  set_r(1,90.);set_r(2,0.); Draw(); 
-      break;
-    case XK_y : case XK_Y : 
-      if(CTX.useTrackball)
-	CTX.setQuaternion(1./sqrt(2.),0.,0.,1./sqrt(2.));
-      set_r(0,-90.);set_r(1,0.); set_r(2,0.); Draw(); 
-      break;
-    case XK_z : case XK_Z : 
-      if(CTX.useTrackball)
-	CTX.setQuaternion(0.,0.,0.,1.);
-      set_r(0,0.);  set_r(1,0.); set_r(2,0.); Draw(); 
-      break;
-    case XK_a :
-      CTX.small_axes = !CTX.small_axes;
-      XtVaSetValues(WID.OD.miscMiscButt[1], XmNset, CTX.small_axes, NULL);
-      XmUpdateDisplay(WID.OD.miscMiscCheck);
-      Draw();
-      break;
-    case XK_A :
-      CTX.axes = !CTX.axes;
-      XtVaSetValues(WID.OD.miscMiscButt[0], XmNset, CTX.axes, NULL);
-      XmUpdateDisplay(WID.OD.miscMiscCheck);
-      Draw();
-      break;
-    case XK_p :
-      CTX.geom.points = !CTX.geom.points;
-      if(!CTX.geom.vis_type){
-        XtVaSetValues(WID.OD.geomVisibleButt[0], XmNset, CTX.geom.points, NULL);
-        XmUpdateDisplay(WID.OD.geomVisibleButt[0]); 
-      }
-      Draw();
-      break;
-    case XK_P :
-      CTX.mesh.points = !CTX.mesh.points;
-      if(!CTX.mesh.vis_type){
-        XtVaSetValues(WID.OD.meshVisibleButt[0], XmNset, CTX.mesh.points, NULL);
-        XmUpdateDisplay(WID.OD.meshVisibleButt[0]); 
-      }
-      Draw();
-      break;
-    case XK_l :
-      CTX.geom.lines = !CTX.geom.lines;
-      if(!CTX.geom.vis_type){
-        XtVaSetValues(WID.OD.geomVisibleButt[1], XmNset, CTX.geom.lines, NULL);
-        XmUpdateDisplay(WID.OD.geomVisibleButt[1]); 
-      }
-      Draw();
-      break;
-    case XK_L :
-      CTX.mesh.lines = !CTX.mesh.lines;
-      if(!CTX.mesh.vis_type){
-        XtVaSetValues(WID.OD.meshVisibleButt[1], XmNset, CTX.mesh.lines, NULL);
-        XmUpdateDisplay(WID.OD.meshVisibleButt[1]); 
-      }
-      Draw();
-      break;
-    case XK_s :
-      CTX.geom.surfaces = !CTX.geom.surfaces;
-      if(!CTX.geom.vis_type){
-        XtVaSetValues(WID.OD.geomVisibleButt[2], XmNset, CTX.geom.surfaces, NULL);
-        XmUpdateDisplay(WID.OD.geomVisibleButt[2]); 
-      }
-      Draw();
-      break;
-    case XK_S :
-      CTX.mesh.surfaces = !CTX.mesh.surfaces;
-      if(!CTX.mesh.vis_type){
-        XtVaSetValues(WID.OD.meshVisibleButt[2], XmNset, CTX.mesh.surfaces, NULL);
-        XmUpdateDisplay(WID.OD.meshVisibleButt[2]); 
-      }
-      Draw();
-      break;
-    case XK_v :
-      CTX.geom.volumes = !CTX.geom.volumes;
-      if(!CTX.geom.vis_type){
-        XtVaSetValues(WID.OD.geomVisibleButt[3], XmNset, CTX.geom.volumes, NULL);
-        XmUpdateDisplay(WID.OD.geomVisibleButt[3]); 
-      }
-      Draw();
-      break;
-    case XK_V :
-      CTX.mesh.volumes = !CTX.mesh.volumes;
-      if(!CTX.mesh.vis_type){
-        XtVaSetValues(WID.OD.meshVisibleButt[3], XmNset, CTX.mesh.volumes, NULL);
-        XmUpdateDisplay(WID.OD.meshVisibleButt[3]); 
-      }
-      Draw();
-      break;
-    case XK_m : case XK_M :
-      CTX.mesh.points   = !CTX.mesh.points;
-      CTX.mesh.lines    = !CTX.mesh.lines;
-      CTX.mesh.surfaces = !CTX.mesh.surfaces;
-      CTX.mesh.volumes  = !CTX.mesh.volumes;
-      XtVaSetValues(WID.OD.meshVisibleButt[0], XmNset, CTX.mesh.points, NULL);
-      XtVaSetValues(WID.OD.meshVisibleButt[1], XmNset, CTX.mesh.lines, NULL);
-      XtVaSetValues(WID.OD.meshVisibleButt[2], XmNset, CTX.mesh.surfaces, NULL);
-      XtVaSetValues(WID.OD.meshVisibleButt[3], XmNset, CTX.mesh.volumes, NULL);
-      XmUpdateDisplay(WID.OD.meshVisibleCheck); 
-      Draw();
-      break;
-    case XK_t : case XK_T :
-      MarkAllViewsChanged(1);
-      Draw();
-      break;
-    }
-    break ;
-
-  }
-
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  I n p u t                                                               */
-/* ------------------------------------------------------------------------ */
-
-void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj);
-void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
-                            Curve **thec, Surface **thes, Mesh *m);
-void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
-            GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2);
-
-void InputCb (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb){
-  XEvent         *event;
-  XComposeStatus  stat;
-  KeySym          keysym;
-  GLuint          ii[SELECTION_BUFFER_SIZE], jj[SELECTION_BUFFER_SIZE];
-  char            buf[100];
-  int             previous_mesh_draw, previous_post_draw ;
-  int             width, height ;
-
-  static int      ibut, hits;
-  static int      ButtonPressed=0, ZoomClick=0, FirstClick=0;
-  static int      x, y, movx, movy;
-  static GLdouble xc1, yc1, xc2, yc2, xt1, yt1, xscale1, yscale1;
-  static GLdouble xb, yb, xc, yc, xe, ye, xz, yz;
-  static GLdouble movzx, movzy;
-  static Vertex   *v=NULL, *ov;
-  static Curve    *c=NULL, *oc;
-  static Surface  *s=NULL, *os;
-  
-  width  = CTX.viewport[2]-CTX.viewport[0] ;
-  height = CTX.viewport[3]-CTX.viewport[1] ;
-  
-  event = cb->event;
-  
-  switch(event->type){
-    
-  /* -------------------------------------------------------------
-     K e y s 
-     ------------------------------------------------------------- */
-    
-  case KeyPress :
-    KeyboardAccel(event);
-    break;
-    
-  case KeyRelease :
-    XLookupString(&event->xkey, buf, sizeof(buf), &keysym, &stat);
-    if(keysym == XK_Control_L ||
-       keysym == XK_Control_R ||
-       keysym == XK_Alt_L ||
-       keysym == XK_Alt_R ||
-       keysym == XK_Meta_L ||
-       keysym == XK_Meta_R) 
-      Modifier = 0;
-    break;
-    
-  /* -------------------------------------------------------------
-     B u t t o n P r e s s
-     ------------------------------------------------------------- */
-    
-  case ButtonPress :
-    ButtonPressed++;
-    FirstClick=1;
-    ibut = event->xbutton.button;
-    x    = event->xbutton.x;
-    y    = event->xbutton.y;
-
-    switch(ibut){
-    case 1:
-      if(!ZoomClick && Modifier){
-        xb = CTX.vxmin + ((GLdouble) x / width) * (CTX.vxmax - CTX.vxmin);
-        yb = CTX.vymax - ((GLdouble) y / height) * (CTX.vymax - CTX.vymin);
-        xc1 = xb/CTX.s[0] - CTX.t[0];
-        yc1 = yb/CTX.s[1] - CTX.t[1];
-        ZoomClick=1;
-        movzx = movzy = 0;
-        Modifier = 0;
-      }
-      else if(ZoomClick){
-        xe = CTX.vxmin + ((GLdouble) x / width) * (CTX.vxmax - CTX.vxmin);
-        ye = CTX.vymax - ((GLdouble) y / height) * (CTX.vymax - CTX.vymin);
-        xc2 = xe/CTX.s[0] - CTX.t[0];
-        yc2 = ye/CTX.s[1] - CTX.t[1];     
-        ZoomClick=0;
-        if(CTX.overlay){
-          glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context);
-          glClearIndex(0);
-          glClear(GL_COLOR_BUFFER_BIT);  
-          glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-        }
-        if(xb!=xe && yb!=ye)
-          myZoom(xb,xe,yb,ye,xc1,xc2,yc1,yc2);
-      } 
-      break;
-    case 2:
-      if(Modifier && !ZoomClick){
-        Modifier = 0;
-        set_s(1, CTX.s[0]);
-        set_s(2, CTX.s[0]);
-        Draw();
-      }
-      else{
-        ZoomClick=0;
-        if(CTX.overlay){
-          glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context);
-          glClearIndex(0);
-          glClear(GL_COLOR_BUFFER_BIT);  
-          glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-        }
-      }
-      break;      
-    case 3:
-      if(Modifier && !ZoomClick){
-        Modifier = 0;
-	if(CTX.useTrackball){
-	  CTX.setQuaternion(0.,0.,0.,1.);
-	}
-	else{
-	  set_r(0,0.); set_r(1,0.); set_r(2,0.); 
-	}
-        set_t(0,0.); set_t(1,0.); set_t(2,0.);
-        set_s(0,1.); set_s(1,1.); set_s(2,1.);
-        Draw();
-      }
-      else{
-        ZoomClick=0;
-        if(CTX.overlay){
-          glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context);
-          glClearIndex(0);
-          glClear(GL_COLOR_BUFFER_BIT);  
-          glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-        }
-      }
-      break;
-    }
-    break;
-
-  /* -------------------------------------------------------------
-      B u t t o n R e l e a s e
-     ------------------------------------------------------------- */
-
-  case ButtonRelease :
-    if(ButtonPressed>0){
-      ButtonPressed--;
-      ibut = event->xbutton.button;
-      x    = event->xbutton.x;
-      y    = event->xbutton.y;
-    }
-    if(!ZoomClick){
-      previous_mesh_draw = CTX.mesh.draw ;
-      previous_post_draw = CTX.post.draw ;
-      if(ButtonPressed>0){
-        if(CTX.fast) CTX.mesh.draw = CTX.post.draw = 0;
-      }
-      Draw();
-      CTX.mesh.draw = previous_mesh_draw ;
-      CTX.post.draw = previous_post_draw ;
-    }
-    break;
-      
-  /* -------------------------------------------------------------
-      E n t e r / L e a v e N o t i f y
-     ------------------------------------------------------------- */
-
-  case EnterNotify :
-  case LeaveNotify :
-    ButtonPressed = 0;
-    Modifier = 0;
-    break;
-    
-  /* -------------------------------------------------------------
-      M o t i o n N o t i f y 
-     ------------------------------------------------------------- */
-
-  case MotionNotify :
-    movx = (event->xbutton.x-x);
-    movy = (event->xbutton.y-y);
-
-    if(ZoomClick) {
-
-      xz = CTX.vxmin + ((GLdouble) event->xbutton.x / width) *
-	(CTX.vxmax - CTX.vxmin);
-      yz = CTX.vymax - ((GLdouble) event->xbutton.y / height) * 
-	(CTX.vymax - CTX.vymin) ;
-      if(CTX.overlay) {
-        movzx = xz - xb; movzy = yz - yb;
-        InitOverlay();
-        glLineWidth(1.);
-        glClearIndex(0);
-        glClear(GL_COLOR_BUFFER_BIT);  
-        glIndexi((CTX.color.bg<CTX.color.fg)?XCTX.xcolor.ovwhite:XCTX.xcolor.ovblack);
-        glBegin(GL_LINE_STRIP);
-        glVertex2d(xb,yb);
-        glVertex2d(xb+movzx,yb);
-        glVertex2d(xb+movzx,yb+movzy);
-        glVertex2d(xb,yb+movzy);
-        glVertex2d(xb,yb);
-        glEnd();
-
-        /* Dessine le plus gd rectangle possible si ortho */
-
-        /*
-        if(fabs((double)movzx/(double)movzy) > ((double)width/(double)height)){
-          constry = movzy;
-          constrx = sign(movzx)*fabs(movzy)*((double)width/(double)height);
-        }
-        else{
-          constrx = movzx;
-          constry = sign(movzy)*fabs(movzx)*((double)height/(double)width);
-        }
-        glIndexi(theRed);
-        glBegin(GL_LINE_STRIP);
-        glVertex2d(xb+constrx,yb);
-        glVertex2d(xb+constrx,yb+constry);
-        glVertex2d(xb,yb+constry);
-        glEnd();
-        */
-
-        glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-      }
-      else {
-        glPopMatrix();
-        glDisable(GL_DEPTH_TEST);
-        glDisable(GL_LIGHTING);
-        glMatrixMode(GL_PROJECTION);
-        glPushMatrix();
-        glLoadIdentity();
-        gluOrtho2D(CTX.vxmin, CTX.vxmax, CTX.vymin, CTX.vymax);
-        glMatrixMode(GL_MODELVIEW);
-        glPushMatrix();
-        glLoadIdentity();
-        
-        if(CTX.db) glDrawBuffer(GL_BACK);
-        
-        glDisable(GL_DEPTH_TEST);
-        /* c'est une maniere de contourner l'absence de XOR, mais ca ne marche 
-           evidemment qu'avec un background tout noir ou tout blanc !*/
-        glColor3f(1.,1.,1.);
-        glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
-        glEnable(GL_BLEND);
-
-        glBegin(GL_LINE_STRIP);
-        glVertex2d(xb,yb);
-        glVertex2d(xb+movzx,yb);
-        glVertex2d(xb+movzx,yb+movzy);
-        glVertex2d(xb,yb+movzy);
-        glVertex2d(xb,yb);
-        glEnd();
-        movzx = xz - xb; movzy = yz - yb;
-        
-        glBegin(GL_LINE_STRIP);
-        glVertex2d(xb,yb);
-        glVertex2d(xb+movzx,yb);
-        glVertex2d(xb+movzx,yb+movzy);
-        glVertex2d(xb,yb+movzy);
-        glVertex2d(xb,yb);
-        glEnd();
-
-        glDisable(GL_BLEND);
-        glEnable(GL_DEPTH_TEST);
-        glPopMatrix();
-        glMatrixMode(GL_PROJECTION);
-        glPopMatrix();
-        glMatrixMode(GL_MODELVIEW);
-        
-        if(CTX.db)
-          glXSwapBuffers(XCTX.display,XtWindow(WID.G.glw));
-        else
-          glFlush();
-
-      }
-    }
-    else {
-      if(ButtonPressed){
-
-        if(CTX.overlay){
-          glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context);
-          glClearIndex(0);
-          glClear(GL_COLOR_BUFFER_BIT);  
-          glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-        }
-
-        if(FirstClick){
-          xc1 = ( ((GLdouble) x / width) * (CTX.vxmax - CTX.vxmin) 
-		  + CTX.vxmin )/CTX.s[0] - CTX.t[0];
-          yc1 = ( CTX.vymax - ((GLdouble) y / height) * 
-		  (CTX.vymax - CTX.vymin))/CTX.s[1] - CTX.t[1];
-          xt1 = CTX.t[0];
-          yt1 = CTX.t[1];
-          xscale1 = CTX.s[0];
-          yscale1 = CTX.s[1];
-          FirstClick=0;
-        }
-
-        switch(ibut){
-        case 1:
-	  
-	  if(CTX.useTrackball)
-	    {
-	      CTX.addQuaternion ((2.0*x - width) / width,
-				 (height - 2.0*y) / height,
-				 (2.0*event->xbutton.x - width) / width,
-				 (height - 2.0*event->xbutton.y) / height);
-	    }
-	  else
-	    {
-	      set_r(1, CTX.r[1] + ((abs(movx) > abs(movy))?180*(float)movx/(float)width:0));
-	      set_r(0, CTX.r[0] + ((abs(movx) > abs(movy))?0:180*(float)movy/(float)height));
-	    }
-          break;
-        case 2:
-	  if(!CTX.useTrackball)
-	    set_r(2, CTX.r[2] + ((abs(movy) > abs(movx))?0:-180*(float)movx/(float)width));         
-
-          set_s(0, CTX.s[0] * ( (abs(movy) > abs(movx)) ?
-                                ( (movy>0) ? (float)(1.04*(abs(movy)+height))/(float)height
-                                  : (float)(height)/(float)(1.04*(abs(movy)+height)) )
-                                : 1.) );                    
-          set_s(1, CTX.s[0]);
-          set_s(2, CTX.s[0]);
-
-          if(abs(movy) > abs(movx)){
-            set_t(0, xt1*(xscale1/CTX.s[0])-xc1*(1.-(xscale1/CTX.s[0])));
-            set_t(1, yt1*(yscale1/CTX.s[1])-yc1*(1.-(yscale1/CTX.s[1])));
-          }
-          break;
-        case 3:
-          xc = ( ((GLdouble) x / width) * (CTX.vxmax - CTX.vxmin) + 
-		 CTX.vxmin ) / CTX.s[0];
-          yc = ( CTX.vymax - ((GLdouble) y / height) *
-		 (CTX.vymax - CTX.vymin)) / CTX.s[1];
-          set_t(0, xc-xc1);
-          set_t(1, yc-yc1);
-          set_t(2, 0.);
-          break;
-        }
-        previous_mesh_draw = CTX.mesh.draw ;
-        previous_post_draw = CTX.post.draw ;
-        if(CTX.fast) CTX.mesh.draw = CTX.post.draw = 0;
-        Draw();
-        CTX.mesh.draw = previous_mesh_draw ;
-        CTX.post.draw = previous_post_draw ;
-      }
-      else{
-        Process_SelectionBuffer(event->xbutton.x, event->xbutton.y, &hits, ii, jj);
-        ov = v; oc = c; os = s; 
-        v = NULL; c = NULL; s = NULL;
-        Filter_SelectionBuffer(hits,ii,jj,&v,&c,&s,&M);
-
-        if(CTX.overlay){
-          glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context);
-          if(ov != v || oc != c || os != s) { 
-            glClearIndex(0);
-            glClear(GL_COLOR_BUFFER_BIT);  
-            glIndexi((CTX.color.bg<CTX.color.fg)?XCTX.xcolor.ovwhite:XCTX.xcolor.ovblack);
-            BeginHighlight();
-            HighlightEntity(v,c,s,0);
-            EndHighlight(0);
-          }
-          glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-        }
-        else{
-          if(ov != v || oc != c || os != s) { 
-            if(CTX.geom.highlight) Draw();
-            BeginHighlight();
-            HighlightEntity(v,c,s,0);
-            EndHighlight(0);
-          }
-        }
-      }
-      x += movx; 
-      y += movy; 
-    }
-    break;
-  }
-}
-
diff --git a/Motif/CbMesh.cpp b/Motif/CbMesh.cpp
deleted file mode 100644
index 351be097a3cfd9c0b96b763ee3879319e2fa0dfc..0000000000000000000000000000000000000000
--- a/Motif/CbMesh.cpp
+++ /dev/null
@@ -1,291 +0,0 @@
-// $Id: CbMesh.cpp,v 1.4 2001-01-29 08:43:44 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "CbMesh.h"
-#include "Context.h"
-#include "Widgets.h"
-
-extern Widgets_T  WID;
-extern Context_T  CTX;
-extern Mesh       M;
-
-/* ------------------------------------------------------------------------ */
-/*  m e s h _ e v e n t _ h a n d l e r                                     */
-/* ------------------------------------------------------------------------ */
-
-#ifdef _USETHREADS
-
-#include <pthread.h>
-
-int               MeshDim ;
-pthread_t         MeshThread ;
-//pthread_mutex_t   MeshMutex ;
-
-void* StartMeshThread(void * data){
-
-  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
-  //  pthread_mutex_unlock(&MeshMutex);
-
-  mai3d(&M,MeshDim);
-  Msg(STATUS3,"Ready");
-  CTX.mesh.draw = 1;
-  CTX.threads_lock = 0;
-  XtSetSensitive(WID.G.Butt[6], 0);
-  Draw();
-  pthread_exit(NULL);
-  return NULL ;
-}
-
-void CancelMeshThread(void){
-  if(CTX.threads){
-    //  pthread_mutex_lock(&MeshMutex);
-    //  pthread_join(MeshThread,NULL);
-    //  pthread_detach(MeshThread);
-    
-    pthread_cancel(MeshThread);
-    CTX.mesh.draw = 1;
-    CTX.threads_lock = 0;
-    XtSetSensitive(WID.G.Butt[6], 0);    
-    Msg(STATUS2,"Mesh Aborted");
-    mesh_event_handler(MESH_DELETE);
-    Msg(STATUS3,"Ready");
-    Draw();
-  }
-}
-
-#else
-
-void CancelMeshThread(void){
-  
-}
-
-#endif
-
-
-
-void mesh_event_handler (int event) {
-  Vertex   *v;
-  Curve    *c;
-  Surface  *s;
-  int       ib;
-  static int n=0, p[100];
-
-  if(CTX.threads_lock) return ;
-
-  switch (event) {    
-
-  case MESH_DELETE : 
-    mai3d(&M, 0); 
-    break;
-    
-  case MESH_1D : 
-#ifdef _USETHREADS
-    if(CTX.threads){
-      XtSetSensitive(WID.G.Butt[6], 1);
-      CTX.mesh.draw = 0; CTX.threads_lock = 1 ; MeshDim = 1 ; 
-      //      pthread_mutex_init(&MeshMutex,NULL);
-      //      pthread_mutex_lock(&MeshMutex);
-      pthread_create(&MeshThread, NULL, StartMeshThread, NULL);
-    }
-    else
-#endif
-      mai3d(&M, 1); 
-    break;
-    
-  case MESH_2D : 
-#ifdef _USETHREADS
-    if(CTX.threads){
-      XtSetSensitive(WID.G.Butt[6], 1);
-      CTX.mesh.draw = 0; CTX.threads_lock = 1 ; MeshDim = 2 ; 
-      //      pthread_mutex_init(&MeshMutex,NULL);
-      //      pthread_mutex_lock(&MeshMutex);
-      pthread_create(&MeshThread, NULL, StartMeshThread, NULL);
-    }
-    else
-#endif
-      mai3d(&M, 2);
-    break;    
-
-  case MESH_3D : 
-#ifdef _USETHREADS
-    if(CTX.threads){
-      XtSetSensitive(WID.G.Butt[6], 1);
-      CTX.mesh.draw = 0; CTX.threads_lock = 1 ; MeshDim = 3 ; 
-      //      pthread_mutex_init(&MeshMutex,NULL);
-      //      pthread_mutex_lock(&MeshMutex);
-      pthread_create(&MeshThread, NULL, StartMeshThread, NULL);
-    }
-    else
-#endif
-      mai3d(&M, 3); 
-    break;
-
-
-  case MESH_DEFINE_CHAR_LENGTH :
-    n=0;
-    while(1){
-      Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)");
-      ib = SelectEntity(ENT_POINT, &v,&c,&s);
-      if(ib == 1){ /* left mouse butt */
-        p[n++] = v->Num; 
-      }
-      if (ib == -1){ /* 'e' */
-        if(n >= 1) {
-          add_charlength(n,p,CTX.filename); break;
-        }
-        n=0;
-        ZeroHighlight(&M);
-        Replot();
-      }
-      if(ib == 0){ /* 'q' */
-        n=0 ;
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-    }
-    break ;
-
-  case MESH_DEFINE_RECOMBINE :
-    n=0;
-    while(1){
-      Msg(STATUS3,"Select Surface ('e'=end, 'q'=quit)");
-      ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
-      if(ib == 1){ /* left mouse butt */
-        p[n++] = s->Num; 
-      }
-      if (ib == -1){ /* 'e' */
-        if(n >= 1) {
-          add_recosurf(n,p,CTX.filename); break;
-        }
-        n=0;
-        ZeroHighlight(&M);
-        Replot();
-      }
-      if(ib == 0){ /* 'q' */
-        n=0 ;
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-    }
-    break ;
-
-  case MESH_DEFINE_TRSF_LINE :
-  case MESH_DEFINE_TRSF_SURFACE :
-  case MESH_DEFINE_TRSF_VOLUME :
-    n=0;
-    while(1){
-      switch (event) {    
-      case MESH_DEFINE_TRSF_LINE :
-        Msg(STATUS3,"Select Line ('e'=end, 'q'=quit)");
-        ib = SelectEntity(ENT_LINE, &v,&c,&s);
-        break ;
-      case MESH_DEFINE_TRSF_SURFACE :
-        Msg(STATUS3,"Select Surface ('e'=end, 'q'=quit)");
-        ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
-        break;
-      case MESH_DEFINE_TRSF_VOLUME :
-        ib = 1;
-        break;
-      }
-      if(ib == 1){ /* left mouse butt */
-        switch (event) {    
-        case MESH_DEFINE_TRSF_LINE : p[n++] = c->Num ; break ;
-        case MESH_DEFINE_TRSF_SURFACE : p[n++] = s->Num;
-        case MESH_DEFINE_TRSF_VOLUME :
-          while(1){
-            Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)");
-            ib = SelectEntity(ENT_POINT, &v,&c,&s);
-            if(ib == 1){ /* left mouse butt */
-              p[n++] = v->Num ;
-            }
-            if (ib == -1){ /* 'e' */
-              switch (event) {    
-              case MESH_DEFINE_TRSF_SURFACE :
-                if(n == 3+1 || n == 4+1)
-                  add_trsfsurf(n,p,CTX.filename); 
-                else
-                  Msg(STATUS2, "Wrong Number of Points for Transfinite Surface");
-                break;
-              case MESH_DEFINE_TRSF_VOLUME :
-                if(n == 6 || n == 8)
-                  add_trsfvol(n,p,CTX.filename);
-                else
-                  Msg(STATUS2, "Wrong Number of Points for Transfinite Volume");
-                break;
-              }
-              n=0;
-              ZeroHighlight(&M);
-              Replot();
-              break;
-            }
-            if(ib == 0){ /* 'q' */
-              n=0 ;
-              ZeroHighlight(&M);
-              Replot();
-              break;
-            }
-          }
-          break ;
-        }
-      }
-      if (ib == -1){ /* 'e' */
-        if (event == MESH_DEFINE_TRSF_LINE){ 
-          if(n >= 1) add_trsfline(n,p,CTX.filename);
-        }
-        n=0;
-        ZeroHighlight(&M);
-        Replot();
-      }
-      if(ib == 0){ /* 'q' */
-        n=0 ;
-        ZeroHighlight(&M);
-        Replot();
-        break;
-      }
-    }
-    break ;
-
-  case MESH_DEFINE_ATTRACTOR_POINT :
-  case MESH_DEFINE_ATTRACTOR_LINE :
-  case MESH_DEFINE_ATTRACTOR_SURFACE :
-    Msg(WARNING, "Interactive Attractor Definition not done yet"); 
-    break ;
-
-  default : 
-    Msg(WARNING, "Unkown Event in mesh_event_handler"); 
-    break;
-  }
-
-  if(!CTX.threads){
-    Msg(STATUS3,"Ready");
-    Draw();
-  }
-}
-
-/* ------------------------------------------------------------------------ 
-    M e s h C b                                                       
-   ------------------------------------------------------------------------ */
-
-void MeshCb (Widget w, XtPointer client_data, XtPointer call_data){
-
-  switch((long int)client_data){
-
-  case MESH_TRSF_LINE_PTS  : strcpy(trsf_pts_text,XmTextGetString(w)); break;
-  case MESH_TRSF_LINE_TYPE : strcpy(trsf_type_text,XmTextGetString(w)); break;
-  case MESH_TRSF_VOL_NUM   : strcpy(trsf_vol_text,XmTextGetString(w)); break;
-  case MESH_CHAR_LENGTH    : strcpy(char_length_text,XmTextGetString(w)); break;
-  case MESH_ATTRACTOR_X    : strcpy(attrx_text,XmTextGetString(w)); break;
-  case MESH_ATTRACTOR_Y    : strcpy(attry_text,XmTextGetString(w)); break;
-  case MESH_ATTRACTOR_Z    : strcpy(attrz_text,XmTextGetString(w)); break;
-  default :
-    Msg(WARNING, "Unknown Event in MeshCb (%d)", (long int)client_data); 
-    break;
-
-  }
-}
diff --git a/Motif/CbMesh.h b/Motif/CbMesh.h
deleted file mode 100644
index b5fe82fd27016d1d4fb80dd4a5b7befd29d5c4d1..0000000000000000000000000000000000000000
--- a/Motif/CbMesh.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _CB_MESH_H_
-#define _CB_MESH_H_
-
-/* mesh event handler */
-                                             
-#define  MESH_DELETE                         1
-#define  MESH_1D                             2
-#define  MESH_2D                             3 
-#define  MESH_3D                             4
-#define  MESH_DEFINE_CHAR_LENGTH             5
-#define  MESH_DEFINE_TRSF_LINE               6
-#define  MESH_DEFINE_TRSF_SURFACE            7
-#define  MESH_DEFINE_TRSF_VOLUME             8
-#define  MESH_DEFINE_RECOMBINE               9
-#define  MESH_DEFINE_ATTRACTOR_POINT         10
-#define  MESH_DEFINE_ATTRACTOR_LINE          11
-#define  MESH_DEFINE_ATTRACTOR_SURFACE       12
-
-/* MeshCb */
-
-#define  MESH_TRSF_LINE_PTS                  100
-#define  MESH_TRSF_LINE_TYPE                 101
-#define  MESH_TRSF_VOL_NUM                   102
-#define  MESH_CHAR_LENGTH                    103
-#define  MESH_ATTRACTOR_X                    104
-#define  MESH_ATTRACTOR_Y                    105
-#define  MESH_ATTRACTOR_Z                    106
-
-void CancelMeshThread(void);
-void mesh_event_handler (int event);
-                                             
-#endif
diff --git a/Motif/CbOptions.cpp b/Motif/CbOptions.cpp
deleted file mode 100644
index e6a4c655b7e3e69762a5f06e00b38d95ebc3e377..0000000000000000000000000000000000000000
--- a/Motif/CbOptions.cpp
+++ /dev/null
@@ -1,380 +0,0 @@
-// $Id: CbOptions.cpp,v 1.11 2001-08-12 13:08:20 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Verif.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Widgets.h"
-#include "Pixmaps.h"
-#include "Context.h"
-#include "Options.h"
-#include "XContext.h"
-#include "Register.h"
-#include "Timer.h"
-#include "Visibility.h"
-
-#include "CbOptions.h"
-#include "CbGeom.h"
-#include "CbMesh.h"
-#include "CbPost.h"
-
-extern Context_T  CTX;
-extern XContext_T XCTX ;
-extern Widgets_T  WID;
-extern Pixmaps_T  PIX;
-extern Mesh       M;
-
-static int  select_by_number=OPTIONS_MESH_SELECT_ENTITY ;
-static int  stop_anim ;
-static long anim_time ;
-
-/* ------------------------------------------------------------------------ 
-    O p t i o n s C b                                                       
-   ------------------------------------------------------------------------ */
-
-void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){
-  int                i, e;
-  char              *c, label[32];
-  XWindowAttributes  xattrib;
-  XEvent             event;
-  
-  switch((long int)client_data){
-
-    /* globales */
-    
-  case OPTIONS_REPLOT        : Draw(); break;
-  case OPTIONS_AXES          : CTX.axes = !CTX.axes; break;
-  case OPTIONS_LITTLE_AXES   : CTX.small_axes = !CTX.small_axes; break;
-  case OPTIONS_FAST_REDRAW   : CTX.fast = !CTX.fast ; break ;
-  case OPTIONS_DISPLAY_LISTS : CTX.display_lists = !CTX.display_lists ; break ;
-  case OPTIONS_ALPHA_BLENDING: CTX.alpha = !CTX.alpha; break;
-  case OPTIONS_TRACKBALL     : CTX.useTrackball = !CTX.useTrackball; break;
-  case OPTIONS_COLOR_SCHEME_SCALE: 
-    XmScaleGetValue(WID.OD.miscColorSchemeScale, &e); 
-    opt_general_color_scheme(0,GMSH_SET,e);
-    opt_geometry_color_scheme(0,GMSH_SET,e);
-    opt_mesh_color_scheme(0,GMSH_SET,e);
-    Draw();
-    break ;
-  case OPTIONS_ORTHOGRAPHIC  : CTX.ortho = 1; break;
-  case OPTIONS_PERSPECTIVE   : CTX.ortho = 0; break;
-  case OPTIONS_LIGHT_X_SCALE : 
-    XmScaleGetValue(WID.OD.miscLightScale[0], &e); CTX.light_position[0][0] = 0.04*e ;
-    MarkAllViewsChanged (0); break ;
-  case OPTIONS_LIGHT_Y_SCALE : 
-    XmScaleGetValue(WID.OD.miscLightScale[1], &e); CTX.light_position[0][1] = 0.04*e ; 
-    MarkAllViewsChanged (0); break ;
-  case OPTIONS_LIGHT_Z_SCALE : 
-    XmScaleGetValue(WID.OD.miscLightScale[2], &e); CTX.light_position[0][2] = 0.04*e ; 
-    MarkAllViewsChanged (0);break ;
-  case OPTIONS_SHINE_SCALE   :
-    XmScaleGetValue(WID.OD.miscShineScale, &e); CTX.shine = 0.04*e ; 
-    MarkAllViewsChanged (0);break ;
-  case OPTIONS_SCALEX        : CTX.s[0] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_SCALEY        : CTX.s[1] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_SCALEZ        : CTX.s[2] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_TRANX         : CTX.t[0] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_TRANY         : CTX.t[1] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_TRANZ         : CTX.t[2] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_ROTX          : CTX.r[0] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_ROTY          : CTX.r[1] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_ROTZ          : CTX.r[2] = (GLdouble)atof(XmTextGetString(w)); break;
-  case OPTIONS_ROTX_LOCKED   : CTX.rlock[0] = !CTX.rlock[0];  break;
-  case OPTIONS_ROTY_LOCKED   : CTX.rlock[1] = !CTX.rlock[1];  break;
-  case OPTIONS_ROTZ_LOCKED   : CTX.rlock[2] = !CTX.rlock[2];  break;
-  case OPTIONS_TRANX_LOCKED  : CTX.tlock[0] = !CTX.tlock[0];  break;
-  case OPTIONS_TRANY_LOCKED  : CTX.tlock[1] = !CTX.tlock[1];  break;
-  case OPTIONS_TRANZ_LOCKED  : CTX.tlock[2] = !CTX.tlock[2];  break;
-  case OPTIONS_SCALEX_LOCKED : CTX.slock[0] = !CTX.slock[0];  break;
-  case OPTIONS_SCALEY_LOCKED : CTX.slock[1] = !CTX.slock[1];  break;
-  case OPTIONS_SCALEZ_LOCKED : CTX.slock[2] = !CTX.slock[2];  break;
-  case OPTIONS_XVIEW : 
-    if(CTX.useTrackball)
-      CTX.setQuaternion(0.,-1./sqrt(2.),0.,1./sqrt(2.));
-    set_r(0,0.);  set_r(1,90.);set_r(2,0.); 
-    Draw(); 
-    break;
-  case OPTIONS_YVIEW : 
-    if(CTX.useTrackball)
-      CTX.setQuaternion(1./sqrt(2.),0.,0.,1./sqrt(2.));
-    set_r(0,-90.);set_r(1,0.); set_r(2,0.); 
-    Draw(); 
-    break;
-  case OPTIONS_ZVIEW :
-    if(CTX.useTrackball)
-      CTX.setQuaternion(0.,0.,0.,1.);
-    set_r(0,0.);  set_r(1,0.); set_r(2,0.); 
-    Draw(); 
-    break;
-  case OPTIONS_CVIEW : 
-    set_t(0,0.);  set_t(1,0.); set_t(2,0.); 
-    set_s(0,1.);  set_s(1,1.); set_s(2,1.); 
-    Draw(); 
-    break;
-  case OPTIONS_PVIEW :
-    XGetWindowAttributes(XtDisplay(WID.G.shell),XtWindow(WID.G.shell),&xattrib);
-    fprintf(stderr, "-geometry %dx%d -viewport %g %g %g %g %g %g %g %g %g\n",
-            xattrib.width, xattrib.height,
-            CTX.r[0],CTX.r[1],CTX.r[2],
-            CTX.t[0],CTX.t[1],CTX.t[2],
-            CTX.s[0],CTX.s[1],CTX.s[2]);
-    Print_Options(0, GMSH_FULLRC, NULL);
-    break ;
-
-    /* save */
-
-  case OPTIONS_SAVE_MSH  : 
-    CTX.print.format = CTX.mesh.format = FORMAT_MSH; 
-    break;
-  case OPTIONS_SAVE_UNV  : 
-    CTX.print.format = CTX.mesh.format = FORMAT_UNV; 
-    break;
-  case OPTIONS_SAVE_GREF : 
-    CTX.print.format = CTX.mesh.format = FORMAT_GREF; 
-    break;
-  case OPTIONS_SAVE_GEO  : 
-    CTX.print.format = FORMAT_GEO; 
-    break;
-  case OPTIONS_SAVE_AUTO : 
-    CTX.print.format = FORMAT_AUTO; 
-    break;
-  case OPTIONS_SAVE_XPM  : 
-    CTX.print.format = FORMAT_XPM; 
-    break;
-  case OPTIONS_SAVE_GIF  : 
-    CTX.print.format = FORMAT_GIF;
-    CTX.print.gif_dither = 0;
-    CTX.print.gif_transparent = 0; 
-    break;
-  case OPTIONS_SAVE_GIF_DITHERED : 
-    CTX.print.format = FORMAT_GIF;
-    CTX.print.gif_dither = 1; 
-    CTX.print.gif_transparent = 0; 
-    break;
-  case OPTIONS_SAVE_GIF_TRANSPARENT :
-    CTX.print.format = FORMAT_GIF;
-    CTX.print.gif_dither = 0;
-    CTX.print.gif_transparent = 1; 
-    break;
-  case OPTIONS_SAVE_JPEG :
-    CTX.print.format = FORMAT_JPEG; 
-    break;
-  case OPTIONS_SAVE_PPM :
-    CTX.print.format = FORMAT_PPM; 
-    break;
-  case OPTIONS_SAVE_YUV :
-    CTX.print.format = FORMAT_YUV; 
-    break;
-  case OPTIONS_SAVE_EPS_IMAGE : 
-    CTX.print.format = FORMAT_EPS; 
-    CTX.print.eps_quality = 0;
-    break;
-  case OPTIONS_SAVE_EPS_SIMPLE :
-    CTX.print.format = FORMAT_EPS; 
-    CTX.print.eps_quality = 1; 
-    break;
-  case OPTIONS_SAVE_EPS_COMPLEX :
-    CTX.print.format = FORMAT_EPS; 
-    CTX.print.eps_quality = 2; 
-    break;
-
-    /* geometrie */
-
-  case OPTIONS_GEOM_CHECK      : /* Print_Geo(&M,filename); */ break;    
-  case OPTIONS_GEOM_VISIBILITY_ENTITY : 
-    CTX.geom.vis_type = 0; 
-    XtVaSetValues(WID.OD.geomVisibleButt[0], XmNset, CTX.geom.points?True:False, NULL);
-    XtVaSetValues(WID.OD.geomVisibleButt[1], XmNset, CTX.geom.lines?True:False, NULL); 
-    XtVaSetValues(WID.OD.geomVisibleButt[2], XmNset, CTX.geom.surfaces?True:False, NULL);
-    XtVaSetValues(WID.OD.geomVisibleButt[3], XmNset, CTX.geom.volumes?True:False, NULL);
-    for(i=0;i<4;i++)XmUpdateDisplay(WID.OD.geomVisibleButt[i]);
-    break;
-  case OPTIONS_GEOM_VISIBILITY_NUMBER : 
-    CTX.geom.vis_type = 1; 
-    XtVaSetValues(WID.OD.geomVisibleButt[0], XmNset, CTX.geom.points_num?True:False, NULL);
-    XtVaSetValues(WID.OD.geomVisibleButt[1], XmNset, CTX.geom.lines_num?True:False, NULL); 
-    XtVaSetValues(WID.OD.geomVisibleButt[2], XmNset, CTX.geom.surfaces_num?True:False, NULL);
-    XtVaSetValues(WID.OD.geomVisibleButt[3], XmNset, CTX.geom.volumes_num?True:False, NULL);
-    for(i=0;i<4;i++)XmUpdateDisplay(WID.OD.geomVisibleButt[i]);
-    break;
-  case OPTIONS_GEOM_POINTS     : 
-    if(!CTX.geom.vis_type) CTX.geom.points = !CTX.geom.points; 
-    else                   CTX.geom.points_num = !CTX.geom.points_num; break; 
-  case OPTIONS_GEOM_LINES      :
-    if(!CTX.geom.vis_type) CTX.geom.lines = !CTX.geom.lines;
-    else                   CTX.geom.lines_num = !CTX.geom.lines_num; break; 
-  case OPTIONS_GEOM_SURFACES   :
-    if(!CTX.geom.vis_type) CTX.geom.surfaces = !CTX.geom.surfaces;
-    else                   CTX.geom.surfaces_num = !CTX.geom.surfaces_num; break; 
-  case OPTIONS_GEOM_VOLUMES    :
-    if(!CTX.geom.vis_type) CTX.geom.volumes = !CTX.geom.volumes;
-    else                   CTX.geom.volumes_num = !CTX.geom.volumes_num; break; 
-  case OPTIONS_GEOM_NORMALS_SCALE : 
-    XmScaleGetValue(WID.OD.geomNormalsScale, &e); CTX.geom.normals = e ;  
-    sprintf(label,"%g",CTX.geom.normals);   
-    XtVaSetValues(WID.OD.geomNormalsText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.OD.geomNormalsText); break;
-  case OPTIONS_GEOM_NORMALS_TEXT : 
-    CTX.geom.normals = atof(XmTextGetString(w));
-    XtVaSetValues(WID.OD.geomNormalsScale, XmNvalue, 
-                  THRESHOLD((int)CTX.geom.normals,0,100), NULL);
-    XmUpdateDisplay(WID.OD.geomNormalsScale); break;
-  case OPTIONS_GEOM_TANGENTS_SCALE : 
-    XmScaleGetValue(WID.OD.geomTangentsScale, &e); CTX.geom.tangents = e ;  
-    sprintf(label,"%g",CTX.geom.tangents);   
-    XtVaSetValues(WID.OD.geomTangentsText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.OD.geomTangentsText); break;
-  case OPTIONS_GEOM_TANGENTS_TEXT : 
-    CTX.geom.tangents = atof(XmTextGetString(w));
-    XtVaSetValues(WID.OD.geomTangentsScale, XmNvalue,
-                  THRESHOLD((int)CTX.geom.tangents,0,100), NULL);
-    XmUpdateDisplay(WID.OD.geomTangentsScale); break;
-    
-
-    /* mesh */
-
-  case OPTIONS_MESH_SHADING      : CTX.mesh.hidden = 1; CTX.mesh.shade = 1; break; 
-  case OPTIONS_MESH_HIDDEN_LINES : CTX.mesh.hidden = 1; CTX.mesh.shade = 0; break; 
-  case OPTIONS_MESH_WIREFRAME    : CTX.mesh.hidden = 0; CTX.mesh.shade = 0; break; 
-  case OPTIONS_MESH_VISIBILITY_ENTITY : 
-    CTX.mesh.vis_type = 0; 
-    XtVaSetValues(WID.OD.meshVisibleButt[0], XmNset, CTX.mesh.points?True:False, NULL);
-    XtVaSetValues(WID.OD.meshVisibleButt[1], XmNset, CTX.mesh.lines?True:False, NULL); 
-    XtVaSetValues(WID.OD.meshVisibleButt[2], XmNset, CTX.mesh.surfaces?True:False, NULL);
-    XtVaSetValues(WID.OD.meshVisibleButt[3], XmNset, CTX.mesh.volumes?True:False, NULL);
-    for(i=0;i<4;i++)XmUpdateDisplay(WID.OD.meshVisibleButt[i]);
-    break;
-  case OPTIONS_MESH_VISIBILITY_NUMBER : 
-    CTX.mesh.vis_type = 1; 
-    XtVaSetValues(WID.OD.meshVisibleButt[0], XmNset, CTX.mesh.points_num?True:False, NULL);
-    XtVaSetValues(WID.OD.meshVisibleButt[1], XmNset, CTX.mesh.lines_num?True:False, NULL); 
-    XtVaSetValues(WID.OD.meshVisibleButt[2], XmNset, CTX.mesh.surfaces_num?True:False, NULL);
-    XtVaSetValues(WID.OD.meshVisibleButt[3], XmNset, CTX.mesh.volumes_num?True:False, NULL);
-    for(i=0;i<4;i++)XmUpdateDisplay(WID.OD.meshVisibleButt[i]);
-    break;
-  case OPTIONS_MESH_POINTS     :
-    if(!CTX.mesh.vis_type) CTX.mesh.points = !CTX.mesh.points; 
-    else                   CTX.mesh.points_num = !CTX.mesh.points_num; break; 
-  case OPTIONS_MESH_LINES      :
-    if(!CTX.mesh.vis_type) CTX.mesh.lines = !CTX.mesh.lines;
-    else                   CTX.mesh.lines_num = !CTX.mesh.lines_num; break; 
-  case OPTIONS_MESH_SURFACES   :
-    if(!CTX.mesh.vis_type) CTX.mesh.surfaces = !CTX.mesh.surfaces;
-    else                   CTX.mesh.surfaces_num = !CTX.mesh.surfaces_num; break; 
-  case OPTIONS_MESH_VOLUMES    :
-    if(!CTX.mesh.vis_type) CTX.mesh.volumes = !CTX.mesh.volumes;
-    else                   CTX.mesh.volumes_num = !CTX.mesh.volumes_num; break; 
-  case OPTIONS_MESH_DEGRE2       : 
-    (CTX.mesh.degree==2) ? CTX.mesh.degree=1 : CTX.mesh.degree=2; break ;
-  case OPTIONS_MESH_ANISOTROPIC  : 
-    (CTX.mesh.algo==DELAUNAY_OLDALGO) ?
-      CTX.mesh.algo=DELAUNAY_NEWALGO :
-        CTX.mesh.algo=DELAUNAY_OLDALGO; break ;
-  case OPTIONS_MESH_INTERACTIVE : 
-    CTX.mesh.interactive = !CTX.mesh.interactive; break ;
-  case OPTIONS_MESH_SMOOTHING_SCALE : 
-    XmScaleGetValue(WID.OD.meshSmoothingScale, &e); CTX.mesh.nb_smoothing = e ;  
-    sprintf(label,"%d",CTX.mesh.nb_smoothing);   
-    XtVaSetValues(WID.OD.meshSmoothingText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.OD.meshSmoothingText); break;
-  case OPTIONS_MESH_SMOOTHING_TEXT : 
-    CTX.mesh.nb_smoothing = atoi(XmTextGetString(w));
-    XtVaSetValues(WID.OD.meshSmoothingScale, XmNvalue, 
-                  THRESHOLD(CTX.mesh.nb_smoothing,0,100), NULL);
-    XmUpdateDisplay(WID.OD.meshSmoothingScale); break;
-  case OPTIONS_MESH_EXPLODE_SCALE : 
-    XmScaleGetValue(WID.OD.meshExplodeScale, &e); CTX.mesh.explode = 0.01*e ;  
-    sprintf(label,"%g",CTX.mesh.explode);   
-    XtVaSetValues(WID.OD.meshExplodeText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.OD.meshExplodeText); break;
-  case OPTIONS_MESH_EXPLODE_TEXT : 
-    CTX.mesh.explode = atof(XmTextGetString(w));
-    XtVaSetValues(WID.OD.meshExplodeScale, XmNvalue,
-                  THRESHOLD((int)(100*CTX.mesh.explode),0,100), NULL);
-    XmUpdateDisplay(WID.OD.meshExplodeScale); break;
-  case OPTIONS_MESH_NORMALS_SCALE : 
-    XmScaleGetValue(WID.OD.meshNormalsScale, &e); CTX.mesh.normals = e ;  
-    sprintf(label,"%g",CTX.mesh.normals);   
-    XtVaSetValues(WID.OD.meshNormalsText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.OD.meshNormalsText); break;
-  case OPTIONS_MESH_NORMALS_TEXT : 
-    CTX.mesh.normals = atof(XmTextGetString(w));
-    XtVaSetValues(WID.OD.meshNormalsScale, XmNvalue,
-                  THRESHOLD((int)CTX.mesh.normals,0,100), NULL);
-    XmUpdateDisplay(WID.OD.meshNormalsScale); break;
-  case OPTIONS_MESH_ABORT : 
-    CancelMeshThread();
-    break;
-  case OPTIONS_MESH_SELECT_ENTITY : select_by_number = OPTIONS_MESH_SELECT_ENTITY; break; 
-  case OPTIONS_MESH_SELECT_QUALITY : select_by_number = OPTIONS_MESH_SELECT_QUALITY; break; 
-
-    /* post */
-    
-  case OPTIONS_POST_LINK_NONE    : CTX.post.link = 0; break; 
-  case OPTIONS_POST_LINK_VISIBLE : CTX.post.link = 1; break; 
-  case OPTIONS_POST_LINK_ALL     : CTX.post.link = 2; break; 
-  case OPTIONS_POST_ANIM_START: 
-    stop_anim = 0 ;
-    Set_AnimPixmap(&WID, &PIX, 0) ;
-    Set_AnimCallback(&WID, 0) ;
-    anim_time = GetTime();
-    while(1){
-      if(XtAppPending(XCTX.AppContext)){
-        XtAppNextEvent(XCTX.AppContext,&event);
-        XtDispatchEvent(&event);
-        if(stop_anim) break ;
-      }
-      else{
-        if(GetTime() - anim_time > 1.e6*CTX.post.anim_delay){
-          anim_time = GetTime();
-          MarkAllViewsChanged(2);
-          Draw();
-        }
-      }
-    }
-    break ;
-  case OPTIONS_POST_ANIM_STOP: 
-    stop_anim = 1;
-    Set_AnimPixmap(&WID, &PIX, 1) ;
-    Set_AnimCallback(&WID, 1) ;
-    break ;
-  case OPTIONS_POST_ANIM_DELAY: 
-    XmScaleGetValue(WID.OD.postAnimScale, &e);
-    CTX.post.anim_delay = e ; 
-    break ;
-
-    /* mesh + geom : a changer...*/
-  case OPTIONS_GEOM_HIDE_SHOW :  
-    select_by_number=OPTIONS_MESH_SELECT_ENTITY;
-    /* Fal-through */
-  case OPTIONS_MESH_HIDE_SHOW :  
-    c = XmTextGetString(w); 
-    if(select_by_number == OPTIONS_MESH_SELECT_ENTITY){
-      if (!strcmp(c,"all") || !strcmp(c,"*")){
-        if(SHOW_ALL_ENTITIES){ RemplirEntitesVisibles(0); SHOW_ALL_ENTITIES = 0; }
-        else { RemplirEntitesVisibles(1); SHOW_ALL_ENTITIES = 1; }
-      }
-      else{ 
-        i = atoi(c);
-        if(EntiteEstElleVisible(i)) ToutesLesEntitesRelatives(i,EntitesVisibles,0);
-        else ToutesLesEntitesRelatives(i,EntitesVisibles,1);
-      }
-    }
-    else{
-      if (!strcmp(c,"all") || !strcmp(c,"*"))
-        CTX.mesh.gamma_sup = 0.0 ;
-      else
-        CTX.mesh.gamma_sup = atof(c);
-    }
-    break;
-
-  default :
-    Msg(WARNING, "Unknown value in OptionsCb : %d", (long int)client_data); 
-    break;
-  }
-
-}
-
diff --git a/Motif/CbOptions.h b/Motif/CbOptions.h
deleted file mode 100644
index 086c9dc4a409b5515e2629017e36b26905f09c95..0000000000000000000000000000000000000000
--- a/Motif/CbOptions.h
+++ /dev/null
@@ -1,115 +0,0 @@
-#ifndef _CB_OPTIONS_H_
-#define _CB_OPTIONS_H_
-
-/* options globales */
-                                             
-#define  OPTIONS_REPLOT                         1
-#define  OPTIONS_AXES                           2
-#define  OPTIONS_LITTLE_AXES                    3
-#define  OPTIONS_XVIEW                          4
-#define  OPTIONS_YVIEW                          5
-#define  OPTIONS_ZVIEW                          6
-#define  OPTIONS_CVIEW                          7
-#define  OPTIONS_PVIEW                          8
-#define  OPTIONS_SCALEX                         9
-#define  OPTIONS_SCALEY                         10
-#define  OPTIONS_SCALEZ                         11
-#define  OPTIONS_ROTX                           12
-#define  OPTIONS_ROTY                           13
-#define  OPTIONS_ROTZ                           14
-#define  OPTIONS_TRANX                          15
-#define  OPTIONS_TRANY                          16
-#define  OPTIONS_TRANZ                          17
-#define  OPTIONS_ROTX_LOCKED                    18
-#define  OPTIONS_ROTY_LOCKED                    19
-#define  OPTIONS_ROTZ_LOCKED                    20
-#define  OPTIONS_TRANX_LOCKED                   21
-#define  OPTIONS_TRANY_LOCKED                   22
-#define  OPTIONS_TRANZ_LOCKED                   23
-#define  OPTIONS_SCALEX_LOCKED                  24
-#define  OPTIONS_SCALEY_LOCKED                  25
-#define  OPTIONS_SCALEZ_LOCKED                  26
-#define  OPTIONS_ORTHOGRAPHIC                   27
-#define  OPTIONS_PERSPECTIVE                    28
-#define  OPTIONS_LIGHT_X_SCALE                  29
-#define  OPTIONS_LIGHT_Y_SCALE                  30
-#define  OPTIONS_LIGHT_Z_SCALE                  31
-#define  OPTIONS_SHINE_SCALE                    32
-#define  OPTIONS_ALPHA_BLENDING                 33
-#define  OPTIONS_DISPLAY_LISTS                  34
-#define  OPTIONS_FAST_REDRAW                    35
-#define  OPTIONS_COLOR_SCHEME_SCALE             36
-#define  OPTIONS_TRACKBALL                      37
-
-/* options geometrie */
-
-#define  OPTIONS_GEOM_CHECK                     100
-#define  OPTIONS_GEOM_POINTS                    101
-#define  OPTIONS_GEOM_LINES                     102
-#define  OPTIONS_GEOM_SURFACES                  103
-#define  OPTIONS_GEOM_VOLUMES                   104
-#define  OPTIONS_GEOM_NORMALS_SCALE             105
-#define  OPTIONS_GEOM_NORMALS_TEXT              106
-#define  OPTIONS_GEOM_TANGENTS_SCALE            107
-#define  OPTIONS_GEOM_TANGENTS_TEXT             108
-#define  OPTIONS_GEOM_HIDE_SHOW                 109
-#define  OPTIONS_GEOM_VISIBILITY_ENTITY         110
-#define  OPTIONS_GEOM_VISIBILITY_NUMBER         111
-
-/* options mesh */
-
-#define  OPTIONS_MESH_POINTS                    200
-#define  OPTIONS_MESH_LINES                     201
-#define  OPTIONS_MESH_SURFACES                  202
-#define  OPTIONS_MESH_VOLUMES                   203
-#define  OPTIONS_MESH_HIDDEN_LINES              204
-#define  OPTIONS_MESH_SHADING                   205
-#define  OPTIONS_MESH_WIREFRAME                 206
-#define  OPTIONS_MESH_NORMALS_SCALE             207
-#define  OPTIONS_MESH_NORMALS_TEXT              208
-#define  OPTIONS_MESH_TANGENTS_SCALE            209
-#define  OPTIONS_MESH_TANGENTS_TEXT             210
-#define  OPTIONS_MESH_EXPLODE_SCALE             211
-#define  OPTIONS_MESH_EXPLODE_TEXT              212
-#define  OPTIONS_MESH_HIDE_SHOW                 216
-#define  OPTIONS_MESH_ABORT                     217
-#define  OPTIONS_MESH_SMOOTHING_SCALE           218
-#define  OPTIONS_MESH_SMOOTHING_TEXT            219
-#define  OPTIONS_MESH_DEGRE2                    220
-#define  OPTIONS_MESH_ANISOTROPIC               221
-#define  OPTIONS_MESH_INTERACTIVE               222
-#define  OPTIONS_MESH_VISIBILITY_ENTITY         223
-#define  OPTIONS_MESH_VISIBILITY_NUMBER         224
-#define  OPTIONS_MESH_SELECT_ENTITY             225
-#define  OPTIONS_MESH_SELECT_QUALITY            226
-
-/* options post */
-
-#define  OPTIONS_POST_LINK_NONE                 300
-#define  OPTIONS_POST_LINK_VISIBLE              301
-#define  OPTIONS_POST_LINK_ALL                  302
-#define  OPTIONS_POST_ANIM_START                303
-#define  OPTIONS_POST_ANIM_STOP                 304
-#define  OPTIONS_POST_ANIM_DELAY                305
-
-/* options save */
-
-#define  OPTIONS_SAVE_AUTO                     400
-#define  OPTIONS_SAVE_MSH                      401
-#define  OPTIONS_SAVE_UNV                      402
-#define  OPTIONS_SAVE_GREF                     403
-#define  OPTIONS_SAVE_XPM                      404
-#define  OPTIONS_SAVE_EPS_SIMPLE               405
-#define  OPTIONS_SAVE_EPS_COMPLEX              406
-#define  OPTIONS_SAVE_EPS_IMAGE                407
-#define  OPTIONS_SAVE_GIF                      408
-#define  OPTIONS_SAVE_GIF_DITHERED             409
-#define  OPTIONS_SAVE_GIF_TRANSPARENT          410
-#define  OPTIONS_SAVE_GEO                      411
-#define  OPTIONS_SAVE_JPEG                     412
-#define  OPTIONS_SAVE_PPM                      413
-#define  OPTIONS_SAVE_YUV                      414
-
-
-
-#endif
diff --git a/Motif/CbPost.cpp b/Motif/CbPost.cpp
deleted file mode 100644
index e8940c13349d19cb91ff47e44a9bf95b5f4ab4f8..0000000000000000000000000000000000000000
--- a/Motif/CbPost.cpp
+++ /dev/null
@@ -1,713 +0,0 @@
-// $Id: CbPost.cpp,v 1.8 2001-08-12 13:08:21 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Views.h"
-#include "ColorTable.h"
-#include "Widgets.h"
-#include "Context.h"
-#include "XContext.h"
-#include "OpenFile.h"
-
-#include "CbPost.h"
-#include "CbGeom.h"
-#include "CbMesh.h"
-#include "CbColorbar.h"
-
-extern Widgets_T  WID ;
-extern Context_T  CTX ;
-extern XContext_T XCTX ;
-extern Mesh       *THEM;
-
-static double      ADAPTATION_ERROR=10. ;
-static int         ADAPTATION_METHOD=3 ;
-static int         OFFSET_MODE = 0;
-static Post_View  *CurrentView = NULL;
-static long int    CurrentViewNumber = -1;
-static Post_View  *ViewForDialog[10];
-
-void MarkAllViewsChanged (int action){
-  int i;
-  char label[256];
-  Post_View *v;
-
-  for(i = 0 ; i< List_Nbr(Post_ViewList) ; i++){
-    v = (Post_View*)List_Pointer(Post_ViewList, i);
-    switch(action){
-    case 1: // toggle drawing mode
-      if(v->IntervalsType == DRAW_POST_ISO) 
-        v->IntervalsType = DRAW_POST_DISCRETE ;
-      else if(v->IntervalsType == DRAW_POST_DISCRETE) 
-        v->IntervalsType = DRAW_POST_CONTINUOUS ;
-      else 
-        v->IntervalsType = DRAW_POST_ISO ;
-      break;
-    case 2: // time step++
-      if(v->TimeStep < v->NbTimeStep-1)
-        v->TimeStep++ ;
-      else
-        v->TimeStep = 0 ;
-      sprintf(label, "%d", v->TimeStep);
-      XtVaSetValues(WID.PD.timeStepScale, XmNvalue, v->TimeStep, NULL);
-      XmUpdateDisplay(WID.PD.timeStepScale);
-      XtVaSetValues(WID.PD.timeStepText, XmNvalue, label, NULL);
-      XmUpdateDisplay(WID.PD.timeStepText);    
-      break;
-    case 3: // time step--
-      if(v->TimeStep > 0)
-        v->TimeStep-- ;
-      else
-        v->TimeStep = v->NbTimeStep-1 ;
-      sprintf(label, "%d", v->TimeStep);
-      XtVaSetValues(WID.PD.timeStepScale, XmNvalue, v->TimeStep, NULL);
-      XmUpdateDisplay(WID.PD.timeStepScale);
-      XtVaSetValues(WID.PD.timeStepText, XmNvalue, label, NULL);
-      XmUpdateDisplay(WID.PD.timeStepText);    
-      break;
-    default :
-      break;
-    }
-    
-    v->Changed = 1 ;
-  }
-}
-
-void SwapViewCb (Widget w, XtPointer client_data, XtPointer call_data){
-  Post_View  *v ;
-
-  if(!Post_ViewList) return;
-
-  v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
-
-  Msg(DEBUG1, "View %d", v->Num);
-  Msg(DEBUG2, "  -> Name '%s'", v->Name);
-  Msg(DEBUG2, "  -> FileName '%s'", v->FileName);
-  Msg(DEBUG2, "  -> DuplicateOf %d", v->DuplicateOf);
-  Msg(DEBUG3, "  -> Links %d", v->Links);
-
-  v->Visible = !v->Visible;
-
-  Draw();
-}
-
-
-
-void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){
-  Post_View  v, *v1, *v2, *v3 ;
-  extern void AddViewInUI(int , char *, int);
-
-  if(!Post_ViewList) return;
-
-  v1 = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
-
-  v2 = BeginView(0);
-  EndView(v2, 0, v1->FileName, v1->Name);
-
-  if(!v1->DuplicateOf){
-    v2->DuplicateOf = v1->Num ;
-    v1->Links++ ;
-  }
-  else{
-    v.Num = v1->DuplicateOf ;
-    if(!(v3 = (Post_View*)List_PQuery(Post_ViewList, &v, fcmpPostViewNum))){
-      v2->DuplicateOf = v1->Num ;
-      v1->Links++ ;
-    }
-    else{
-      v2->DuplicateOf = v3->Num;
-      v3->Links++ ;
-    }
-  }
-
-  v2->Time = v1->Time;
-  v2->NbSP = v1->NbSP; v2->SP = v1->SP; 
-  v2->NbVP = v1->NbVP; v2->VP = v1->VP; 
-  v2->NbTP = v1->NbTP; v2->TP = v1->TP;
-  v2->NbSL = v1->NbSL; v2->SL = v1->SL; 
-  v2->NbVL = v1->NbVL; v2->VL = v1->VL; 
-  v2->NbTL = v1->NbTL; v2->TL = v1->TL;
-  v2->NbST = v1->NbST; v2->ST = v1->ST; 
-  v2->NbVT = v1->NbVT; v2->VT = v1->VT; 
-  v2->NbTT = v1->NbTT; v2->TT = v1->TT;
-  v2->NbSS = v1->NbSS; v2->SS = v1->SS; 
-  v2->NbVS = v1->NbVS; v2->VS = v1->VS; 
-  v2->NbTS = v1->NbTS; v2->TS = v1->TS;
-  v2->ScalarOnly  = v1->ScalarOnly;
-  v2->Min         = v1->Min;       
-  v2->Max         = v1->Max;      
-  v2->NbTimeStep  = v1->NbTimeStep;
-
-  CopyViewOptions(v1, v2);
-
-  AddViewInUI(List_Nbr(Post_ViewList), v2->Name, v2->Num);
-  Draw();
-}
-
-static int All = 0;
-
-void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){
-  Post_View  *v, tmp ;
-  char filename[256];
-
-  if(!Post_ViewList) return;
-
-  v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
-  strcpy(filename, v->FileName);
-  CopyViewOptions(v, &tmp);
-
-  Post_ViewForceNumber = v->Num ;
-  FreeView(v);
-  MergeProblem(filename);
-  Post_ViewForceNumber = 0 ;
-  
-  v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
-  CopyViewOptions(&tmp, v);
-
-  if(!All){
-    Draw();
-  }
-}
-
-void ReloadAllViewsCb(Widget w, XtPointer client_data, XtPointer call_data){
-  int i;
-  if(!Post_ViewList) return;
-  All = 1;
-  for(i = 1 ; i<=List_Nbr(Post_ViewList) ; i++)
-    ReloadViewCb(NULL, (XtPointer)i, NULL);
-  All = 0;
-  Draw();
-}
-
-/* ------------------------------------------------------------------------ 
-   create a post dialog 
-   ------------------------------------------------------------------------ */
-
-void CurrentViewCb (Widget w, XtPointer client_data, XtPointer call_data){
-  CurrentViewNumber = (long int)client_data;
-  CurrentView = (Post_View*)List_Pointer(Post_ViewList, CurrentViewNumber-1);
-}
-
-void PostDialogCb (Widget w, XtPointer client_data, XtPointer call_data){
-  double       d, sfact;
-  char         label[256];
-  int          nb, i;
-  Post_View   *v;
-
-  v = CurrentView ;
-
-  /* le slider (gradue en interne de -100 a 100) va de -CTX.lc a +CTX.lc  */
-  sfact = pow(10.,2.-CTX.lc_order); 
-
-  sprintf(label, "\"%s\" (%ld)", v->Name, CurrentViewNumber);
-
-  switch((long int)client_data){
-
-    /* Toggle Lightning */
-  case POST_LIGHT:     
-    v->Light = !v->Light;
-    v->Changed = 1;
-    Draw() ;
-    break;
-
-    /* Toggle Show Elements */
-  case POST_ELEMENT:     
-    v->ShowElement = !v->ShowElement;
-    v->Changed = 1;
-    Draw() ;
-    break;
-
-    /* Offset */
-  case POST_OFFSET: 
-    ViewForDialog[POST_OFFSET] = v;
-    XtVaSetValues(WID.PD.offsetDialog, XmNdialogTitle, XmStringCreateSimple(label), NULL);
-    XtVaSetValues(WID.PD.offsetModeButt[0], XmNset, (OFFSET_MODE==0)?True:False, NULL);
-    XtVaSetValues(WID.PD.offsetModeButt[1], XmNset, (OFFSET_MODE==1)?True:False, NULL);
-    for(i=0 ; i<3 ; i++){
-      d = (OFFSET_MODE==1)?v->Raise[i]:v->Offset[i] ;
-      sprintf(label, "%g", d);
-      XtVaSetValues(WID.PD.offsetText[i], XmNvalue, label, NULL);
-      XtVaSetValues(WID.PD.offsetScale[i], XmNvalue, THRESHOLD((int)(sfact*d),-100,100), NULL);    
-    }
-    XtManageChild(WID.PD.offsetDialog);
-    break;
-
-    /* Time Step */
-  case POST_TIME_STEP: 
-    ViewForDialog[POST_TIME_STEP] = v;
-    XtVaSetValues(WID.PD.timeStepDialog, XmNdialogTitle, XmStringCreateSimple(label), NULL);
-    XtVaSetValues(WID.PD.timeStepScale, XmNmaximum, v->NbTimeStep-1, XmNvalue, v->TimeStep, NULL);
-    sprintf(label, "%d", v->TimeStep);
-    XtVaSetValues(WID.PD.timeStepText, XmNvalue, label, NULL);
-    XtManageChild(WID.PD.timeStepDialog);
-    break;
-
-    /* Scale */
-  case POST_SCALE: 
-    ViewForDialog[POST_SCALE] = v;
-    XtVaSetValues(WID.PD.scaleDialog, XmNdialogTitle, XmStringCreateSimple(label), NULL);
-
-    XtVaSetValues(WID.PD.scaleShowButt, XmNset, v->ShowScale?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleTransButt, XmNset, v->TransparentScale?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleTimeButt, XmNset, v->ShowTime?True:False, NULL);
-
-    XtVaSetValues(WID.PD.scaleText[0], XmNvalue, v->Format, NULL);
-    XtSetSensitive(WID.PD.scaleText[0], v->ShowScale?1:0);
-    XtVaSetValues(WID.PD.scaleText[1], XmNvalue, v->Name, NULL);
-    XtSetSensitive(WID.PD.scaleText[1], v->ShowScale?1:0);
-
-    XtVaSetValues(WID.PD.scaleRangeButt, XmNset, (v->RangeType==DRAW_POST_CUSTOM)?True:False, NULL);
-    sprintf(label, v->Format, v->CustomMin);
-    XtVaSetValues(WID.PD.scaleRangeText[0], XmNvalue, label, NULL);
-    sprintf(label, v->Format, v->CustomMax);
-    XtVaSetValues(WID.PD.scaleRangeText[1], XmNvalue, label, NULL);
-    XtSetSensitive(WID.PD.scaleRangeText[0], (v->RangeType==DRAW_POST_CUSTOM)?1:0);
-    XtSetSensitive(WID.PD.scaleRangeText[1], (v->RangeType==DRAW_POST_CUSTOM)?1:0);
-
-    XtVaSetValues(WID.PD.scaleTypeButt[0], XmNset,(v->ScaleType==DRAW_POST_LINEAR)?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleTypeButt[1], XmNset,(v->ScaleType==DRAW_POST_LOGARITHMIC)?True:False, NULL);
-
-    XtVaSetValues(WID.PD.scaleIntervalsButt[0], XmNset,
-                  (v->IntervalsType==DRAW_POST_ISO)?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleIntervalsButt[1], XmNset,
-                  (v->IntervalsType==DRAW_POST_DISCRETE)?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleIntervalsButt[2], XmNset,
-                  (v->IntervalsType==DRAW_POST_CONTINUOUS)?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleIntervalsButt[3], XmNset,
-                  (v->IntervalsType==DRAW_POST_NUMERIC)?True:False, NULL);
-    XtVaSetValues(WID.PD.scaleIntervalsScale, XmNvalue, THRESHOLD((int)v->NbIso,1,100), NULL);
-
-    sprintf(label, "%d", v->NbIso);
-    XtVaSetValues(WID.PD.scaleIntervalsText, XmNvalue, label, NULL);
-
-    XtManageChild(WID.PD.scaleDialog);
-    break;
-
-    /* Color */
-  case POST_COLOR: 
-    ViewForDialog[POST_COLOR] = v;
-    XtVaSetValues(WID.PD.colorDialog, XmNdialogTitle, XmStringCreateSimple(label), NULL);
-    XtManageChild(WID.PD.colorDialog);
-
-    XSelectInput(XCTX.display, XtWindow(WID.PD.colorDrawingArea), EV_MASK);
-    ColorBarCreate(XtWindow(WID.PD.colorDrawingArea),255,200);
-    ColorBarChange(v->Name, 
-                   (v->RangeType==DRAW_POST_CUSTOM)?v->CustomMin:v->Min, 
-                   (v->RangeType==DRAW_POST_CUSTOM)?v->CustomMax:v->Max, 
-                   &v->CT, 1);
-    ColorBarResizeCb((Widget)NULL, NULL, NULL); // Force resize
-    ColorBarShow();
-    break;
-
-    /* Vector */
-  case POST_VECTOR: 
-    ViewForDialog[POST_VECTOR] = v;
-    XtVaSetValues(WID.PD.vectorDialog, XmNdialogTitle, XmStringCreateSimple(label), NULL);
-    XtVaSetValues(WID.PD.vectorTypeButt[0], XmNset, (v->ArrowType == DRAW_POST_SEGMENT)?True:False, NULL);
-    XtVaSetValues(WID.PD.vectorTypeButt[1], XmNset, (v->ArrowType == DRAW_POST_ARROW)?True:False, NULL);
-    XtVaSetValues(WID.PD.vectorTypeButt[2], XmNset, (v->ArrowType == DRAW_POST_PYRAMID)?True:False, NULL);
-    XtVaSetValues(WID.PD.vectorTypeButt[3], XmNset, (v->ArrowType == DRAW_POST_CONE)?True:False, NULL);  
-    XtVaSetValues(WID.PD.vectorTypeButt[4], XmNset, 
-                  (v->ArrowType == DRAW_POST_DISPLACEMENT)?True:False, NULL);
-    sprintf(label, "%g", v->ArrowScale);
-    XtVaSetValues(WID.PD.vectorScaleText, XmNvalue, label, NULL);
-    XtVaSetValues(WID.PD.vectorScaleScale, XmNvalue, THRESHOLD((int)v->ArrowScale,0,500), NULL);
-    XtVaSetValues(WID.PD.vectorLocationButt[0], XmNset, 
-                  (v->ArrowLocation == DRAW_POST_LOCATE_COG)?True:False, NULL);
-    XtVaSetValues(WID.PD.vectorLocationButt[1], XmNset, 
-                  (v->ArrowLocation == DRAW_POST_LOCATE_VERTEX)?True:False, NULL);
-    XtSetSensitive(WID.PD.vectorLocationCheck, v->ArrowType==DRAW_POST_DISPLACEMENT?False:True);
-    XtManageChild(WID.PD.vectorDialog);
-    break;
-
-    /* Export BGM */
-  case POST_EXPORT_BGM:
-    ViewForDialog[POST_EXPORT_BGM] = v;
-    strcat(label, " : Export as Background Mesh");
-    XtVaSetValues(WID.PD.exportBGMDialog, XmNdialogTitle, XmStringCreateSimple(label), NULL);    
-    d = ErrorInView(v,&nb) ;
-    sprintf(label, "Options (Current: %d elements, error=%g%%)", nb, d); 
-    XtVaSetValues(WID.PD.exportBGMFrame[1], XmNlabelString, XmStringCreateSimple(label), NULL);
-    XtManageChild(WID.PD.exportBGMDialog);
-    break;
-
-    
-    /* apply BGM */
-  case POST_APPLY_BGM  : 
-    ViewForDialog[POST_APPLY_BGM] = v;
-    BGMWithView(v); 
-    break;
-
-  default:
-    Msg(WARNING, "Unknown Event in PostDialogCb (%d)", (long int)client_data); 
-    break;
-  }
-}
-
-
-/* ------------------------------------------------------------------------ 
-   functions in post dialogs  
-   ------------------------------------------------------------------------ */
-
-void ChangeViewParam (Post_View *v, XtPointer client_data, XtPointer call_data) ;
-
-void PostCb (Widget w, XtPointer client_data, XtPointer call_data){
-  int          j;
-  Post_View   *v=NULL;
-  double       d;
-  char        *c;
-  XmString     xms;
-  static int   LastTimeStep = 0;
-
-  switch((long int)client_data){
-
-  case POST_EXPORT_BGM_METHOD_H_ERROR    : ADAPTATION_METHOD = 3; break;
-  case POST_EXPORT_BGM_METHOD_H_ELEMENTS : ADAPTATION_METHOD = 4; break;
-  case POST_EXPORT_BGM_METHOD_P_ERROR    : ADAPTATION_METHOD = 1; break;
-  case POST_EXPORT_BGM_METHOD_P_ELEMENTS : ADAPTATION_METHOD = 2; break;
-  case POST_EXPORT_BGM_CONSTRAINT : 
-    v = ViewForDialog[POST_EXPORT_BGM];
-    ADAPTATION_ERROR = atof(XmTextGetString(w)); 
-    return ;
-  case POST_EXPORT_BGM_CREATE   : 
-    v = ViewForDialog[POST_EXPORT_BGM];
-    XtVaGetValues(w, XmNtextString, &xms, NULL);
-    XmStringGetLtoR(xms, XmSTRING_DEFAULT_CHARSET, &c);
-    XmStringFree(xms);
-    CreateBGM(v, ADAPTATION_METHOD, 1.0, ADAPTATION_ERROR, &d, c); 
-    MergeProblem(c);     
-    Draw();
-    return;
-  case POST_COLOR_REPLOT : 
-    v = ViewForDialog[POST_COLOR];
-    ColorBarChange(v->Name, 
-                   (v->RangeType==DRAW_POST_CUSTOM)?v->CustomMin:v->Min, 
-                   (v->RangeType==DRAW_POST_CUSTOM)?v->CustomMax:v->Max, 
-                   &v->CT, 0);
-    ColorBarShow();
-    if(v->CT.ipar[COLORTABLE_CHANGED]){
-      v->Changed = 1;
-      if(CTX.post.link){
-        ColorTable_Copy(&v->CT);
-        for(j=0 ; j< List_Nbr(Post_ViewList) ; j++){
-          v = (Post_View*)List_Pointer(Post_ViewList, j);
-          if(v->Visible || CTX.post.link>1){
-            ColorTable_Paste(&v->CT);
-            v->Changed=1;
-          }
-        }
-      }
-    }
-    Draw();
-    return;
-  }
-
-  if(CTX.post.link){
-    for(j=0 ; j< List_Nbr(Post_ViewList) ; j++){
-      v = (Post_View*)List_Pointer(Post_ViewList, j);
-      if(v->Visible || CTX.post.link>1) ChangeViewParam(v, client_data, call_data);
-    }
-  }
-  else{
-    switch((long int)client_data){
-    case POST_OFFSET_TRANSLATE: 
-    case POST_OFFSET_RAISE: 
-    case POST_OFFSET_X_TEXT:       
-    case POST_OFFSET_Y_TEXT:       
-    case POST_OFFSET_Z_TEXT:       
-    case POST_OFFSET_X_SCALE:
-    case POST_OFFSET_Y_SCALE:
-    case POST_OFFSET_Z_SCALE:
-      v = ViewForDialog[POST_OFFSET];
-      break;
-    case POST_TIME_STEP_TEXT:
-    case POST_TIME_STEP_SCALE:
-      v = ViewForDialog[POST_TIME_STEP];
-      break;
-    case POST_SCALE_SHOW: 
-    case POST_SCALE_TRANSPARENCY: 
-    case POST_SCALE_TIME: 
-    case POST_SCALE_FORMAT: 
-    case POST_SCALE_LABEL:
-    case POST_SCALE_MIN:
-    case POST_SCALE_MAX:      
-    case POST_SCALE_TYPE_LIN: 
-    case POST_SCALE_TYPE_LOG: 
-    case POST_SCALE_FORCE_RANGE:   
-    case POST_SCALE_INTERVALS_TYPE_ISO : 
-    case POST_SCALE_INTERVALS_TYPE_DISCRETE : 
-    case POST_SCALE_INTERVALS_TYPE_CONTINUOUS: 
-    case POST_SCALE_INTERVALS_TYPE_NUMERIC: 
-    case POST_SCALE_INTERVALS_TEXT:    
-    case POST_SCALE_INTERVALS_SCALE:   
-      v = ViewForDialog[POST_SCALE];
-      break;
-    case POST_VECTOR_TYPE_SEGMENT:
-    case POST_VECTOR_TYPE_ARROW:        
-    case POST_VECTOR_TYPE_PYRAMID:      
-    case POST_VECTOR_TYPE_CONE:
-    case POST_VECTOR_TYPE_DISPLACEMENT:
-    case POST_VECTOR_SCALE_TEXT:    
-    case POST_VECTOR_SCALE_SCALE:   
-    case POST_VECTOR_LOCATION_COG:    
-    case POST_VECTOR_LOCATION_VERTEX: 
-      v = ViewForDialog[POST_VECTOR];
-      break;
-    default :
-      Msg(WARNING, "Unknown Event in PostCb");
-      break;
-    }
-    ChangeViewParam(v, client_data, call_data);
-  }
-
-
-  if((long int)client_data == POST_TIME_STEP_SCALE){
-    if(LastTimeStep != v->TimeStep){
-      LastTimeStep = v->TimeStep;
-      Draw();
-    }
-  }
-
-}
-
-void ChangeViewParam (Post_View *v, XtPointer client_data, XtPointer call_data){
-  double       d, sfact;
-  char        *c, label[256];
-  int          i;
-
-  /* le slider (gradue en interne de -100 a 100) va de -CTX.lc a +CTX.lc  */
-  sfact = pow(10.,2.-CTX.lc_order); 
-
-  switch((long int)client_data){
-
-    /* Offset */
-  case POST_OFFSET_TRANSLATE: 
-    OFFSET_MODE = 0;
-    for(i=0 ; i<3 ; i++){
-      sprintf(label, "%g", v->Offset[i]);
-      XtVaSetValues(WID.PD.offsetText[i], XmNvalue, label, NULL);
-      XtVaSetValues(WID.PD.offsetScale[i], XmNvalue, 
-                    THRESHOLD((int)(sfact*v->Offset[i]),-100,100), NULL);    
-      XmUpdateDisplay(WID.PD.offsetText[i]);
-      XmUpdateDisplay(WID.PD.offsetScale[i]);
-    }
-    break;
-  case POST_OFFSET_RAISE: 
-    OFFSET_MODE = 1;
-    for(i=0 ; i<3 ; i++){
-      sprintf(label, "%g", v->Raise[i]);
-      XtVaSetValues(WID.PD.offsetText[i], XmNvalue, label, NULL);
-      XtVaSetValues(WID.PD.offsetScale[i], XmNvalue, 
-                    THRESHOLD((int)(sfact*v->Raise[i]),-100,100), NULL);    
-      XmUpdateDisplay(WID.PD.offsetText[i]);
-      XmUpdateDisplay(WID.PD.offsetScale[i]);
-    }
-    break;
-  case POST_OFFSET_X_TEXT:       
-    d = atof(XmTextGetString(WID.PD.offsetText[0])); 
-    OFFSET_MODE ? (v->Raise[0] = d) : (v->Offset[0] = d);
-    XtVaSetValues(WID.PD.offsetScale[0], XmNvalue, THRESHOLD((int)(sfact*d),-100,100), NULL);
-    XmUpdateDisplay(WID.PD.offsetScale[0]);
-    v->Changed = 1;
-    break;
-  case POST_OFFSET_Y_TEXT:       
-    d = atof(XmTextGetString(WID.PD.offsetText[1])); 
-    OFFSET_MODE ? (v->Raise[1] = d) : (v->Offset[1] = d);
-    XtVaSetValues(WID.PD.offsetScale[1], XmNvalue, THRESHOLD((int)(sfact*d),-100,100), NULL);
-    XmUpdateDisplay(WID.PD.offsetScale[1]);
-    v->Changed = 1;
-    break;
-  case POST_OFFSET_Z_TEXT:       
-    d = atof(XmTextGetString(WID.PD.offsetText[2])); 
-    OFFSET_MODE ? (v->Raise[2] = d) : (v->Offset[2] = d);
-    XtVaSetValues(WID.PD.offsetScale[2], XmNvalue, THRESHOLD((int)(sfact*d),-100,100), NULL);
-    XmUpdateDisplay(WID.PD.offsetScale[2]);
-    v->Changed = 1;
-    break;
-  case POST_OFFSET_X_SCALE:
-    XmScaleGetValue (WID.PD.offsetScale[0], &i);
-    d = i/sfact ;
-    sprintf(label, "%g", d);
-    OFFSET_MODE ? (v->Raise[0] = d) : (v->Offset[0] = d);
-    XtVaSetValues(WID.PD.offsetText[0],XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.PD.offsetText[0]);
-    v->Changed = 1;
-    break;
-  case POST_OFFSET_Y_SCALE:
-    XmScaleGetValue (WID.PD.offsetScale[1], &i);
-    d = i/sfact ;
-    sprintf(label, "%g",d);
-    OFFSET_MODE ? (v->Raise[1]) = d : (v->Offset[1] = d);
-    XtVaSetValues(WID.PD.offsetText[1],XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.PD.offsetText[1]);
-    v->Changed = 1;
-    break;
-  case POST_OFFSET_Z_SCALE:
-    XmScaleGetValue (WID.PD.offsetScale[2], &i);
-    d = i/sfact ;
-    sprintf(label, "%g", d);
-    OFFSET_MODE ? (v->Raise[2] = d) : (v->Offset[2] = d);
-    XtVaSetValues(WID.PD.offsetText[2],XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.PD.offsetText[2]);
-    v->Changed = 1;
-    break;
-
-    /* Time Step */
-  case POST_TIME_STEP_TEXT:
-    i = atoi(XmTextGetString(WID.PD.timeStepText));
-    if(i < 0)
-      v->TimeStep = 0;
-    else if(i > v->NbTimeStep-1) 
-      v->TimeStep = v->NbTimeStep-1;
-    else
-      v->TimeStep = i;
-    XtVaSetValues(WID.PD.timeStepScale, XmNvalue, v->TimeStep, NULL);
-    XmUpdateDisplay(WID.PD.timeStepScale);
-    v->Changed = 1;
-    break;
-  case POST_TIME_STEP_SCALE:
-    XmScaleGetValue (WID.PD.timeStepScale, &i);
-    if(i < 0)
-      v->TimeStep = 0;
-    else if(i > v->NbTimeStep-1) 
-      v->TimeStep = v->NbTimeStep-1;
-    else
-      v->TimeStep = i;
-    sprintf(label, "%d", v->TimeStep);
-    XtVaSetValues(WID.PD.timeStepText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.PD.timeStepText);    
-    v->Changed = 1;
-    break;
-
-
-    /* Scale */
-  case POST_SCALE_SHOW: 
-    v->ShowScale = !v->ShowScale; 
-    XtSetSensitive(WID.PD.scaleText[0], v->ShowScale?1:0);
-    XtSetSensitive(WID.PD.scaleText[1], v->ShowScale?1:0);
-    break;
-  case POST_SCALE_TRANSPARENCY: 
-    v->TransparentScale = !v->TransparentScale; 
-    break;
-  case POST_SCALE_TIME: 
-    v->ShowTime = !v->ShowTime; 
-    break;
-  case POST_SCALE_FORMAT: 
-    c = XmTextGetString(WID.PD.scaleText[0]); strcpy(v->Format,c); 
-    break;
-  case POST_SCALE_LABEL:
-    c = XmTextGetString(WID.PD.scaleText[1]); strcpy(v->Name,c); 
-    break;
-  case POST_SCALE_MIN:
-    v->CustomMin = atof(XmTextGetString(WID.PD.scaleRangeText[0])); 
-    if(v->RangeType==DRAW_POST_CUSTOM) v->Changed = 1;
-    break;
-  case POST_SCALE_MAX:      
-    v->CustomMax = atof(XmTextGetString(WID.PD.scaleRangeText[1])); 
-    if(v->RangeType==DRAW_POST_CUSTOM) v->Changed = 1;
-    break;
-  case POST_SCALE_TYPE_LIN: 
-    v->ScaleType = DRAW_POST_LINEAR;  
-    v->Changed = 1;
-    break;
-  case POST_SCALE_TYPE_LOG: 
-    v->ScaleType = DRAW_POST_LOGARITHMIC; 
-    v->Changed = 1;
-    break;
-  case POST_SCALE_FORCE_RANGE:   
-    (v->RangeType == DRAW_POST_DEFAULT) ? 
-      (v->RangeType=DRAW_POST_CUSTOM) : (v->RangeType=DRAW_POST_DEFAULT);
-    XtSetSensitive(WID.PD.scaleRangeText[0], (v->RangeType==DRAW_POST_CUSTOM)?1:0);
-    XtSetSensitive(WID.PD.scaleRangeText[1], (v->RangeType==DRAW_POST_CUSTOM)?1:0); 
-    v->Changed = 1;
-    break;
-  case POST_SCALE_INTERVALS_TYPE_ISO : 
-    v->IntervalsType = DRAW_POST_ISO; 
-    v->Changed = 1;
-    break;
-  case POST_SCALE_INTERVALS_TYPE_DISCRETE : 
-    v->IntervalsType = DRAW_POST_DISCRETE; 
-    v->Changed = 1;
-    break;
-  case POST_SCALE_INTERVALS_TYPE_CONTINUOUS: 
-    v->IntervalsType = DRAW_POST_CONTINUOUS; 
-    v->Changed = 1;
-    break;
-  case POST_SCALE_INTERVALS_TYPE_NUMERIC: 
-    v->IntervalsType = DRAW_POST_NUMERIC; 
-    v->Changed = 1;
-    break;
-  case POST_SCALE_INTERVALS_TEXT:    
-    v->NbIso = atoi(XmTextGetString(WID.PD.scaleIntervalsText));
-    XtVaSetValues(WID.PD.scaleIntervalsScale, XmNvalue, THRESHOLD((int)v->NbIso,1,100), NULL);
-    XmUpdateDisplay(WID.PD.scaleIntervalsScale);
-    v->Changed = 1;
-    break;
-  case POST_SCALE_INTERVALS_SCALE:   
-    XmScaleGetValue(WID.PD.scaleIntervalsScale, &v->NbIso);
-    sprintf(label, "%d", v->NbIso);
-    XtVaSetValues(WID.PD.scaleIntervalsText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.PD.scaleIntervalsText);
-    v->Changed = 1;
-    break;
-
-    /* Vector */
-  case POST_VECTOR_TYPE_SEGMENT:
-    v->ArrowType = DRAW_POST_SEGMENT; 
-    XtSetSensitive(WID.PD.vectorLocationCheck, True);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_TYPE_ARROW:        
-    v->ArrowType = DRAW_POST_ARROW; 
-    XtSetSensitive(WID.PD.vectorLocationCheck, True);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_TYPE_PYRAMID:      
-    v->ArrowType = DRAW_POST_PYRAMID; 
-    XtSetSensitive(WID.PD.vectorLocationCheck, True);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_TYPE_CONE:
-    v->ArrowType = DRAW_POST_CONE; 
-    XtSetSensitive(WID.PD.vectorLocationCheck, True);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_TYPE_DISPLACEMENT:
-    v->ArrowType = DRAW_POST_DISPLACEMENT; 
-    XtSetSensitive(WID.PD.vectorLocationCheck, False);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_SCALE_TEXT:    
-    v->ArrowScale = atof(XmTextGetString(WID.PD.vectorScaleText));
-    XtVaSetValues(WID.PD.vectorScaleScale, XmNvalue, THRESHOLD((int)v->ArrowScale,0,500), NULL);
-    XmUpdateDisplay(WID.PD.vectorScaleScale);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_SCALE_SCALE:   
-    XmScaleGetValue(WID.PD.vectorScaleScale, &i);
-    v->ArrowScale = (double)i;
-    sprintf(label, "%g", v->ArrowScale);
-    XtVaSetValues(WID.PD.vectorScaleText, XmNvalue, label, NULL);
-    XmUpdateDisplay(WID.PD.vectorScaleText);
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_LOCATION_COG:    
-    v->ArrowLocation = DRAW_POST_LOCATE_COG; 
-    v->Changed = 1;
-    break;
-  case POST_VECTOR_LOCATION_VERTEX: 
-    v->ArrowLocation = DRAW_POST_LOCATE_VERTEX; 
-    v->Changed = 1;
-    break;
-
-  default:
-    Msg(WARNING, "Unknown Event in PostCb (%d)", (long int)client_data); 
-    break;
-
-  }
-
-}
-
diff --git a/Motif/CbPost.h b/Motif/CbPost.h
deleted file mode 100644
index d5b135fb6b9e26514e03fea8f69ebc00e1ce7a14..0000000000000000000000000000000000000000
--- a/Motif/CbPost.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef _CB_POST_H_
-#define _CB_POST_H_
-
-#define  POST_LINK                                 1
-#define  POST_OFFSET                               2
-#define  POST_TIME_STEP                            3
-#define  POST_SCALE                                4
-#define  POST_VECTOR                               5
-#define  POST_EXPORT_BGM                           6
-#define  POST_APPLY_BGM                            7
-#define  POST_LIGHT                                8
-#define  POST_COLOR                                9
-#define  POST_ELEMENT                              10
-
-#define  POST_OFFSET_TRANSLATE                     403
-#define  POST_OFFSET_RAISE                         404
-#define  POST_OFFSET_X_TEXT                        405
-#define  POST_OFFSET_Y_TEXT                        406
-#define  POST_OFFSET_Z_TEXT                        407
-#define  POST_OFFSET_X_SCALE                       408
-#define  POST_OFFSET_Y_SCALE                       409
-#define  POST_OFFSET_Z_SCALE                       410
-
-#define  POST_TIME_STEP_TEXT                       417
-#define  POST_TIME_STEP_SCALE                      418
-
-#define  POST_SCALE_SHOW                           421
-#define  POST_SCALE_TRANSPARENCY                   422
-#define  POST_SCALE_FORMAT                         423
-#define  POST_SCALE_LABEL                          424
-#define  POST_SCALE_FORCE_RANGE                    425
-#define  POST_SCALE_MIN                            426
-#define  POST_SCALE_MAX                            427
-#define  POST_SCALE_TYPE_LIN                       428
-#define  POST_SCALE_TYPE_LOG                       429
-#define  POST_SCALE_INTERVALS_TYPE_ISO             430
-#define  POST_SCALE_INTERVALS_TYPE_DISCRETE        431
-#define  POST_SCALE_INTERVALS_TYPE_CONTINUOUS      432
-#define  POST_SCALE_INTERVALS_TYPE_NUMERIC         433
-#define  POST_SCALE_INTERVALS_SCALE                434
-#define  POST_SCALE_INTERVALS_TEXT                 435
-#define  POST_SCALE_TIME                           436
-
-#define  POST_COLOR_REPLOT                         440
-
-#define  POST_VECTOR_TYPE_SEGMENT                  450
-#define  POST_VECTOR_TYPE_ARROW                    451
-#define  POST_VECTOR_TYPE_PYRAMID                  452
-#define  POST_VECTOR_TYPE_CONE                     453
-#define  POST_VECTOR_TYPE_DISPLACEMENT             454
-#define  POST_VECTOR_SCALE_TEXT                    455
-#define  POST_VECTOR_SCALE_SCALE                   456
-#define  POST_VECTOR_LOCATION_COG                  457
-#define  POST_VECTOR_LOCATION_VERTEX               458
-                                                    
-#define  POST_EXPORT_BGM_METHOD_H_ERROR            461
-#define  POST_EXPORT_BGM_METHOD_H_ELEMENTS         462
-#define  POST_EXPORT_BGM_METHOD_P_ERROR            463
-#define  POST_EXPORT_BGM_METHOD_P_ELEMENTS         464
-#define  POST_EXPORT_BGM_CONSTRAINT                465
-#define  POST_EXPORT_BGM_CREATE                    466
-
-void MarkAllViewsChanged (int action);
-
-#endif
diff --git a/Motif/Geometry.cpp b/Motif/Geometry.cpp
deleted file mode 100644
index 45a436971be88ccbe9298bf79374e28c6aa127e1..0000000000000000000000000000000000000000
--- a/Motif/Geometry.cpp
+++ /dev/null
@@ -1,825 +0,0 @@
-// $Id: Geometry.cpp,v 1.1 2001-01-08 08:20:10 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Context.h"
-#include "XContext.h"
-#include "Widgets.h"
-
-extern Context_T   CTX ;
-extern XContext_T  XCTX ;
-
-#define WINDOW_SHADOW   1
-#define SHADOW          2
-#define IN_FRAME_TYPE   XmSHADOW_ETCHED_IN
-#define IN_FRAME_SHADOW 2
-#define TITLE_SPACE     0
-#define TITLE_ALIGN     XmALIGNMENT_WIDGET_TOP
-#define DIALOG_W        6
-#define DIALOG_H        4
-
-
-/* 
-   XmNchildVerticalAlignment : 
-   CENTER, WIDGET_TOP, WIDGET_BOTTOM, BASELINE_BOTTOM, BASELINE_TOP  
-
-   XmNshadowType :
-   ETCHED_IN, ETCHED_OUT, IN, OUT
-*/
-
-/* ------------------------------------------------------------------------ 
-    MENU WINDOW
-   ------------------------------------------------------------------------ */
-
-void ForceGeometry_M (Widgets_T *w){
-  int     n;
-
-  XtVaSetValues(w->M.containerWin,
-                XmNmenuBar, w->M.menuBar,
-                NULL);
-
-  XtVaSetValues(w->M.menuBar,
-                XmNmenuHelpWidget, w->M.helpCascade, 
-                NULL);
-
-  XtVaSetValues(w->M.menuFrame,
-                XmNshadowType, XmSHADOW_OUT,
-                XmNshadowThickness, WINDOW_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->M.menuForm,
-                XmNfractionBase, 100,
-                XmNmarginWidth, 3,
-                XmNmarginHeight, 3,
-                NULL);
-
-  XtVaSetValues(w->M.modButt,
-                XmNmarginHeight, 5,
-                XmNmarginWidth, 2,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_WIDGET,
-                XmNleftWidget, w->M.navigButt[0],
-                XmNrightAttachment, XmATTACH_WIDGET,
-                XmNrightWidget, w->M.navigButt[1],
-                NULL);
-
-  XtVaSetValues(w->M.navigButt[0],
-                XmNshadowThickness, 0,
-                XmNwidth, 20,
-                XmNleftAttachment, XmATTACH_FORM,
-                NULL);
-
-  XtVaSetValues(w->M.navigButt[1],
-                XmNshadowThickness, 0,
-                XmNwidth, 20,
-                XmNrightAttachment, XmATTACH_FORM,
-                NULL);
-
-  XtVaSetValues(w->M.defaultButt,
-                XmNmarginHeight, 5,
-                XmNtopAttachment, XmATTACH_WIDGET,
-                XmNtopWidget, w->M.modButt,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNrightAttachment, XmATTACH_FORM,
-                NULL);
-
-  XtVaSetValues(w->M.pushButt[0],
-                XmNshadowThickness, SHADOW,
-                XmNmarginHeight, 5,
-                XmNtopAttachment, XmATTACH_WIDGET,
-                XmNtopWidget, w->M.modButt,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNrightAttachment, XmATTACH_FORM,
-                NULL);
-  
-  XtVaSetValues(w->M.toggleButt[0],
-                XmNshadowThickness, SHADOW,
-                XmNmarginHeight, 3,
-                XmNtopAttachment, XmATTACH_WIDGET,
-                XmNtopWidget, w->M.modButt,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNrightAttachment, XmATTACH_FORM,
-                NULL);
-
-  for(n=1 ; n<NB_BUTT_MAX ; n++){
-    XtVaSetValues(w->M.pushButt[n],
-                  XmNtopAttachment, XmATTACH_WIDGET,
-                  XmNtopWidget, w->M.pushButt[n-1],
-                  XmNleftAttachment, XmATTACH_FORM,
-                  XmNrightAttachment, XmATTACH_FORM,
-                  XmNshadowThickness, SHADOW,
-                  XmNmarginHeight, 5,
-                  NULL);
-
-    XtVaSetValues(w->M.toggleButt[n],
-                  XmNtopAttachment, XmATTACH_WIDGET,
-                  XmNtopWidget, w->M.toggleButt[n-1],
-                  XmNleftAttachment, XmATTACH_FORM,
-                  XmNrightAttachment, XmATTACH_FORM,
-                  XmNshadowThickness, SHADOW,
-                  XmNmarginHeight, 3,
-                  NULL);
-  }
-
-}
-
-/* ------------------------------------------------------------------------ 
-    GRAPHIC WINDOW
-   ------------------------------------------------------------------------ */
-
-void ForceGeometry_G (Widgets_T *w){
-  int  i;
-
-  XtVaSetValues(w->G.glw,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNrightAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_WIDGET,
-                XmNbottomWidget, w->G.bottomForm,
-                NULL);
-
-  if(CTX.overlay)
-    XtVaSetValues(w->G.glo,
-                  XmNtopAttachment, XmATTACH_FORM,
-                  XmNleftAttachment, XmATTACH_FORM,
-                  XmNrightAttachment, XmATTACH_FORM,
-                  XmNbottomAttachment, XmATTACH_WIDGET,
-                  XmNbottomWidget, w->G.bottomForm,
-                  NULL);
-
-  XtVaSetValues(w->G.bottomForm,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNrightAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNmarginHeight, 2,
-                XmNmarginWidth, 1,
-                XmNshadowThickness, WINDOW_SHADOW,
-                XmNfractionBase, 100,
-                NULL);
-
-  XtVaSetValues(w->G.Butt[0],
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNshadowThickness, 0,
-                XmNmarginHeight, 1,
-                NULL);
-
-  for(i=1 ; i<7 ; i++) {
-    XtVaSetValues(w->G.Butt[i],
-                  XmNtopAttachment, XmATTACH_FORM,
-                  XmNbottomAttachment, XmATTACH_FORM,
-                  XmNleftAttachment, XmATTACH_WIDGET,
-                  XmNleftWidget, w->G.Butt[i-1],
-                  XmNshadowThickness, 0,
-                  XmNmarginHeight, 1,
-                  NULL);
-  }
-
-  XtVaSetValues(w->G.textForm,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_WIDGET,
-                XmNleftWidget, w->G.Butt[6],
-                XmNrightAttachment, XmATTACH_FORM,
-                XmNfractionBase, 300,
-                NULL);
-
-  XtVaSetValues(w->G.selectLabel,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_POSITION,
-                XmNleftPosition, 2,
-                XmNrightAttachment, XmATTACH_POSITION,
-                XmNrightPosition, 90,
-                XmNmarginHeight, 0,
-                NULL);
-
-  XtVaSetValues(w->G.infoLabel,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_POSITION,
-                XmNleftPosition, 92,
-                XmNrightAttachment, XmATTACH_POSITION,
-                XmNrightPosition, 180,
-                XmNmarginHeight, 0,
-                NULL);
-
-  XtVaSetValues(w->G.statusLabel,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_POSITION,
-                XmNleftPosition, 182,
-                XmNrightAttachment, XmATTACH_POSITION,
-                XmNrightPosition, 298,
-                XmNmarginHeight, 0,
-                NULL);
-
-}
-
-/* ------------------------------------------------------------------------ 
-    COMMAND WINDOW
-   ------------------------------------------------------------------------ */
-
-void ForceGeometry_C (Widgets_T *w){
-  
-  XtVaSetValues(w->C.command,
-                XmNshadowThickness, WINDOW_SHADOW,
-                XmNshadowType, XmSHADOW_OUT,
-                XmNmarginHeight, 2,
-                XmNmarginWidth, 2,
-                NULL);
-
-  XtVaSetValues(w->C.commandList,
-                XmNshadowThickness, SHADOW,
-                XmNmarginHeight, 0,
-                NULL);
-
-  XtVaSetValues(w->C.commandText,
-                XmNshadowThickness, SHADOW,
-                XmNmarginHeight, 4,
-                NULL);
-}
-
-/* ------------------------------------------------------------------------ 
-    DIALOGS
-   ------------------------------------------------------------------------ */
-
-void ForceGeometry_ED (Widgets_T *w){
-}
-
-void ForceGeometry_FD (Widgets_T *w){
-
-  XtVaSetValues(w->FD.openDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->FD.mergeDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->FD.saveAsDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->FD.saveAsFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->FD.saveAsFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->FD.saveAsRowCol,
-                XmNmarginWidth, 0,
-                NULL);
-
-  XtVaSetValues(w->FD.saveOptionsAsDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-}
-
-void ForceGeometry_OD (Widgets_T *w){
-  int  i,j;
-
-  XtVaSetValues(w->OD.geomDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->OD.geomVisibleFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.geomVisibleFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.geomVisibleByNumFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.geomVisibleByNumFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.geomNormalsFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.geomNormalsFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.geomTangentsFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.geomTangentsFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.meshDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->OD.meshAlgoFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshAlgoFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-  
-  XtVaSetValues(w->OD.meshSmoothingFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshSmoothingFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.meshVisibleFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshVisibleFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.meshVisibleByNumFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshVisibleByNumFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.meshAspectFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshAspectFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.meshExplodeFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshExplodeFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.meshNormalsFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.meshNormalsFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.postDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->OD.postLinkFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.postLinkFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.postAnimFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.postAnimFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.miscDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->OD.miscMiscFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.miscMiscFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.miscColorSchemeFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.miscColorSchemeFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-  
-  XtVaSetValues(w->OD.miscProjFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.miscProjFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.miscLightFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.miscLightFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.miscShineFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->OD.miscShineFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->OD.viewportDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-  
-  for(i=0 ; i<3 ; i++){
-    XtVaSetValues(w->OD.viewportFrame[0][i],    
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-                  
-    XtVaSetValues(w->OD.viewportFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-
-    for(j=0 ; j<3 ; j++){
-      XtVaSetValues(w->OD.viewportLockButt[j][i],
-                    XmNmarginHeight, 0,
-                    NULL);
-    }
-  }
-
-  XtVaSetValues(w->OD.infoDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<3 ; i++){
-    XtVaSetValues(w->OD.infoFrame[0][i],    
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-                  
-    XtVaSetValues(w->OD.infoFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-}
-
-void ForceGeometry_HD (Widgets_T *w){
-
-  XtVaSetValues(w->HD.keysDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-}
-
-void ForceGeometry_GD (Widgets_T *w){
-  int  i;
-
-  XtVaSetValues(w->GD.paramDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<2 ; i++){
-    XtVaSetValues(w->GD.paramFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-
-    XtVaSetValues(w->GD.paramFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-
-  XtVaSetValues(w->GD.pointDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<2 ; i++){
-    XtVaSetValues(w->GD.pointFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-
-    XtVaSetValues(w->GD.pointFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-  XtVaSetValues(w->GD.rotDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<3 ; i++){
-    XtVaSetValues(w->GD.rotFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-
-    XtVaSetValues(w->GD.rotFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-  XtVaSetValues(w->GD.tranDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->GD.tranFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->GD.tranFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->GD.dilatDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<2 ; i++){
-    XtVaSetValues(w->GD.dilatFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-
-    XtVaSetValues(w->GD.dilatFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-  XtVaSetValues(w->GD.symmDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->GD.symmFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->GD.symmFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-}
-
-void ForceGeometry_MD (Widgets_T *w){
-  int  i;
-
-  XtVaSetValues(w->MD.charLengthDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->MD.charLengthFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->MD.charLengthFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->MD.trsfLineDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<2 ; i++){
-    XtVaSetValues(w->MD.trsfLineFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-    XtVaSetValues(w->MD.trsfLineFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-  
-  XtVaSetValues(w->MD.trsfVolumeDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->MD.trsfVolumeFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->MD.trsfVolumeFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-}
-
-void ForceGeometry_PD (Widgets_T *w){
-  int  i;
-  
-
-  XtVaSetValues(w->PD.offsetDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<4 ; i++){
-    XtVaSetValues(w->PD.offsetFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-    XtVaSetValues(w->PD.offsetFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-  
-  XtVaSetValues(w->PD.timeStepDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->PD.timeStepFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-  XtVaSetValues(w->PD.timeStepFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->PD.scaleDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<3 ; i++){
-    XtVaSetValues(w->PD.scaleFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-    XtVaSetValues(w->PD.scaleFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-
-  XtVaSetValues(w->PD.colorDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-  XtVaSetValues(w->PD.colorFrame[0][0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-  XtVaSetValues(w->PD.colorFrame[1][0],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-  XtVaSetValues(w->PD.colorDrawingArea,
-                XmNtopAttachment, XmATTACH_FORM,
-                XmNleftAttachment, XmATTACH_FORM,
-                XmNrightAttachment, XmATTACH_FORM,
-                XmNbottomAttachment, XmATTACH_FORM,
-                XmNwidth, 255,
-                XmNheight, 200,
-                NULL);
-
-
-  XtVaSetValues(w->PD.vectorDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  for(i=0 ; i<3 ; i++){
-    XtVaSetValues(w->PD.vectorFrame[0][i],
-                  XmNshadowType, IN_FRAME_TYPE,
-                  XmNshadowThickness, IN_FRAME_SHADOW,
-                  NULL);
-    XtVaSetValues(w->PD.vectorFrame[1][i],
-                  XmNchildHorizontalSpacing, TITLE_SPACE,
-                  XmNchildVerticalAlignment, TITLE_ALIGN,
-                  NULL);
-  }
-
-  XtVaSetValues(w->PD.exportBGMDialog,
-                XmNmarginHeight, DIALOG_H,
-                XmNmarginWidth, DIALOG_W,
-                NULL);
-
-  XtVaSetValues(w->PD.exportBGMFrame[0],
-                XmNshadowType, IN_FRAME_TYPE,
-                XmNshadowThickness, IN_FRAME_SHADOW,
-                NULL);
-
-  XtVaSetValues(w->PD.exportBGMFrame[1],
-                XmNchildHorizontalSpacing, TITLE_SPACE,
-                XmNchildVerticalAlignment, TITLE_ALIGN,
-                NULL);
-
-  XtVaSetValues(w->PD.exportBGMText,
-                XmNmarginHeight, 2,
-                NULL);
-
-}
-
-
-/* ------------------------------------------------------------------------ 
-    F o r c e G e o m e t r y
-   ------------------------------------------------------------------------ */
-
-void ForceGeometry (Widgets_T *w){  
-  ForceGeometry_M(w) ; /* menu win */
-  ForceGeometry_G(w) ; /* graphic win */
-  if(CTX.command_win) ForceGeometry_C(w) ; /* command win */
-
-  ForceGeometry_ED(w); /* error dialogs */
-  ForceGeometry_FD(w); /* file dialogs */
-  ForceGeometry_OD(w); /* option dialogs */
-  ForceGeometry_HD(w); /* help dialogs */
-  ForceGeometry_GD(w); /* geometry dialogs */
-  ForceGeometry_MD(w); /* mesh dialogs */
-  ForceGeometry_PD(w); /* post dialogs */
-}
-
diff --git a/Motif/Geometry.h b/Motif/Geometry.h
deleted file mode 100644
index 9793884fc83258996240a4f5bb8d79c7683c22c3..0000000000000000000000000000000000000000
--- a/Motif/Geometry.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _GEOMETRY_H_
-#define _GEOMETRY_H_
-
-void ForceGeometry(Widgets_T *w);
-
-#endif
diff --git a/Motif/Help.h b/Motif/Help.h
deleted file mode 100644
index 813b0127cb83c87b6216cf27e3f2aa40acfee106..0000000000000000000000000000000000000000
--- a/Motif/Help.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef _HELP_H_
-#define _HELP_H_
-
-static char txt_help[]=
-"\n"
-"  (x)          stands for \"press x\"\n"
-"  (x-y)        stands for \"press x and, keeping it down, press y\"\n"
-"  (x-y-z)      stands for \"press x and, keeping it down, press y and z\"\n"
-"  C, M and S   stand for Control, Meta (or Alt) and Shift\n"
-"\n"
-"MOUSE:\n"
-"\n"
-"  move         . highlight the elementary geometrical entity \n"
-"                 currently under the mouse pointer and display\n"
-"                 its properties in the status bar\n"
-"               . size a rubber zoom started with (C-left)\n"
-"\n"
-"  (left)       . rotate\n"
-"               . accept a rubber zoom started by (C-left)\n" 
-"  (middle)     . zoom (isotropic)\n"
-"               . cancel a rubber zoom\n"
-"  (right)      . pan\n"
-"               . cancel a rubber zoom\n"
-"               . pop up menu on module name\n"
-"               . pop up menu on post-processing view button\n"
-"\n"
-"  (C-left)     start (anisotropic) rubber zoom\n" 
-"  (C-middle)   orthogonalize display\n" 
-"  (C-right)    reset viewpoint to default\n"   
-"\n"
-"KEYBOARD:\n"
-"\n"
-"No modifier: basic module interaction\n"
-"\n"
-"  (0)          reload input file\n"
-"  (1), (F1)    mesh curves\n"
-"  (2), (F2)    mesh surfaces\n"
-"  (3), (F3)    mesh volumes\n"
-"  (g)          go to geometry module\n"
-"  (m)          go to mesh module\n"
-"  (p)          go to post processor module\n"
-"\n"
-"Control modifier: file menu\n"
-"\n"
-"  (C-q)        quit\n"
-"  (C-o)        hide/show open file dialog\n" 
-"  (C-p)        hide/show save/print dialog\n"
-"  (C-m)        hide/show merge file dialog\n" 
-"  (C-s)        quick mesh save\n"
-"\n"
-"Shift modifier: pop up option menus\n"
-"\n"
-"  (S-g)        hide/show geometry options\n"
-"  (S-i)        hide/show statistics window\n" 
-"  (S-m)        hide/show mesh options\n"
-"  (S-o)        hide/show miscellaneous options\n" 
-"  (S-p)        hide/show post-processing general options\n"
-"  (S-v)        hide/show viewpoint options\n" 
-"\n"
-"Meta (Alt) modifier: quick shortcuts (no pop up)\n"
-"\n"
-"  (M-a)        hide/show small axes\n" 
-"  (M-S-a)      hide/show big moving axes\n" 
-"  (M-b)        hide/show all post processing scales\n"
-"  (M-c)        alternate between predefined color schemes\n"
-"  (M-d)        alternate between mesh wire frame, hidden lines\n"
-"               and shading modes\n"
-"  (M-f)        toggle redraw mode (fast/full)\n" 
-"  (M-h)        toggle highlight mode\n"
-"  (M-l)        hide/show geometry lines\n"
-"  (M-S-l)      hide/show mesh lines\n"
-"  (M-m)        toggle visibility of all mesh entities\n"
-"  (M-o)        change projection mode\n"
-"  (M-p)        hide/show geometry points\n"
-"  (M-S-p)      hide/show mesh points\n"
-"  (M-s)        hide/show geometry surfaces\n"
-"  (M-S-s)      hide/show mesh surfaces\n"
-"  (M-t)        alternate intervals mode for all post-processing\n" 
-"               views\n" 
-"  (M-v)        hide/show geometry volumes\n"
-"  (M-S-v)      hide/show mesh volumes\n"
-"  (M-x)        set X view\n" 
-"  (M-y)        set Y view\n" 
-"  (M-z)        set Z view\n" 
-"\n"
-;
-
-
-#endif
diff --git a/Motif/Info.h b/Motif/Info.h
deleted file mode 100644
index 6ce1718e8618777e3a30a1ad413ab6bf3491efe1..0000000000000000000000000000000000000000
--- a/Motif/Info.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef _INFO_H_
-#define _INFO_H_
-
-static char *txt_info [] = 
-  { 
-    /* Geometry */
-    "Points", 
-    "Curves", 
-    "Surfaces", 
-    "Volumes", 
-
-    /* Mesh */
-    "Nodes on Curves",
-    "Nodes on Surfaces",
-    "Nodes in Volumes",
-    "Triangles", 
-    "Quadrangles",
-    "Tetrahedra",
-    "Hexahedra",
-    "Prisms", 
-    "Time for 1D Mesh",
-    "Time for 2D Mesh",
-    "Time for 3D Mesh",
-
-    "Gamma",
-    "Eta",
-    "Rho",
-  
-    /* Post */
-    "Views loaded",
-    "Visible Points",
-    "Visible Lines",
-    "Visible Triangles",
-    "Visible Tetrahedra"
-  } ;
-
-#endif
diff --git a/Motif/Main.cpp b/Motif/Main.cpp
deleted file mode 100644
index 8c99e0b1f2a4cdd44c14a1e34dbfe185e29cc295..0000000000000000000000000000000000000000
--- a/Motif/Main.cpp
+++ /dev/null
@@ -1,419 +0,0 @@
-// $Id: Main.cpp,v 1.11 2001-05-22 08:30:26 geuzaine Exp $
-
-#include <signal.h>
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "GmshVersion.h"
-#include "Geo.h"
-#include "Verif.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "Options.h"
-#include "ColorTable.h"
-#include "Parser.h"
-#include "Views.h"
-
-#include "Widgets.h"
-#include "Pixmaps.h"
-#include "XColors.h"
-#include "XContext.h"
-#include "XRessources.h"
-#include "CbContext.h"
-#include "CbGeom.h"
-#include "Register.h"
-#include "Geometry.h"
-#include "OpenFile.h"
-#include "GetOptions.h"
-
-#include "Static.h"
-#include "XStatic.h"
-
-char* ShowVisualClass(int cls){
-  if(cls==TrueColor)   return "TrueColor";
-  if(cls==DirectColor) return "DirectColor";
-  if(cls==PseudoColor) return "PseudoColor";
-  if(cls==StaticColor) return "StaticColor";
-  if(cls==GrayScale)   return "GrayScale";
-  if(cls==StaticGray)  return "StaticGray";
-  return "Unknown";
-}
-
-int main(int argc, char *argv[]){
-  int     i, nbf;
-  XColor  ov_color_def, ov_color_exact;
-  extern char  *TextBuffer, TextAbout[1024];
- 
-  /* Gmsh default context options */
-  
-  Init_Options(0);
-
-  /* Command line options */
-
-  Get_Options(argc, argv, &nbf);
-
-  if(CTX.verbosity)
-    fprintf(stderr, "%s, Version %.2f\n", gmsh_progname, GMSH_VERSION);
-
-  /* Initialize the static Mesh */
-
-  M.Vertices = NULL ;
-  M.VertexEdges = NULL ;
-  M.Simplexes = NULL ;
-  M.Points = NULL ;
-  M.Curves = NULL ;
-  M.SurfaceLoops = NULL ;
-  M.EdgeLoops = NULL ;
-  M.Surfaces = NULL ;
-  M.Volumes = NULL ;
-  M.PhysicalGroups = NULL ;
-  M.Metric = NULL ;
-
-  /* Signal handling */
-
-  signal(SIGINT,  Signal); 
-  signal(SIGSEGV, Signal);
-  signal(SIGFPE,  Signal); 
-
-  /* Non-interactive Gmsh */
-
-  if(CTX.batch){
-    OpenProblem(CTX.filename);
-    if(yyerrorstate)
-      exit(1);
-    else {
-      if(nbf > 1){
-        for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
-      }
-      if(TheBgmFileName){
-        MergeProblem(TheBgmFileName);
-        if(List_Nbr(Post_ViewList))
-          BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
-        else
-          Msg(GERROR, "Invalid Background Mesh (no View)");
-      }
-      if(CTX.batch > 0){
-        mai3d(THEM, CTX.batch);
-        Print_Mesh(THEM,CTX.output_filename,CTX.mesh.format);
-      }
-      else
-        Print_Geo(THEM,CTX.output_filename);
-      exit(1);
-    }    
-  }
-  
-
-  /* Interactive Gmsh */
-
-  CTX.batch = -1 ; /* The GUI is not ready yet for interactivity */
-
-  /* Text for about window */
-
-  sprintf(TextAbout, "%s\n \n%s%.2f\n%s\n%s%s\n%s\n%s\n%s\n%s\n%s\n \n%s\n \n"
-          "Type 'gmsh -help' for command line options",
-          gmsh_progname, gmsh_version, GMSH_VERSION, 
-          gmsh_os, gmsh_gui, XmVERSION_STRING, 
-	  gmsh_date, gmsh_host, gmsh_packager, 
-          gmsh_url, gmsh_email, gmsh_copyright);
-  
-  /* Xlib Threads init */
-  
-#ifdef _USETHREADS  
-  if(CTX.threads){
-    if(!XInitThreads()){
-      Msg(WARNING, "Xlib is not Thread Safe (Reverting to '-nothreads')");
-      CTX.threads = 0;
-    }
-  }
-#else
-  CTX.threads = 0;
-#endif
-  
-  /* Xtoolkit init */
-  
-  XtToolkitInitialize();
-  
-#ifdef _USETHREADS  
-  if(CTX.threads){
-    if(!XtToolkitThreadInitialize()){
-      Msg(WARNING, "Xtoolkit is not Thread Safe (Reverting to '-nothreads')");
-      CTX.threads = 0;
-    }
-  }
-#endif
-  
-  XCTX.AppContext = XtCreateApplicationContext();
-  
-  /* X/Motif default resources */
-
-  XtAppSetFallbackResources(XCTX.AppContext, FallbackResources);
-
-  /* Open display */
-
-  XCTX.display = XtOpenDisplay(XCTX.AppContext, NULL, "gmshGW", ".gmshrc", 
-                               NULL, 0, &argc, argv);
-
-  if(!XCTX.display){
-    Msg(FATAL1, "Unable to open the specified display. Set the `DISPLAY'");
-    Msg(FATAL2, "environment variable properly or use the `xhost' command");
-    Msg(FATAL3, "to authorize access to the display");
-  }
-
-  /* Check for GLX extension; for Mesa, this is always OK */
-  
-  if(!glXQueryExtension(XCTX.display,NULL,NULL)){
-    Msg(FATAL1, "The specified display does not support the OpenGL extension (GLX).");
-    Msg(FATAL3, "You may consider using Mesa instead");
-  }
-
-  /* Init with default screen num and default depth */
-  
-  XCTX.scrnum = DefaultScreen(XCTX.display);
-  XCTX.depth  = DefaultDepth(XCTX.display, XCTX.scrnum);
-
-  /* Init with default visual for the gui */
-
-  XCTX.gui.visual = DefaultVisual(XCTX.display,XCTX.scrnum);
-
-  /* Find visual the regular way for glw */
-  
-  if(CTX.db){
-    if(!(XCTX.glw.visinfo = 
-         glXChooseVisual(XCTX.display,XCTX.scrnum, glw_attrib_db))){
-      Msg(WARNING,"GBA Double Buffured Visual not Available");
-      CTX.db = 0;
-    }
-  }
-  
-  if(!CTX.db){
-    if(!(XCTX.glw.visinfo = 
-         glXChooseVisual(XCTX.display,XCTX.scrnum, glw_attrib_sb)))
-      Msg(FATAL, "RGBA Single Buffured Visual not Available");
-  }
-  
-  Msg(DEBUG, "Visual id=%lx depth=%d screen=%d bits/rgb=%d class=%s dblbuf=%d",
-      XCTX.glw.visinfo->visualid, XCTX.glw.visinfo->depth,
-      XCTX.glw.visinfo->screen, XCTX.glw.visinfo->bits_per_rgb,
-#if defined(__cplusplus) || defined(c_plusplus)
-      ShowVisualClass(XCTX.glw.visinfo->c_class), 
-#else
-      ShowVisualClass(XCTX.glw.visinfo->class), 
-#endif
-      CTX.db);
-
-  /* Find visual the regular way for glo */
-  
-#ifndef _NOOV
-  if(CTX.overlay){
-    if(!(XCTX.glo.visinfo = glXChooseVisual(XCTX.display,XCTX.scrnum,glo_attrib))){
-      Msg(DEBUG, "Overlay Visual not Available (Using Blend Function Instead)");
-      CTX.overlay = 0;
-      CTX.geom.highlight = 0;
-    }
-  }
-#else
-  CTX.overlay = 0 ;
-  CTX.geom.highlight = 0;
-#endif
-
-  if(CTX.overlay){
-    Msg(DEBUG,"Overlay Visual id=%lx depth=%d screen=%d bits/rgb=%d class=%s",
-        XCTX.glo.visinfo->visualid, XCTX.glo.visinfo->depth, 
-        XCTX.glo.visinfo->screen, XCTX.glo.visinfo->bits_per_rgb, 
-#if defined(__cplusplus) || defined(c_plusplus)
-        ShowVisualClass(XCTX.glo.visinfo->c_class)
-#else
-        ShowVisualClass(XCTX.glo.visinfo->class)
-#endif
-        );
-  }
-
-
-  /* Init with default colormaps */
-
-  XCTX.gui.colormap = DefaultColormap(XCTX.display,0);
-  XCTX.glw.colormap = DefaultColormap(XCTX.display,0);
-  XCTX.glo.colormap = DefaultColormap(XCTX.display,0);
-  
-  /*
-    If not using default visual (i.e. not using the gui visual), we need a colormap for 
-    this visual. Yes, the GL widget can allocate one itself, but we want to make sure 
-    the GUI and the 3D have the same one (if hardware does not allow more than one 
-    simultaneously). This prevents nasty flashing when the window with the 3D widget 
-    looses the focus.
-    */
-  
-  if(!CTX.flash && (XCTX.glw.visinfo->visual != XCTX.gui.visual)){
-    Msg(DEBUG, "Making Another Colormap for Graphic Window");
-    XCTX.glw.colormap = XCreateColormap(XCTX.display, RootWindow(XCTX.display,XCTX.scrnum),
-                                        XCTX.glw.visinfo->visual, AllocNone);
-    if(!XCTX.glw.colormap)
-      Msg(FATAL, "Unable to Create Colormap for Graphic Window (Try Option '-flash')");
-  }
-
-  if(CTX.overlay){
-    if(!CTX.flash && (XCTX.glo.visinfo->visual != XCTX.gui.visual)){
-      Msg(DEBUG, "Making Another Colormap for Overlay Window");
-      XCTX.glo.colormap = XCreateColormap(XCTX.display, RootWindow(XCTX.display,XCTX.scrnum),
-                                          XCTX.glo.visinfo->visual, AllocNone);
-      if(!XCTX.glo.colormap){
-        Msg(FATAL1, "Unable to Create Private Colormap for Overlay Window");
-	Msg(FATAL3, "(Try '-noov' and/or '-flash' Options)");
-      }
-    }
-  }
-  
-  /* Force to use common visual for GUI and GL? Maybe you can invoke
-     some hardware interrogation function and see if more than one
-     hardware map is supported.  Here, we check for the -samevisual
-     flag */
-  
-  if(CTX.same_visual){
-    XCTX.gui.visual = XCTX.glw.visinfo->visual;
-    XCTX.gui.colormap = XCTX.glw.colormap;
-  }
-
-  /* Create all the motif widgets */
-   
-  CreateWidgets(&WID);
-
-  /* create the OpenGL contexts */
-
-  XCTX.glw.context = glXCreateContext(XtDisplay(WID.G.glw),XCTX.glw.visinfo,NULL,GL_TRUE);  
-
-  if(CTX.overlay){
-    XCTX.glo.context = glXCreateContext(XtDisplay(WID.G.glo),
-                                        XCTX.glo.visinfo,NULL,GL_TRUE);  
-
-    if (!XAllocNamedColor(XCTX.display, XCTX.glo.colormap, 
-                          "white", &ov_color_def, &ov_color_exact)) {
-      Msg(WARNING, "Couldn't Allocate White for Overlay window (Reverting to '-noov')");
-      CTX.overlay = 0;
-    }
-    else
-      XCTX.xcolor.ovwhite = ov_color_def.pixel;
-  }
-
-  if(CTX.overlay){
-    if (!XAllocNamedColor(XCTX.display, XCTX.glo.colormap, 
-                          "black", &ov_color_def, &ov_color_exact)) {
-      Msg(WARNING, "Couldn't Allocate Black for Overlay Window (Reverting to '-noov')");
-      CTX.overlay = 0;
-    }
-    else
-      XCTX.xcolor.ovblack = ov_color_def.pixel;
-  }
-
-  /* X font initialisation */
-  XCTX.xfont.helve = XLoadQueryFont(XCTX.display, CTX.font); 
-  XCTX.xfont.fixed = XLoadQueryFont(XCTX.display, CTX.fixed_font);
-
-  if(XCTX.xfont.helve == NULL){
-    Msg(WARNING, "Unable to Load Font '%s'", CTX.font);
-    XCTX.xfont.helve = XCTX.xfont.fixed ;
-  }
-  if(XCTX.xfont.fixed == NULL)
-    Msg(FATAL, "Unable to Load Font '%s'", CTX.fixed_font);
-  
-  XCTX.xfont.helve_h = XCTX.xfont.helve->max_bounds.ascent + 
-    XCTX.xfont.helve->max_bounds.descent;
-  XCTX.xfont.helve_a = XCTX.xfont.helve->max_bounds.ascent;
-  XCTX.xfont.helve_w = XCTX.xfont.helve->max_bounds.width;
-
-  XCTX.xfont.fixed_h = XCTX.xfont.fixed->max_bounds.ascent +
-    XCTX.xfont.fixed->max_bounds.descent;
-  XCTX.xfont.fixed_a = XCTX.xfont.fixed->max_bounds.ascent;
-  XCTX.xfont.fixed_w = XCTX.xfont.fixed->max_bounds.width;
-
-  CTX.gl_fontheight = XCTX.xfont.helve_h ;
-  CTX.gl_fontascent = XCTX.xfont.helve_a ;
-
-
-  /* X color initialisation (set the pixel format and allocate some colors in XCTX) */
-
-  XColorInitialize();
-
-  /* Force widget geometry */
-
-  ForceGeometry(&WID);
-
-  /* Register all the callbacks */
-
-  RegisterCallbacks(&WID);
-
-  /* Realize widgets in the 3 windows (M=menu, G=graphics, C=command) */
-
-  XtRealizeWidget(WID.M.shell);
-  XtRealizeWidget(WID.G.shell);
-  if(CTX.command_win) XtRealizeWidget(WID.C.shell);
-
-  /* Create the pixmaps */
-
-  CreatePixmaps(&WID, &PIX, XCTX.depth);
-
-  /* Select input events for the graphic window and raise overlay window */
-
-  if(CTX.overlay){
-    XRaiseWindow(XtDisplay(WID.G.glo), XtWindow(WID.G.glo));
-    XSelectInput(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), EV_MASK);
-  }
-  else{
-    XSelectInput(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), EV_MASK);
-  }
-
-  /* OpenGL display list for the font */
-
-  if((CTX.font_base = glGenLists(XCTX.xfont.helve->max_char_or_byte2+1)) == 0)
-    Msg(FATAL, "Font out of OpenGL Display Lists");
-
-  glXUseXFont(XCTX.xfont.helve->fid, 
-              XCTX.xfont.helve->min_char_or_byte2, 
-              XCTX.xfont.helve->max_char_or_byte2-XCTX.xfont.helve->min_char_or_byte2+1, 
-              CTX.font_base+XCTX.xfont.helve->min_char_or_byte2);
-
-  /* The GUI is ready */
-  CTX.batch = 0 ; 
-  CTX.expose = 1 ;
-
-  /* Say welcome! */
-
-  TextBuffer = (char*)Malloc(1024*sizeof(char));
-  Msg(STATUS3, "Ready");
-  Msg(STATUS1, "Gmsh %.2f", GMSH_VERSION);
-
-  /* Open input file */
-
-  OpenProblem(CTX.filename);
-
-  /* Merge all Input Files if any, then init first context (geometry or post) */
-
-  if(nbf > 1){
-    for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
-    ActualizeContextCb (NULL,(XtPointer)CONTEXT_POST,NULL); 
-  }
-  else {
-    ActualizeContextCb(NULL,(XtPointer)CONTEXT_GEOM,NULL);
-  }
-
-  /* Read background mesh on disk if any */ 
-
-  if(TheBgmFileName){
-    MergeProblem(TheBgmFileName);
-    if(List_Nbr(Post_ViewList))
-      BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
-    else
-      Msg(GERROR, "Invalid Background Mesh (no View)");
-  }
-  
-  /* Draw the actual scene */
-  Draw();
-
-  /* Loop until were done */
-  
-  XtAppMainLoop(XCTX.AppContext);
-  
-  /* never here */
-  
-}
-  
diff --git a/Motif/Makefile b/Motif/Makefile
deleted file mode 100644
index b9de799c2b90181be23869da2befd88a23e80d55..0000000000000000000000000000000000000000
--- a/Motif/Makefile
+++ /dev/null
@@ -1,183 +0,0 @@
-# $Id: Makefile,v 1.19 2001-08-11 23:32:23 geuzaine Exp $
-#
-# Makefile for "libMotif.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RM       = rm
-RANLIB   = ranlib
-
-LIB      = ../lib/libMotif.a
-INCLUDE  = -I../Common -I../DataStr -I../Graphics -I../Geo\
-           -I../Mesh -I../Parser -I../Motif -I../Fltk
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = -D_XMOTIF -D_NOTHREADS
-
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = -I/usr/X11R6/LessTif/Motif1.2/include
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
-           $(GUI_INCLUDE) $(GL_INCLUDE)
-
-SRC = Main.cpp \
-      Widgets.cpp \
-      Geometry.cpp \
-      Register.cpp \
-      Pixmaps.cpp \
-      Opengl.cpp \
-      XColors.cpp \
-      Message.cpp \
-      CbContext.cpp \
-      CbPost.cpp \
-      CbColorbar.cpp \
-      CbGeom.cpp \
-      CbMesh.cpp \
-      CbOptions.cpp \
-      CbFile.cpp \
-      CbInput.cpp \
-      CbGeneral.cpp 
-
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Main.o: Main.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/GmshVersion.h ../Geo/Geo.h ../Geo/Verif.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../Common/Options.h ../Parser/Parser.h Widgets.h Pixmaps.h XColors.h \
- XContext.h XRessources.h CbContext.h CbGeom.h Register.h Geometry.h \
- ../Parser/OpenFile.h ../Common/GetOptions.h ../Common/Static.h \
- XStatic.h
-Widgets.o: Widgets.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Common/Context.h \
- XContext.h Info.h Widgets.h Help.h
-Geometry.o: Geometry.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Context.h XContext.h Widgets.h
-Register.o: Register.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Context.h XContext.h Widgets.h Register.h CbOptions.h \
- CbContext.h CbFile.h CbGeom.h CbMesh.h CbPost.h
-Pixmaps.o: Pixmaps.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h Widgets.h \
- ../Common/Context.h Pixmaps.h ../Common/Bitmaps.h XColors.h
-Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../Geo/MinMax.h Widgets.h XContext.h ../Graphics/gl2ps.h
-XColors.o: XColors.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h XContext.h
-Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/GmshVersion.h ../Common/Context.h Widgets.h
-CbContext.o: CbContext.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Widgets.h \
- ../Common/Context.h XContext.h CbContext.h CbGeom.h CbMesh.h
-CbPost.o: CbPost.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Widgets.h \
- ../Common/Context.h XContext.h ../Parser/OpenFile.h CbPost.h CbGeom.h \
- CbMesh.h CbColorbar.h
-CbColorbar.o: CbColorbar.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h XColors.h Widgets.h Register.h \
- ../Common/Context.h XContext.h ../Common/ColorTable.h CbColorbar.h
-CbGeom.o: CbGeom.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Widgets.h \
- ../Common/Context.h ../Geo/Verif.h ../Parser/OpenFile.h CbGeom.h
-CbMesh.o: CbMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h CbMesh.h ../Common/Context.h \
- Widgets.h
-CbOptions.o: CbOptions.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Geo/Verif.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h Widgets.h \
- Pixmaps.h ../Common/Context.h ../Common/Options.h XContext.h \
- Register.h ../Common/Timer.h ../Geo/Visibility.h CbOptions.h CbGeom.h \
- CbMesh.h CbPost.h
-CbFile.o: CbFile.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Parser/OpenFile.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/ColorTable.h Widgets.h ../Common/Context.h \
- ../Common/Options.h ../Graphics/CreateFile.h CbFile.h CbColorbar.h
-CbInput.o: CbInput.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h Widgets.h \
- ../Common/Context.h ../Common/Options.h XContext.h Register.h \
- CbContext.h CbGeom.h CbPost.h CbMesh.h
-CbGeneral.o: CbGeneral.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- XContext.h Widgets.h
diff --git a/Motif/Message.cpp b/Motif/Message.cpp
deleted file mode 100644
index 2de5c03744dca8f92c3185a1958bef2ba69b48bd..0000000000000000000000000000000000000000
--- a/Motif/Message.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-// $Id: Message.cpp,v 1.8 2001-02-20 18:32:58 geuzaine Exp $
-
-#include <signal.h>
-#include <sys/resource.h>
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "GmshVersion.h"
-#include "Context.h"
-#include "Widgets.h"
-
-extern Context_T   CTX;
-extern Widgets_T   WID;
-
-/* ------------------------------------------------------------------------ */
-/*  S i g n a l                                                             */
-/* ------------------------------------------------------------------------ */
-
-void Signal (int sig_num){
-
-  switch (sig_num){
-  case SIGSEGV : 
-    Msg(FATAL, "Segmentation Violation (Invalid Memory Reference)\n"
-        "------------------------------------------------------\n"
-        "You have discovered a bug in Gmsh. You may e-mail the\n"
-        "context in which it occurred to one of the authors:\n"
-        "type 'gmsh -info' to get feedback information"); 
-    break;
-  case SIGFPE : 
-    Msg(FATAL, "Floating Point Exception (Division by Zero?)"); 
-    break;
-  case SIGINT :
-    Msg(FATAL, "Interrupt (Generated from Terminal Special Character)"); 
-    break;
-  default :
-    Msg(FATAL, "Unknown Signal");
-    break;
-  }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  M s g                                                                   */
-/* ------------------------------------------------------------------------ */
-
-char *TextBuffer;
-
-#define PUT_IN_COMMAND_WIN                                              \
-  vsprintf(TextBuffer, fmt, args);                                      \
-  XmListAddItem(WID.C.commandList,XmStringCreateSimple(TextBuffer),0);  \
-  XtSetArg(arg[0], XmNitemCount, &nb);                                  \
-  XtSetArg(arg[1], XmNvisibleItemCount, &nbvis);                        \
-  XtGetValues(WID.C.commandList, arg, 2);                               \
-  XmListSetPos(WID.C.commandList,(nb>nbvis)?nb-nbvis+1:0);              \
-  XmUpdateDisplay(WID.C.commandList);
-
-void Msg(int level, char *fmt, ...){
-  va_list  args;
-  int      abort=0;
-  Arg      arg[2];
-  int      nb, nbvis;
-
-  if(level != FATAL && level != GERROR && level != PARSER_ERROR &&
-     CTX.batch && !CTX.verbosity) 
-    return ;
-
-  va_start (args, fmt);
-
-  switch(level){
-  case DIRECT :
-    vfprintf(stderr, fmt, args); 
-    fprintf(stderr, "\n");
-    break;
-  case FATAL :
-    fprintf(stderr, FATAL_STR);
-    vfprintf(stderr, fmt, args); 
-    fprintf(stderr, "\n");
-    abort = 1; 
-    break;
-  case GERROR :
-    if(CTX.batch || !CTX.command_win){
-      fprintf(stderr, ERROR_STR);
-      vfprintf(stderr, fmt, args); 
-      fprintf(stderr, "\n");
-    }
-    else{
-      PUT_IN_COMMAND_WIN ;
-    }
-    break;
-  case WARNING :
-    if(CTX.batch || !CTX.command_win){
-      if(CTX.verbosity > 0){
-        fprintf(stderr, WARNING_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      PUT_IN_COMMAND_WIN ;
-    }
-    break;
-  case INFO :
-    if(CTX.batch || !CTX.command_win){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, INFO_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      PUT_IN_COMMAND_WIN ;
-    }
-    break;
-  case STATUS2 :
-  case STATUS2N :
-    if(CTX.batch){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, STATUS_STR);
-        vfprintf(stderr, fmt, args);
-        fprintf(stderr, "\n");
-      }
-    }
-    else if(CTX.expose){
-      vsprintf(TextBuffer, fmt, args);
-      XtVaSetValues(WID.G.infoLabel, XmNlabelString,
-                    XmStringCreateSimple(TextBuffer), NULL);
-      XmUpdateDisplay(WID.G.infoLabel);
-    }
-    break;
-  case STATUS1 :
-  case STATUS1N :
-    if(CTX.batch){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, STATUS_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else if(CTX.expose){
-      vsprintf(TextBuffer, fmt, args);
-      XtVaSetValues(WID.G.selectLabel, XmNlabelString, 
-                    XmStringCreateSimple(TextBuffer), NULL);
-      XmUpdateDisplay(WID.G.selectLabel);
-    }
-    break;
-  case STATUS3 :
-  case STATUS3N :
-    if(CTX.batch){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, STATUS_STR);
-        vfprintf(stderr, fmt, args);
-        fprintf(stderr, "\n");
-      }
-    }
-    else if(CTX.expose){
-      vsprintf(TextBuffer, fmt, args);
-      XtVaSetValues(WID.G.statusLabel, XmNlabelString,
-                    XmStringCreateSimple(TextBuffer), NULL);
-      XmUpdateDisplay(WID.G.statusLabel);
-    }
-    break;
-  case PARSER_ERROR :
-    if(CTX.batch || !CTX.command_win){
-      if(CTX.verbosity > 0){
-        fprintf(stderr, PARSER_ERROR_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      PUT_IN_COMMAND_WIN ;
-    }
-    break;
-  case PARSER_INFO :
-    if(CTX.batch || !CTX.command_win){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, PARSER_INFO_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      PUT_IN_COMMAND_WIN ;
-    }
-    break;
-  case DEBUG :
-    if(CTX.batch || !CTX.command_win){
-      if(CTX.verbosity > 2){
-        fprintf(stderr, DEBUG_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      PUT_IN_COMMAND_WIN ;
-    }
-    break;
-  }
-
-  va_end (args);
-
-  if(abort) exit(1);
-
-}
-
-
-/* ------------------------------------------------------------------------ */
-/*  C p u                                                                   */
-/* ------------------------------------------------------------------------ */
-
-void GetResources(long *s, long *us, long *mem){
-  static struct rusage r;
-
-  getrusage(RUSAGE_SELF,&r);
-  *s   = (long)r.ru_utime.tv_sec ;
-  *us  = (long)r.ru_utime.tv_usec ;
-  *mem = (long)r.ru_maxrss ;
-}
-
-void PrintResources(FILE *stream, char *fmt, long s, long us, long mem){
-  fprintf(stream, "Resources = %scpu %ld.%ld s / mem %ld kb\n", fmt, s, us, mem);
-}
-
-double Cpu(void){
-  long s, us, mem;
-  GetResources(&s, &us, &mem);
-  return (double)s + (double)us/1.e6 ;
-}
-
-/* ------------------------------------------------------------------------ */
-/*  P r o g r e s s                                                         */
-/* ------------------------------------------------------------------------ */
-
-void Progress(int i){
-}
-
-/* ------------------------------------------------------------------------ */
-/*  E d i t G e o m e t r y                                                 */
-/* ------------------------------------------------------------------------ */
-
-void AddALineInTheEditGeometryForm (char* line){
-}
diff --git a/Motif/Opengl.cpp b/Motif/Opengl.cpp
deleted file mode 100644
index 9d8de37f6edd1f080da2c96f2417be8a0fafd593..0000000000000000000000000000000000000000
--- a/Motif/Opengl.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-// $Id: Opengl.cpp,v 1.5 2001-02-04 12:46:09 geuzaine Exp $
-
-#include <X11/IntrinsicP.h>
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Context.h"
-#include "MinMax.h"
-#include "Widgets.h"
-#include "XContext.h"
-#include "gl2ps.h"
-
-extern XContext_T   XCTX ;
-extern Widgets_T    WID ;
-extern Context_T    CTX ;
-extern Mesh         M;
-
-void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj);
-void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
-                            Curve **thec, Surface **thes, Mesh *m);
-void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
-            GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2);
-
-/* ------------------------------------------------------------------------ */
-/*  Init/Draw                                                               */
-/* ------------------------------------------------------------------------ */
-
-void InitOpengl(void){
-  /* Resize Graphical Window if told to do it */
-  XWindowAttributes  xattrib;
-  XGetWindowAttributes(XtDisplay(WID.G.bottomForm),XtWindow(WID.G.bottomForm),&xattrib);
-  XtResizeWidget(WID.G.shell,
-		 CTX.viewport[2]-CTX.viewport[0],
-		 xattrib.height+CTX.viewport[3]-CTX.viewport[1],
-		 0);
-  /* X11 forbids to change the context (GLX) in GL_FEEDBACK or GL_SELECT mode,
-     which would happen for postscript output */
-  if(CTX.stream == TO_SCREEN)
-    glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-  Orthogonalize(0,0);
-}
-
-void InitOverlay(void){
-  glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context);
-  Orthogonalize(0,0);
-}
-
-void ClearOpengl(void){
-  glClearColor(UNPACK_RED(CTX.color.bg)/255.,
-               UNPACK_GREEN(CTX.color.bg)/255.,
-               UNPACK_BLUE(CTX.color.bg)/255.,
-               0.);
-  glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
-}
-
-void Draw(void){
-  InitOpengl();
-  ClearOpengl();
-  if(CTX.db) glDrawBuffer(GL_BACK);    
-  Draw3d();
-  Draw2d();
-  glFlush();
-  if(CTX.db) glXSwapBuffers(XCTX.display,XtWindow(WID.G.glw));
-}
-
-void DrawUI(void){
-}
-
-void Draw_String(char *s){
-
-  if(CTX.stream == TO_FILE){
-    if(!CTX.print.gl_fonts && CTX.print.eps_quality > 0){
-      gl2psText(s,CTX.print.font,CTX.print.font_size);
-      return ;
-    }
-  }
-
-  glListBase(CTX.font_base);
-  glCallLists(strlen(s), GL_UNSIGNED_BYTE, (GLubyte *)s);
-}
-
-/* ------------------------------------------------------------------------ */
-/*  SelectEntity                                                            */
-/* ------------------------------------------------------------------------ */
-
-
-int check_type(int type, Vertex *v, Curve *c, Surface *s){
-  return ( (type==ENT_POINT   && v) ||
-           (type==ENT_LINE    && c) ||
-           (type==ENT_SURFACE && s) ) ;
-}
-
-int SelectEntity(int type, Vertex **v, Curve **c, Surface **s){
-  XEvent          event;
-  XComposeStatus  stat;
-  KeySym          keysym;
-  int             hits;
-  GLuint          ii[SELECTION_BUFFER_SIZE],jj[SELECTION_BUFFER_SIZE];
-  char            buf[100];
-
-  *v = NULL;
-  *c = NULL; 
-  *s = NULL;
-
-  while(1){
-    XtAppNextEvent(XCTX.AppContext,&event);
-    XtDispatchEvent(&event);
-    switch(event.type){
-    case KeyPress :
-      XLookupString(&event.xkey, buf, sizeof(buf), &keysym, &stat);
-      if(keysym == XK_q) return(0);
-      if(keysym == XK_e) return(-1);
-      break;
-    case ButtonPress :
-      Process_SelectionBuffer(event.xbutton.x, event.xbutton.y, &hits, ii, jj);
-      Filter_SelectionBuffer(hits,ii,jj,v,c,s,&M);
-      if(check_type(type,*v,*c,*s)){
-        BeginHighlight();
-        HighlightEntity(*v,*c,*s,1);
-        EndHighlight(1);
-        return(event.xbutton.button);
-      }
-    }
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  Callbacks                                                               */
-/* ------------------------------------------------------------------------ */
-
-void InitCb(Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb){
-  glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context);
-  CTX.viewport[0] = 0 ;
-  CTX.viewport[1] = 0 ;
-  CTX.viewport[2] = cb->width ;
-  CTX.viewport[3] = cb->height ;
-  glViewport(CTX.viewport[0],
-             CTX.viewport[1],
-             CTX.viewport[2],
-             CTX.viewport[3]);
-}
-
-void ResizeCb(Widget w,XtPointer client_data, GLwDrawingAreaCallbackStruct *cb){
-  CTX.viewport[0] = 0 ;
-  CTX.viewport[1] = 0 ;
-  CTX.viewport[2] = cb->width ;
-  CTX.viewport[3] = cb->height ;
-  glViewport(CTX.viewport[0],
-             CTX.viewport[1],
-             CTX.viewport[2],
-             CTX.viewport[3]);
-  Draw();
-  if(CTX.overlay) InitOverlay();
-}
-
-void ExposeCb(Widget w,XtPointer client_data, GLwDrawingAreaCallbackStruct *cb){
-
-  /* compress incoming events as much as possible */
-  if(cb->event->xexpose.count != 0){
-    return;
-  }
-
-  if(!CTX.expose) return;
-  Draw(); 
-
-}
-
diff --git a/Motif/Pixmaps.cpp b/Motif/Pixmaps.cpp
deleted file mode 100644
index 882e0714b1e970c46410b00653c4c1ad5584312e..0000000000000000000000000000000000000000
--- a/Motif/Pixmaps.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-// $Id: Pixmaps.cpp,v 1.1 2001-01-08 08:20:11 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Widgets.h"
-#include "Context.h"
-#include "Pixmaps.h"
-#include "Bitmaps.h"
-#include "XColors.h"
-
-extern Widgets_T  WID;
-extern Context_T  CTX;
-
-Pixmap bm_to_px(Widget w, void *bits, int width, int height, int depth, int mode){
-  Display  *display ;
-  Window    window ;
-  int       screen ;
-  Pixmap    ret_pixmap;
-  Pixel     fg, bg;
-  
-  display = XtDisplay(w);
-  window = XtScreen(WID.M.shell)->root; /* XtWindow(w); */
-  screen = DefaultScreen(display);
-
-  if (DisplayCells(display, screen) > 2 && depth > 1) {
-
-    switch (mode) {
-    case BM_PX_BW: 
-      fg = BlackPixel(display, screen);
-      bg = WhitePixel(display, screen);
-      break;      
-    case BM_PX_BWREV:
-      fg = WhitePixel(display, screen);
-      bg = BlackPixel(display, screen);
-      break;
-    case BM_PX_WHITE:
-      fg = WhitePixel(display, screen);
-      XtVaGetValues(w,XmNbackground, &bg,NULL);
-      break;      
-    case BM_PX_BLACK:
-      fg = BlackPixel(display, screen);
-      XtVaGetValues(w,XmNbackground, &bg,NULL);
-      break;      
-    case BM_PX_RED:
-      fg = AllocateColorInt(255,0,0) ;
-      XtVaGetValues(w,XmNbackground, &bg,NULL);
-      break;      
-    case BM_PX_HIGHLIGHT:
-      XtVaGetValues(w,XmNhighlightColor, &fg,XmNbackground, &bg,NULL);
-      break;      
-    case BM_PX_NORMAL:
-    default:
-      XtVaGetValues(w,XmNforeground, &fg,XmNbackground, &bg,NULL );
-      break;
-    }
-  }
-  else {
-    fg = BlackPixel(display, screen);
-    bg = WhitePixel(display, screen);
-  }
-  
-  ret_pixmap = 
-    XCreatePixmapFromBitmapData(display, window, (char*)bits, width, height, fg, bg, depth);
-  
-  if (ret_pixmap == (Pixmap) NULL){
-    Msg(WARNING, "Failing to create pixmap");
-    return ((Pixmap) NULL);
-  }
-
-  return (ret_pixmap);
-}
-
-
-void Set_AnimPixmap(Widgets_T *w, Pixmaps_T *p, int start){
-  if(start)
-    XtVaSetValues(w->G.Butt[5], XmNlabelPixmap, p->G.start, NULL);
-  else
-    XtVaSetValues(w->G.Butt[5], XmNlabelPixmap, p->G.stop, NULL);
-}
-
-void CreatePixmaps(Widgets_T *w, Pixmaps_T *p, int depth){
-
-  /* Icons for 3 main windows */
-
-  XtVaSetValues(w->M.shell, 
-                XmNiconPixmap, 
-                XCreateBitmapFromData(XtDisplay(w->M.shell),XtScreen(w->M.shell)->root,
-                                      (char*)g1_bits, g1_width, g1_height), 
-                NULL);
-
-
-  XtVaSetValues(w->G.shell, 
-                XmNiconPixmap, 
-                XCreateBitmapFromData(XtDisplay(w->G.shell), XtScreen(w->G.shell)->root,
-                                      (char*)g2_bits, g2_width, g2_height),
-                NULL);
-
-  if(CTX.command_win)
-    XtVaSetValues(w->C.shell, 
-                  XmNiconPixmap, 
-                  XCreateBitmapFromData(XtDisplay(w->C.shell), XtScreen(w->C.shell)->root,
-                                        (char*)g3_bits, g3_width, g3_height),
-                  NULL);
-
-  /* Graphic window */
-
-  p->G.abort = bm_to_px(w->G.Butt[6], abort_bits, 
-                        abort_width, abort_height, depth, BM_PX_RED);
-  XtVaSetValues(w->G.Butt[6], XmNlabelPixmap, p->G.abort, NULL);
-
-  p->G.abort_insens = bm_to_px(w->G.Butt[6], abort_bits, 
-                               abort_width, abort_height, depth, BM_PX_NORMAL);
-  XtVaSetValues(w->G.Butt[6], XmNlabelInsensitivePixmap, p->G.abort_insens, NULL);
-
-  p->G.start = bm_to_px(w->G.Butt[5], start_bits, 
-                        start_width, start_height, depth, BM_PX_NORMAL);
-  p->G.stop = bm_to_px(w->G.Butt[5], stop_bits, 
-                       stop_width, stop_height, depth, BM_PX_NORMAL);
-  Set_AnimPixmap(w, p, 1);
-
-  /* About window  */
-
-  p->HD.about = bm_to_px(w->HD.aboutDialog, about_bits, 
-                         about_width, about_height, depth, BM_PX_NORMAL);
-  XtVaSetValues(w->HD.aboutDialog, XmNsymbolPixmap, p->HD.about, NULL);
-
-
-}
-
diff --git a/Motif/Pixmaps.h b/Motif/Pixmaps.h
deleted file mode 100644
index 88b301ef76f55c0d4cba456887d8b24caf8c2e3d..0000000000000000000000000000000000000000
--- a/Motif/Pixmaps.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _PIXMAPS_H_
-#define _PIXMAPS_H_
-
-#define BM_PX_NORMAL    0        /* normal/normal */
-#define BM_PX_HIGHLIGHT 1        /* highlight/normal */
-#define BM_PX_WHITE     2        /* white/normal */
-#define BM_PX_BLACK     3        /* black/normal */
-#define BM_PX_BW        4        /* black/white */
-#define BM_PX_BWREV     5        /* white/black */
-#define BM_PX_RED       6        /* red/normal */
-
-typedef struct {
-  
-  struct {
-    Pixmap  abort, abort_insens, start, stop ; 
-  } G ;
-
-  struct {
-    Pixmap  about ; 
-  } HD ;
-  
-} Pixmaps_T ;
-
-void CreatePixmaps(Widgets_T *w, Pixmaps_T *p, int depth);
-void Set_AnimCallback(Widgets_T *w, int start) ;
-void Set_AnimPixmap(Widgets_T *w, Pixmaps_T *p, int start) ;
-
-#endif
diff --git a/Motif/Register.cpp b/Motif/Register.cpp
deleted file mode 100644
index 0c816d344b25a31105ed4dc5dd899ab6561d7d19..0000000000000000000000000000000000000000
--- a/Motif/Register.cpp
+++ /dev/null
@@ -1,406 +0,0 @@
-// $Id: Register.cpp,v 1.1 2001-01-08 08:20:11 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Context.h"
-#include "XContext.h"
-#include "Widgets.h"
-#include "Register.h"
-#include "CbOptions.h"
-#include "CbContext.h"
-#include "CbFile.h"
-#include "CbGeom.h"
-#include "CbMesh.h"
-#include "CbPost.h"
-
-extern Context_T   CTX ;
-extern XContext_T  XCTX ;
-
-void RegisterCallbacks_M(Widgets_T *w){
-  long int   n ;
-  XtPointer  l[5] ;
-
-  register_activate_cb (w->M.fileButt[0],   ManageCb,           w->FD.openDialog);
-  register_activate_cb (w->M.fileButt[1],   ManageCb,           w->FD.mergeDialog);
-  register_activate_cb (w->M.fileButt[2],   FileCb,             FILE_SAVE_MESH);
-  register_activate_cb (w->M.fileButt[3],   ManageCb,           w->FD.saveAsDialog);
-  register_activate_cb (w->M.fileButt[4],   ManageCb,           w->FD.saveOptionsAsDialog);
-  register_activate_cb (w->M.fileButt[5],   ReloadAllViewsCb,   NULL);
-  register_activate_cb (w->M.fileButt[6],   RemoveAllViewsCb,   NULL);
-  register_activate_cb (w->M.fileButt[7],   ExitCb,             NULL);
-
-  register_activate_cb (w->M.moduleButt[0], ActualizeContextCb, CONTEXT_GEOM);
-  register_activate_cb (w->M.moduleButt[1], ActualizeContextCb, CONTEXT_MESH);
-  register_activate_cb (w->M.moduleButt[2], ActualizeContextCb, CONTEXT_POST);
-
-  register_activate_cb (w->M.optionButt[0], ManageCb,           w->OD.geomDialog);
-  register_activate_cb (w->M.optionButt[1], ManageCb,           w->OD.meshDialog);
-  register_activate_cb (w->M.optionButt[2], ManageCb,           w->OD.postDialog);
-  register_activate_cb (w->M.optionButt[3], ManageCb,           w->OD.miscDialog);
-  register_activate_cb (w->M.optionButt[4], CurrentViewportCb,  NULL);
-  register_activate_cb (w->M.optionButt[5], CurrentInfoCb,      1);
-
-  register_activate_cb (w->M.helpButt[0],   ManageCb,           w->HD.keysDialog);
-  register_activate_cb (w->M.helpButt[1],   ManageCb,           w->HD.aboutDialog);
-
-  register_popup_ev    (w->M.modButt,       w->M.modPop);
-  register_activate_cb (w->M.geomButt,      ActualizeContextCb, CONTEXT_GEOM);
-  register_activate_cb (w->M.meshButt,      ActualizeContextCb, CONTEXT_MESH);
-  register_activate_cb (w->M.postButt,      ActualizeContextCb, CONTEXT_POST);
-                                                                
-  register_activate_cb (w->M.navigButt[0],  PreviousContextCb,  CONTEXT_BACKWARD);
-  register_activate_cb (w->M.navigButt[1],  PreviousContextCb,  CONTEXT_FORWARD);
-
-  l[0] = (XtPointer)CurrentViewCb ;
-  l[2] = (XtPointer)PostDialogCb ;
-
-  for(n=0 ; n<NB_BUTT_MAX ; n++){
-    register_activate_cb (w->M.pushButt[n],   NextContextCb, n+1);
-    register_valchg_cb   (w->M.toggleButt[n], SwapViewCb, n+1);
-    register_popup_ev    (w->M.toggleButt[n], w->M.popMenu[n]);
-    register_activate_cb (w->M.reloadButt[n], ReloadViewCb, n+1);
-    register_activate_cb (w->M.removeButt[n], RemoveViewCb, n+1);
-    register_activate_cb (w->M.duplicateButt[n], DuplicateViewCb, n+1);
-
-    l[1] = (XtPointer)(n+1) ;
-    l[4] = NULL ;
-    l[3] = (XtPointer)POST_LIGHT;      register_valchg_cb_list (w->M.lightButt[n],l);
-    l[3] = (XtPointer)POST_ELEMENT;    register_valchg_cb_list (w->M.elementButt[n],l);
-    l[3] = (XtPointer)POST_OFFSET;     register_activate_cb_list (w->M.offsetButt[n],l);
-    l[3] = (XtPointer)POST_TIME_STEP;  register_activate_cb_list (w->M.timeStepButt[n],l);
-    l[3] = (XtPointer)POST_SCALE;      register_activate_cb_list (w->M.scaleButt[n],l);
-    l[3] = (XtPointer)POST_COLOR;      register_activate_cb_list (w->M.colorButt[n],l);
-    l[3] = (XtPointer)POST_VECTOR;     register_activate_cb_list (w->M.vectorButt[n],l);
-    l[3] = (XtPointer)POST_TIME_STEP;  register_activate_cb_list (w->M.timeStepButt[n],l);
-    l[3] = (XtPointer)POST_EXPORT_BGM; register_activate_cb_list (w->M.exportBGMButt[n],l);
-    l[3] = (XtPointer)POST_APPLY_BGM;  register_activate_cb_list (w->M.applyBGMButt[n],l);
-  }
-
-}
-
-
-void RegisterCallbacks_G(Widgets_T *w){
-
-  register_GLexpose_cb   (w->G.glw, ExposeCb, NULL);
-  register_GLresize_cb   (w->G.glw, ResizeCb, NULL);
-  register_GLinit_cb     (w->G.glw, InitCb,   NULL);
-  register_GLinput_cb    (w->G.glw, InputCb,  NULL);
-
-  if(CTX.overlay){
-    register_GLexpose_cb (w->G.glo, ExposeCb, NULL);
-    register_GLresize_cb (w->G.glo, ResizeCb, NULL);
-    register_GLinput_cb  (w->G.glo, InputCb,  NULL);
-  }
-
-  register_activate_cb (w->G.Butt[0], OptionsCb, OPTIONS_XVIEW);
-  register_activate_cb (w->G.Butt[1], OptionsCb, OPTIONS_YVIEW);
-  register_activate_cb (w->G.Butt[2], OptionsCb, OPTIONS_ZVIEW);
-  register_activate_cb (w->G.Butt[3], OptionsCb, OPTIONS_CVIEW);
-  register_activate_cb (w->G.Butt[4], OptionsCb, OPTIONS_PVIEW);
-  register_activate_cb (w->G.Butt[5], OptionsCb, OPTIONS_POST_ANIM_START);
-  register_activate_cb (w->G.Butt[6], OptionsCb, OPTIONS_MESH_ABORT);
-
-}
-
-void Set_AnimCallback(Widgets_T *w, int start){
-  if(start){
-    register_remove_cb (w->G.Butt[5], OptionsCb, OPTIONS_POST_ANIM_STOP);
-    register_activate_cb (w->G.Butt[5], OptionsCb, OPTIONS_POST_ANIM_START);
-  }
-  else{
-    register_remove_cb (w->G.Butt[5], OptionsCb, OPTIONS_POST_ANIM_START);
-    register_activate_cb (w->G.Butt[5], OptionsCb, OPTIONS_POST_ANIM_STOP);
-  }
-}
-
-
-void RegisterCallbacks_C(Widgets_T *w){
-
-}
-
-
-void RegisterCallbacks_ED(Widgets_T *w){
-
-  register_ok_cb     (w->ED.saveAsDialog, FileCb,   FILE_SAVE_AS_OVERWRITE);
-
-}
-
-
-void RegisterCallbacks_FD(Widgets_T *w){ 
-
-  register_ok_cb       (w->FD.openDialog,     FileCb,    FILE_LOAD_GEOM);
-  register_cancel_cb   (w->FD.openDialog,     ManageCb,  w->FD.openDialog);
-
-  register_ok_cb       (w->FD.mergeDialog,    FileCb,    FILE_LOAD_POST);
-  register_cancel_cb   (w->FD.mergeDialog,    ManageCb,  w->FD.mergeDialog);
-
-  register_ok_cb       (w->FD.saveAsDialog,   FileCb,    FILE_SAVE_AS);
-  register_cancel_cb   (w->FD.saveAsDialog,   ManageCb,  w->FD.saveAsDialog);
-  register_activate_cb (w->FD.saveAsButt[0],  OptionsCb, OPTIONS_SAVE_AUTO);
-  register_activate_cb (w->FD.saveAsButt[1],  OptionsCb, OPTIONS_SAVE_GEO);
-  register_activate_cb (w->FD.saveAsButt[2],  OptionsCb, OPTIONS_SAVE_MSH);
-  register_activate_cb (w->FD.saveAsButt[3],  OptionsCb, OPTIONS_SAVE_UNV);
-  register_activate_cb (w->FD.saveAsButt[4],  OptionsCb, OPTIONS_SAVE_GREF);
-  register_activate_cb (w->FD.saveAsButt[5],  OptionsCb, OPTIONS_SAVE_EPS_SIMPLE);
-  register_activate_cb (w->FD.saveAsButt[6],  OptionsCb, OPTIONS_SAVE_EPS_COMPLEX);
-  register_activate_cb (w->FD.saveAsButt[7],  OptionsCb, OPTIONS_SAVE_XPM);
-  register_activate_cb (w->FD.saveAsButt[8],  OptionsCb, OPTIONS_SAVE_JPEG);
-  register_activate_cb (w->FD.saveAsButt[9],  OptionsCb, OPTIONS_SAVE_GIF);
-  register_activate_cb (w->FD.saveAsButt[10], OptionsCb, OPTIONS_SAVE_GIF_DITHERED);
-  register_activate_cb (w->FD.saveAsButt[11], OptionsCb, OPTIONS_SAVE_GIF_TRANSPARENT);
-  register_activate_cb (w->FD.saveAsButt[12], OptionsCb, OPTIONS_SAVE_PPM);
-  register_activate_cb (w->FD.saveAsButt[13], OptionsCb, OPTIONS_SAVE_YUV);
-
-  register_ok_cb       (w->FD.saveOptionsAsDialog,   FileCb,    FILE_SAVE_OPTIONS_AS);
-  register_cancel_cb   (w->FD.saveOptionsAsDialog,   ManageCb,  w->FD.saveOptionsAsDialog);
-}
-
-void RegisterCallbacks_OD(Widgets_T *w){
-
-  register_ok_cb      (w->OD.geomDialog,         OptionsCb,  OPTIONS_REPLOT);
-  register_cancel_cb  (w->OD.geomDialog,         ManageCb,   w->OD.geomDialog); 
-  register_valchg_cb  (w->OD.geomVisibleTypeButt[0], OptionsCb,  OPTIONS_GEOM_VISIBILITY_ENTITY);
-  register_valchg_cb  (w->OD.geomVisibleTypeButt[1], OptionsCb,  OPTIONS_GEOM_VISIBILITY_NUMBER);
-  register_valchg_cb  (w->OD.geomVisibleButt[0], OptionsCb,  OPTIONS_GEOM_POINTS);
-  register_valchg_cb  (w->OD.geomVisibleButt[1], OptionsCb,  OPTIONS_GEOM_LINES);
-  register_valchg_cb  (w->OD.geomVisibleButt[2], OptionsCb,  OPTIONS_GEOM_SURFACES);
-  register_valchg_cb  (w->OD.geomVisibleButt[3], OptionsCb,  OPTIONS_GEOM_VOLUMES);
-  register_activate_cb(w->OD.geomVisibleByNumText, OptionsCb,  OPTIONS_GEOM_HIDE_SHOW);
-  register_valchg_cb  (w->OD.geomNormalsScale,   OptionsCb,  OPTIONS_GEOM_NORMALS_SCALE);
-  register_drag_cb    (w->OD.geomNormalsScale,   OptionsCb,  OPTIONS_GEOM_NORMALS_SCALE);
-  register_activate_cb(w->OD.geomNormalsText,    OptionsCb,  OPTIONS_GEOM_NORMALS_TEXT);
-  register_valchg_cb  (w->OD.geomTangentsScale,  OptionsCb,  OPTIONS_GEOM_TANGENTS_SCALE);
-  register_drag_cb    (w->OD.geomTangentsScale,  OptionsCb,  OPTIONS_GEOM_TANGENTS_SCALE);
-  register_activate_cb(w->OD.geomTangentsText,   OptionsCb,  OPTIONS_GEOM_TANGENTS_TEXT);
-
-  register_ok_cb      (w->OD.meshDialog,         OptionsCb,  OPTIONS_REPLOT);
-  register_cancel_cb  (w->OD.meshDialog,         ManageCb,   w->OD.meshDialog); 
-  register_valchg_cb  (w->OD.meshAlgoButt[0],    OptionsCb,  OPTIONS_MESH_DEGRE2);
-  register_valchg_cb  (w->OD.meshAlgoButt[1],    OptionsCb,  OPTIONS_MESH_ANISOTROPIC);
-  register_valchg_cb  (w->OD.meshAlgoButt[2],    OptionsCb,  OPTIONS_MESH_INTERACTIVE);
-  register_valchg_cb  (w->OD.meshSmoothingScale, OptionsCb,  OPTIONS_MESH_SMOOTHING_SCALE);
-  register_drag_cb    (w->OD.meshSmoothingScale, OptionsCb,  OPTIONS_MESH_SMOOTHING_SCALE);
-  register_activate_cb(w->OD.meshSmoothingText,  OptionsCb,  OPTIONS_MESH_SMOOTHING_TEXT);
-  register_valchg_cb  (w->OD.meshVisibleTypeButt[0], OptionsCb,  OPTIONS_MESH_VISIBILITY_ENTITY);
-  register_valchg_cb  (w->OD.meshVisibleTypeButt[1], OptionsCb,  OPTIONS_MESH_VISIBILITY_NUMBER);
-  register_valchg_cb  (w->OD.meshVisibleButt[0], OptionsCb,  OPTIONS_MESH_POINTS);
-  register_valchg_cb  (w->OD.meshVisibleButt[1], OptionsCb,  OPTIONS_MESH_LINES);
-  register_valchg_cb  (w->OD.meshVisibleButt[2], OptionsCb,  OPTIONS_MESH_SURFACES);
-  register_valchg_cb  (w->OD.meshVisibleButt[3], OptionsCb,  OPTIONS_MESH_VOLUMES);
-  register_valchg_cb  (w->OD.meshVisibleByNumButt[0], OptionsCb,  OPTIONS_MESH_SELECT_ENTITY);
-  register_valchg_cb  (w->OD.meshVisibleByNumButt[1], OptionsCb,  OPTIONS_MESH_SELECT_QUALITY);
-  register_activate_cb(w->OD.meshVisibleByNumText,    OptionsCb,  OPTIONS_MESH_HIDE_SHOW);
-  register_valchg_cb  (w->OD.meshAspectButt[0],  OptionsCb,  OPTIONS_MESH_WIREFRAME);
-  register_valchg_cb  (w->OD.meshAspectButt[1],  OptionsCb,  OPTIONS_MESH_HIDDEN_LINES);
-  register_valchg_cb  (w->OD.meshAspectButt[2],  OptionsCb,  OPTIONS_MESH_SHADING);
-  register_valchg_cb  (w->OD.meshExplodeScale,   OptionsCb,  OPTIONS_MESH_EXPLODE_SCALE);
-  register_drag_cb    (w->OD.meshExplodeScale,   OptionsCb,  OPTIONS_MESH_EXPLODE_SCALE);
-  register_activate_cb(w->OD.meshExplodeText,    OptionsCb,  OPTIONS_MESH_EXPLODE_TEXT);
-  register_valchg_cb  (w->OD.meshNormalsScale,   OptionsCb,  OPTIONS_MESH_NORMALS_SCALE);
-  register_drag_cb    (w->OD.meshNormalsScale,   OptionsCb,  OPTIONS_MESH_NORMALS_SCALE);
-  register_activate_cb(w->OD.meshNormalsText,    OptionsCb,  OPTIONS_MESH_NORMALS_TEXT);
-
-  register_ok_cb      (w->OD.postDialog,         OptionsCb,  OPTIONS_REPLOT);
-  register_cancel_cb  (w->OD.postDialog,         ManageCb,   w->OD.postDialog); 
-  register_valchg_cb  (w->OD.postLinkButt[0],    OptionsCb,  OPTIONS_POST_LINK_NONE);
-  register_valchg_cb  (w->OD.postLinkButt[1],    OptionsCb,  OPTIONS_POST_LINK_VISIBLE);
-  register_valchg_cb  (w->OD.postLinkButt[2],    OptionsCb,  OPTIONS_POST_LINK_ALL);
-  register_valchg_cb  (w->OD.postAnimScale,      OptionsCb,  OPTIONS_POST_ANIM_DELAY);
-  register_drag_cb    (w->OD.postAnimScale,      OptionsCb,  OPTIONS_POST_ANIM_DELAY);
-
-  register_ok_cb      (w->OD.miscDialog,         OptionsCb,  OPTIONS_REPLOT);
-  register_cancel_cb  (w->OD.miscDialog,         ManageCb,   w->OD.miscDialog); 
-  register_valchg_cb  (w->OD.miscMiscButt[0],    OptionsCb,  OPTIONS_AXES);
-  register_valchg_cb  (w->OD.miscMiscButt[1],    OptionsCb,  OPTIONS_LITTLE_AXES);
-  register_valchg_cb  (w->OD.miscMiscButt[2],    OptionsCb,  OPTIONS_FAST_REDRAW);
-  register_valchg_cb  (w->OD.miscMiscButt[3],    OptionsCb,  OPTIONS_DISPLAY_LISTS);
-  register_valchg_cb  (w->OD.miscMiscButt[4],    OptionsCb,  OPTIONS_ALPHA_BLENDING);
-  register_valchg_cb  (w->OD.miscMiscButt[5],    OptionsCb,  OPTIONS_TRACKBALL);
-  register_valchg_cb  (w->OD.miscColorSchemeScale, OptionsCb, OPTIONS_COLOR_SCHEME_SCALE);
-  register_drag_cb    (w->OD.miscColorSchemeScale, OptionsCb, OPTIONS_COLOR_SCHEME_SCALE);
-  register_valchg_cb  (w->OD.miscProjButt[0],    OptionsCb,  OPTIONS_ORTHOGRAPHIC);
-  register_valchg_cb  (w->OD.miscProjButt[1],    OptionsCb,  OPTIONS_PERSPECTIVE);
-  register_valchg_cb  (w->OD.miscLightScale[0],  OptionsCb,  OPTIONS_LIGHT_X_SCALE);
-  register_drag_cb    (w->OD.miscLightScale[0],  OptionsCb,  OPTIONS_LIGHT_X_SCALE);
-  register_valchg_cb  (w->OD.miscLightScale[1],  OptionsCb,  OPTIONS_LIGHT_Y_SCALE);
-  register_drag_cb    (w->OD.miscLightScale[1],  OptionsCb,  OPTIONS_LIGHT_Y_SCALE);
-  register_valchg_cb  (w->OD.miscLightScale[2],  OptionsCb,  OPTIONS_LIGHT_Z_SCALE);
-  register_drag_cb    (w->OD.miscLightScale[2],  OptionsCb,  OPTIONS_LIGHT_Z_SCALE);
-  register_valchg_cb  (w->OD.miscShineScale,     OptionsCb,  OPTIONS_SHINE_SCALE);
-  register_drag_cb    (w->OD.miscShineScale,     OptionsCb,  OPTIONS_SHINE_SCALE);
-
-  register_ok_cb      (w->OD.viewportDialog,         OptionsCb,  OPTIONS_REPLOT);
-  register_cancel_cb  (w->OD.viewportDialog,         ManageCb,   w->OD.viewportDialog); 
-  register_valchg_cb  (w->OD.viewportText[0][0],     OptionsCb,  OPTIONS_ROTX);
-  register_valchg_cb  (w->OD.viewportText[0][1],     OptionsCb,  OPTIONS_ROTY);
-  register_valchg_cb  (w->OD.viewportText[0][2],     OptionsCb,  OPTIONS_ROTZ);
-  register_valchg_cb  (w->OD.viewportText[1][0],     OptionsCb,  OPTIONS_TRANX);
-  register_valchg_cb  (w->OD.viewportText[1][1],     OptionsCb,  OPTIONS_TRANY);
-  register_valchg_cb  (w->OD.viewportText[1][2],     OptionsCb,  OPTIONS_TRANZ);
-  register_valchg_cb  (w->OD.viewportText[2][0],     OptionsCb,  OPTIONS_SCALEX);
-  register_valchg_cb  (w->OD.viewportText[2][1],     OptionsCb,  OPTIONS_SCALEY);
-  register_valchg_cb  (w->OD.viewportText[2][2],     OptionsCb,  OPTIONS_SCALEZ);
-  register_valchg_cb  (w->OD.viewportLockButt[0][0], OptionsCb,  OPTIONS_ROTX_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[0][1], OptionsCb,  OPTIONS_ROTY_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[0][2], OptionsCb,  OPTIONS_ROTZ_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[1][0], OptionsCb,  OPTIONS_TRANX_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[1][1], OptionsCb,  OPTIONS_TRANY_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[1][2], OptionsCb,  OPTIONS_TRANZ_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[2][0], OptionsCb,  OPTIONS_SCALEX_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[2][1], OptionsCb,  OPTIONS_SCALEY_LOCKED);
-  register_valchg_cb  (w->OD.viewportLockButt[2][2], OptionsCb,  OPTIONS_SCALEZ_LOCKED);
-
-  register_ok_cb      (w->OD.infoDialog,         CurrentInfoCb,    0);
-  register_cancel_cb  (w->OD.infoDialog,         ManageCb,         w->OD.infoDialog); 
-
-}
-
-void RegisterCallbacks_HD(Widgets_T *w){
-  
-}
-
-void RegisterCallbacks_GD(Widgets_T *w){
-  
-  register_ok_cb      (w->GD.paramDialog,    GeomCb,    GEOM_PARAMETER_ADD);
-  register_cancel_cb  (w->GD.paramDialog,    ManageCb,  w->GD.paramDialog); 
-  register_valchg_cb  (w->GD.paramText[0],   GeomCb,    GEOM_PARAMETER_NAME);
-  register_valchg_cb  (w->GD.paramText[1],   GeomCb,    GEOM_PARAMETER_VALUE);
-
-  register_ok_cb      (w->GD.pointDialog,    GeomCb,    GEOM_POINT_ADD);
-  register_cancel_cb  (w->GD.pointDialog,    ManageCb,  w->GD.pointDialog); 
-  register_valchg_cb  (w->GD.pointText[0],   GeomCb,    GEOM_POINT_X);
-  register_valchg_cb  (w->GD.pointText[1],   GeomCb,    GEOM_POINT_Y);
-  register_valchg_cb  (w->GD.pointText[2],   GeomCb,    GEOM_POINT_Z);
-  register_valchg_cb  (w->GD.pointText[3],   GeomCb,    GEOM_POINT_L);
-
-  register_cancel_cb  (w->GD.rotDialog,      ManageCb,  w->GD.rotDialog); 
-  register_valchg_cb  (w->GD.rotText[0],     GeomCb,    GEOM_ROT_PX);
-  register_valchg_cb  (w->GD.rotText[1],     GeomCb,    GEOM_ROT_PY);
-  register_valchg_cb  (w->GD.rotText[2],     GeomCb,    GEOM_ROT_PZ);
-  register_valchg_cb  (w->GD.rotText[3],     GeomCb,    GEOM_ROT_AX);
-  register_valchg_cb  (w->GD.rotText[4],     GeomCb,    GEOM_ROT_AY);
-  register_valchg_cb  (w->GD.rotText[5],     GeomCb,    GEOM_ROT_AZ);
-  register_valchg_cb  (w->GD.rotText[6],     GeomCb,    GEOM_ROT_ANGLE);
-
-  register_cancel_cb  (w->GD.tranDialog,     ManageCb,  w->GD.tranDialog); 
-  register_valchg_cb  (w->GD.tranText[0],    GeomCb,    GEOM_TRAN_X);
-  register_valchg_cb  (w->GD.tranText[1],    GeomCb,    GEOM_TRAN_Y);
-  register_valchg_cb  (w->GD.tranText[2],    GeomCb,    GEOM_TRAN_Z);
-
-  register_cancel_cb  (w->GD.dilatDialog,    ManageCb,  w->GD.dilatDialog); 
-  register_valchg_cb  (w->GD.dilatText[0],   GeomCb,    GEOM_DILAT_X);
-  register_valchg_cb  (w->GD.dilatText[1],   GeomCb,    GEOM_DILAT_Y);
-  register_valchg_cb  (w->GD.dilatText[2],   GeomCb,    GEOM_DILAT_Z);
-  register_valchg_cb  (w->GD.dilatText[3],   GeomCb,    GEOM_DILAT_F);
-
-  register_cancel_cb  (w->GD.symmDialog,     ManageCb,  w->GD.symmDialog); 
-  register_valchg_cb  (w->GD.symmText[0],    GeomCb,    GEOM_SYMMETRY_A);
-  register_valchg_cb  (w->GD.symmText[1],    GeomCb,    GEOM_SYMMETRY_B);
-  register_valchg_cb  (w->GD.symmText[2],    GeomCb,    GEOM_SYMMETRY_C);
-  register_valchg_cb  (w->GD.symmText[3],    GeomCb,    GEOM_SYMMETRY_D);
-}
-
-void RegisterCallbacks_MD(Widgets_T *w){
-
-  register_cancel_cb  (w->MD.charLengthDialog,   ManageCb,  w->MD.charLengthDialog); 
-  register_valchg_cb  (w->MD.charLengthText,     MeshCb,    MESH_CHAR_LENGTH);
-
-  register_cancel_cb  (w->MD.trsfLineDialog,     ManageCb,  w->MD.trsfLineDialog); 
-  register_valchg_cb  (w->MD.trsfLineText[0],    MeshCb,    MESH_TRSF_LINE_TYPE);
-  register_valchg_cb  (w->MD.trsfLineText[1],    MeshCb,    MESH_TRSF_LINE_PTS);
-
-  register_cancel_cb  (w->MD.trsfVolumeDialog,   ManageCb,  w->MD.trsfVolumeDialog); 
-  register_valchg_cb  (w->MD.trsfVolumeText,     MeshCb,    MESH_TRSF_VOL_NUM);
-  
-}
-
-void RegisterCallbacks_PD(Widgets_T *w){
-
-  register_ok_cb       (w->PD.offsetDialog,      OptionsCb, OPTIONS_REPLOT); 
-  register_cancel_cb   (w->PD.offsetDialog,      ManageCb,  w->PD.offsetDialog); 
-  register_valchg_cb   (w->PD.offsetModeButt[0], PostCb,    POST_OFFSET_TRANSLATE);
-  register_valchg_cb   (w->PD.offsetModeButt[1], PostCb,    POST_OFFSET_RAISE);
-  register_valchg_cb   (w->PD.offsetScale[0],    PostCb,    POST_OFFSET_X_SCALE);
-  register_drag_cb     (w->PD.offsetScale[0],    PostCb,    POST_OFFSET_X_SCALE);
-  register_activate_cb (w->PD.offsetText[0],     PostCb,    POST_OFFSET_X_TEXT);
-  register_valchg_cb   (w->PD.offsetScale[1],    PostCb,    POST_OFFSET_Y_SCALE);
-  register_drag_cb     (w->PD.offsetScale[1],    PostCb,    POST_OFFSET_Y_SCALE);
-  register_activate_cb (w->PD.offsetText[1],     PostCb,    POST_OFFSET_Y_TEXT);
-  register_valchg_cb   (w->PD.offsetScale[2],    PostCb,    POST_OFFSET_Z_SCALE);
-  register_drag_cb     (w->PD.offsetScale[2],    PostCb,    POST_OFFSET_Z_SCALE);
-  register_activate_cb (w->PD.offsetText[2],     PostCb,    POST_OFFSET_Z_TEXT);
-  
-  register_ok_cb       (w->PD.timeStepDialog,    OptionsCb, OPTIONS_REPLOT); 
-  register_cancel_cb   (w->PD.timeStepDialog,    ManageCb,  w->PD.timeStepDialog); 
-  register_valchg_cb   (w->PD.timeStepScale,     PostCb,    POST_TIME_STEP_SCALE);
-  register_drag_cb     (w->PD.timeStepScale,     PostCb,    POST_TIME_STEP_SCALE);
-  register_activate_cb (w->PD.timeStepText,      PostCb,    POST_TIME_STEP_TEXT);
-
-  register_ok_cb       (w->PD.scaleDialog,       OptionsCb, OPTIONS_REPLOT); 
-  register_cancel_cb   (w->PD.scaleDialog,       ManageCb,  w->PD.scaleDialog); 
-  register_valchg_cb   (w->PD.scaleShowButt,     PostCb,    POST_SCALE_SHOW);
-  register_valchg_cb   (w->PD.scaleTransButt,    PostCb,    POST_SCALE_TRANSPARENCY);
-  register_valchg_cb   (w->PD.scaleTimeButt,     PostCb,    POST_SCALE_TIME);
-  register_valchg_cb   (w->PD.scaleText[0],      PostCb,    POST_SCALE_FORMAT);
-  register_valchg_cb   (w->PD.scaleText[1],      PostCb,    POST_SCALE_LABEL);
-  register_valchg_cb   (w->PD.scaleRangeButt,    PostCb,    POST_SCALE_FORCE_RANGE);
-  register_valchg_cb   (w->PD.scaleRangeText[0], PostCb,    POST_SCALE_MIN);
-  register_valchg_cb   (w->PD.scaleRangeText[1], PostCb,    POST_SCALE_MAX);
-  register_valchg_cb   (w->PD.scaleTypeButt[0],  PostCb,    POST_SCALE_TYPE_LIN);
-  register_valchg_cb   (w->PD.scaleTypeButt[1],  PostCb,    POST_SCALE_TYPE_LOG);
-  register_valchg_cb   (w->PD.scaleIntervalsButt[0], PostCb, POST_SCALE_INTERVALS_TYPE_ISO);
-  register_valchg_cb   (w->PD.scaleIntervalsButt[1], PostCb, POST_SCALE_INTERVALS_TYPE_DISCRETE);
-  register_valchg_cb   (w->PD.scaleIntervalsButt[2], PostCb, POST_SCALE_INTERVALS_TYPE_CONTINUOUS);
-  register_valchg_cb   (w->PD.scaleIntervalsButt[3], PostCb, POST_SCALE_INTERVALS_TYPE_NUMERIC);
-  register_valchg_cb   (w->PD.scaleIntervalsScale,   PostCb, POST_SCALE_INTERVALS_SCALE);
-  register_drag_cb     (w->PD.scaleIntervalsScale,   PostCb, POST_SCALE_INTERVALS_SCALE);
-  register_activate_cb (w->PD.scaleIntervalsText,    PostCb, POST_SCALE_INTERVALS_TEXT);
-
-  register_ok_cb       (w->PD.colorDialog,        PostCb,    POST_COLOR_REPLOT); 
-  register_cancel_cb   (w->PD.colorDialog,        ManageCb,  w->PD.colorDialog); 
-  register_expose_cb   (w->PD.colorDrawingArea,   ColorBarExposeCb, NULL);
-  register_resize_cb   (w->PD.colorDrawingArea,   ColorBarResizeCb, NULL);
-  register_input_cb    (w->PD.colorDrawingArea,   ColorBarInputCb,  NULL);
-
-  register_ok_cb       (w->PD.vectorDialog,       OptionsCb, OPTIONS_REPLOT); 
-  register_cancel_cb   (w->PD.vectorDialog,       ManageCb,  w->PD.vectorDialog); 
-  register_valchg_cb   (w->PD.vectorTypeButt[0],  PostCb,    POST_VECTOR_TYPE_SEGMENT);
-  register_valchg_cb   (w->PD.vectorTypeButt[1],  PostCb,    POST_VECTOR_TYPE_ARROW);
-  register_valchg_cb   (w->PD.vectorTypeButt[2],  PostCb,    POST_VECTOR_TYPE_PYRAMID);
-  register_valchg_cb   (w->PD.vectorTypeButt[3],  PostCb,    POST_VECTOR_TYPE_CONE);
-  register_valchg_cb   (w->PD.vectorTypeButt[4],  PostCb,    POST_VECTOR_TYPE_DISPLACEMENT);
-  register_valchg_cb   (w->PD.vectorScaleScale,   PostCb,    POST_VECTOR_SCALE_SCALE);
-  register_drag_cb     (w->PD.vectorScaleScale,   PostCb,    POST_VECTOR_SCALE_SCALE);
-  register_activate_cb (w->PD.vectorScaleText,    PostCb,    POST_VECTOR_SCALE_TEXT);
-  register_valchg_cb   (w->PD.vectorLocationButt[0],PostCb,  POST_VECTOR_LOCATION_COG);
-  register_valchg_cb   (w->PD.vectorLocationButt[1],PostCb,  POST_VECTOR_LOCATION_VERTEX);
-
-  register_ok_cb       (w->PD.exportBGMDialog,   PostCb,    POST_EXPORT_BGM_CREATE);
-  register_cancel_cb   (w->PD.exportBGMDialog,   ManageCb,  w->PD.exportBGMDialog);
-  register_activate_cb (w->PD.exportBGMButt[0],  PostCb,    POST_EXPORT_BGM_METHOD_H_ERROR) ;
-  register_activate_cb (w->PD.exportBGMButt[1],  PostCb,    POST_EXPORT_BGM_METHOD_H_ELEMENTS) ;
-  register_activate_cb (w->PD.exportBGMButt[2],  PostCb,    POST_EXPORT_BGM_METHOD_P_ERROR) ;
-  register_activate_cb (w->PD.exportBGMButt[3],  PostCb,    POST_EXPORT_BGM_METHOD_P_ELEMENTS) ;
-  register_valchg_cb   (w->PD.exportBGMText,     PostCb,    POST_EXPORT_BGM_CONSTRAINT) ;
-
-}
-
-
-
-void RegisterCallbacks(Widgets_T *w){
-
-  RegisterCallbacks_M(w); /* menu win */   
-  RegisterCallbacks_G(w); /* graphic win */
-  if(CTX.command_win) RegisterCallbacks_C(w); /* command win */
-
-  RegisterCallbacks_ED(w); /* error dialogs */
-  RegisterCallbacks_FD(w); /* file dialogs */
-  RegisterCallbacks_OD(w); /* option dialogs */
-  RegisterCallbacks_HD(w); /* help dialogs */
-  RegisterCallbacks_GD(w); /* geometry dialogs */
-  RegisterCallbacks_MD(w); /* mesh dialogs */
-  RegisterCallbacks_PD(w); /* post dialogs */
-
-}
-
-
diff --git a/Motif/Register.h b/Motif/Register.h
deleted file mode 100644
index 126a166dc5cc1dc0286b44b8103653490e1f3266..0000000000000000000000000000000000000000
--- a/Motif/Register.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifndef _REGISTER_H_
-#define _REGISTER_H_
-
-void InitCb(Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *cb);
-void ResizeCb(Widget w,XtPointer client_data, GLwDrawingAreaCallbackStruct *cb);
-void ExposeCb(Widget w,XtPointer client_data, GLwDrawingAreaCallbackStruct *cb);
-
-void RegisterCallbacks(Widgets_T *w);
-
-void ActualizeContextCb (Widget w, XtPointer client_data, XtPointer call_data);
-
-void ExposeCb(Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *call_data);
-void InitCb  (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *call_data);
-void InputCb (Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *call_data);
-void ResizeCb(Widget w, XtPointer client_data, GLwDrawingAreaCallbackStruct *call_data);
-
-void ColorBarResizeCb(Widget w, XtPointer client_data, XmDrawingAreaCallbackStruct *cb);
-void ColorBarExposeCb(Widget w, XtPointer client_data, XmDrawingAreaCallbackStruct *cb);
-void ColorBarInputCb (Widget w, XtPointer client_data, XmDrawingAreaCallbackStruct *cb);
-
-void ExitCb             (Widget w, XtPointer client_data, XtPointer call_data);
-void ManageCb           (Widget w, XtPointer client_data, XtPointer call_data);
-void PreviousContextCb  (Widget w, XtPointer client_data, XtPointer call_data);
-void NextContextCb      (Widget w, XtPointer client_data, XtPointer call_data);
-void ActualizeContextCb (Widget w, XtPointer client_data, XtPointer call_data);
-void DrawAboutCb        (Widget w, XtPointer client_data, XtPointer call_data);
-void CurrentInfoCb      (Widget w, XtPointer client_data, XtPointer call_data);
-void CurrentViewportCb  (Widget w, XtPointer client_data, XtPointer call_data);
-void CurrentViewCb      (Widget w, XtPointer client_data, XtPointer call_data);
-void SwapViewCb         (Widget w, XtPointer client_data, XtPointer call_data);
-void DuplicateViewCb    (Widget w, XtPointer client_data, XtPointer call_data);
-void ReloadViewCb       (Widget w, XtPointer client_data, XtPointer call_data);
-void ReloadAllViewsCb   (Widget w, XtPointer client_data, XtPointer call_data);
-void RemoveViewCb       (Widget w, XtPointer client_data, XtPointer call_data);
-void RemoveAllViewsCb   (Widget w, XtPointer client_data, XtPointer call_data);
-
-void OptionsCb          (Widget w, XtPointer client_data, XtPointer call_data);
-void FileCb             (Widget w, XtPointer client_data, XtPointer call_data);
-void GeomCb             (Widget w, XtPointer client_data, XtPointer call_data);
-void MeshCb             (Widget w, XtPointer client_data, XtPointer call_data);
-void PostDialogCb       (Widget w, XtPointer client_data, XtPointer call_data);
-void PostCb             (Widget w, XtPointer client_data, XtPointer call_data);
-
-void PopupHandler       (Widget w, Widget pw, XEvent *event, Boolean *ctd);
-
-
-/* special GL callback registering */
-
-#define register_GLexpose_cb(w, func, arg)                      \
-        XtAddCallback((w), GLwNexposeCallback,                  \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-                                                        
-#define register_GLresize_cb(w, func, arg)                      \
-        XtAddCallback((w), GLwNresizeCallback,                  \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-
-#define register_GLinput_cb(w, func, arg)                       \
-        XtAddCallback((w), GLwNinputCallback,                   \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-                                                        
-#define register_GLinit_cb(w, func, arg)                        \
-        XtAddCallback((w), GLwNginitCallback,                   \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-                                                        
-/* classic motif callback registering */
-                                                        
-#define register_help_cb(w, func, arg)                          \
-        XtAddCallback((w), XmNhelpCallback,                     \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-
-#define register_expose_cb(w, func, arg)                        \
-        XtAddCallback((w), XmNexposeCallback,                   \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-                                                        
-#define register_resize_cb(w, func, arg)                        \
-        XtAddCallback((w), XmNresizeCallback,                   \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-
-#define register_input_cb(w, func, arg)                         \
-        XtAddCallback((w), XmNinputCallback,                    \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-                                                        
-#define register_activate_cb(w, func, arg)                      \
-        XtAddCallback((w), XmNactivateCallback,                 \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-
-#define register_remove_cb(w, func, arg)                        \
-        XtRemoveCallback((w), XmNactivateCallback,              \
-                (XtCallbackProc) (func),                        \
-                (XtPointer) (arg))                      
-
-#define register_activate_cb_list(w, list)              \
-        XtAddCallbacks((w), XmNactivateCallback,        \
-                (XtCallbackList)(list))
-
-#define register_valchg_cb(w, func, arg)                \
-        XtAddCallback((w), XmNvalueChangedCallback,     \
-                (XtCallbackProc) (func),                \
-                (XtPointer) (arg))
-
-#define register_valchg_cb_list(w, list)                \
-        XtAddCallbacks((w), XmNvalueChangedCallback,    \
-                (XtCallbackList)(list))
-
-#define register_ok_cb(w, func, arg)            \
-        XtAddCallback((w), XmNokCallback,       \
-                (XtCallbackProc) (func),        \
-                (XtPointer) (arg))
-
-#define register_cancel_cb(w, func, arg)        \
-        XtAddCallback((w), XmNcancelCallback,   \
-                (XtCallbackProc) (func),        \
-                (XtPointer) (arg))
-
-#define register_apply_cb(w, func, arg) \
-        XtAddCallback((w), XmNapplyCallback,    \
-                (XtCallbackProc) (func),        \
-                (XtPointer) (arg))
-
-#define register_drag_cb(w, func, arg)          \
-        XtAddCallback((w), XmNdragCallback,     \
-                (XtCallbackProc) (func),        \
-                (XtPointer) (arg))
-
-/* event loop  */
-
-#define register_popup_ev(parent, w)                            \
-        XtAddEventHandler((parent), ButtonPressMask,            \
-                          False,                                \
-                          (XtEventHandler)PopupHandler, \
-                          (XtPointer)(w))
-
-#endif
diff --git a/Motif/Widgets.cpp b/Motif/Widgets.cpp
deleted file mode 100644
index 0851d7a7e5c8be0f42f130c86f54ef421869a6f5..0000000000000000000000000000000000000000
--- a/Motif/Widgets.cpp
+++ /dev/null
@@ -1,2747 +0,0 @@
-// $Id: Widgets.cpp,v 1.3 2001-02-12 17:38:03 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Mesh.h"
-#include "Context.h"
-#include "XContext.h"
-#include "Info.h"
-#include "Widgets.h"
-#include "Help.h"
-
-extern Context_T   CTX ;
-extern XContext_T  XCTX ;
-
-/* hardcoded this one, since it is required for the motion handling */
-
-static char DrawingAreaTranslations[] = "#replace\n\
-~s ~m ~a <Key>Return:DrawingAreaInput() ManagerParentActivate()\n\
-<Key>Return:DrawingAreaInput() ManagerGadgetSelect()\n\
-<Key>osfActivate:DrawingAreaInput() ManagerParentActivate()\n\
-<Key>osfCancel:DrawingAreaInput() ManagerParentCancel()\n\
-<Key>osfHelp:DrawingAreaInput() ManagerGadgetHelp()\n\
-<Key>space:DrawingAreaInput() ManagerGadgetSelect()\n\
-<Key>osfSelect:DrawingAreaInput() ManagerGadgetSelect()\n\
-<KeyDown>:DrawingAreaInput() ManagerGadgetKeyInput()\n\
-<KeyUp>:DrawingAreaInput()\n\
-<BtnMotion>:DrawingAreaInput() ManagerGadgetButtonMotion()\n\
-<Motion>:DrawingAreaInput() ManagerGadgetButtonMotion()\n\
-<Btn1Down>:DrawingAreaInput() ManagerGadgetArm()\n\
-<Btn1Up>:DrawingAreaInput() ManagerGadgetActivate()\n\
-<Btn2Down>:DrawingAreaInput() ManagerGadgetDrag()\n\
-<BtnDown>:DrawingAreaInput()\n\
-<BtnUp>:DrawingAreaInput()";
-
-/* ------------------------------------------------------------------------ 
-    MENU WINDOW
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_M(Widgets_T *w){
-  int   i, n ;
-  Arg   arg[10] ;
-
-  /* menu shell */
-  w->M.shell = 
-    XtVaAppCreateShell("Gmsh", "gmshMW", applicationShellWidgetClass, XCTX.display, 
-                       XmNvisual, XCTX.gui.visual,
-                       XmNcolormap, XCTX.gui.colormap,
-                       NULL);
-  
-  /* menu main window */
-  i=0;
-  w->M.containerWin = XmCreateMainWindow(w->M.shell, "McontainerWin", arg, i);
-  XtManageChild(w->M.containerWin);
-  
-  /* menu bar */
-  i=0;
-  w->M.menuBar = XmCreateMenuBar(w->M.containerWin, "MmenuBar", arg, i);
-  XtManageChild(w->M.menuBar);
-
-  /* file menu */
-  i=0;
-  w->M.filePane = XmCreatePulldownMenu(w->M.menuBar, "MfilePane", arg, i);
-                                        
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Open")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-o)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>o:"); i++;
-  w->M.fileButt[0] = XmCreatePushButton(w->M.filePane, "MfileButt0", arg, i);
-  XtManageChild(w->M.fileButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Merge")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-m)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>m:"); i++;
-  w->M.fileButt[1] = XmCreatePushButton(w->M.filePane, "MfileButt1", arg, i);
-  XtManageChild(w->M.fileButt[1]);
-
-  i=0;
-  w->M.fileSep[0] = XmCreateSeparator(w->M.filePane, "MfileSep0", arg, i);
-  XtManageChild(w->M.fileSep[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save Mesh")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-s)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>s:"); i++;
-  w->M.fileButt[2] = XmCreatePushButton(w->M.filePane, "MfileButt2", arg, i);
-  XtManageChild(w->M.fileButt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save as")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-p)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>p:"); i++;
-  w->M.fileButt[3] = XmCreatePushButton(w->M.filePane, "MfileButt3", arg, i);
-  XtManageChild(w->M.fileButt[3]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Save Options as")); i++;
-  w->M.fileButt[4] = XmCreatePushButton(w->M.filePane, "MfileButt4", arg, i);
-  XtManageChild(w->M.fileButt[4]);
-
-  i=0;
-  w->M.fileSep[1] = XmCreateSeparator(w->M.filePane, "MfileSep1", arg, i);
-  XtManageChild(w->M.fileSep[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Reload All Views")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-l)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>l:"); i++;
-  w->M.fileButt[5] = XmCreatePushButton(w->M.filePane, "MfileButt6", arg, i);
-  XtManageChild(w->M.fileButt[5]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Remove All Views")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-r)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>r:"); i++;
-  w->M.fileButt[6] = XmCreatePushButton(w->M.filePane, "MfileButt7", arg, i);
-  XtManageChild(w->M.fileButt[6]);
-
-  i=0;
-  w->M.fileSep[2] = XmCreateSeparator(w->M.filePane, "MfileSep2", arg, i);
-  XtManageChild(w->M.fileSep[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Quit")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-q)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>q:"); i++;
-  w->M.fileButt[7] = XmCreatePushButton(w->M.filePane, "MfileButt8", arg, i);
-  XtManageChild(w->M.fileButt[7]);
-
-  i=0;
-  XtSetArg(arg[i], XmNsubMenuId, w->M.filePane); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("File")); i++;
-  w->M.fileCascade = XmCreateCascadeButton(w->M.menuBar, "MfileCascade", arg, i);
-  XtManageChild(w->M.fileCascade);
-
-  /* module menu */
-  i=0;
-  w->M.modulePane = XmCreatePulldownMenu(w->M.menuBar, "MmodulePane", arg, i);
-                                        
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Geometry")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(g)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "<Key>g:"); i++;
-  w->M.moduleButt[0] = XmCreatePushButton(w->M.modulePane, "MmoduleButt0", arg, i);
-  XtManageChild(w->M.moduleButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Mesh")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(m)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "<Key>m:"); i++;
-  w->M.moduleButt[1] = XmCreatePushButton(w->M.modulePane, "MmoduleButt1", arg, i);
-  XtManageChild(w->M.moduleButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Post Processing")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(p)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "<Key>p:"); i++;
-  w->M.moduleButt[2] = XmCreatePushButton(w->M.modulePane, "MmoduleButt2", arg, i);
-  XtManageChild(w->M.moduleButt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNsubMenuId, w->M.modulePane); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Module")); i++;
-  w->M.moduleCascade = XmCreateCascadeButton(w->M.menuBar, "MmoduleCascade", arg, i);
-  XtManageChild(w->M.moduleCascade);
-
-  /* option menu */
-  i=0;
-  w->M.optionPane = XmCreatePulldownMenu(w->M.menuBar, "MoptionPane", arg, i);
-                                        
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Geometry Options")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-g)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Shift<Key>g:"); i++;
-  w->M.optionButt[0] = XmCreatePushButton(w->M.optionPane, "MoptionButt0", arg, i);
-  XtManageChild(w->M.optionButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Mesh Options")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-m)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Shift<Key>m:"); i++;
-  w->M.optionButt[1] = XmCreatePushButton(w->M.optionPane, "MoptionButt1", arg, i);
-  XtManageChild(w->M.optionButt[1]);
-
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Post Processing Options")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-p)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Shift<Key>p:"); i++;
-  w->M.optionButt[2] = XmCreatePushButton(w->M.optionPane, "MoptionButt2", arg, i);
-  XtManageChild(w->M.optionButt[2]);
-
-  i=0;
-  w->M.optionSep[0] = XmCreateSeparator(w->M.optionPane, "MoptionSep0", arg, i);
-  XtManageChild(w->M.optionSep[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("General Options")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-o)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Shift<Key>o:"); i++;
-  w->M.optionButt[3] = XmCreatePushButton(w->M.optionPane, "MoptionButt3", arg, i);
-  XtManageChild(w->M.optionButt[3]);
-
-  i=0;
-  w->M.optionSep[1] = XmCreateSeparator(w->M.optionPane, "MoptionSep1", arg, i);
-  XtManageChild(w->M.optionSep[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Viewport")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-v)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Shift<Key>v:"); i++;
-  w->M.optionButt[4] = XmCreatePushButton(w->M.optionPane, "MoptionButt4", arg, i);
-  XtManageChild(w->M.optionButt[4]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Statistics")); i++;
-  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(S-i)")); i++;
-  XtSetArg(arg[i], XmNaccelerator, "Shift<Key>i:"); i++;
-  w->M.optionButt[5] = XmCreatePushButton(w->M.optionPane, "MoptionButt5", arg, i);
-  XtManageChild(w->M.optionButt[5]);
-
-  i=0;
-  XtSetArg(arg[i], XmNsubMenuId, w->M.optionPane); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Options")); i++;
-  w->M.optionCascade = XmCreateCascadeButton(w->M.menuBar, "MoptionCascade", arg, i);
-  XtManageChild(w->M.optionCascade);
-
-  /* help menu */
-  i=0;
-  w->M.helpPane = XmCreatePulldownMenu(w->M.menuBar, "MhelpPane", arg, i);
-                                        
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Short Help")); i++;
-  w->M.helpButt[0] = XmCreatePushButton(w->M.helpPane, "MhelpButt0", arg, i);
-  XtManageChild(w->M.helpButt[0]);
-
-  i=0;
-  w->M.helpSep[0] = XmCreateSeparator(w->M.helpPane, "MhelpSep0", arg, i);
-  XtManageChild(w->M.helpSep[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("About...")); i++;
-  w->M.helpButt[1] = XmCreatePushButton(w->M.helpPane, "MhelpButt1", arg, i);
-  XtManageChild(w->M.helpButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNsubMenuId, w->M.helpPane); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("?")); i++;
-  w->M.helpCascade = XmCreateCascadeButton(w->M.menuBar, "MhelpCascade", arg, i);
-  XtManageChild(w->M.helpCascade);
-
-  /* menu frame */
-  
-  i=0;
-  w->M.menuFrame = XmCreateFrame(w->M.containerWin, "MmenuFrame", arg, i);
-  XtManageChild(w->M.menuFrame);
-
-  /* menu form */
-  
-  i=0;
-  XtSetArg(arg[i], XmNresizable, False); i++;  
-  XtSetArg(arg[i], XmNresizePolicy, XmRESIZE_NONE); i++;
-  /* pour eviter des redimensionnements intempestifs sous HP */
-  w->M.menuForm = XmCreateForm(w->M.menuFrame, "MmenuForm", arg, i);
-  XtManageChild(w->M.menuForm);
-
-  /* module butt */
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(" ")); i++;
-  w->M.modButt = XmCreateLabel(w->M.menuForm, "MmodButt", arg, i);
-  XtManageChild(w->M.modButt);
-
-  i=0;
-  w->M.modPop = XmCreatePopupMenu(w->M.modButt, "MmodPop", arg, i);
-  XtUnmanageChild(w->M.modPop);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Geometry")); i++;
-  w->M.geomButt = XmCreatePushButton(w->M.modPop, "MgeomButt", arg, i);
-  XtManageChild(w->M.geomButt);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Mesh")); i++;
-  w->M.meshButt = XmCreatePushButton(w->M.modPop, "MmeshButt", arg, i);
-  XtManageChild(w->M.meshButt);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Post Processing")); i++;
-  w->M.postButt = XmCreatePushButton(w->M.modPop, "MpostButt", arg, i);
-  XtManageChild(w->M.postButt);
-
-  /* navigation arrows */
-
-  i=0;
-  XtSetArg(arg[i], XmNarrowDirection, XmARROW_LEFT); i++;
-  w->M.navigButt[0] = XmCreateArrowButton(w->M.menuForm, "MnavigButt0", arg, i);
-  XtManageChild(w->M.navigButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNarrowDirection, XmARROW_RIGHT); i++;
-  w->M.navigButt[1] = XmCreateArrowButton(w->M.menuForm, "MnavigButt1", arg, i);
-  XtManageChild(w->M.navigButt[1]);
-
-  /* default button */
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("No View Loaded")); i++;
-  w->M.defaultButt = XmCreateLabel(w->M.menuForm, "MdefaultButt", arg, i);
-  XtUnmanageChild(w->M.defaultButt);
-
-  /* buttons */
-  
-  for(n=0 ; n<NB_BUTT_MAX ; n++){
-    i=0;
-    w->M.pushButt[n] = XmCreatePushButton(w->M.menuForm, "MpushButtn", arg, i);
-    XtUnmanageChild(w->M.pushButt[n]);
-
-    i=0;
-    w->M.toggleButt[n] = XmCreateToggleButton(w->M.menuForm, "MtoggleButtn", arg, i);
-    XtUnmanageChild(w->M.toggleButt[n]);
-
-    i=0;
-    w->M.popMenu[n] = XmCreatePopupMenu(w->M.toggleButt[n], "MpopMenun", arg, i);
-    XtUnmanageChild(w->M.popMenu[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Reload")); i++;
-    w->M.reloadButt[n] = XmCreatePushButton(w->M.popMenu[n], "MreloadButtn", arg, i);
-    XtManageChild(w->M.reloadButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Remove")); i++;
-    w->M.removeButt[n] = XmCreatePushButton(w->M.popMenu[n], "MremoveButtn", arg, i);
-    XtManageChild(w->M.removeButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Duplicate")); i++;
-    w->M.duplicateButt[n] = XmCreatePushButton(w->M.popMenu[n], "MduplicateButtn", arg, i);
-    XtManageChild(w->M.duplicateButt[n]);
-
-    i=0;
-    w->M.popSep[0][n] = XmCreateSeparator(w->M.popMenu[n], "MpopSep0n", arg, i);
-    XtManageChild(w->M.popSep[0][n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Lighting")); i++;
-    w->M.lightButt[n] = XmCreateToggleButton(w->M.popMenu[n], "MlightButtn", arg, i);
-    XtManageChild(w->M.lightButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Show Elements")); i++;
-    w->M.elementButt[n] = XmCreateToggleButton(w->M.popMenu[n], "MelementButtn", arg, i);
-    XtManageChild(w->M.elementButt[n]);
-
-    i=0;
-    w->M.popSep[1][n] = XmCreateSeparator(w->M.popMenu[n], "MpopSep1n", arg, i);
-    XtManageChild(w->M.popSep[1][n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Scale, Range and Intervals")); i++;
-    w->M.scaleButt[n] = XmCreatePushButton(w->M.popMenu[n], "MscaleButtn", arg, i);
-    XtManageChild(w->M.scaleButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Colors")); i++;
-    w->M.colorButt[n] = XmCreatePushButton(w->M.popMenu[n], "McolorButtn", arg, i);
-    XtManageChild(w->M.colorButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Offset")); i++;
-    w->M.offsetButt[n] = XmCreatePushButton(w->M.popMenu[n], "MoffsetButtn", arg, i);
-    XtManageChild(w->M.offsetButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Vector Display")); i++;
-    w->M.vectorButt[n] = XmCreatePushButton(w->M.popMenu[n], "MvectorButtn", arg, i);
-    XtManageChild(w->M.vectorButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Time Step")); i++;
-    w->M.timeStepButt[n] = XmCreatePushButton(w->M.popMenu[n], "MtimeStepButtn", arg, i);
-    XtManageChild(w->M.timeStepButt[n]);
-
-    i=0;
-    w->M.popSep[2][n] = XmCreateSeparator(w->M.popMenu[n], "MpopSep2n", arg, i);
-    XtManageChild(w->M.popSep[2][n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Export as Background Mesh")); i++;
-    w->M.exportBGMButt[n] = XmCreatePushButton(w->M.popMenu[n], "MexportBGMButtn", arg, i);
-    XtManageChild(w->M.exportBGMButt[n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Apply as Current Background Mesh")); i++;
-    w->M.applyBGMButt[n] = XmCreatePushButton(w->M.popMenu[n], "MapplyBGMButtn", arg, i);
-    XtManageChild(w->M.applyBGMButt[n]);
-  }
-
-}
-
-
-/* ------------------------------------------------------------------------ 
-    GRAPHIC WINDOW
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_G(Widgets_T *w){  
-  int   i;
-  Arg   arg[10];
-
-  /* graphic shell */
-  w->G.shell = 
-    XtVaAppCreateShell("Gmsh graphics", "gmshGW", applicationShellWidgetClass, XCTX.display, 
-                       XmNvisual,XCTX.gui.visual,
-                       XmNcolormap,XCTX.gui.colormap,
-                       NULL);
-  
-  /* container form */
-  i=0;
-  // We want glw to be able to force the size of the container win
-  //XtSetArg(arg[i], XmNresizable, False); i++;  
-  //XtSetArg(arg[i], XmNresizePolicy, XmRESIZE_NONE); i++;
-  XtSetArg(arg[i], XmNwidth, 700); i++;  
-  XtSetArg(arg[i], XmNheight, 525); i++;
-  w->G.containerForm = XmCreateForm(w->G.shell, "GcontainerForm", arg, i);
-  XtManageChild(w->G.containerForm);
-
-  /* opengl drawing area */
-  i=0;
-  XtSetArg(arg[i], XmNcolormap, XCTX.glw.colormap); i++;
-  XtSetArg(arg[i], GLwNvisualInfo, XCTX.glw.visinfo); i++;
-  XtSetArg(arg[i], GLwNinstallColormap, True); i++;
-
-  w->G.glw = GLwCreateMDrawingArea(w->G.containerForm, "glw", arg, i);
-  XtManageChild(w->G.glw);
-
-  /* overlay opengl drawing area */
-  if(CTX.overlay){
-    i=0;
-    XtSetArg(arg[i], XmNcolormap, XCTX.glo.colormap); i++;
-    XtSetArg(arg[i], GLwNvisualInfo, XCTX.glo.visinfo); i++;
-    XtSetArg(arg[i], GLwNinstallColormap, True); i++;    
-    w->G.glo = GLwCreateMDrawingArea(w->G.containerForm, "glo", arg, i);
-    XtManageChild(w->G.glo);
-  }    
-
-  /* bottom */
-
-  i=0;
-  XtSetArg(arg[i], XmNresizable, False); i++;  
-  XtSetArg(arg[i], XmNresizePolicy, XmRESIZE_NONE); i++;
-  w->G.bottomForm = XmCreateForm(w->G.containerForm, "GbottomForm", arg, i);
-  XtManageChild(w->G.bottomForm);
-
-  /* buttons de gauche: X Y Z 1 Geometry Abort Play Stop */
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("X")); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[0] = XmCreatePushButton(w->G.bottomForm, "GButt0", arg, i);
-  XtManageChild(w->G.Butt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Y")); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[1] = XmCreatePushButton(w->G.bottomForm, "GButt1", arg, i);
-  XtManageChild(w->G.Butt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Z")); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[2] = XmCreatePushButton(w->G.bottomForm, "GButt2", arg, i);
-  XtManageChild(w->G.Butt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("1:1")); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[3] = XmCreatePushButton(w->G.bottomForm, "GButt3", arg, i);
-  XtManageChild(w->G.Butt[3]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("?")); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[4] = XmCreatePushButton(w->G.bottomForm, "GButt4", arg, i);
-  XtManageChild(w->G.Butt[4]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelType, XmPIXMAP); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[5] = XmCreatePushButton(w->G.bottomForm, "GButt5", arg, i);
-  XtManageChild(w->G.Butt[5]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelType, XmPIXMAP); i++;
-  XtSetArg(arg[i], XmNtraversalOn, False); i++;
-  w->G.Butt[6] = XmCreatePushButton(w->G.bottomForm, "GButt6", arg, i);
-  XtManageChild(w->G.Butt[6]);
-  XtSetSensitive(w->G.Butt[6],0);
-
-  /* 3 textes au milieu */
-
-  i=0;
-  //XtSetArg(arg[i], XmNresizable, False); i++;  
-  //XtSetArg(arg[i], XmNresizePolicy, XmRESIZE_NONE); i++;
-  w->G.textForm = XmCreateForm(w->G.bottomForm, "GtextForm", arg, i);
-  XtManageChild(w->G.textForm);
-
-  i=0;
-  XtSetArg(arg[i], XmNalignment, XmALIGNMENT_BEGINNING); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(" ")); i++;
-  w->G.selectLabel = XmCreateLabel(w->G.textForm, "GselectLabel", arg, i);
-  XtManageChild(w->G.selectLabel);
-
-  i=0;
-  XtSetArg(arg[i], XmNalignment, XmALIGNMENT_BEGINNING); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(" ")); i++;
-  w->G.infoLabel = XmCreateLabel(w->G.textForm, "GinfoLabel", arg, i);
-  XtManageChild(w->G.infoLabel);
-
-  i=0;
-  XtSetArg(arg[i], XmNalignment, XmALIGNMENT_BEGINNING); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(" ")); i++;
-  w->G.statusLabel = XmCreateLabel(w->G.textForm, "GstatusLabel", arg, i);
-  XtManageChild(w->G.statusLabel);
-
-}
-
-
-/* ------------------------------------------------------------------------ 
-    COMMAND WINDOW
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_C(Widgets_T *w){
-  int   i;
-  Arg   arg[10];
-
-  w->C.shell =
-    XtVaAppCreateShell("Gmsh commands", "gmshCW", applicationShellWidgetClass, XCTX.display,
-                       XmNvisual,XCTX.gui.visual,
-                       XmNcolormap,XCTX.gui.colormap,
-                       NULL);
-
-  i=0;
-  XtSetArg(arg[i], XmNpromptString, XmStringCreateSimple("")); i++;
-  w->C.command = XmCreateCommand(w->C.shell, "Ccommand", arg, i);
-  XtManageChild(w->C.command);
-
-  w->C.commandList = XmCommandGetChild(w->C.command, XmDIALOG_HISTORY_LIST);
-  w->C.commandText = XmCommandGetChild(w->C.command, XmDIALOG_COMMAND_TEXT);
-}
-
-
-/* ------------------------------------------------------------------------ 
-    ERROR DIALOGS
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_ED(Widgets_T *w){
-  int     i;
-  Arg     arg[10];
-  Widget  tmp ;
-
-  i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Warning")); i++;
-  XtSetArg(arg[i], XmNmessageString, XmStringCreateSimple("File exists")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  w->ED.saveAsDialog = XmCreateWarningDialog(w->M.shell, "EDsaveAsDialog", arg, i);
-
-  tmp = XmMessageBoxGetChild(w->ED.saveAsDialog, XmDIALOG_HELP_BUTTON); 
-  XtUnmanageChild(tmp);
-
-}
-
-
-/* ------------------------------------------------------------------------ 
-    FILE DIALOGS
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_FD(Widgets_T *w){
-  int     i;
-  Arg     arg[10];
-  Widget  tmp ;
-
-  /* open */
-  i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Open")); i++;
-  XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++;
-  XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*.geo")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  w->FD.openDialog = XmCreateFileSelectionDialog(w->M.shell, "FDopenDialog", arg, i);
-  XtUnmanageChild(w->FD.openDialog);
-  
-  /* merge */
-  i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Merge")); i++;
-  XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++;
-  XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*.[pm][os][sh]")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  w->FD.mergeDialog = XmCreateFileSelectionDialog(w->M.shell, "FDmergeDialog", arg, i);
-  XtUnmanageChild(w->FD.mergeDialog);
-
-  /* save as */
-
-  i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Save")); i++;
-  XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++;
-  XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++; /* + pratique qd on sauve des animations */
-  w->FD.saveAsDialog = XmCreateFileSelectionDialog(w->M.shell, "FDsaveAsDialog", arg, i);
-  XtUnmanageChild(w->FD.saveAsDialog);
-
-  i=0;
-  w->FD.saveAsFrame[0] = XmCreateFrame(w->FD.saveAsDialog, "FDsaveAsFrame0", arg, i);
-  XtManageChild(w->FD.saveAsFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Format")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->FD.saveAsFrame[1] = XmCreateLabel(w->FD.saveAsFrame[0], "FDsaveAsFrame1", arg, i);
-  XtManageChild(w->FD.saveAsFrame[1]);
-
-  i=0 ;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  XtSetArg(arg[i], XmNspacing, 0); i++;
-  w->FD.saveAsRowCol = XmCreateRowColumn(w->FD.saveAsFrame[0], "FDsaveAsRowCol", arg, i);
-  XtManageChild(w->FD.saveAsRowCol);
-
-  /* save as - type */ 
-  i=0;
-  w->FD.saveAsPane[0] = XmCreatePulldownMenu(w->FD.saveAsRowCol, "FDsaveAsPane0", arg, i);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("By Extension")); i++;
-  w->FD.saveAsButt[0] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt0", arg, i);
-  XtManageChild(w->FD.saveAsButt[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GEO")); i++;
-  w->FD.saveAsButt[1] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt1", arg, i);
-  XtManageChild(w->FD.saveAsButt[1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("MSH")); i++;
-  w->FD.saveAsButt[2] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt2", arg, i);
-  XtManageChild(w->FD.saveAsButt[2]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("UNV")); i++;
-  w->FD.saveAsButt[3] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt3", arg, i);
-  XtManageChild(w->FD.saveAsButt[3]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GREF")); i++;
-  w->FD.saveAsButt[4] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt4", arg, i);
-  XtManageChild(w->FD.saveAsButt[4]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("EPS Simple Sort")); i++;
-  w->FD.saveAsButt[5] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt5", arg, i);
-  XtManageChild(w->FD.saveAsButt[5]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("EPS Accurate Sort")); i++;
-  w->FD.saveAsButt[6] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt6", arg, i);
-  XtManageChild(w->FD.saveAsButt[6]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("XPM")); i++;
-  w->FD.saveAsButt[7] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt7", arg, i);
-  XtManageChild(w->FD.saveAsButt[7]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("JPEG")); i++;
-  w->FD.saveAsButt[8] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt8", arg, i);
-  XtManageChild(w->FD.saveAsButt[8]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GIF")); i++;
-  w->FD.saveAsButt[9] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt9", arg, i);
-  XtManageChild(w->FD.saveAsButt[9]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GIF Dithered")); i++;
-  w->FD.saveAsButt[10] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt10", arg, i);
-  XtManageChild(w->FD.saveAsButt[10]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GIF Transparent")); i++;
-  w->FD.saveAsButt[11] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt11", arg, i);
-  XtManageChild(w->FD.saveAsButt[11]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("PPM")); i++;
-  w->FD.saveAsButt[12] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt12", arg, i);
-  XtManageChild(w->FD.saveAsButt[12]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("UCB YUV")); i++;
-  w->FD.saveAsButt[13] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt13", arg, i);
-  XtManageChild(w->FD.saveAsButt[13]);
-
-  i=0;
-  XtSetArg(arg[i], XmNsubMenuId, w->FD.saveAsPane[0]); i++;
-  XtSetArg(arg[i], XmNspacing, 0); i++;
-  w->FD.saveAsMenu[0] = XmCreateOptionMenu(w->FD.saveAsRowCol, "FDsaveAsMenu0", arg, i);
-  XtManageChild(w->FD.saveAsMenu[0]);
-
-  /* save options as */
-  i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Save Options")); i++;
-  XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++;
-  XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*.[gp][eo][os]")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  w->FD.saveOptionsAsDialog = XmCreateFileSelectionDialog(w->M.shell, "FDsaveOptionsAsDialog", arg, i);
-  XtUnmanageChild(w->FD.saveOptionsAsDialog);
-
-  tmp = XmFileSelectionBoxGetChild(w->FD.openDialog, XmDIALOG_HELP_BUTTON); 
-  XtUnmanageChild(tmp);
-  tmp = XmFileSelectionBoxGetChild(w->FD.mergeDialog, XmDIALOG_HELP_BUTTON);
-  XtUnmanageChild(tmp);
-  tmp = XmFileSelectionBoxGetChild(w->FD.saveAsDialog, XmDIALOG_HELP_BUTTON);
-  XtUnmanageChild(tmp);
-  tmp = XmFileSelectionBoxGetChild(w->FD.saveOptionsAsDialog, XmDIALOG_HELP_BUTTON);
-  XtUnmanageChild(tmp);
-
-}
-
-
-/* ------------------------------------------------------------------------ 
-    OPTIONS DIALOGS
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_OD(Widgets_T *w){
-  int   i, n;
-  Arg   arg[10];
-  char  label[32];
-
-  /* Geometry */
-  
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Geometry Options")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->OD.geomDialog = XmCreateTemplateDialog(w->M.shell, "ODgeomDialog", arg, i);
-  XtUnmanageChild(w->OD.geomDialog);
-
-  i=0;
-  w->OD.geomRowCol = XmCreateRowColumn(w->OD.geomDialog, "ODgeomRowCol", arg, i);
-  XtManageChild(w->OD.geomRowCol);
-
-  /* Geometry - Visible */
-
-  i=0;
-  w->OD.geomVisibleFrame[0] = XmCreateFrame(w->OD.geomRowCol, "ODgeomVisibleFrame0", arg, i);
-  XtManageChild(w->OD.geomVisibleFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Global Visibility")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.geomVisibleFrame[1] = XmCreateLabel(w->OD.geomVisibleFrame[0], "ODgeomVisibleFrame1", arg, i);
-  XtManageChild(w->OD.geomVisibleFrame[1]);
-  
-  i=0;
-  w->OD.geomVisibleRowCol = XmCreateRowColumn(w->OD.geomVisibleFrame[0], "ODgeomVisibleRowCol", arg, i);
-  XtManageChild(w->OD.geomVisibleRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.geomVisibleCheck = XmCreateSimpleCheckBox(w->OD.geomVisibleRowCol, "ODgeomVisibleCheck", arg, i);
-  XtManageChild(w->OD.geomVisibleCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Points")); i++;
-  XtSetArg(arg[i], XmNset, CTX.geom.points?True:False); i++;
-  w->OD.geomVisibleButt[0] = XmCreateToggleButton(w->OD.geomVisibleCheck, "ODgeomVisibleButt0", arg, i);
-  XtManageChild(w->OD.geomVisibleButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Lines")); i++;
-  XtSetArg(arg[i], XmNset, CTX.geom.lines?True:False); i++;
-  w->OD.geomVisibleButt[1] = XmCreateToggleButton(w->OD.geomVisibleCheck, "ODgeomVisibleButt1", arg, i);
-  XtManageChild(w->OD.geomVisibleButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Surfaces")); i++;
-  XtSetArg(arg[i], XmNset, CTX.geom.surfaces?True:False); i++;
-  w->OD.geomVisibleButt[2] = XmCreateToggleButton(w->OD.geomVisibleCheck, "ODgeomVisibleButt2", arg, i);
-  XtManageChild(w->OD.geomVisibleButt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Volumes")); i++;
-  XtSetArg(arg[i], XmNset, CTX.geom.volumes?True:False); i++;
-  w->OD.geomVisibleButt[3] = XmCreateToggleButton(w->OD.geomVisibleCheck, "ODgeomVisibleButt3", arg, i);
-  XtManageChild(w->OD.geomVisibleButt[3]);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.geomVisibleTypeCheck = XmCreateRadioBox(w->OD.geomVisibleRowCol, "ODgeomVisibleTypeCheck", arg, i);
-  XtManageChild(w->OD.geomVisibleTypeCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Entities")); i++;
-  XtSetArg(arg[i], XmNset, True); i++;
-  w->OD.geomVisibleTypeButt[0] = XmCreateToggleButton(w->OD.geomVisibleTypeCheck, "ODgeomVisibleTypeButt0", arg, i);
-  XtManageChild(w->OD.geomVisibleTypeButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Labels")); i++;
-  XtSetArg(arg[i], XmNset, False); i++;
-  w->OD.geomVisibleTypeButt[1] = XmCreateToggleButton(w->OD.geomVisibleTypeCheck, "ODgeomVisibleTypeButt1", arg, i);
-  XtManageChild(w->OD.geomVisibleTypeButt[1]);
-
-
-  /* Geometry - Visible by Number */
-
-  i=0;
-  w->OD.geomVisibleByNumFrame[0] = XmCreateFrame(w->OD.geomRowCol, "ODgeomVisibleByNumFrame0", arg, i);
-  XtManageChild(w->OD.geomVisibleByNumFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Visibility by Entity Number")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.geomVisibleByNumFrame[1] = XmCreateLabel(w->OD.geomVisibleByNumFrame[0], "ODgeomVisibleByNumFrame1", arg, i);
-  XtManageChild(w->OD.geomVisibleByNumFrame[1]);
-  
-  i=0;
-  w->OD.geomVisibleByNumRowCol = XmCreateRowColumn(w->OD.geomVisibleByNumFrame[0], "ODgeomVisibleByNumRowCol", arg, i);
-  XtManageChild(w->OD.geomVisibleByNumRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, "*"); i++;
-  w->OD.geomVisibleByNumText = XmCreateTextField(w->OD.geomVisibleByNumRowCol, "ODgeomVisibleByNumText", arg, i);
-  XtManageChild(w->OD.geomVisibleByNumText);
-
-  /* Geometry - normals */
-   
-  i=0;
-  w->OD.geomNormalsFrame[0] = XmCreateFrame(w->OD.geomRowCol, "ODgeomNormalsFrame0", arg, i);
-  XtManageChild(w->OD.geomNormalsFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Normals")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.geomNormalsFrame[1] = XmCreateLabel(w->OD.geomNormalsFrame[0], "ODgeomNormalsFrame1", arg, i);
-  XtManageChild(w->OD.geomNormalsFrame[1]);
-
-  i=0;
-  w->OD.geomNormalsRowCol = XmCreateRowColumn(w->OD.geomNormalsFrame[0], "ODgeomNormalsRowCol", arg, i);
-  XtManageChild(w->OD.geomNormalsRowCol);
-  
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 100); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 0); i++;
-  XtSetArg(arg[i], XmNvalue, CTX.geom.normals); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.geomNormalsScale = XmCreateScale(w->OD.geomNormalsRowCol, "ODgeomNormalsScale", arg, i);
-  XtManageChild(w->OD.geomNormalsScale);
-  
-  i=0;
-  sprintf(label, "%g", CTX.geom.normals);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  w->OD.geomNormalsText = XmCreateTextField(w->OD.geomNormalsRowCol, "ODgeomNormalsText", arg, i);
-  XtManageChild(w->OD.geomNormalsText);
-
-  /* Geometry - tangents */
-   
-  i=0;
-  w->OD.geomTangentsFrame[0] = XmCreateFrame(w->OD.geomRowCol, "ODgeomTangentsFrame0", arg, i);
-  XtManageChild(w->OD.geomTangentsFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Tangents")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.geomTangentsFrame[1] = XmCreateLabel(w->OD.geomTangentsFrame[0], "ODgeomTangentsFrame1", arg, i);
-  XtManageChild(w->OD.geomTangentsFrame[1]);
-
-  i=0;
-  w->OD.geomTangentsRowCol = XmCreateRowColumn(w->OD.geomTangentsFrame[0], "ODgeomTangentsRowCol", arg, i);
-  XtManageChild(w->OD.geomTangentsRowCol);
-  
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 100); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 0); i++;
-  XtSetArg(arg[i], XmNvalue, CTX.geom.tangents); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.geomTangentsScale = XmCreateScale(w->OD.geomTangentsRowCol, "ODgeomTangentsScale", arg, i);
-  XtManageChild(w->OD.geomTangentsScale);
-  
-  i=0;
-  sprintf(label, "%g", CTX.geom.tangents);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  w->OD.geomTangentsText = XmCreateTextField(w->OD.geomTangentsRowCol, "ODgeomTangentsText", arg, i);
-  XtManageChild(w->OD.geomTangentsText);
-
-  /* Mesh */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Mesh Options")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->OD.meshDialog = XmCreateTemplateDialog(w->M.shell, "ODmeshDialog", arg, i);
-  XtUnmanageChild(w->OD.meshDialog);
-
-  i=0;
-  w->OD.meshRowCol = XmCreateRowColumn(w->OD.meshDialog, "ODmeshRowCol", arg, i);
-  XtManageChild(w->OD.meshRowCol);
-
-
-  /* Mesh - algo */
-  
-  i=0;
-  w->OD.meshAlgoFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshAlgoFrame0", arg, i);
-  XtManageChild(w->OD.meshAlgoFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Algorithm")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshAlgoFrame[1] = XmCreateLabel(w->OD.meshAlgoFrame[0], "ODmeshAlgoFrame1", arg, i);
-  XtManageChild(w->OD.meshAlgoFrame[1]);
-  
-  i=0;
-  w->OD.meshAlgoRowCol = XmCreateRowColumn(w->OD.meshAlgoFrame[0], "ODmeshAlgoRowCol", arg, i);
-  XtManageChild(w->OD.meshAlgoRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.meshAlgoCheck = XmCreateSimpleCheckBox(w->OD.meshAlgoRowCol, "ODmeshAlgoCheck", arg, i);
-  XtManageChild(w->OD.meshAlgoCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Degree 2")); i++;
-  XtSetArg(arg[i], XmNset, (CTX.mesh.degree==2)?True:False); i++;
-  w->OD.meshAlgoButt[0] = XmCreateToggleButton(w->OD.meshAlgoCheck, "ODmeshAlgoButt0", arg, i);
-  XtManageChild(w->OD.meshAlgoButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Anisotropic")); i++;
-  XtSetArg(arg[i], XmNset, (CTX.mesh.algo==DELAUNAY_NEWALGO)?True:False); i++;
-  w->OD.meshAlgoButt[1] = XmCreateToggleButton(w->OD.meshAlgoCheck, "ODmeshAlgoButt1", arg, i);
-  XtManageChild(w->OD.meshAlgoButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Interactive")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.interactive?True:False); i++;
-  w->OD.meshAlgoButt[2] = XmCreateToggleButton(w->OD.meshAlgoCheck, "ODmeshAlgoButt2", arg, i);
-  XtManageChild(w->OD.meshAlgoButt[2]);
-
-  /* Mesh - smoothing */
-
-  i=0;
-  w->OD.meshSmoothingFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshSmoothingFrame0", arg, i);
-  XtManageChild(w->OD.meshSmoothingFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Smoothing")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshSmoothingFrame[1] = XmCreateLabel(w->OD.meshSmoothingFrame[0], "ODmeshSmoothingFrame1", arg, i);
-  XtManageChild(w->OD.meshSmoothingFrame[1]);
-
-  i=0;
-  w->OD.meshSmoothingRowCol = XmCreateRowColumn(w->OD.meshSmoothingFrame[0], "ODmeshSmoothingRowCol", arg, i);
-  XtManageChild(w->OD.meshSmoothingRowCol);
-  
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 100); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 2); i++;
-  XtSetArg(arg[i], XmNvalue, CTX.mesh.nb_smoothing); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.meshSmoothingScale = XmCreateScale(w->OD.meshSmoothingRowCol, "ODmeshSmoothingScale", arg, i);
-  XtManageChild(w->OD.meshSmoothingScale);
-  
-  i=0;
-  sprintf(label, "%d", CTX.mesh.nb_smoothing);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  w->OD.meshSmoothingText = XmCreateTextField(w->OD.meshSmoothingRowCol, "ODmeshSmoothingText", arg, i);
-  XtManageChild(w->OD.meshSmoothingText);
-
-  /* Mesh - Visible */
-
-  i=0;
-  w->OD.meshVisibleFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshVisibleFrame0", arg, i);
-  XtManageChild(w->OD.meshVisibleFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Global Visibility")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshVisibleFrame[1] = XmCreateLabel(w->OD.meshVisibleFrame[0], "ODmeshVisibleFrame1", arg, i);
-  XtManageChild(w->OD.meshVisibleFrame[1]);
-  
-  i=0;
-  w->OD.meshVisibleRowCol = XmCreateRowColumn(w->OD.meshVisibleFrame[0], "ODmeshVisibleRowCol", arg, i);
-  XtManageChild(w->OD.meshVisibleRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.meshVisibleCheck = XmCreateSimpleCheckBox(w->OD.meshVisibleRowCol, "ODmeshVisibleCheck", arg, i);
-  XtManageChild(w->OD.meshVisibleCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Points")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.points?True:False); i++;
-  w->OD.meshVisibleButt[0] = XmCreateToggleButton(w->OD.meshVisibleCheck, "ODmeshVisibleButt0", arg, i);
-  XtManageChild(w->OD.meshVisibleButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Lines")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.lines?True:False); i++;
-  w->OD.meshVisibleButt[1] = XmCreateToggleButton(w->OD.meshVisibleCheck, "ODmeshVisibleButt1", arg, i);
-  XtManageChild(w->OD.meshVisibleButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Surfaces")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.surfaces?True:False); i++;
-  w->OD.meshVisibleButt[2] = XmCreateToggleButton(w->OD.meshVisibleCheck, "ODmeshVisibleButt2", arg, i);
-  XtManageChild(w->OD.meshVisibleButt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Volumes")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.volumes?True:False); i++;
-  w->OD.meshVisibleButt[3] = XmCreateToggleButton(w->OD.meshVisibleCheck, "ODmeshVisibleButt3", arg, i);
-  XtManageChild(w->OD.meshVisibleButt[3]);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.meshVisibleTypeCheck = XmCreateRadioBox(w->OD.meshVisibleRowCol, "ODmeshVisibleTypeCheck", arg, i);
-  XtManageChild(w->OD.meshVisibleTypeCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Entities")); i++;
-  XtSetArg(arg[i], XmNset, True); i++;
-  w->OD.meshVisibleTypeButt[0] = XmCreateToggleButton(w->OD.meshVisibleTypeCheck, "ODmeshVisibleTypeButt0", arg, i);
-  XtManageChild(w->OD.meshVisibleTypeButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Labels")); i++;
-  XtSetArg(arg[i], XmNset, False); i++;
-  w->OD.meshVisibleTypeButt[1] = XmCreateToggleButton(w->OD.meshVisibleTypeCheck, "ODmeshVisibleTypeButt1", arg, i);
-  XtManageChild(w->OD.meshVisibleTypeButt[1]);
-
-
-  /* Mesh - Visible by Number */
-
-  i=0;
-  w->OD.meshVisibleByNumFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshVisibleByNumFrame0", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Visibility")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshVisibleByNumFrame[1] = XmCreateLabel(w->OD.meshVisibleByNumFrame[0], "ODmeshVisibleByNumFrame1", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumFrame[1]);
-  
-  i=0;
-  w->OD.meshVisibleByNumRowCol = XmCreateRowColumn(w->OD.meshVisibleByNumFrame[0], "ODmeshVisibleByNumRowCol", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.meshVisibleByNumCheck = XmCreateRadioBox(w->OD.meshVisibleByNumRowCol, "ODmeshVisibleByNumCheck", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("By Entity")); i++;
-  XtSetArg(arg[i], XmNset, True); i++;
-  w->OD.meshVisibleByNumButt[0] = XmCreateToggleButton(w->OD.meshVisibleByNumCheck, "ODmeshVisibleByNumButt0", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("By Quality")); i++;
-  XtSetArg(arg[i], XmNset, False); i++;
-  w->OD.meshVisibleByNumButt[1] = XmCreateToggleButton(w->OD.meshVisibleByNumCheck, "ODmeshVisibleByNumButt1", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, "*"); i++;
-  w->OD.meshVisibleByNumText = XmCreateTextField(w->OD.meshVisibleByNumRowCol, "ODmeshVisibleByNumText", arg, i);
-  XtManageChild(w->OD.meshVisibleByNumText);
-
-  /* Mesh - aspect */
-
-  i=0;
-  w->OD.meshAspectFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshAspectFrame0", arg, i);
-  XtManageChild(w->OD.meshAspectFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Aspect")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshAspectFrame[1] = XmCreateLabel(w->OD.meshAspectFrame[0], "ODmeshAspectFrame1", arg, i);
-  XtManageChild(w->OD.meshAspectFrame[1]);
-  
-  i=0;
-  w->OD.meshAspectCheck = XmCreateRadioBox(w->OD.meshAspectFrame[0], "ODmeshAspectCheck", arg, i);
-  XtManageChild(w->OD.meshAspectCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Wireframe")); i++;
-  XtSetArg(arg[i], XmNset, (!CTX.mesh.hidden)?True:False); i++;
-  w->OD.meshAspectButt[0] = XmCreateToggleButton(w->OD.meshAspectCheck, "ODmeshAspectButt0", arg, i);
-  XtManageChild(w->OD.meshAspectButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Hidden Lines")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.hidden?True:False); i++;
-  w->OD.meshAspectButt[1] = XmCreateToggleButton(w->OD.meshAspectCheck, "ODmeshAspectButt1", arg, i);
-  XtManageChild(w->OD.meshAspectButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Solid")); i++;
-  XtSetArg(arg[i], XmNset, CTX.mesh.shade?True:False); i++;
-  w->OD.meshAspectButt[2] = XmCreateToggleButton(w->OD.meshAspectCheck, "ODmeshAspectButt2", arg, i);
-  XtManageChild(w->OD.meshAspectButt[2]);
-  
-  /* Mesh - explode */
-
-  i=0;
-  w->OD.meshExplodeFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshExplodeFrame0", arg, i);
-  XtManageChild(w->OD.meshExplodeFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Explode")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshExplodeFrame[1] = XmCreateLabel(w->OD.meshExplodeFrame[0], "ODmeshExplodeFrame1", arg, i);
-  XtManageChild(w->OD.meshExplodeFrame[1]);
-
-  i=0;
-  w->OD.meshExplodeRowCol = XmCreateRowColumn(w->OD.meshExplodeFrame[0], "ODmeshExplodeRowCol", arg, i);
-  XtManageChild(w->OD.meshExplodeRowCol);
-  
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 100); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 2); i++;
-  XtSetArg(arg[i], XmNvalue, (int)100*CTX.mesh.explode); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.meshExplodeScale = XmCreateScale(w->OD.meshExplodeRowCol, "ODmeshExplodeScale", arg, i);
-  XtManageChild(w->OD.meshExplodeScale);
-  
-  i=0;
-  sprintf(label, "%g", CTX.mesh.explode);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  w->OD.meshExplodeText = XmCreateTextField(w->OD.meshExplodeRowCol, "ODmeshExplodeText", arg, i);
-  XtManageChild(w->OD.meshExplodeText);
-
-  /* Mesh - normals */
-   
-  i=0;
-  w->OD.meshNormalsFrame[0] = XmCreateFrame(w->OD.meshRowCol, "ODmeshNormalsFrame0", arg, i);
-  XtManageChild(w->OD.meshNormalsFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Normals")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.meshNormalsFrame[1] = XmCreateLabel(w->OD.meshNormalsFrame[0], "ODmeshNormalsFrame1", arg, i);
-  XtManageChild(w->OD.meshNormalsFrame[1]);
-
-  i=0;
-  w->OD.meshNormalsRowCol = XmCreateRowColumn(w->OD.meshNormalsFrame[0], "ODmeshNormalsRowCol", arg, i);
-  XtManageChild(w->OD.meshNormalsRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 100); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 0); i++;
-  XtSetArg(arg[i], XmNvalue, CTX.mesh.normals); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.meshNormalsScale = XmCreateScale(w->OD.meshNormalsRowCol, "ODmeshNormalsScale", arg, i);
-  XtManageChild(w->OD.meshNormalsScale);
-  
-  i=0;
-  sprintf(label, "%g", CTX.mesh.normals);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  w->OD.meshNormalsText = XmCreateTextField(w->OD.meshNormalsRowCol, "ODmeshNormalsText", arg, i);
-  XtManageChild(w->OD.meshNormalsText);
-
-
-  /* Post */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Post Options")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->OD.postDialog = XmCreateTemplateDialog(w->M.shell, "ODpostDialog", arg, i);
-  XtUnmanageChild(w->OD.postDialog);
-
-  i=0;
-  w->OD.postRowCol = XmCreateRowColumn(w->OD.postDialog, "ODpostRowCol", arg, i);
-  XtManageChild(w->OD.postRowCol);
-
-  /* Post - link */
-
-  i=0;
-  w->OD.postLinkFrame[0] = XmCreateFrame(w->OD.postRowCol, "ODpostLinkFrame0", arg, i);
-  XtManageChild(w->OD.postLinkFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Links")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.postLinkFrame[1] = XmCreateLabel(w->OD.postLinkFrame[0], "ODpostLinkFrame1", arg, i);
-  XtManageChild(w->OD.postLinkFrame[1]);
-  
-  i=0;
-  w->OD.postLinkRowCol = XmCreateRowColumn(w->OD.postLinkFrame[0], "ODpostLinkRowCol", arg, i);
-  XtManageChild(w->OD.postLinkRowCol);
-
-  i=0;
-  w->OD.postLinkCheck = XmCreateRadioBox(w->OD.postLinkRowCol, "ODpostLinkCheck", arg, i);
-  XtManageChild(w->OD.postLinkCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("No Links")); i++;
-  XtSetArg(arg[i], XmNset, CTX.post.link?False:True); i++;
-  w->OD.postLinkButt[0] = XmCreateToggleButton(w->OD.postLinkCheck, "ODpostLinkButt0", arg, i);
-  XtManageChild(w->OD.postLinkButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Link Visible Views")); i++;
-  XtSetArg(arg[i], XmNset, (CTX.post.link==1)?True:False); i++;
-  w->OD.postLinkButt[1] = XmCreateToggleButton(w->OD.postLinkCheck, "ODpostLinkButt1", arg, i);
-  XtManageChild(w->OD.postLinkButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Link All Views")); i++;
-  XtSetArg(arg[i], XmNset, (CTX.post.link==2)?True:False); i++;
-  w->OD.postLinkButt[2] = XmCreateToggleButton(w->OD.postLinkCheck, "ODpostLinkButt2", arg, i);
-  XtManageChild(w->OD.postLinkButt[2]);
-
-  /* post - anim */
-  i=0;
-  w->OD.postAnimFrame[0] = XmCreateFrame(w->OD.postRowCol, "ODpostAnimFrame0", arg, i);
-  XtManageChild(w->OD.postAnimFrame[0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Animation Delay")); i++;
-  w->OD.postAnimFrame[1] = XmCreateLabel(w->OD.postAnimFrame[0], "ODpostAnimFrame1", arg, i);
-  XtManageChild(w->OD.postAnimFrame[1]);
-  
-  i=0;
-  w->OD.postAnimFrameRowCol = XmCreateRowColumn(w->OD.postAnimFrame[0], "ODpostAnimFrameRowCol", arg, i);
-  XtManageChild(w->OD.postAnimFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 10); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 1); i++;
-  XtSetArg(arg[i], XmNshowValue, True); i++;
-  XtSetArg(arg[i], XmNvalue, CTX.post.anim_delay); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.postAnimScale = XmCreateScale(w->OD.postAnimFrameRowCol, "ODpostAnimScale", arg, i);
-  XtManageChild(w->OD.postAnimScale);
-
-
-  /* Miscellaneous */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("General Options")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->OD.miscDialog = XmCreateTemplateDialog(w->M.shell, "ODmiscDialog", arg, i);
-  XtUnmanageChild(w->OD.miscDialog);
-
-  i=0;
-  w->OD.miscRowCol = XmCreateRowColumn(w->OD.miscDialog, "ODmiscRowCol", arg, i);
-  XtManageChild(w->OD.miscRowCol);
-
-  /* misc - Misc */
-  
-  i=0;
-  w->OD.miscMiscFrame[0] = XmCreateFrame(w->OD.miscRowCol, "ODmiscMiscFrame0", arg, i);
-  XtManageChild(w->OD.miscMiscFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Miscellaneous")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.miscMiscFrame[1] = XmCreateLabel(w->OD.miscMiscFrame[0], "ODmiscMiscFrame1", arg, i);
-  XtManageChild(w->OD.miscMiscFrame[1]);
-  
-  i=0;
-  w->OD.miscMiscCheck = XmCreateSimpleCheckBox(w->OD.miscMiscFrame[0], "ODmiscMiscCheck", arg, i);
-  XtManageChild(w->OD.miscMiscCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Show Moving Axes")); i++;
-  XtSetArg(arg[i], XmNset, CTX.axes?True:False); i++;
-  w->OD.miscMiscButt[0] = XmCreateToggleButton(w->OD.miscMiscCheck, "ODmiscMiscButt0", arg, i);
-  XtManageChild(w->OD.miscMiscButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Show Small Axes")); i++;
-  XtSetArg(arg[i], XmNset, CTX.small_axes?True:False); i++;
-  w->OD.miscMiscButt[1] = XmCreateToggleButton(w->OD.miscMiscCheck, "ODmiscMiscButt1", arg, i);
-  XtManageChild(w->OD.miscMiscButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Enable Fast Redraw")); i++;
-  XtSetArg(arg[i], XmNset, CTX.fast?True:False); i++;
-  w->OD.miscMiscButt[2] = XmCreateToggleButton(w->OD.miscMiscCheck, "ODmiscMiscButt2", arg, i);
-  XtManageChild(w->OD.miscMiscButt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Use Display Lists")); i++;
-  XtSetArg(arg[i], XmNset, CTX.display_lists?True:False); i++;
-  w->OD.miscMiscButt[3] = XmCreateToggleButton(w->OD.miscMiscCheck, "ODmiscMiscButt3", arg, i);
-  XtManageChild(w->OD.miscMiscButt[3]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Enable Alpha Blending")); i++;
-  XtSetArg(arg[i], XmNset, CTX.alpha?True:False); i++;
-  w->OD.miscMiscButt[4] = XmCreateToggleButton(w->OD.miscMiscCheck, "ODmiscMiscButt4", arg, i);
-  XtManageChild(w->OD.miscMiscButt[4]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Trackball Rotation Mode")); i++;
-  XtSetArg(arg[i], XmNset, CTX.useTrackball?True:False); i++;
-  w->OD.miscMiscButt[5] = XmCreateToggleButton(w->OD.miscMiscCheck, "ODmiscMiscButt5", arg, i);
-  XtManageChild(w->OD.miscMiscButt[5]);
-
-  /* misc - colorscheme */
-
-  i=0;
-  w->OD.miscColorSchemeFrame[0] = XmCreateFrame(w->OD.miscRowCol, "ODmiscColorSchemeFrame0", arg, i);
-  XtManageChild(w->OD.miscColorSchemeFrame[0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Predefined Color Schemes")); i++;
-  w->OD.miscColorSchemeFrame[1] = XmCreateLabel(w->OD.miscColorSchemeFrame[0], "ODmiscColorSchemeFrame1", arg, i);
-  XtManageChild(w->OD.miscColorSchemeFrame[1]);
-  
-  i=0;
-  w->OD.miscColorSchemeFrameRowCol = XmCreateRowColumn(w->OD.miscColorSchemeFrame[0], "ODmiscColorSchemeFrameRowCol", arg, i);
-  XtManageChild(w->OD.miscColorSchemeFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 2); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 0); i++;
-  XtSetArg(arg[i], XmNshowValue, True); i++;
-  XtSetArg(arg[i], XmNvalue, CTX.color_scheme); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.miscColorSchemeScale = XmCreateScale(w->OD.miscColorSchemeFrameRowCol, "ODmiscColorSchemeScale", arg, i);
-  XtManageChild(w->OD.miscColorSchemeScale);
-
-  /* misc - projection */
-  
-  i=0;
-  w->OD.miscProjFrame[0] = XmCreateFrame(w->OD.miscRowCol, "ODmiscProjFrame0", arg, i);
-  XtManageChild(w->OD.miscProjFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Projection")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.miscProjFrame[1] = XmCreateLabel(w->OD.miscProjFrame[0], "ODmiscProjFrame1", arg, i);
-  XtManageChild(w->OD.miscProjFrame[1]);
-  
-  i=0;
-  w->OD.miscProjCheck = XmCreateRadioBox(w->OD.miscProjFrame[0], "ODmiscProjCheck", arg, i);
-  XtManageChild(w->OD.miscProjCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Orthographic")); i++;
-  XtSetArg(arg[i], XmNset, CTX.ortho?True:False); i++;
-  w->OD.miscProjButt[0] = XmCreateToggleButton(w->OD.miscProjCheck, "ODmiscProjButt0", arg, i);
-  XtManageChild(w->OD.miscProjButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Perspective")); i++;
-  XtSetArg(arg[i], XmNset, CTX.ortho?False:True); i++;
-  w->OD.miscProjButt[1] = XmCreateToggleButton(w->OD.miscProjCheck, "ODmiscProjButt1", arg, i);
-  XtManageChild(w->OD.miscProjButt[1]);
-
-
-  /* misc - light position */
-  i=0;
-  w->OD.miscLightFrame[0] = XmCreateFrame(w->OD.miscRowCol, "ODmiscLightFrame0", arg, i);
-  XtManageChild(w->OD.miscLightFrame[0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Light Position")); i++;
-  w->OD.miscLightFrame[1] = XmCreateLabel(w->OD.miscLightFrame[0], "ODmiscLightFrame1", arg, i);
-  XtManageChild(w->OD.miscLightFrame[1]);
-  
-  i=0;
-  w->OD.miscLightFrameRowCol = XmCreateRowColumn(w->OD.miscLightFrame[0], "ODmiscLightFrameRowCol", arg, i);
-  XtManageChild(w->OD.miscLightFrameRowCol);
-
-  for(n=0 ; n<3 ; n++){
-    i=0;
-    XtSetArg(arg[i], XmNminimum, -25); i++;
-    XtSetArg(arg[i], XmNmaximum, 25); i++;
-    XtSetArg(arg[i], XmNdecimalPoints, 0); i++;
-    XtSetArg(arg[i], XmNshowValue, False); i++;
-    XtSetArg(arg[i], XmNvalue, (int)25*CTX.light_position[0][n]); i++;
-    XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-    w->OD.miscLightScale[n] = XmCreateScale(w->OD.miscLightFrameRowCol, "ODmiscLightScalen", arg, i);
-    XtManageChild(w->OD.miscLightScale[n]);
-  }
-
-  /* misc - shininess */
-  i=0;
-  w->OD.miscShineFrame[0] = XmCreateFrame(w->OD.miscRowCol, "ODmiscShineFrame0", arg, i);
-  XtManageChild(w->OD.miscShineFrame[0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Shininess")); i++;
-  w->OD.miscShineFrame[1] = XmCreateLabel(w->OD.miscShineFrame[0], "ODmiscShineFrame1", arg, i);
-  XtManageChild(w->OD.miscShineFrame[1]);
-  
-  i=0;
-  w->OD.miscShineFrameRowCol = XmCreateRowColumn(w->OD.miscShineFrame[0], "ODmiscShineFrameRowCol", arg, i);
-  XtManageChild(w->OD.miscShineFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 25); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 0); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNvalue, (int)25*CTX.shine); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->OD.miscShineScale = XmCreateScale(w->OD.miscShineFrameRowCol, "ODmiscShineScale", arg, i);
-  XtManageChild(w->OD.miscShineScale);
-
-  /* Viewport */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Viewport")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->OD.viewportDialog = XmCreateTemplateDialog(w->M.shell, "ODviewportDialog", arg, i);
-  XtUnmanageChild(w->OD.viewportDialog);
-
-  i=0;
-  w->OD.viewportRowCol = XmCreateRowColumn(w->OD.viewportDialog, "ODviewportRowCol", arg, i);
-  XtManageChild(w->OD.viewportRowCol);
-
-  /* viewport - rotate */
-  
-  i=0;
-  w->OD.viewportFrame[0][0] = XmCreateFrame(w->OD.viewportRowCol, "ODviewportFrame00", arg, i);
-  XtManageChild(w->OD.viewportFrame[0][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Rotation")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.viewportFrame[1][0] = XmCreateLabel(w->OD.viewportFrame[0][0], "ODviewportFrame10", arg, i);
-  XtManageChild(w->OD.viewportFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNpacking, XmPACK_COLUMN); i++;
-  XtSetArg(arg[i], XmNnumColumns, 3); i++;
-  w->OD.viewportFrameRowCol[0] = XmCreateRowColumn(w->OD.viewportFrame[0][0], "ODviewportFrameRowCol0", arg, i);
-  XtManageChild(w->OD.viewportFrameRowCol[0]);
-
-  i=0;
-  sprintf(label, "%g", CTX.r[0]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[0][0] = XmCreateTextField(w->OD.viewportFrameRowCol[0], "ODviewportText00", arg, i);
-  XtManageChild(w->OD.viewportText[0][0]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.rlock[0]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("x-lock")); i++;
-  w->OD.viewportLockButt[0][0] = XmCreateToggleButton(w->OD.viewportFrameRowCol[0], "ODviewportLockButt00", arg, i);
-  XtManageChild(w->OD.viewportLockButt[0][0]);
-
-  i=0;
-  sprintf(label, "%g", CTX.r[1]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[0][1] = XmCreateTextField(w->OD.viewportFrameRowCol[0], "ODviewportText01", arg, i);
-  XtManageChild(w->OD.viewportText[0][1]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.rlock[1]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("y-lock")); i++;
-  w->OD.viewportLockButt[0][1] = XmCreateToggleButton(w->OD.viewportFrameRowCol[0], "ODviewportLockButt00", arg, i);
-  XtManageChild(w->OD.viewportLockButt[0][1]);
-
-  i=0;
-  sprintf(label, "%g", CTX.r[2]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[0][2] = XmCreateTextField(w->OD.viewportFrameRowCol[0], "ODviewportText02", arg, i);
-  XtManageChild(w->OD.viewportText[0][2]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.rlock[2]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("z-lock")); i++;
-  w->OD.viewportLockButt[0][2] = XmCreateToggleButton(w->OD.viewportFrameRowCol[0], "ODviewportLockButt02", arg, i);
-  XtManageChild(w->OD.viewportLockButt[0][2]);
-
-
-  /* viewport - translate */
-  
-  i=0;
-  w->OD.viewportFrame[0][1] = XmCreateFrame(w->OD.viewportRowCol, "ODviewportFrame01", arg, i);
-  XtManageChild(w->OD.viewportFrame[0][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Translation")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.viewportFrame[1][1] = XmCreateLabel(w->OD.viewportFrame[0][1], "ODviewportFrame11", arg, i);
-  XtManageChild(w->OD.viewportFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNpacking, XmPACK_COLUMN); i++;
-  XtSetArg(arg[i], XmNnumColumns, 3); i++;
-  w->OD.viewportFrameRowCol[1] = XmCreateRowColumn(w->OD.viewportFrame[0][1], "ODviewportFrameRowCol1", arg, i);
-  XtManageChild(w->OD.viewportFrameRowCol[1]);
-
-  i=0;
-  sprintf(label, "%g", CTX.t[0]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[1][0] = XmCreateTextField(w->OD.viewportFrameRowCol[1], "ODviewportText10", arg, i);
-  XtManageChild(w->OD.viewportText[1][0]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.tlock[0]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("x-lock")); i++;
-  w->OD.viewportLockButt[1][0] = XmCreateToggleButton(w->OD.viewportFrameRowCol[1], "ODviewportLockButt10", arg, i);
-  XtManageChild(w->OD.viewportLockButt[1][0]);
-
-  i=0;
-  sprintf(label, "%g", CTX.t[1]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[1][1] = XmCreateTextField(w->OD.viewportFrameRowCol[1], "ODviewportText11", arg, i);
-  XtManageChild(w->OD.viewportText[1][1]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.tlock[1]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("y-lock")); i++;
-  w->OD.viewportLockButt[1][1] = XmCreateToggleButton(w->OD.viewportFrameRowCol[1], "ODviewportLockButt00", arg, i);
-  XtManageChild(w->OD.viewportLockButt[1][1]);
-
-  i=0;
-  sprintf(label, "%g", CTX.t[2]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[1][2] = XmCreateTextField(w->OD.viewportFrameRowCol[1], "ODviewportText12", arg, i);
-  XtManageChild(w->OD.viewportText[1][2]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.tlock[2]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("z-lock")); i++;
-  w->OD.viewportLockButt[1][2] = XmCreateToggleButton(w->OD.viewportFrameRowCol[1], "ODviewportLockButt12", arg, i);
-  XtManageChild(w->OD.viewportLockButt[1][2]);
-
-
-  /* viewport - scale */
-  
-  i=0;
-  w->OD.viewportFrame[0][2] = XmCreateFrame(w->OD.viewportRowCol, "ODviewportFrame02", arg, i);
-  XtManageChild(w->OD.viewportFrame[0][2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Scale")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.viewportFrame[1][2] = XmCreateLabel(w->OD.viewportFrame[0][2], "ODviewportFrame12", arg, i);
-  XtManageChild(w->OD.viewportFrame[1][2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNpacking, XmPACK_COLUMN); i++;
-  XtSetArg(arg[i], XmNnumColumns, 3); i++;
-  w->OD.viewportFrameRowCol[2] = XmCreateRowColumn(w->OD.viewportFrame[0][2], "ODviewportFrameRowCol2", arg, i);
-  XtManageChild(w->OD.viewportFrameRowCol[2]);
-
-  i=0;
-  sprintf(label, "%g", CTX.s[0]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[2][0] = XmCreateTextField(w->OD.viewportFrameRowCol[2], "ODviewportText20", arg, i);
-  XtManageChild(w->OD.viewportText[2][0]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.slock[0]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("x-lock")); i++;
-  w->OD.viewportLockButt[2][0] = XmCreateToggleButton(w->OD.viewportFrameRowCol[2], "ODviewportLockButt20", arg, i);
-  XtManageChild(w->OD.viewportLockButt[2][0]);
-
-  i=0;
-  sprintf(label, "%g", CTX.s[1]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[2][1] = XmCreateTextField(w->OD.viewportFrameRowCol[2], "ODviewportText21", arg, i);
-  XtManageChild(w->OD.viewportText[2][1]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.slock[1]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("y-lock")); i++;
-  w->OD.viewportLockButt[2][1] = XmCreateToggleButton(w->OD.viewportFrameRowCol[2], "ODviewportLockButt20", arg, i);
-  XtManageChild(w->OD.viewportLockButt[2][1]);
-
-  i=0;
-  sprintf(label, "%g", CTX.s[2]);
-  XtSetArg(arg[i], XmNvalue, label); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->OD.viewportText[2][2] = XmCreateTextField(w->OD.viewportFrameRowCol[2], "ODviewportText22", arg, i);
-  XtManageChild(w->OD.viewportText[2][2]);
-  i=0;
-  XtSetArg(arg[i], XmNset, CTX.slock[2]); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("z-lock")); i++;
-  w->OD.viewportLockButt[2][2] = XmCreateToggleButton(w->OD.viewportFrameRowCol[2], "ODviewportLockButt22", arg, i);
-  XtManageChild(w->OD.viewportLockButt[2][2]);
-
-  /* Info */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Statistics")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Update")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->OD.infoDialog = XmCreateTemplateDialog(w->M.shell, "ODinfoDialog", arg, i);
-  XtUnmanageChild(w->OD.infoDialog);
-
-  i=0;
-  w->OD.infoRowCol = XmCreateRowColumn(w->OD.infoDialog, "ODinfoRowCol", arg, i);
-  XtManageChild(w->OD.infoRowCol);
-
-  /* info - geom */
-
-  i=0;
-  w->OD.infoFrame[0][0] = XmCreateFrame(w->OD.infoRowCol, "ODinfoFrame00", arg, i);
-  XtManageChild(w->OD.infoFrame[0][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Geometry")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.infoFrame[1][0] = XmCreateLabel(w->OD.infoFrame[0][0], "ODinfoFrame10", arg, i);
-  XtManageChild(w->OD.infoFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNpacking, XmPACK_COLUMN); i++;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.infoFrameRowCol[0] = XmCreateRowColumn(w->OD.infoFrame[0][0], "ODinfoFrameRowCol0", arg, i);
-  XtManageChild(w->OD.infoFrameRowCol[0]);
-  
-  for(n=0 ; n<NB_INFO_GEOM ; n++){    
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(txt_info[n])); i++;
-    w->OD.infoKeyLabel[n] = XmCreateLabel(w->OD.infoFrameRowCol[0], "ODinfoKeyLabel", arg, i);
-    XtManageChild(w->OD.infoKeyLabel[n]);
-  }
-  for(n=0 ; n<NB_INFO_GEOM ; n++){
-    i=0;
-    w->OD.infoValueLabel[n] = XmCreateLabel(w->OD.infoFrameRowCol[0], "ODinfoValueLabel", arg, i);
-    XtManageChild(w->OD.infoValueLabel[n]);
-  }
-
-  /* info - mesh */
-
-  i=0;
-  w->OD.infoFrame[0][1] = XmCreateFrame(w->OD.infoRowCol, "ODinfoFrame01", arg, i);
-  XtManageChild(w->OD.infoFrame[0][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Mesh")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.infoFrame[1][1] = XmCreateLabel(w->OD.infoFrame[0][1], "ODinfoFrame11", arg, i);
-  XtManageChild(w->OD.infoFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNpacking, XmPACK_COLUMN); i++;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.infoFrameRowCol[1] = XmCreateRowColumn(w->OD.infoFrame[0][1], "ODinfoFrameRowCol1", arg, i);
-  XtManageChild(w->OD.infoFrameRowCol[1]);
-  
-  for(n=NB_INFO_GEOM ; n<NB_INFO_GEOM+NB_INFO_MESH ; n++){    
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(txt_info[n])); i++;
-    w->OD.infoKeyLabel[n] = XmCreateLabel(w->OD.infoFrameRowCol[1], "ODinfoKeyLabel", arg, i);
-    XtManageChild(w->OD.infoKeyLabel[n]);
-  }
-  for(n=NB_INFO_GEOM ; n<NB_INFO_GEOM+NB_INFO_MESH ; n++){
-    i=0;
-    w->OD.infoValueLabel[n] = XmCreateLabel(w->OD.infoFrameRowCol[1], "ODinfoValueLabel", arg, i);
-    XtManageChild(w->OD.infoValueLabel[n]);
-  }
-
-  /* info - post */
-
-  i=0;
-  w->OD.infoFrame[0][2] = XmCreateFrame(w->OD.infoRowCol, "ODinfoFrame02", arg, i);
-  XtManageChild(w->OD.infoFrame[0][2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Post Processing")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->OD.infoFrame[1][2] = XmCreateLabel(w->OD.infoFrame[0][2], "ODinfoFrame12", arg, i);
-  XtManageChild(w->OD.infoFrame[1][2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNpacking, XmPACK_COLUMN); i++;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->OD.infoFrameRowCol[2] = XmCreateRowColumn(w->OD.infoFrame[0][2], "ODinfoFrameRowCol2", arg, i);
-  XtManageChild(w->OD.infoFrameRowCol[2]);
-  
-  for(n=NB_INFO_GEOM+NB_INFO_MESH ; n<NB_INFO_MAX ; n++){    
-    i=0;
-    XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple(txt_info[n])); i++;
-    w->OD.infoKeyLabel[n] = XmCreateLabel(w->OD.infoFrameRowCol[2], "ODinfoKeyLabel", arg, i);
-    XtManageChild(w->OD.infoKeyLabel[n]);
-  }
-  for(n=NB_INFO_GEOM+NB_INFO_MESH ; n<NB_INFO_MAX ; n++){    
-    i=0;
-    w->OD.infoValueLabel[n] = XmCreateLabel(w->OD.infoFrameRowCol[2], "ODinfoValueLabel", arg, i);
-    XtManageChild(w->OD.infoValueLabel[n]);
-  }
-
-}
-
-
-/* ------------------------------------------------------------------------ 
-    HELP DIALOGS
-   ------------------------------------------------------------------------ */
-
-char TextAbout[1024];
-
-void CreateWidgets_HD(Widgets_T *w){
-  int     i;
-  Arg     arg[10];
-  Widget  tmp ;
-
-  /* keys */
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Short Help")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  w->HD.keysDialog = XmCreateTemplateDialog(w->M.shell, "HDkeysDialog", arg, i);
-  XtUnmanageChild(w->HD.keysDialog);
-
-  i=0;
-  XtSetArg(arg[i], XmNeditable, False); i++;
-  XtSetArg(arg[i], XmNeditMode, XmMULTI_LINE_EDIT); i++;
-  XtSetArg(arg[i], XmNcolumns, 66); i++;
-  XtSetArg(arg[i], XmNrows, 25); i++;
-  XtSetArg(arg[i], XmNvalue, txt_help); i++;
-  w->HD.keysText = XmCreateScrolledText(w->HD.keysDialog, "HDkeysText", arg, i);
-  XtManageChild(w->HD.keysText);
-  
-
-  /* about */
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("About Gmsh")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  XtSetArg(arg[i], XmNmessageString, XmStringCreateLtoR(TextAbout,XmFONTLIST_DEFAULT_TAG)); i++;
-  w->HD.aboutDialog = XmCreateInformationDialog(w->M.shell, "HDaboutDialog", arg, i);
-  XtUnmanageChild(w->HD.aboutDialog);
-
-  tmp = XmMessageBoxGetChild(w->HD.aboutDialog, XmDIALOG_HELP_BUTTON);
-  XtUnmanageChild(tmp);
-  tmp = XmMessageBoxGetChild(w->HD.aboutDialog, XmDIALOG_CANCEL_BUTTON);
-  XtUnmanageChild(tmp);
-
-}
-
-/* ------------------------------------------------------------------------ 
-    GEOMETRY DIALOGS
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_GD(Widgets_T *w){
-  int   i;
-  Arg   arg[10];
-  
-  /* Parameter */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Add Parameter")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Add")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->GD.paramDialog = XmCreateTemplateDialog(w->M.shell, "GDparamDialog", arg, i);
-  XtUnmanageChild(w->GD.paramDialog);
-
-  i=0;
-  w->GD.paramRowCol = XmCreateRowColumn(w->GD.paramDialog, "ODparamRowCol", arg, i);
-  XtManageChild(w->GD.paramRowCol);
-
-  /* param - name */
-  
-  i=0;
-  w->GD.paramFrame[0][0] = XmCreateFrame(w->GD.paramRowCol, "GDparamFrame00", arg, i);
-  XtManageChild(w->GD.paramFrame[0][0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Name")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.paramFrame[1][0] = XmCreateLabel(w->GD.paramFrame[0][0], "GDparamFrame10", arg, i);
-  XtManageChild(w->GD.paramFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.paramFrameRowCol[0] = XmCreateRowColumn(w->GD.paramFrame[0][0], "ODparamFrameRowCol0", arg, i);
-  XtManageChild(w->GD.paramFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  w->GD.paramText[0] = XmCreateTextField(w->GD.paramFrameRowCol[0], "GDparamText0", arg, i);
-  XtManageChild(w->GD.paramText[0]);
-
-  /* param - value */
-  
-  i=0;
-  w->GD.paramFrame[0][1] = XmCreateFrame(w->GD.paramRowCol, "GDparamFrame01", arg, i);
-  XtManageChild(w->GD.paramFrame[0][1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Value")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.paramFrame[1][1] = XmCreateLabel(w->GD.paramFrame[0][1], "GDparamFrame11", arg, i);
-  XtManageChild(w->GD.paramFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.paramFrameRowCol[1] = XmCreateRowColumn(w->GD.paramFrame[0][1], "ODparamFrameRowCol1", arg, i);
-  XtManageChild(w->GD.paramFrameRowCol[1]); 
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  w->GD.paramText[1] = XmCreateTextField(w->GD.paramFrameRowCol[1], "GDparamText1", arg, i);
-  XtManageChild(w->GD.paramText[1]);
-  
-
-  /* Point */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Add Point")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Add")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->GD.pointDialog = XmCreateTemplateDialog(w->M.shell, "GDpointDialog", arg, i);
-  XtUnmanageChild(w->GD.pointDialog);
-
-  i=0;
-  w->GD.pointRowCol = XmCreateRowColumn(w->GD.pointDialog, "ODpointRowCol", arg, i);
-  XtManageChild(w->GD.pointRowCol);
-
-  /* point - coords */
-  
-  i=0;
-  w->GD.pointFrame[0][0] = XmCreateFrame(w->GD.pointRowCol, "GDpointFrame00", arg, i);
-  XtManageChild(w->GD.pointFrame[0][0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Coordinates")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.pointFrame[1][0] = XmCreateLabel(w->GD.pointFrame[0][0], "GDpointFrame10", arg, i);
-  XtManageChild(w->GD.pointFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.pointFrameRowCol[0] = XmCreateRowColumn(w->GD.pointFrame[0][0], "ODpointFrameRowCol0", arg, i);
-  XtManageChild(w->GD.pointFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.pointText[0] = XmCreateTextField(w->GD.pointFrameRowCol[0], "GDpointText0", arg, i);
-  XtManageChild(w->GD.pointText[0]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.pointText[1] = XmCreateTextField(w->GD.pointFrameRowCol[0], "GDpointText1", arg, i);
-  XtManageChild(w->GD.pointText[1]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.pointText[2] = XmCreateTextField(w->GD.pointFrameRowCol[0], "GDpointText2", arg, i);
-  XtManageChild(w->GD.pointText[2]);
-
-  /* point - char length */
-  
-  i=0;
-  w->GD.pointFrame[0][1] = XmCreateFrame(w->GD.pointRowCol, "GDpointFrame01", arg, i);
-  XtManageChild(w->GD.pointFrame[0][1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Characteristc Length")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.pointFrame[1][1] = XmCreateLabel(w->GD.pointFrame[0][1], "GDpointFrame11", arg, i);
-  XtManageChild(w->GD.pointFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.pointFrameRowCol[1] = XmCreateRowColumn(w->GD.pointFrame[0][1], "ODpointFrameRowCol1", arg, i);
-  XtManageChild(w->GD.pointFrameRowCol[1]); 
-  
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.pointText[3] = XmCreateTextField(w->GD.pointFrameRowCol[1], "GDpointText3", arg, i);
-  XtManageChild(w->GD.pointText[3]);
-
-
-  /* Rotation */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Current Rotation")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->GD.rotDialog = XmCreateTemplateDialog(w->M.shell, "GDrotDialog", arg, i);
-  XtUnmanageChild(w->GD.rotDialog);
-
-  i=0;
-  w->GD.rotRowCol = XmCreateRowColumn(w->GD.rotDialog, "ODrotRowCol", arg, i);
-  XtManageChild(w->GD.rotRowCol);
-
-  /* rot - axis point */
-  
-  i=0;
-  w->GD.rotFrame[0][0] = XmCreateFrame(w->GD.rotRowCol, "GDrotFrame00", arg, i);
-  XtManageChild(w->GD.rotFrame[0][0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Axis Point")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.rotFrame[1][0] = XmCreateLabel(w->GD.rotFrame[0][0], "GDrotFrame10", arg, i);
-  XtManageChild(w->GD.rotFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.rotFrameRowCol[0] = XmCreateRowColumn(w->GD.rotFrame[0][0], "ODrotFrameRowCol0", arg, i);
-  XtManageChild(w->GD.rotFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[0] = XmCreateTextField(w->GD.rotFrameRowCol[0], "GDrotText0", arg, i);
-  XtManageChild(w->GD.rotText[0]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[1] = XmCreateTextField(w->GD.rotFrameRowCol[0], "GDrotText1", arg, i);
-  XtManageChild(w->GD.rotText[1]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[2] = XmCreateTextField(w->GD.rotFrameRowCol[0], "GDrotText2", arg, i);
-  XtManageChild(w->GD.rotText[2]);
-
-  /* rot - direction */
-  
-  i=0;
-  w->GD.rotFrame[0][1] = XmCreateFrame(w->GD.rotRowCol, "GDrotFrame01", arg, i);
-  XtManageChild(w->GD.rotFrame[0][1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Direction")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.rotFrame[1][1] = XmCreateLabel(w->GD.rotFrame[0][1], "GDrotFrame11", arg, i);
-  XtManageChild(w->GD.rotFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.rotFrameRowCol[1] = XmCreateRowColumn(w->GD.rotFrame[0][1], "ODrotFrameRowCol1", arg, i);
-  XtManageChild(w->GD.rotFrameRowCol[1]); 
-  
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[3] = XmCreateTextField(w->GD.rotFrameRowCol[1], "GDrotText3", arg, i);
-  XtManageChild(w->GD.rotText[3]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[4] = XmCreateTextField(w->GD.rotFrameRowCol[1], "GDrotText4", arg, i);
-  XtManageChild(w->GD.rotText[4]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[5] = XmCreateTextField(w->GD.rotFrameRowCol[1], "GDrotText5", arg, i);
-  XtManageChild(w->GD.rotText[5]);
-
-  /* rot - angle */
-  
-  i=0;
-  w->GD.rotFrame[0][2] = XmCreateFrame(w->GD.rotRowCol, "GDrotFrame02", arg, i);
-  XtManageChild(w->GD.rotFrame[0][2]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Angle")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.rotFrame[1][2] = XmCreateLabel(w->GD.rotFrame[0][2], "GDrotFrame12", arg, i);
-  XtManageChild(w->GD.rotFrame[1][2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.rotFrameRowCol[2] = XmCreateRowColumn(w->GD.rotFrame[0][2], "ODrotFrameRowCol2", arg, i);
-  XtManageChild(w->GD.rotFrameRowCol[2]); 
-  
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.rotText[6] = XmCreateTextField(w->GD.rotFrameRowCol[2], "GDrotText6", arg, i);
-  XtManageChild(w->GD.rotText[6]);
-
-
-  /* Translation */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Current Translation")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->GD.tranDialog = XmCreateTemplateDialog(w->M.shell, "GDtranDialog", arg, i);
-  XtUnmanageChild(w->GD.tranDialog);
-
-  i=0;
-  w->GD.tranFrame[0] = XmCreateFrame(w->GD.tranDialog, "GDtranFrame0", arg, i);
-  XtManageChild(w->GD.tranFrame[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Vector")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.tranFrame[1] = XmCreateLabel(w->GD.tranFrame[0], "GDtranFrame1", arg, i);
-  XtManageChild(w->GD.tranFrame[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.tranFrameRowCol = XmCreateRowColumn(w->GD.tranFrame[0], "ODtranFrameRowCol", arg, i);
-  XtManageChild(w->GD.tranFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.tranText[0] = XmCreateTextField(w->GD.tranFrameRowCol, "GDtranText0", arg, i);
-  XtManageChild(w->GD.tranText[0]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.tranText[1] = XmCreateTextField(w->GD.tranFrameRowCol, "GDtranText1", arg, i);
-  XtManageChild(w->GD.tranText[1]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.tranText[2] = XmCreateTextField(w->GD.tranFrameRowCol, "GDtranText2", arg, i);
-  XtManageChild(w->GD.tranText[2]);
-
-
-  /* Dilatation */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Current Dilatation")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->GD.dilatDialog = XmCreateTemplateDialog(w->M.shell, "GDdilatDialog", arg, i);
-  XtUnmanageChild(w->GD.dilatDialog);
-
-  i=0;
-  w->GD.dilatRowCol = XmCreateRowColumn(w->GD.dilatDialog, "ODdilatRowCol", arg, i);
-  XtManageChild(w->GD.dilatRowCol);
-
-  /* dilat - coords */
-  
-  i=0;
-  w->GD.dilatFrame[0][0] = XmCreateFrame(w->GD.dilatRowCol, "GDdilatFrame00", arg, i);
-  XtManageChild(w->GD.dilatFrame[0][0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Vector")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.dilatFrame[1][0] = XmCreateLabel(w->GD.dilatFrame[0][0], "GDdilatFrame10", arg, i);
-  XtManageChild(w->GD.dilatFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.dilatFrameRowCol[0] = XmCreateRowColumn(w->GD.dilatFrame[0][0], "ODdilatFrameRowCol0", arg, i);
-  XtManageChild(w->GD.dilatFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.dilatText[0] = XmCreateTextField(w->GD.dilatFrameRowCol[0], "GDdilatText0", arg, i);
-  XtManageChild(w->GD.dilatText[0]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.dilatText[1] = XmCreateTextField(w->GD.dilatFrameRowCol[0], "GDdilatText1", arg, i);
-  XtManageChild(w->GD.dilatText[1]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.dilatText[2] = XmCreateTextField(w->GD.dilatFrameRowCol[0], "GDdilatText2", arg, i);
-  XtManageChild(w->GD.dilatText[2]);
-
-  /* dilat - factor */
-  
-  i=0;
-  w->GD.dilatFrame[0][1] = XmCreateFrame(w->GD.dilatRowCol, "GDdilatFrame01", arg, i);
-  XtManageChild(w->GD.dilatFrame[0][1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Factor")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.dilatFrame[1][1] = XmCreateLabel(w->GD.dilatFrame[0][1], "GDdilatFrame11", arg, i);
-  XtManageChild(w->GD.dilatFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.dilatFrameRowCol[1] = XmCreateRowColumn(w->GD.dilatFrame[0][1], "ODdilatFrameRowCol1", arg, i);
-  XtManageChild(w->GD.dilatFrameRowCol[1]); 
-  
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.dilatText[3] = XmCreateTextField(w->GD.dilatFrameRowCol[1], "GDdilatText3", arg, i);
-  XtManageChild(w->GD.dilatText[3]);
-
-  /* Symmetry */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Current Symmetry")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->GD.symmDialog = XmCreateTemplateDialog(w->M.shell, "GDsymmDialog", arg, i);
-  XtUnmanageChild(w->GD.symmDialog);
-
-  i=0;
-  w->GD.symmFrame[0] = XmCreateFrame(w->GD.symmDialog, "GDsymmFrame0", arg, i);
-  XtManageChild(w->GD.symmFrame[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Plane")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->GD.symmFrame[1] = XmCreateLabel(w->GD.symmFrame[0], "GDsymmFrame1", arg, i);
-  XtManageChild(w->GD.symmFrame[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->GD.symmFrameRowCol = XmCreateRowColumn(w->GD.symmFrame[0], "ODsymmFrameRowCol", arg, i);
-  XtManageChild(w->GD.symmFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.symmText[0] = XmCreateTextField(w->GD.symmFrameRowCol, "GDsymmText0", arg, i);
-  XtManageChild(w->GD.symmText[0]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.symmText[1] = XmCreateTextField(w->GD.symmFrameRowCol, "GDsymmText1", arg, i);
-  XtManageChild(w->GD.symmText[1]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.symmText[2] = XmCreateTextField(w->GD.symmFrameRowCol, "GDsymmText2", arg, i);
-  XtManageChild(w->GD.symmText[2]);
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  XtSetArg(arg[i], XmNcolumns, 10); i++;
-  w->GD.symmText[3] = XmCreateTextField(w->GD.symmFrameRowCol, "GDsymmText3", arg, i);
-  XtManageChild(w->GD.symmText[3]);
-
-}
-
-/* ------------------------------------------------------------------------ 
-    MESH DIALOGS
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_MD(Widgets_T *w){
-  int   i;
-  Arg   arg[10];
-
-  /* Characteristic length */
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Characteristic Length")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->MD.charLengthDialog = XmCreateTemplateDialog(w->M.shell, "MDcharLengthDialog", arg, i);
-  XtUnmanageChild(w->MD.charLengthDialog);
-
-  i=0;
-  w->MD.charLengthFrame[0] = XmCreateFrame(w->MD.charLengthDialog, "MDcharLengthFrame0", arg, i);
-  XtManageChild(w->MD.charLengthFrame[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Value")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->MD.charLengthFrame[1] = XmCreateLabel(w->MD.charLengthFrame[0], "MDcharLengthFrame1", arg, i);
-  XtManageChild(w->MD.charLengthFrame[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->MD.charLengthFrameRowCol = XmCreateRowColumn(w->MD.charLengthFrame[0], "MDcharLengthFrameRowCol", arg, i);
-  XtManageChild(w->MD.charLengthFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  w->MD.charLengthText = XmCreateTextField(w->MD.charLengthFrameRowCol, "MDcharLengthText", arg, i);
-  XtManageChild(w->MD.charLengthText);
-
-  /* Transfinite Line */
-
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Transfinite Line")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->MD.trsfLineDialog = XmCreateTemplateDialog(w->M.shell, "MDtrsfLineDialog", arg, i);
-  XtUnmanageChild(w->MD.trsfLineDialog);
-
-  i=0;
-  w->MD.trsfLineRowCol = XmCreateRowColumn(w->MD.trsfLineDialog, "MDtrsfLineRowCol", arg, i);
-  XtManageChild(w->MD.trsfLineRowCol);
-
-  /* trsf line  - type */
-  
-  i=0;
-  w->MD.trsfLineFrame[0][0] = XmCreateFrame(w->MD.trsfLineRowCol, "MDtrsfLineFrame00", arg, i);
-  XtManageChild(w->MD.trsfLineFrame[0][0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Type")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->MD.trsfLineFrame[1][0] = XmCreateLabel(w->MD.trsfLineFrame[0][0], "MDtrsfLineFrame10", arg, i);
-  XtManageChild(w->MD.trsfLineFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->MD.trsfLineFrameRowCol[0] = XmCreateRowColumn(w->MD.trsfLineFrame[0][0], "MDtrsfLineFrameRowCol0", arg, i);
-  XtManageChild(w->MD.trsfLineFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, "Power 1.0"); i++;
-  w->MD.trsfLineText[0] = XmCreateTextField(w->MD.trsfLineFrameRowCol[0], "MDtrsfLineText0", arg, i);
-  XtManageChild(w->MD.trsfLineText[0]);
-
-  /* trsf line - nb pts */
-  
-  i=0;
-  w->MD.trsfLineFrame[0][1] = XmCreateFrame(w->MD.trsfLineRowCol, "MDtrsfLineFrame01", arg, i);
-  XtManageChild(w->MD.trsfLineFrame[0][1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Number of Points")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->MD.trsfLineFrame[1][1] = XmCreateLabel(w->MD.trsfLineFrame[0][1], "MDtrsfLineFrame11", arg, i);
-  XtManageChild(w->MD.trsfLineFrame[1][1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->MD.trsfLineFrameRowCol[1] = XmCreateRowColumn(w->MD.trsfLineFrame[0][1], "MDtrsfLineFrameRowCol1", arg, i);
-  XtManageChild(w->MD.trsfLineFrameRowCol[1]); 
-  
-  i=0;
-  XtSetArg(arg[i], XmNvalue, "2"); i++;
-  w->MD.trsfLineText[1] = XmCreateTextField(w->MD.trsfLineFrameRowCol[1], "MDtrsfLineText1", arg, i);
-  XtManageChild(w->MD.trsfLineText[1]);
-
-  /* Transfinite Volume */
-  i=0;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Transfinite Volume")); i++;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Ok")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->MD.trsfVolumeDialog = XmCreateTemplateDialog(w->M.shell, "MDtrsfVolumeDialog", arg, i);
-  XtUnmanageChild(w->MD.trsfVolumeDialog);
-
-  i=0;
-  w->MD.trsfVolumeFrame[0] = XmCreateFrame(w->MD.trsfVolumeDialog, "MDtrsfVolumeFrame0", arg, i);
-  XtManageChild(w->MD.trsfVolumeFrame[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Number")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->MD.trsfVolumeFrame[1] = XmCreateLabel(w->MD.trsfVolumeFrame[0], "MDtrsfVolumeFrame1", arg, i);
-  XtManageChild(w->MD.trsfVolumeFrame[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->MD.trsfVolumeFrameRowCol = XmCreateRowColumn(w->MD.trsfVolumeFrame[0], "MDtrsfVolumeFrameRowCol", arg, i);
-  XtManageChild(w->MD.trsfVolumeFrameRowCol);
-
-  i=0;
-  XtSetArg(arg[i], XmNvalue, ""); i++;
-  w->MD.trsfVolumeText = XmCreateTextField(w->MD.trsfVolumeFrameRowCol, "MDtrsfVolumeText", arg, i);
-  XtManageChild(w->MD.trsfVolumeText);
-
-}
-
-/* ------------------------------------------------------------------------ 
-    POST PROCESSING DIALOGS
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets_PD(Widgets_T *w){
-  int     i, n;
-  Arg     arg[10];
-  Widget  tmp;
-
-  /* Offset */
-  i=0;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->PD.offsetDialog = XmCreateTemplateDialog(w->M.shell, "PDoffsetDialog", arg, i);
-  XtUnmanageChild(w->PD.offsetDialog);
-
-  i=0;
-  w->PD.offsetRowCol = XmCreateRowColumn(w->PD.offsetDialog, "PDoffsetRowCol", arg, i);
-  XtManageChild(w->PD.offsetRowCol);
-
-
-  /* Offset mode */
-  i=0;
-  w->PD.offsetFrame[0][0] = XmCreateFrame(w->PD.offsetRowCol, "ODoffsetFrame00", arg, i);
-  XtManageChild(w->PD.offsetFrame[0][0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Offset Mode")); i++;
-  w->PD.offsetFrame[1][0] = XmCreateLabel(w->PD.offsetFrame[0][0], "PDoffsetFrame10", arg, i);
-  XtManageChild(w->PD.offsetFrame[1][0]);
-  
-  i=0;
-  w->PD.offsetFrameRowCol[0] = XmCreateRowColumn(w->PD.offsetFrame[0][0], "PDoffsetFrameRowCol0", arg, i);
-  XtManageChild(w->PD.offsetFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;  
-  w->PD.offsetModeCheck = XmCreateRadioBox(w->PD.offsetFrameRowCol[0], "PDoffsetModeCheck", arg, i);
-  XtManageChild(w->PD.offsetModeCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Translation")); i++;
-  w->PD.offsetModeButt[0] = XmCreateToggleButton(w->PD.offsetModeCheck, "PDoffsetModeButt0", arg, i);
-  XtManageChild(w->PD.offsetModeButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Raise")); i++;
-  w->PD.offsetModeButt[1] = XmCreateToggleButton(w->PD.offsetModeCheck, "PDoffsetModeButt1", arg, i);
-  XtManageChild(w->PD.offsetModeButt[1]);
-  
-  /* Offset sliders and text fields */
-
-  for(n=1 ; n<4 ; n++){
-    i=0;
-    w->PD.offsetFrame[0][n] = XmCreateFrame(w->PD.offsetRowCol, "ODoffsetFrame0n", arg, i);
-    XtManageChild(w->PD.offsetFrame[0][n]);
-
-    i=0;
-    XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-    w->PD.offsetFrame[1][n] = XmCreateLabel(w->PD.offsetFrame[0][n], "PDoffsetFrame1n", arg, i);
-    XtManageChild(w->PD.offsetFrame[1][n]);
-
-    i=0;
-    w->PD.offsetFrameRowCol[n] = XmCreateRowColumn(w->PD.offsetFrame[0][n], "PDoffsetFrameRowColn", arg, i);
-    XtManageChild(w->PD.offsetFrameRowCol[n]);
-  
-    i=0;
-    XtSetArg(arg[i], XmNminimum, -100); i++;
-    XtSetArg(arg[i], XmNmaximum, 100); i++;
-    XtSetArg(arg[i], XmNdecimalPoints, 2); i++;
-    XtSetArg(arg[i], XmNshowValue, False); i++;
-    XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-    w->PD.offsetScale[n-1] = XmCreateScale(w->PD.offsetFrameRowCol[n], "PDoffsetScalen", arg, i);
-    XtManageChild(w->PD.offsetScale[n-1]);
-    
-    i=0;
-    w->PD.offsetText[n-1] = XmCreateTextField(w->PD.offsetFrameRowCol[n], "PDoffsetTextn", arg, i);
-    XtManageChild(w->PD.offsetText[n-1]);
-  }
-  
-  XtVaSetValues(w->PD.offsetFrame[1][1], XmNlabelString, XmStringCreateSimple("X"), NULL);
-  XtVaSetValues(w->PD.offsetFrame[1][2], XmNlabelString, XmStringCreateSimple("Y"), NULL);
-  XtVaSetValues(w->PD.offsetFrame[1][3], XmNlabelString, XmStringCreateSimple("Z"), NULL);
-
-
-  /* TimeStep */
-  i=0;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->PD.timeStepDialog = XmCreateTemplateDialog(w->M.shell, "PDtimeStepDialog", arg, i);
-  XtUnmanageChild(w->PD.timeStepDialog);
-
-  i=0;
-  w->PD.timeStepFrame[0] = XmCreateFrame(w->PD.timeStepDialog, "ODtimeStepFrame0", arg, i);
-  XtManageChild(w->PD.timeStepFrame[0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Time Step")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.timeStepFrame[1] = XmCreateLabel(w->PD.timeStepFrame[0], "PDtimeStepFrame1", arg, i);
-  XtManageChild(w->PD.timeStepFrame[1]);
-  
-  i=0;
-  w->PD.timeStepFrameRowCol = XmCreateRowColumn(w->PD.timeStepFrame[0], "PDtimeStepRowCol", arg, i);
-  XtManageChild(w->PD.timeStepFrameRowCol);
-  
-  i=0;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->PD.timeStepScale = XmCreateScale(w->PD.timeStepFrameRowCol, "PDtimeStepScale", arg, i);
-  XtManageChild(w->PD.timeStepScale);
-  
-  i=0;
-  w->PD.timeStepText = XmCreateTextField(w->PD.timeStepFrameRowCol, "PDtimeStepText", arg, i);
-  XtManageChild(w->PD.timeStepText);
-
-  /* Scale */
-  i=0;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->PD.scaleDialog = XmCreateTemplateDialog(w->M.shell, "PDscaleDialog", arg, i);
-  XtUnmanageChild(w->PD.scaleDialog);
-
-  i=0;
-  w->PD.scaleRowCol = XmCreateRowColumn(w->PD.scaleDialog, "PDscaleRowCol", arg, i);
-  XtManageChild(w->PD.scaleRowCol);
-
-  /* Scale - bar */
-  i=0;
-  w->PD.scaleFrame[0][0] = XmCreateFrame(w->PD.scaleRowCol, "ODscaleFrame00", arg, i);
-  XtManageChild(w->PD.scaleFrame[0][0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Scale Bar")); i++;  
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.scaleFrame[1][0] = XmCreateLabel(w->PD.scaleFrame[0][0], "PDscaleFrame10", arg, i);
-  XtManageChild(w->PD.scaleFrame[1][0]);
-  
-  i=0;
-  w->PD.scaleFrameRowCol[0] = XmCreateRowColumn(w->PD.scaleFrame[0][0], "PDscaleFrameRowCol0", arg, i);
-  XtManageChild(w->PD.scaleFrameRowCol[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->PD.scaleCheck = XmCreateSimpleCheckBox(w->PD.scaleFrameRowCol[0], "PDscaleCheck", arg, i);
-  XtManageChild(w->PD.scaleCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Show")); i++;
-  w->PD.scaleShowButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleShowButt", arg, i);
-  XtManageChild(w->PD.scaleShowButt);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Transparency")); i++;
-  w->PD.scaleTransButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleTransButt", arg, i);
-  XtManageChild(w->PD.scaleTransButt);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Time Display")); i++;
-  w->PD.scaleTimeButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleTimeButt", arg, i);
-  XtManageChild(w->PD.scaleTimeButt);
-
-  for(n=0 ; n<2 ; n++){
-    i=0;
-    XtSetArg(arg[i], XmNvalue, "0.00000000000000000001e-1"); i++; /* lesstif bug */
-    w->PD.scaleText[n] = XmCreateTextField(w->PD.scaleFrameRowCol[0], "PDscaleTextn", arg, i);
-    XtManageChild(w->PD.scaleText[n]);
-  }
-
-  /* Scale - range */
-  i=0;
-  w->PD.scaleFrame[0][1] = XmCreateFrame(w->PD.scaleRowCol, "ODscaleFrame01", arg, i);
-  XtManageChild(w->PD.scaleFrame[0][1]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Value Range")); i++;  
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.scaleFrame[1][1] = XmCreateLabel(w->PD.scaleFrame[0][1], "PDscaleFrame11", arg, i);
-  XtManageChild(w->PD.scaleFrame[1][1]);
-  
-  i=0;
-  w->PD.scaleFrameRowCol[1] = XmCreateRowColumn(w->PD.scaleFrame[0][1], "PDscaleFrameRowCol1", arg, i);
-  XtManageChild(w->PD.scaleFrameRowCol[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Custom")); i++;
-  w->PD.scaleRangeButt = XmCreateToggleButton(w->PD.scaleFrameRowCol[1], "PDscaleRangeButt", arg, i);
-  XtManageChild(w->PD.scaleRangeButt);
-
-  for(n=0 ; n<2 ; n++){
-    i=0;
-    XtSetArg(arg[i], XmNvalue, "0.00000000000000000001e-1"); i++; /* lesstif bug */
-    w->PD.scaleRangeText[n] = XmCreateTextField(w->PD.scaleFrameRowCol[1], "PDscaleRangeTextn", arg, i);
-    XtManageChild(w->PD.scaleRangeText[n]);
-  }
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->PD.scaleTypeCheck = XmCreateRadioBox(w->PD.scaleFrameRowCol[1], "PDscaleTypeCheck", arg, i);
-  XtManageChild(w->PD.scaleTypeCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Linear")); i++;
-  w->PD.scaleTypeButt[0] = XmCreateToggleButton(w->PD.scaleTypeCheck, "PDscaleTypeButt0", arg, i);
-  XtManageChild(w->PD.scaleTypeButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Logarithmic")); i++;
-  w->PD.scaleTypeButt[1] = XmCreateToggleButton(w->PD.scaleTypeCheck, "PDscaleTypeButt1", arg, i);
-  XtManageChild(w->PD.scaleTypeButt[1]);
-
-
-  /* Scale - intervals */
-  i=0;
-  w->PD.scaleFrame[0][2] = XmCreateFrame(w->PD.scaleRowCol, "ODscaleFrame02", arg, i);
-  XtManageChild(w->PD.scaleFrame[0][2]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Intervals")); i++;  
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.scaleFrame[1][2] = XmCreateLabel(w->PD.scaleFrame[0][2], "PDscaleFrame12", arg, i);
-  XtManageChild(w->PD.scaleFrame[1][2]);
-  
-  i=0;
-  w->PD.scaleFrameRowCol[2] = XmCreateRowColumn(w->PD.scaleFrame[0][2], "PDscaleFrameRowCol2", arg, i);
-  XtManageChild(w->PD.scaleFrameRowCol[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 1); i++;
-  XtSetArg(arg[i], XmNmaximum, 100); i++;
-  XtSetArg(arg[i], XmNvalue, 15); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->PD.scaleIntervalsScale = XmCreateScale(w->PD.scaleFrameRowCol[2], "PDscaleIntervalsScale", arg, i);
-  XtManageChild(w->PD.scaleIntervalsScale);
-  
-  i=0;
-  w->PD.scaleIntervalsText = XmCreateTextField(w->PD.scaleFrameRowCol[2], "PDscaleIntervalsText", arg, i);
-  XtManageChild(w->PD.scaleIntervalsText);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->PD.scaleIntervalsCheck = XmCreateRadioBox(w->PD.scaleFrameRowCol[2], "PDscaleIntervalsCheck", arg, i);
-  XtManageChild(w->PD.scaleIntervalsCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Iso")); i++;
-  w->PD.scaleIntervalsButt[0] = XmCreateToggleButton(w->PD.scaleIntervalsCheck, "PDscaleIntervalsButt0", arg, i);
-  XtManageChild(w->PD.scaleIntervalsButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Filled Iso")); i++;
-  w->PD.scaleIntervalsButt[1] = XmCreateToggleButton(w->PD.scaleIntervalsCheck, "PDscaleIntervalsButt1", arg, i);
-  XtManageChild(w->PD.scaleIntervalsButt[1]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Continous")); i++;
-  w->PD.scaleIntervalsButt[2] = XmCreateToggleButton(w->PD.scaleIntervalsCheck, "PDscaleIntervalsButt2", arg, i);
-  XtManageChild(w->PD.scaleIntervalsButt[2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Numeric")); i++;
-  w->PD.scaleIntervalsButt[3] = XmCreateToggleButton(w->PD.scaleIntervalsCheck, "PDscaleIntervalsButt3", arg, i);
-  XtManageChild(w->PD.scaleIntervalsButt[3]);
-
-  /* Color */
-  i=0;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->PD.colorDialog = XmCreateTemplateDialog(w->M.shell, "PDcolorDialog", arg, i);
-  XtUnmanageChild(w->PD.colorDialog);
-
-  i=0;
-  w->PD.colorFrame[0][0] = XmCreateFrame(w->PD.colorDialog, "ODcolorFrame00", arg, i);
-  XtManageChild(w->PD.colorFrame[0][0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Colors")); i++;  
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.colorFrame[1][0] = XmCreateLabel(w->PD.colorFrame[0][0], "PDcolorFrame10", arg, i);
-  XtManageChild(w->PD.colorFrame[1][0]);
-
-  i=0;
-  /* hardcoded this one, since its is required for the motion handling */
-  XtSetArg(arg[i], XmNtranslations, XtParseTranslationTable(DrawingAreaTranslations)); i++;
-  w->PD.colorDrawingArea = XmCreateDrawingArea(w->PD.colorFrame[0][0], "PDcolorDrawingArea", arg, i);
-  XtManageChild(w->PD.colorDrawingArea);
-
-
-  /* Vectors */
-  i=0;
-  XtSetArg(arg[i], XmNokLabelString, XmStringCreateSimple("Apply")); i++;
-  XtSetArg(arg[i], XmNcancelLabelString, XmStringCreateSimple("Cancel")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, False); i++;
-  w->PD.vectorDialog = XmCreateTemplateDialog(w->M.shell, "PDvectorDialog", arg, i);
-  XtUnmanageChild(w->PD.vectorDialog);
-
-  i=0;
-  w->PD.vectorRowCol = XmCreateRowColumn(w->PD.vectorDialog, "PDvectorRowCol", arg, i);
-  XtManageChild(w->PD.vectorRowCol);
-
-  /* vector - type */
-
-  i=0;
-  w->PD.vectorFrame[0][0] = XmCreateFrame(w->PD.vectorRowCol, "ODvectorFrame00", arg, i);
-  XtManageChild(w->PD.vectorFrame[0][0]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Vector Display Type")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.vectorFrame[1][0] = XmCreateLabel(w->PD.vectorFrame[0][0], "PDvectorFrame10", arg, i);
-  XtManageChild(w->PD.vectorFrame[1][0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNnumColumns, 2); i++;
-  w->PD.vectorTypeCheck = XmCreateRadioBox(w->PD.vectorFrame[0][0], "PDvectorTypeCheck", arg, i);
-  XtManageChild(w->PD.vectorTypeCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Line")); i++;
-  w->PD.vectorTypeButt[0] = XmCreateToggleButton(w->PD.vectorTypeCheck, "PDvectorTypeButt0", arg, i);
-  XtManageChild(w->PD.vectorTypeButt[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Arrow")); i++;
-  w->PD.vectorTypeButt[1] = XmCreateToggleButton(w->PD.vectorTypeCheck, "PDvectorTypeButt1", arg, i);
-  XtManageChild(w->PD.vectorTypeButt[1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Pyramid")); i++;
-  w->PD.vectorTypeButt[2] = XmCreateToggleButton(w->PD.vectorTypeCheck, "PDvectorTypeButt2", arg, i);
-  XtManageChild(w->PD.vectorTypeButt[2]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Cone")); i++;
-  w->PD.vectorTypeButt[3] = XmCreateToggleButton(w->PD.vectorTypeCheck, "PDvectorTypeButt3", arg, i);
-  XtManageChild(w->PD.vectorTypeButt[3]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Displacement")); i++;
-  w->PD.vectorTypeButt[4] = XmCreateToggleButton(w->PD.vectorTypeCheck, "PDvectorTypeButt4", arg, i);
-  XtManageChild(w->PD.vectorTypeButt[4]);
-
-  /* vector - scale */
-  
-  i=0;
-  w->PD.vectorFrame[0][1] = XmCreateFrame(w->PD.vectorRowCol, "ODvectorFrame01", arg, i);
-  XtManageChild(w->PD.vectorFrame[0][1]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Scale")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.vectorFrame[1][1] = XmCreateLabel(w->PD.vectorFrame[0][1], "PDvectorFrame11", arg, i);
-  XtManageChild(w->PD.vectorFrame[1][1]);
-  
-  i=0;
-  w->PD.vectorScaleRowCol = XmCreateRowColumn(w->PD.vectorFrame[0][1], "PDvectorFrameRowCol1", arg, i);
-  XtManageChild(w->PD.vectorScaleRowCol);
-  
-  i=0;
-  XtSetArg(arg[i], XmNminimum, 0); i++;
-  XtSetArg(arg[i], XmNmaximum, 500); i++;
-  XtSetArg(arg[i], XmNdecimalPoints, 2); i++;
-  XtSetArg(arg[i], XmNshowValue, False); i++;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->PD.vectorScaleScale = XmCreateScale(w->PD.vectorScaleRowCol, "PDvectorScaleScale", arg, i);
-  XtManageChild(w->PD.vectorScaleScale);
-  
-  i=0;
-  w->PD.vectorScaleText = XmCreateTextField(w->PD.vectorScaleRowCol, "PDvectorScaleText", arg, i);
-  XtManageChild(w->PD.vectorScaleText);
-
-  /* vector - location */
-
-  i=0;
-  w->PD.vectorFrame[0][2] = XmCreateFrame(w->PD.vectorRowCol, "ODvectorFrame02", arg, i);
-  XtManageChild(w->PD.vectorFrame[0][2]);
-  
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Location")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.vectorFrame[1][2] = XmCreateLabel(w->PD.vectorFrame[0][2], "PDvectorFrame12", arg, i);
-  XtManageChild(w->PD.vectorFrame[1][2]);
-
-  i=0;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  w->PD.vectorLocationCheck = XmCreateRadioBox(w->PD.vectorFrame[0][2], "PDvectorLocationCheck", arg, i);
-  XtManageChild(w->PD.vectorLocationCheck);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("COG")); i++;
-  w->PD.vectorLocationButt[0] = XmCreateToggleButton(w->PD.vectorLocationCheck, "PDvectorLocationButt0", arg, i);
-  XtManageChild(w->PD.vectorLocationButt[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Vertex")); i++;
-  w->PD.vectorLocationButt[1] = XmCreateToggleButton(w->PD.vectorLocationCheck, "PDvectorLocationButt1", arg, i);
-  XtManageChild(w->PD.vectorLocationButt[1]);
-
-
-  /* export BGM  */
-  i=0 ;
-  XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Export BGM")); i++;
-  XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++;
-  XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*")); i++;
-  XtSetArg(arg[i], XmNautoUnmanage, True); i++;
-  w->PD.exportBGMDialog = XmCreateFileSelectionDialog(w->M.shell, "FDexportBGMDialog", arg, i);
-  XtUnmanageChild(w->PD.exportBGMDialog);
-
-  tmp = XmFileSelectionBoxGetChild(w->PD.exportBGMDialog, XmDIALOG_HELP_BUTTON);
-  XtUnmanageChild(tmp);
-
-  i=0;
-  w->PD.exportBGMFrame[0] = XmCreateFrame(w->PD.exportBGMDialog, "FDexportBGMFrame0", arg, i);
-  XtManageChild(w->PD.exportBGMFrame[0]);
-
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Options")); i++;
-  XtSetArg(arg[i], XmNchildType, XmFRAME_TITLE_CHILD); i++;
-  w->PD.exportBGMFrame[1] = XmCreateLabel(w->PD.exportBGMFrame[0], "FDexportBGMFrame1", arg, i);
-  XtManageChild(w->PD.exportBGMFrame[1]);
-
-  i=0 ;
-  XtSetArg(arg[i], XmNorientation, XmHORIZONTAL); i++;
-  XtSetArg(arg[i], XmNspacing, 0); i++;
-  w->PD.exportBGMRowCol = XmCreateRowColumn(w->PD.exportBGMFrame[0], "FDexportBGMRowCol", arg, i);
-  XtManageChild(w->PD.exportBGMRowCol);
-
-  /* export BGM - method */
-  i=0;
-  w->PD.exportBGMPane = XmCreatePulldownMenu(w->PD.exportBGMRowCol, "FDexportBGMPane", arg, i);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("h: error (%)")); i++;
-  w->PD.exportBGMButt[0] = XmCreatePushButton(w->PD.exportBGMPane, "MexportBGMButt0", arg, i);
-  XtManageChild(w->PD.exportBGMButt[0]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("h: elements")); i++;
-  w->PD.exportBGMButt[1] = XmCreatePushButton(w->PD.exportBGMPane, "MexportBGMButt1", arg, i);
-  XtManageChild(w->PD.exportBGMButt[1]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("p: error (%)")); i++;
-  w->PD.exportBGMButt[2] = XmCreatePushButton(w->PD.exportBGMPane, "MexportBGMButt2", arg, i);
-  XtManageChild(w->PD.exportBGMButt[2]);
-  i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("p: elements")); i++;
-  w->PD.exportBGMButt[3] = XmCreatePushButton(w->PD.exportBGMPane, "MexportBGMButt3", arg, i);
-  XtManageChild(w->PD.exportBGMButt[3]);
-  i=0;
-  XtSetArg(arg[i], XmNsubMenuId, w->PD.exportBGMPane); i++;
-  XtSetArg(arg[i], XmNspacing, 0); i++;
-  w->PD.exportBGMMenu = XmCreateOptionMenu(w->PD.exportBGMRowCol, "FDexportBGMMenu", arg, i);
-  XtManageChild(w->PD.exportBGMMenu);
-
-  /* export BGM - constraint */
-  i=0;
-  w->PD.exportBGMText = XmCreateTextField(w->PD.exportBGMRowCol, "FDexportBGMText", arg, i);
-  XtManageChild(w->PD.exportBGMText);
-
-  
-}
-
-
-
-/* ------------------------------------------------------------------------ 
-    C r e a t e W i d g e t s
-   ------------------------------------------------------------------------ */
-
-void CreateWidgets (Widgets_T *w){
-  CreateWidgets_M(w); /* menu win */
-  CreateWidgets_G(w); /* graphic win */
-  if(CTX.command_win) CreateWidgets_C(w); /* command win */
-
-  CreateWidgets_ED(w); /* error dialogs */
-  CreateWidgets_FD(w); /* file dialogs */
-  CreateWidgets_OD(w); /* option dialogs */
-  CreateWidgets_HD(w); /* help dialogs */
-  CreateWidgets_GD(w); /* geometry dialogs */
-  CreateWidgets_MD(w); /* mesh dialogs */
-  CreateWidgets_PD(w); /* post dialogs */
-}
-
-
diff --git a/Motif/Widgets.h b/Motif/Widgets.h
deleted file mode 100644
index f79631b63de98cc05ba69fc52b7a8fcd104b4a3c..0000000000000000000000000000000000000000
--- a/Motif/Widgets.h
+++ /dev/null
@@ -1,237 +0,0 @@
-#ifndef _WIDGETS_H_
-#define _WIDGETS_H_
-
-#define NB_BUTT_MAX  50 
-
-/* check Info.h */
-#define NB_INFO_GEOM   4
-#define NB_INFO_MESH   14
-#define NB_INFO_POST   5
-#define NB_INFO_MAX    23
-
-/* Holder for all Widgets */
-
-typedef struct {
-
-  /* menu window */
-
-  struct {
-    Widget   shell, containerWin ; 
-    Widget   menuBar ;
-    Widget     fileCascade, filePane, fileButt[10], fileSep[3] ;
-    Widget     moduleCascade, modulePane, moduleButt[3] ;
-    Widget     optionCascade, optionPane, optionButt[6], optionSep[2] ;
-    Widget     helpCascade, helpPane, helpButt[2], helpSep[1] ;
-    Widget   menuFrame, menuForm ;
-    Widget     modButt, modPop, geomButt, meshButt, postButt ;
-    Widget     navigButt[2]; 
-    Widget     defaultButt ;
-    Widget     pushButt     [NB_BUTT_MAX] ;
-    Widget     toggleButt   [NB_BUTT_MAX] ;
-    Widget     popMenu      [NB_BUTT_MAX] ;
-    Widget     popSep    [3][NB_BUTT_MAX] ;
-    Widget     lightButt    [NB_BUTT_MAX] ;
-    Widget     elementButt  [NB_BUTT_MAX] ;
-    Widget     offsetButt   [NB_BUTT_MAX] ;
-    Widget     timeStepButt [NB_BUTT_MAX] ;
-    Widget     scaleButt    [NB_BUTT_MAX] ;
-    Widget     colorButt    [NB_BUTT_MAX] ;
-    Widget     vectorButt   [NB_BUTT_MAX] ;
-    Widget     exportBGMButt[NB_BUTT_MAX] ;
-    Widget     applyBGMButt [NB_BUTT_MAX] ;
-    Widget     reloadButt   [NB_BUTT_MAX] ;
-    Widget     removeButt   [NB_BUTT_MAX] ;
-    Widget     duplicateButt[NB_BUTT_MAX] ;
-  } M;
-
-  /* graphic window */
-
-  struct {
-    Widget   shell, containerForm ;
-    Widget   glw, glo ; 
-    Widget   bottomForm ;
-    Widget     Butt[7] ;
-    Widget     textForm, infoLabel, selectLabel, statusLabel ;
-  } G;
-
-  /* command window */
-
-  struct {
-    Widget   shell ;
-    Widget   command, commandList, commandText ; 
-  } C;
-
-
-  /* error dialogs */
-
-  struct {
-    Widget   saveAsDialog ;
-  } ED;
-
-  /* file dialogs */
-
-  struct {
-    Widget   openDialog ;
-    Widget   mergeDialog ;
-    Widget   saveAsDialog ;
-    Widget     saveAsFrame[2], saveAsRowCol ;
-    Widget     saveAsPane[3], saveAsButt[20], saveAsMenu[3] ;
-    Widget   saveOptionsAsDialog ;
-  } FD;
-
-  /* options dialogs */
-
-  struct {
-    Widget   geomDialog, geomRowCol ;
-    Widget   geomVisibleFrame[2], geomVisibleRowCol ;
-    Widget     geomVisibleTypeCheck, geomVisibleTypeButt[2] ;
-    Widget     geomVisibleCheck, geomVisibleButt[4] ;
-    Widget   geomVisibleByNumFrame[2], geomVisibleByNumRowCol ;
-    Widget     geomVisibleByNumText ;
-    Widget   geomNormalsFrame[2], geomNormalsRowCol ;
-    Widget     geomNormalsScale, geomNormalsText ;
-    Widget   geomTangentsFrame[2], geomTangentsRowCol ;
-    Widget     geomTangentsScale, geomTangentsText ;
-
-    Widget   meshDialog, meshRowCol;
-    Widget   meshAlgoFrame[2], meshAlgoRowCol  ;
-    Widget     meshAlgoCheck, meshAlgoButt[4] ;
-    Widget   meshSmoothingFrame[2], meshSmoothingRowCol  ;
-    Widget     meshSmoothingScale, meshSmoothingText ;
-    Widget   meshVisibleFrame[2], meshVisibleRowCol ;
-    Widget     meshVisibleTypeCheck, meshVisibleTypeButt[2] ;
-    Widget     meshVisibleCheck, meshVisibleButt[4] ;
-    Widget   meshVisibleByNumFrame[2], meshVisibleByNumRowCol ;
-    Widget     meshVisibleByNumCheck, meshVisibleByNumButt[4];
-    Widget     meshVisibleByNumText ;
-    Widget   meshAspectFrame[2] ;
-    Widget     meshAspectCheck, meshAspectButt[3] ;
-    Widget   meshExplodeFrame[2], meshExplodeRowCol ;
-    Widget     meshExplodeScale, meshExplodeText ;
-    Widget   meshNormalsFrame[2], meshNormalsRowCol ;
-    Widget     meshNormalsScale, meshNormalsText ;
-
-    Widget   postDialog, postRowCol;
-    Widget   postLinkFrame[2], postLinkRowCol  ;
-    Widget     postLinkCheck, postLinkButt[3] ;
-    Widget   postAnimFrame[2] ;
-    Widget     postAnimFrameRowCol, postAnimScale ;
-
-    Widget   miscDialog, miscRowCol ; 
-    Widget   miscMiscFrame[2] ;
-    Widget     miscMiscCheck, miscMiscButt[6] ;
-    Widget   miscColorSchemeFrame[2] ;
-    Widget     miscColorSchemeFrameRowCol, miscColorSchemeScale ;
-    Widget   miscProjFrame[2] ;
-    Widget     miscProjCheck, miscProjButt[2] ;
-    Widget   miscLightFrame[2] ;
-    Widget     miscLightFrameRowCol, miscLightScale[3] ;
-    Widget   miscShineFrame[2] ;
-    Widget     miscShineFrameRowCol, miscShineScale ;
-
-    Widget   viewportDialog, viewportRowCol ;
-    Widget     viewportFrame[2][3], viewportFrameRowCol[3] ;
-    Widget     viewportText[3][3], viewportLockButt[3][3] ;
-
-    Widget   infoDialog, infoRowCol ;
-    Widget     infoFrame[2][3], infoFrameRowCol[3] ;
-    Widget     infoKeyLabel[NB_INFO_MAX], infoValueLabel[NB_INFO_MAX] ;
-
-  } OD;
-
-  /* help dialogs */
-
-  struct {
-    Widget   keysDialog, keysText ;
-
-    Widget   aboutDialog ;
-  } HD;
-
-  /* geometry dialogs */
-
-  struct {
-    Widget   paramDialog, paramRowCol ;
-    Widget   paramFrame[2][2], paramFrameRowCol[2], paramText[2] ;
-
-    Widget   pointDialog, pointRowCol ;
-    Widget   pointFrame[2][2], pointFrameRowCol[2], pointText[4] ;
-
-    Widget   rotDialog, rotRowCol ;
-    Widget   rotFrame[2][3], rotFrameRowCol[3], rotText[7] ;
-    
-    Widget   tranDialog ;
-    Widget   tranFrame[2], tranFrameRowCol, tranText[3] ;
-
-    Widget   dilatDialog, dilatRowCol ;
-    Widget   dilatFrame[2][2], dilatFrameRowCol[2], dilatText[4] ;
-
-    Widget   symmDialog, symmRowCol ;
-    Widget   symmFrame[2], symmFrameRowCol, symmText[4] ;
-  } GD;
-
-  /* mesh dialogs */
-
-  struct {
-    Widget   charLengthDialog ;
-    Widget   charLengthFrame[2], charLengthFrameRowCol, charLengthText ;
-
-    Widget   trsfLineDialog, trsfLineRowCol ;
-    Widget   trsfLineFrame[2][2], trsfLineFrameRowCol[2], trsfLineText[2] ;
-
-    Widget   trsfVolumeDialog ;
-    Widget   trsfVolumeFrame[2], trsfVolumeFrameRowCol, trsfVolumeText ;
-  } MD;
-
-  /* post dialogs */
-
-  struct {
-    Widget   offsetDialog, offsetRowCol ;
-    Widget   offsetFrame[2][4], offsetFrameRowCol[4] ;
-    Widget   /* 1 */ offsetModeCheck, offsetModeButt[2] ;
-    Widget   /* 2 */ offsetText[3], offsetScale[3] ;
-    
-    Widget   timeStepDialog ;
-    Widget   timeStepFrame[2], timeStepFrameRowCol ;
-    Widget   timeStepText, timeStepScale ;
-    
-    Widget   scaleDialog, scaleRowCol ;
-    Widget   scaleFrame[2][4], scaleFrameRowCol[4] ;
-    Widget   /* 1 */ scaleCheck, scaleShowButt, scaleTransButt, scaleTimeButt, scaleText[2] ;
-    Widget   /* 2 */ scaleRangeButt, scaleRangeText[2], scaleTypeCheck, 
-                     scaleTypeButt[2] ;
-    Widget   /* 3 */ scaleIntervalsCheck, scaleIntervalsButt[4], 
-                     scaleIntervalsScale, scaleIntervalsText ;
-
-    Widget   colorDialog, colorRowCol ;
-    Widget   colorFrame[2][4] ;
-    Widget   /* 1 */ colorDrawingArea ;
-
-    Widget   vectorDialog, vectorRowCol ;
-    Widget   vectorFrame[2][3];
-    Widget   /* 1 */ vectorTypeCheck, vectorTypeButt[5];
-    Widget   /* 2 */ vectorScaleRowCol, vectorScaleScale, vectorScaleText ;
-    Widget   /* 3 */ vectorLocationCheck, vectorLocationButt[2];
-
-    Widget   exportBGMDialog ;
-    Widget   exportBGMFrame[2], exportBGMRowCol ;
-    Widget   exportBGMPane, exportBGMButt[4], exportBGMMenu ;
-    Widget   exportBGMText ;
-  } PD;
-
-
-  /* tooltips */    
-
-  struct {
-    Widget   shell; 
-    Widget   tooltip_lbl;
-  } tooltip;
-
-
-} Widgets_T;
-
-
-
-void CreateWidgets(Widgets_T *w);
-
-#endif
-
diff --git a/Motif/XColors.cpp b/Motif/XColors.cpp
deleted file mode 100644
index 655f1ad05083e399ad7038d2176d0d5da96834cb..0000000000000000000000000000000000000000
--- a/Motif/XColors.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-// $Id: XColors.cpp,v 1.2 2001-01-10 08:50:31 geuzaine Exp $
-
-/*
-  Attention. Toutes les couleurs sont crees a partir de la colormap de
-  l'interface : XCTX.gui.colormap
-*/
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "XContext.h"
-
-extern XContext_T XCTX ;
-
-#define PF_TRUECOLOR 0
-#define PF_XALLOC    1
-#define PF_8BIT      2
-
-static int pixelformat;
-static unsigned long ctable8[5][9][5];   /* Only for PF_8BIT */
-static unsigned long rtable[256], gtable[256], btable[256];  /* PF_TRUECOLOR */
-
-/*
- * Replacement for XAllocColor.  This function should never fail
- * to allocate a color.  When XAllocColor fails we return the nearest
- * matching color.
- */
-
-#define DISTANCE(r1,g1,b1,r2,g2,b2)  ( ((r2)-(r1)) * ((r2)-(r1)) + \
-    ((g2)-(g1)) * ((g2)-(g1)) + ((b2)-(b1)) * ((b2)-(b1)) )
-
-Status New_XAllocColor( Display *dpy, Colormap cmap, int cmap_size,
-                        XColor *color )
-{
-   int p, bestmatch;
-   double dist, mindist;  /* 3*2^16^2 exceeds long int precision */
-   static XColor *allcolors = NULL;
-   XColor *acptr;
-
-   if (!XAllocColor(dpy, cmap, color)) {
-      /* query whole colormap if not yet done */
-      if (!allcolors) {
-         allcolors = (XColor *) malloc( cmap_size * sizeof(XColor) );
-         for (p = 0;  p < cmap_size;  p++)
-           allcolors[p].pixel = p;
-         XQueryColors (dpy, cmap, allcolors, cmap_size);
-      }
- 
-      /* find best match */
-      bestmatch = -1;
-      mindist = 0.0;
-      p = cmap_size;
-      while (p--) {
-         acptr = allcolors + p;
-         dist = DISTANCE( (double)color->red, (double)color->green,
-                          (double)color->blue, (double)acptr->red,
-                          (double)acptr->green, (double)acptr->blue);
-         if (bestmatch < 0 || dist < mindist)
-           mindist = dist, bestmatch = p;
-      }
-      color->red   = allcolors[bestmatch].red;
-      color->green = allcolors[bestmatch].green;
-      color->blue  = allcolors[bestmatch].blue;
-      if (!XAllocColor( dpy, cmap, color )) {
-         /* this is a real hack but should be good enough */
-         color->pixel = bestmatch;
-         /*printf("code problem in lui.c\n");*/
-      }
-   }
-   return 1;
-}
-
-#undef DISTANCE
-
-
-
-
-/*
- * Given an RGB color, return the corresponding pixel value.
- * Input;  r, g, b - red, green, and blue in [0,255]
- * Return:  a pixel value
- */
-unsigned long AllocateColorInt( int r, int g, int b )
-{
-   XColor xcol;
-
-   switch (pixelformat) {
-      case PF_TRUECOLOR:
-         return rtable[r] | gtable[g] | btable[b];
-      case PF_8BIT:
-         return ctable8[r/52][g/31][b/52];
-      case PF_XALLOC:
-         xcol.red = r << 8;
-         xcol.green = g << 8;
-         xcol.blue = b << 8;
-         New_XAllocColor( XCTX.display, XCTX.gui.colormap, XCTX.gui.visual->map_entries,
-                          &xcol );
-         return xcol.pixel;
-      default:
-         Msg(GERROR, "Error in AllocateColorInt %d", pixelformat);
-         exit(0);
-   }
-   return 0;
-}
-
-
-
-
-/*
- * Allocate a color specified by red, green, and blue and return a pixel
- * value.  If the color allocation fails, the white pixel will be returned.
- * Input:  red, green, blue - values in [0,1]
- * Return:  a pixel value
- */
-unsigned long AllocateColor( float red, float green, float blue )
-{
-   return AllocateColorInt( (int) (red*255.0), (int) (green*255.0),
-                            (int) (blue*255.0) );
-}
-
-
-void XColorInitialize(void) {
-  XSetWindowAttributes attr;
-  XGCValues gcv;
-  unsigned long gc_mask;
-  static int initialized = 0;
-  static Window DummyWindow;
-
-  if (initialized)
-    return;
-  else
-    initialized = 1;
-
-#if defined(__cplusplus) || defined(c_plusplus)
-  if (XCTX.gui.visual->c_class==TrueColor || XCTX.gui.visual->c_class==DirectColor) {
-#else
-  if (XCTX.gui.visual->class==TrueColor || XCTX.gui.visual->class==DirectColor) {
-#endif
-
-    XColor xcol;
-    int i;
-    xcol.green = 0;
-    xcol.blue = 0;
-    for (i=0;i<256;i++) {
-      xcol.red = i * 0xffff / 0xff;
-      XAllocColor( XCTX.display, XCTX.gui.colormap, &xcol );
-      rtable[i] = xcol.pixel;
-    }
-    xcol.red = 0;
-    xcol.blue = 0;
-    for (i=0;i<256;i++) {
-      xcol.green = i * 0xffff / 0xff;
-      XAllocColor( XCTX.display, XCTX.gui.colormap, &xcol );
-      gtable[i] = xcol.pixel;
-    }
-    xcol.red = 0;
-    xcol.green = 0;
-    for (i=0;i<256;i++) {
-      xcol.blue = i * 0xffff / 0xff;
-      XAllocColor( XCTX.display, XCTX.gui.colormap, &xcol );
-      btable[i] = xcol.pixel;
-    }
-    pixelformat = PF_TRUECOLOR;
-  }
-
-#if defined(__cplusplus) || defined(c_plusplus)
-  else if (XCTX.gui.visual->c_class==PseudoColor) {
-#else
-  else if (XCTX.gui.visual->class==PseudoColor) {
-#endif
-    /* Note: the color allocation scheme must be the same as what's used */
-    /* in Mesa to allow colormap sharing! */
-    int r, g, b;
-    for (r=0;r<5;r++) {
-      for (g=0;g<9;g++) {
-        for (b=0;b<5;b++) {
-          XColor xcol;
-          xcol.red   = r * 65535 / 4;
-          xcol.green = g * 65535 / 8;
-          xcol.blue  = b * 65535 / 4;
-          New_XAllocColor( XCTX.display, XCTX.gui.colormap,
-                           XCTX.gui.visual->map_entries, &xcol );
-          ctable8[r][g][b] = xcol.pixel;
-        }
-      }
-    }
-    pixelformat = PF_8BIT;
-  }
-
-  else {
-    pixelformat = PF_XALLOC;
-  }
-
-
-  /* Create a dummy window.  This is needed because XCreateGC needs a
-     drawable of the type which we'll be using in LUI.  Unfortunately,
-     the RootWindow may not have the visual we want.  For example,
-     on the SGI PI, the default root window is pseudo color but we want
-     LUI to use TrueColor if it's available.  In this case using RootWindow
-     in XCreateGC will make a GC of the wrong type. */
-  attr.border_pixel = 0;
-  attr.background_pixel = 255;
-  attr.colormap = XCTX.gui.colormap;
-  DummyWindow = XCreateWindow( XCTX.display, DefaultRootWindow(XCTX.display),
-                               0, 0, 10, 10, 1,
-                               XCTX.depth, InputOutput, XCTX.gui.visual,
-                               CWBorderPixel | CWBackPixel | CWColormap,
-                               &attr );
-  
-  /*** The basic GC ***/
-  gc_mask        = GCForeground | GCBackground | GCFont | GCArcMode;
-  gcv.font       = XCTX.xfont.fixed->fid;
-  gcv.arc_mode   = ArcChord;
-  XCTX.xgc.xgc   = XCreateGC(XCTX.display, DummyWindow, gc_mask, &gcv);
-  
-  /*** Black ***/
-  XCTX.xcolor.black = AllocateColor( 0.0, 0.0, 0.0 );
-  gcv.foreground = XCTX.xcolor.black;
-  XCTX.xgc.black = XCreateGC(XCTX.display, DummyWindow, gc_mask, &gcv);
-  
-  /*** White ***/
-  XCTX.xcolor.white = AllocateColor( 1.0, 1.0, 1.0 );
-  gcv.foreground = XCTX.xcolor.white;
-  XCTX.xgc.white = XCreateGC(XCTX.display, DummyWindow, gc_mask, &gcv);
-  
-  /*** Red (black on monochrome) ***/
-  XCTX.xcolor.red = AllocateColor( 1.0, 0.0, 0.0 );
-  if (XCTX.xcolor.red == XCTX.xcolor.white) {
-    XCTX.xcolor.red = XCTX.xcolor.black;
-  }
-  gcv.foreground = XCTX.xcolor.red;
-  XCTX.xgc.red  = XCreateGC(XCTX.display, DummyWindow, gc_mask, &gcv);
-  
-  /*** Green ***/
-  XCTX.xcolor.green = AllocateColor( 0.0, 1.0, 0.0 );
-  gcv.foreground = XCTX.xcolor.green;
-  XCTX.xgc.green = XCreateGC( XCTX.display, DummyWindow, gc_mask, &gcv );
-  
-  /*** Blue ***/
-  XCTX.xcolor.blue = AllocateColor( 0.0, 0.5, 1.0 );
-  gcv.foreground = XCTX.xcolor.blue;
-  XCTX.xgc.blue = XCreateGC( XCTX.display, DummyWindow, gc_mask, &gcv );
-
-}
-
diff --git a/Motif/XColors.h b/Motif/XColors.h
deleted file mode 100644
index 2a8088dd489eac01fc35595778d51ef58431e4f4..0000000000000000000000000000000000000000
--- a/Motif/XColors.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef _XCOLORS_H_
-#define _XCOLORS_H_
-
-void XColorInitialize(void);
-unsigned long AllocateColorInt( int r, int g, int b );
-unsigned long AllocateColor( float red, float green, float blue );
-
-#endif
-
diff --git a/Motif/XContext.h b/Motif/XContext.h
deleted file mode 100644
index 9ce7d6cdc13a9f9142a877322971771f00ba5c3a..0000000000000000000000000000000000000000
--- a/Motif/XContext.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _XCONTEXT_H_
-#define _XCONTEXT_H_
-
-/* 
-   X/GLX context
-*/
-
-typedef struct {
-  Display       *display;       /* the X display */
-  int            scrnum, depth; /* the X screen number and depth */
-  XtAppContext   AppContext;
-
-  struct {
-    XVisualInfo *visinfo ;
-    GLXContext   context ;
-    Colormap     colormap ;    
-  } glw ;
-
-  struct {
-    XVisualInfo *visinfo ;
-    GLXContext   context ;
-    Colormap     colormap ;    
-  } glo ;
-
-  struct {
-    Visual     *visual ;
-    Colormap    colormap ;
-  } gui ;
-
-  struct {
-    XFontStruct *helve, *fixed ;
-    int          helve_h, helve_a, helve_w ; 
-    int          fixed_h, fixed_a, fixed_w ; 
-  } xfont ;
-
-  struct {
-    unsigned long  black, white ;
-    unsigned long  red, green, blue ;
-    unsigned long  ovblack, ovwhite ;
-  } xcolor ;
-
-  struct {
-    GC  xgc;
-    GC  black, white ;
-    GC  red, green, blue ;
-  } xgc ;
-
-} XContext_T ;
-
-#define EV_MASK  KeyPressMask|KeyReleaseMask|\
-                 ButtonPressMask|ButtonReleaseMask|ButtonMotionMask|\
-                 PointerMotionMask|ExposureMask|ResizeRedirectMask|\
-                 EnterWindowMask|LeaveWindowMask|ShiftMask|ControlMask|Mod1Mask
-
-
-#endif
diff --git a/Motif/XCursor.cpp b/Motif/XCursor.cpp
deleted file mode 100644
index e138d6f84b0b2707efb79e2e653af18c5e4742d4..0000000000000000000000000000000000000000
--- a/Motif/XCursor.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// $Id: XCursor.cpp,v 1.1 2001-01-08 08:20:11 geuzaine Exp $
-
-#include <X11/cursorfont.h>
-
-#include "xcontext.h"
-
-extern XContext_T XCTX ;
-
-#define MAIN_CURSOR     0 
-#define DIAL_CURSOR     1
-#define DIAL_CW_CURSOR  2
-#define DIAL_CCW_CURSOR 3
-#define DIAL_RES_CURSOR 4
-#define QUESTION_CURSOR 5
-#define DOWN_CURSOR     6
-#define UP_CURSOR       7
-#define UP_DOWN_CURSOR  8
-#define CLOCK_CURSOR    9
-#define PENCIL_CURSOR  10
-#define ARROW_HAND_CURSOR  11
-
-static Cursor CursorTable[32];
-
-void SetCursor(Window window, int cursor){
-  static int init = 0;
-
-  if (!init) {
-    init = 1;
-    CursorTable[MAIN_CURSOR]      = XCreateFontCursor(XCTX.display,XC_top_left_arrow);
-    CursorTable[DIAL_CURSOR]      = XCreateFontCursor(XCTX.display,XC_draft_small);
-    CursorTable[DIAL_CW_CURSOR]   = XCreateFontCursor(XCTX.display,XC_exchange);
-    CursorTable[DIAL_CCW_CURSOR]  = XCreateFontCursor(XCTX.display,XC_exchange);
-    CursorTable[DIAL_RES_CURSOR]  = XCreateFontCursor(XCTX.display,XC_circle);
-    CursorTable[QUESTION_CURSOR]  = XCreateFontCursor(XCTX.display,XC_question_arrow);
-    CursorTable[DOWN_CURSOR]      = XCreateFontCursor(XCTX.display,XC_sb_down_arrow);
-    CursorTable[UP_CURSOR]        = XCreateFontCursor(XCTX.display,XC_sb_up_arrow);
-    CursorTable[UP_DOWN_CURSOR]   = XCreateFontCursor(XCTX.display,XC_sb_v_double_arrow);
-    CursorTable[CLOCK_CURSOR]     = XCreateFontCursor(XCTX.display,XC_watch);
-    CursorTable[PENCIL_CURSOR]    = XCreateFontCursor(XCTX.display,XC_pencil);
-    CursorTable[ARROW_HAND_CURSOR]= XCreateFontCursor(XCTX.display,XC_draft_large);
-  }
-  
-  XDefineCursor(XCTX.display, window, CursorTable[cursor]);
-}
-
diff --git a/Motif/XRessources.h b/Motif/XRessources.h
deleted file mode 100644
index 0901139af98da9b585249913fbbe4651b30b2c58..0000000000000000000000000000000000000000
--- a/Motif/XRessources.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* 
-   Les resources ci-dessous sont prises en compte par defaut. Toutre 
-   resource definie dans ~/.gmshrc ou dans APP_DEFAULTS/.gmshrc est 
-   prioritaire
-
-   Palette I-DEAS   R   G   B 
-   background      42  71  94 
-   foreground     255 232 148 
-   highlight       42  71  95 
-   topshadow       84 127 158 
-   bottomshadow     8  12  28 
-
-   Palette netscape   
-   background              gray70
-   foreground              black
-   highlightColor          gray71
-   XmTextField*background  MistyRose3
-   XmList*background       MistyRose3
-   ArrowBack*foreground    MistyRose3
-*/
-
-String FallbackResources[] = {
-
-  /* couleurs */
-  "gmshGW*background: Grey75",
-  "gmshGW*borderColor: Grey75",
-  "gmshGW*foreground: Black",
-  "gmshGW*highlightColor: Grey76",
-  
-  "gmshMW*background: Grey75",
-  "gmshMW*borderColor: Grey75",
-  "gmshMW*foreground: Black",
-  "gmshMW*XmText*background: White",
-  "gmshMW*XmText*foreground: Black",
-  "gmshMW*XmTextField*background: White",
-  "gmshMW*XmList*background: White",
-  "gmshMW*selectColor: Yellow",
-  "gmshMW*highlightColor: DarkOrchid",
-  
-  "gmshCW*background: Grey75",
-  "gmshCW*foreground: Black",
-  "gmshCW*borderColor: Gray75",
-  "gmshCW*XmTextField*background: Gray75",
-  "gmshCW*XmList*background: Gray75",
-  "gmshCW*highlightColor: Grey76",
-
-  /* fontes */
-  "*fontList: -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*",
-  "*XmTextField*fontList:  -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*",
-  "*XmList*fontList:  -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*",
-  "gmshMW*HDkeysText*fontList: fixed",
-  "gmshMW*HDkeysText*XmPushButton*fontList: -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*",
-  "gmshMW*HDaboutDialog*fontList: fixed",
-
-  /* geometrie */
-  //"gmshGW*geometry: 700x525+20+30", Dont't force the dimension this way !!!
-  "gmshGW*geometry: +20+30",
-  "gmshMW*geometry: x420+800+80",
-  "gmshCW*geometry: 440x130+30+570",
-
-  /* sizes -> compact layout */
-
-  "*XmCascadeButton*marginWidth: 2",
-
-  NULL };
-
-/*
-  *toolbar*XmPushButton.baseTranslations: #override\n\
-  : CustomShadows(on) Arm()\n\
-  :  CustomShadows(on) Enter()\n\
-  :  CustomShadows(off) Leave()\n\
-  : MapCheck()
-
-  *toolbar*XmToggleButton.baseTranslations: #override\n\
-  : CustomShadows(on) Arm()\n\
-  : Select() Disarm() CustomShadows(check)\n\
-  :  CustomShadows(on) Enter()\n\
-  :  CustomShadows(off) Leave()\n\
-  : MapCheck()
-  */
diff --git a/Motif/XStatic.h b/Motif/XStatic.h
deleted file mode 100644
index ad1ecb04947395e8fe9dcbb1a8d78f0e6f701856..0000000000000000000000000000000000000000
--- a/Motif/XStatic.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef _XSTATIC_H_
-#define _XSTATIC_H_
-
-/* Fenetre OpenGL principale : visual RGBA, simple ou double buffer */
-
-int glw_attrib_sb[] = { 
-  GLX_RGBA, 
-  GLX_DEPTH_SIZE, 16, 
-  GLX_RED_SIZE, 1, 
-  GLX_GREEN_SIZE, 1, 
-  GLX_BLUE_SIZE, 1,
-  None };
-
-int glw_attrib_db[] = { 
-  GLX_RGBA, 
-  GLX_DOUBLEBUFFER, 
-  GLX_DEPTH_SIZE, 16, 
-  GLX_RED_SIZE, 1, 
-  GLX_GREEN_SIZE, 1, 
-  GLX_BLUE_SIZE, 1,
-  None };
-
-/* Fenetre OpenGL overlay : visual INDEXE, simple buffer */
-
-int glo_attrib[] = { GLX_LEVEL, 1, None };
-
-/* variables globales */
-
-XContext_T  XCTX ;
-Widgets_T   WID ;
-Pixmaps_T   PIX ;
-
-#endif
diff --git a/Parallel/Makefile b/Parallel/Makefile
deleted file mode 100644
index 276a697e4d52c26c23b411c9b4bef1e3dde5385a..0000000000000000000000000000000000000000
--- a/Parallel/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-# $Id: Makefile,v 1.3 2001-08-13 07:19:02 geuzaine Exp $
-#
-# Makefile for "libParallel.a"
-#
-
-.IGNORE:
-AR       = ar ruvs
-RM       = rm
-RANLIB   = ranlib
-LIB      = ../lib/libParallel.a
-
-C_FLAGS       = -g
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) -I/usr/local/mpich/latest/include/
-
-SRC = ParUtil.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
diff --git a/Parallel/ParUtil.cpp b/Parallel/ParUtil.cpp
deleted file mode 100644
index ab24d15e2f10426eae4e3b2f3ad2cfae29d89469..0000000000000000000000000000000000000000
--- a/Parallel/ParUtil.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ParUtil.h"
-#ifdef PARALLEL
-#include "mpi.h"
-#else
-#include <sys/time.h>
-#endif
-
-ParUtil* ParUtil::Instance()
-{
-  if(!instance)
-    {
-      instance = new ParUtil;
-    }
-  return instance;
-}
-
-ParUtil::~ParUtil() 
-{
-}
-
-ParUtil::ParUtil() 
-{
-}
-
-void ParUtil::init(int &argc, char **&argv) {
-
-#ifdef PARALLEL
-  int namelen;
-  char name[1024];
-  MPI_Init(&argc, &argv);
-
-  MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
-  MPI_Comm_size(MPI_COMM_WORLD, &mysize);
-  
-  MPI_Errhandler_set(MPI_COMM_WORLD,MPI_ERRORS_RETURN);
-  MPI_Get_processor_name(name,&namelen);
-  procName = new char[namelen+1];
-  strcpy(procName,name);
-#endif
-}
-
-double ParUtil::wTime() const
-{
-
-#ifdef PARALLEL
-  return MPI_Wtime(); 
-#else
-  struct timeval tp;
-  struct timezone tzp;
-  double timeval;
-  
-  gettimeofday(&tp,&tzp);
-  
-  timeval = (double) tp.tv_sec;
-  timeval = timeval + (double) ((double) .000001 * (double) tp.tv_usec);
-  
-  return(timeval);
-#endif
-}
-
-void ParUtil::processorName(char *name) const
-{
-#ifdef PARALLEL
-  strcpy(name,procName);
-#else
-  strcpy(name,"localhost");
-#endif
-}
-
-void ParUtil::Abort()
-{
-#ifdef PARALLEL
-  MPI_Abort(MPI_COMM_WORLD, 1);
-#else
-  abort();
-#endif
-}
-
-void ParUtil::Exit()
-{
-#ifdef PARALLEL
-  MPI_Finalize();
-#else
-  exit(1);
-#endif
-}
-
-void ParUtil::Barrier(int line, const char *fn)
-{
-#ifdef PARALLEL
-  MPI_Barrier(MPI_COMM_WORLD);
-#endif
-}
-
-ParUtil* ParUtil::instance = 0;
-
diff --git a/Parallel/ParUtil.h b/Parallel/ParUtil.h
deleted file mode 100644
index dee5c4a12cef1f385327f38cafa1208d900ae4fe..0000000000000000000000000000000000000000
--- a/Parallel/ParUtil.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef _H_ParUtil
-#define _H_ParUtil
-#include <stdio.h>
-
-/**
-   ParUtil is a Singleton. It gives some
-   general services for parallel implementation.
-*/
-
-class ParUtil {
-  ParUtil();
-  ~ParUtil();
-public:
-  /// returne the only instance
-  static ParUtil* Instance();
-  /// initialization, needed for mpi and autopack
-  void init(int &argc, char **&argv);
-  /// adds a barrier
-  void Barrier(int, const char*);
-  /// compute wall time
-  void Exit();
-  /// compute wall time
-  double wTime () const;
-  /// gets the processor name
-  void processorName(char *name) const;
-  /// abort a calculation
-  void Abort();
-#ifdef PARALLEL
-  inline int rank() { return myrank; }
-  inline int size() { return mysize; }
-  inline int master() { return myrank==0; }
-#else
-  /// gets the processor id
-  inline int rank() { return 0; }
-  /// gets the number of processors
-  inline int size() { return 1; }
-  /// tells if it's processor 0
-  inline int master() { return 1; }
-#endif
-private:
-  static ParUtil *instance;
-  char *procName;
-#ifdef PARALLEL
-  int myrank;
-  int mysize;
-#endif
-};
-
-#endif
-
-
-
-
-
-
diff --git a/Parser/FunctionManager.cpp b/Parser/FunctionManager.cpp
deleted file mode 100644
index 681c4f961eb547b11b388164330614616c90b734..0000000000000000000000000000000000000000
--- a/Parser/FunctionManager.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// $Id: FunctionManager.cpp,v 1.11 2001-07-26 18:47:59 remacle Exp $
-
-#include <map>
-#include <stdio.h>
-#include <stack>
-#include "FunctionManager.h"
-
-using namespace std;
-
-struct ltstr
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return strcmp(s1, s2) < 0;
-  }
-};
-
-class File_Position 
-{
-  public :
-    int lineno;
-    fpos_t position;
-    FILE *file;
-};
-
-// Pour utiliser un namespace global sur SGI, il faut compiler avec
-// -LANG:std, et ajouter "use namespace std;". Dans tous les cas, il
-// FAUT creer les librairies avec 'CC -ar', et pas avec 'ar'.
-
-class mystack
-{
-public:
-  stack<File_Position> s;
-};
-class mymap
-{
-public :
-  map<char*,File_Position,ltstr> m;
-};
-
-FunctionManager *FunctionManager::instance = 0;
-
-FunctionManager::FunctionManager()
-{
-  functions = new mymap;
-  calls = new mystack;
-}
-
-FunctionManager* FunctionManager::Instance()
-{
-  if(!instance)
-    {
-      instance = new FunctionManager;
-    }
-  return instance;
-}
-
-int FunctionManager::enterFunction(char *name, FILE **f, int &lno) const
-{
-  if(functions->m.find(name) == functions->m.end())return 0;
-  File_Position fpold;
-  fpold.lineno = lno;
-  fpold.file = *f;
-  fgetpos(fpold.file,&fpold.position);
-  calls->s.push(fpold);
-  File_Position fp = (functions->m)[name];
-  fsetpos(fp.file,&fp.position);
-  *f = fp.file;
-  lno = fp.lineno;
-  return 1;
-}
-
-int FunctionManager::leaveFunction(FILE **f,int &lno)
-{
-  if(!calls->s.size())return 0;
-  File_Position fp;
-  fp = calls->s.top();
-  calls->s.pop();
-  fsetpos(fp.file,&fp.position);
-  *f = fp.file;
-  lno = fp.lineno;
-  return 1;
-}
-
-int FunctionManager::createFunction(char *name, FILE *f, int lno)
-{
-  File_Position fp;
-  fp.file = f;
-  fp.lineno = lno;
-  fgetpos(fp.file,&fp.position);
-  (functions->m)[name] = fp;
-  return 1;
-}
-
-
-
-
diff --git a/Parser/FunctionManager.h b/Parser/FunctionManager.h
deleted file mode 100644
index 0e82deb1bb8a54201d87f60a51bae01d1e83195c..0000000000000000000000000000000000000000
--- a/Parser/FunctionManager.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _FUNCTION_MANAGER_H_
-#define _FUNCTION_MANAGER_H_
-
-class mystack;
-class mymap;
-#include <stdio.h>
-/*
-  Singleton, one function manager for 
-  all parsers. 
-*/
-
-class FunctionManager
-{
-    mymap *functions;
-    mystack *calls;  
-    FunctionManager ();
-    static FunctionManager *instance;
-  public :
-    static FunctionManager* Instance();
-    int enterFunction (char *name, FILE **f, int &) const;
-    int createFunction  (char *name, FILE *f, int);
-    int leaveFunction (FILE **f, int &);
-};
-
-#endif
diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
deleted file mode 100644
index a4424a10a660ff92f7855091737f10dc0aa3d096..0000000000000000000000000000000000000000
--- a/Parser/Gmsh.l
+++ /dev/null
@@ -1,374 +0,0 @@
-%{
-
-// $Id: Gmsh.l,v 1.35 2001-08-11 23:28:33 geuzaine Exp $
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Gmsh.tab.cpp.h"
-
-char   TmpString[1024];
-int    yywhere = INFILE;
-int    yylineno = 1;
-
-void   parsestring(char endchar);
-char  *strsave(char *ptr);
-void   skipcomments(void);
-void   skipline(void);
-
-#define YY_ALWAYS_INTERACTIVE 1
-
-#define YY_INPUT(buf,result,max_size)					\
-   if ( yy_current_buffer->yy_is_interactive )				\
-     {									\
-       int c = '*', n;							\
-       for ( n = 0; n < max_size &&					\
-	       (c = getc( yyin )) != EOF && c != '\n'; ++n )		\
-	 buf[n] = (char) c;						\
-       if ( c == '\n' ){						\
-	 buf[n++] = (char) c;						\
-	 yylineno++;							\
-       }								\
-       if ( c == EOF && ferror( yyin ) )				\
-	 YY_FATAL_ERROR( "input in flex scanner failed" );		\
-       result = n;							\
-     }									\
-   else if ( ((result = fread( buf, 1, max_size, yyin )) == 0)		\
-	     && ferror( yyin ) )					\
-     YY_FATAL_ERROR( "input in flex scanner failed" );
-
-%}
-
-alpha	[a-zA-Z\_]
-dieze	[\#]
-special	[\.]
-digit	[0-9]
-exp	[Ee][-+]?{digit}+
-string	{alpha}({alpha}|{digit})*
-stepid  {dieze}({digit})*
-
-%e       2000
-%p       7000
-%n       2000
-%k       1500
-%a       7000
-%o       7000
-
-%%
-
-[\ \t\n\r\f]		/* none */ ;
-";"                     return tEND;
-"/*"			skipcomments();
-"//"			skipline();
-"\""			{parsestring('\"'); return tBIGSTR;}
-"\'"			{parsestring('\''); return tBIGSTR;}
-"newreg"		{yylval.d = NEWREG(); return tDOUBLE;}
-"newp"  		{yylval.d = NEWPOINT(); return tDOUBLE;}
-"="                     return tAFFECT;
-"+="                    return tAFFECTPLUS ;
-"-="                    return tAFFECTMINUS ;
-"*="                    return tAFFECTTIMES ;
-"/="                    return tAFFECTDIVIDE ;
-":"                     return tDOTS;
-"..."                   return tDOTS;
-"/\\"                   return tCROSSPRODUCT ;
-"||"                    return tOR ;
-"&&"                    return tAND ;
-"++"                    return tPLUSPLUS ;
-"--"                    return tMINUSMINUS ;
-"=="                    return tEQUAL ;
-"!="                    return tNOTEQUAL ;
-"~="                    return tAPPROXEQUAL ;
-"<="                    return tLESSOREQUAL ;
-">="                    return tGREATEROREQUAL ;
-
-Acos                    return tAcos ;
-ArcCos                  return tAcos ;
-Asin                    return tAsin;
-ArcSin                  return tAsin;
-Atan                    return tAtan ;
-ArcTan                  return tAtan ;
-Atan2                   return tAtan2 ;
-ArcTan2                 return tAtan2 ;
-Attractor		return tAttractor;
-
-Bump                    return tBump;
-BSpline			return tBSpline;
-Bounds			return tBounds;
-
-Ceil                    return tCeil ;
-Cosh                    return tCosh ;
-Cos                     return tCos ;
-Characteristic          return tCharacteristic;
-Circle                  return tCircle;
-Coherence               return tCoherence;
-Complex                 return tComplex;
-Color                   return tColor;
-ColorTable              return tColorTable;
-CatmullRom		return tSpline;
-Call                    return tCall;
-
-Delete                  return tDelete;
-Dilate                  return tDilate;
-Duplicata               return tDuplicata;
-Draw                    return tDraw;
-
-Exp                     return tExp ;
-Ellipsis                return tEllipsis;
-Extrude                 return tExtrude;
-Elliptic		return tElliptic;
-ELLIPSE                 return tELLIPSE;
-EndFor                  return tEndFor;
-EndIf                   return tEndIf;
-Exit                    return tExit;
-
-Fabs                    return tFabs ;
-Floor                   return tFloor ;
-Fmod                    return tFmod ;
-For                     return tFor;
-Function                return tFunction;
-
-Hypot                   return tHypot ;
-
-In                      return tIn;
-If                      return tIf;
-Intersect               return tIntersect;
-
-Knots			return tKnots;
-
-Length                  return tLength;
-Line                    return tLine;
-Loop                    return tLoop;
-Log                     return tLog ;
-Log10                   return tLog10 ;
-Layers                  return tLayers;
-
-Modulo                  return tModulo ;
-Meshes                  return tMesh;
-MPI_Rank                return tMPI_Rank;
-MPI_Size                return tMPI_Size;
-
-Nurbs			return tNurbs;
-
-Order			return tOrder;
-
-Physical                return tPhysical;
-Pi                      return tPi;
-Plane                   return tPlane;
-Point                   return tPoint;
-Power                   return tProgression;
-Progression             return tProgression;
-Parametric		return tParametric;
-Printf                  return tPrintf;
-Plugin                  return tPlugin;
-
-Recombine               return tRecombine;
-Rotate                  return tRotate;
-Ruled                   return tRuled;
-Rand                    return tRand;
-Return                  return tReturn;
-
-Sqrt                    return tSqrt ;
-Sin                     return tSin ;
-Sinh                    return tSinh ;
-Spline                  return tSpline;
-Surface                 return tSurface;
-Symmetry                return tSymmetry;
-Sprintf                 return tSprintf ;
-StrCat                  return tStrCat ;
-StrPrefix               return tStrPrefix ;
-
-Transfinite             return tTransfinite;
-Translate               return tTranslate;
-Tanh                    return tTanh ;
-Tan                     return tTan;
-Trimmed			return tTrimmed;
-
-Using                   return tUsing;
-
-Volume                  return tVolume;
-
-With			return tWith;
-
-SS                      return tScalarTetrahedron;
-VS                      return tVectorTetrahedron;
-TS                      return tTensorTetrahedron;
-ST                      return tScalarTriangle;
-VT                      return tVectorTriangle;
-TT                      return tTensorTriangle;
-SL                      return tScalarLine;
-VL                      return tVectorLine;
-TL                      return tTensorLine;
-SP                      return tScalarPoint;
-VP                      return tVectorPoint;
-TP                      return tTensorPoint;
-
-
-CARTESIAN_POINT         	   return tCARTESIAN_POINT;
-B_SPLINE_SURFACE_WITH_KNOTS        return tB_SPLINE_SURFACE_WITH_KNOTS;
-B_SPLINE_CURVE_WITH_KNOTS          return tB_SPLINE_CURVE_WITH_KNOTS;
-.UNSPECIFIED.                      return tUNSPECIFIED;
-.CONTINUOUS.                       return tCONTINUOUS;
-".F."                              return tFALSE;
-".T."                              return tTRUE;
-".U."				   return tU;
-".V."				   return tV;
-ORIENTED_EDGE                      return tORIENTED_EDGE;
-EDGE_CURVE			   return tEDGE_CURVE;
-EDGE_LOOP 			   return tEDGE_LOOP;
-VERTEX_POINT			   return tVERTEX_POINT;
-FACE_OUTER_BOUND     		   return tFACE_OUTER_BOUND;
-FACE_BOUND		     	   return tFACE_BOUND;
-ADVANCED_FACE			   return tADVANCED_FACE;
-LINE				   return tLine;
-VECTOR				   return tVECTOR;
-DIRECTION			   return tDIRECTION;
-AXIS2_PLACEMENT_3D 		   return tAXIS2_PLACEMENT_3D;
-PLANE				   return tPLANE;
-HEADER                             return tHEADER;
-DATA                               return tDATA;
-FILE_SCHEMA                        return tFILE_SCHEMA;
-FILE_NAME	                   return tFILE_NAME;
-FILE_DESCRIPTION                   return tFILE_DESCRIPTION;
-"ISO-10303-21"			   return tISO;
-"END-ISO-10303-21"		   return tENDISO;
-ENDSEC				   return tENDSEC;
-CLOSED_SHELL			   return tCLOSED_SHELL;
-ADVANCED_BREP_SHAPE_REPRESENTATION  return  tADVANCED_BREP_SHAPE_REPRESENTATION;
-MANIFOLD_SOLID_BREP		   return tMANIFOLD_SOLID_BREP;
-CYLINDRICAL_SURFACE		   return tCYLINDRICAL_SURFACE;
-CONICAL_SURFACE			   return tCONICAL_SURFACE;
-TOROIDAL_SURFACE		   return tTOROIDAL_SURFACE;
-CIRCLE				   return tCIRCLE;
-TRIMMED_CURVE			   return tTRIMMED_CURVE;
-GEOMETRIC_SET			   return tGEOMETRIC_SET;
-COMPOSITE_CURVE_SEGMENT		   return tCOMPOSITE_CURVE_SEGMENT;
-COMPOSITE_CURVE			   return tCOMPOSITE_CURVE;
-PRODUCT_DEFINITION                 return tPRODUCT_DEFINITION;
-PRODUCT_DEFINITION_SHAPE           return tPRODUCT_DEFINITION_SHAPE;
-SHAPE_DEFINITION_REPRESENTATION    return tSHAPE_DEFINITION_REPRESENTATION;
-
-vertex       return tVertex;
-facet        return tFacet;
-normal       return tNormal;
-outer        return tOuter;
-loop         return tLoopSTL;
-endloop      return tEndLoop;
-endfacet     return tEndFacet;
-endsolid     {skipline();return tEndSolid;}
-solid        {skipline();return tSolid;}
-
-{stepid}                {yylval.d = (double)atoi((char*)(yytext+1)); return tDOUBLE;}
-
-{digit}+ |
-{digit}+"."{digit}*({exp})? |
-{digit}*"."{digit}+({exp})? |
-{digit}+{exp}           {yylval.d = atof((char *)yytext); return tDOUBLE;}
-
-{string}		{yylval.c = strsave((char*)yytext); return tSTRING;}
-
-.                       return yytext[0];
-
-%%
-
-#undef yywrap
-
-int yywrap() {return 1;}
-
-void skipcomments(void) {
-  int c;
-
-  while (1) {
-    while ((c=yyinput()) != '*'){
-      if(c == EOF){
-        Msg(GERROR, "End of file in commented region") ;
-        return;
-      }
-    }
-    if ((c = yyinput()) == '/')
-      return;
-    unput(c);
-  }
-}
-
-void parsestring(char endchar){
-  int c, i;
-
-  c = yyinput();
-  i = 0;
-  while (c != endchar) {
-    TmpString[i++] = c;
-    c = yyinput();
-  }
-  TmpString[i++] = '\0';
-  yylval.c = strsave(TmpString);
-}
-
-char *strsave(char *ptr){
-  return((char*)strcpy((char*)malloc(strlen(ptr)+1),ptr));
-}
-
-void skipline(void){
-   while (yyinput() != '\n') ;
-}
-
-void skip_until(char *skip, char *until){
-  int i, nb_skip;
-  int l, l_skip, l_until;
-  char chars[256];
-
-  nb_skip = 0 ;
-
-  if(skip)
-    l_skip = strlen(skip);
-  else
-    l_skip = 0 ;
-
-  l_until = strlen(until);
-
-  while(1){
-    while (1){
-      chars[0] = yyinput();
-      if(chars[0] == (char)EOF){
-        Msg(GERROR, "Unexpected end of file") ;
-	return;
-      }
-      if(chars[0] == until[0]) break;
-      if(skip && chars[0] == skip[0]) break;
-    }
-
-    l = MAX(l_skip,l_until) ;
-    for(i=1 ; i<l ; i++){
-      chars[i] = yyinput();
-      if(chars[i] == (char)EOF){
-	l = i;
-	break;
-      }
-    }
-
-    if(!strncmp(chars,until,l_until)){
-      if(!nb_skip){
-	return;
-      }
-      else{
-	nb_skip--;
-      }
-    }
-    else if(skip && !strncmp(chars,skip,l_skip)){
-      nb_skip++;
-    }
-    else{
-      for(i=1;i<l-1;i++){
-	unput(chars[l-i]);
-      }
-    }
-
-  }
-}
-
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
deleted file mode 100644
index b14a2d656adb6b4cc5adbf6292dfa8eb702345e1..0000000000000000000000000000000000000000
--- a/Parser/Gmsh.tab.cpp
+++ /dev/null
@@ -1,5931 +0,0 @@
-
-/*  A Bison parser, made from Gmsh.y
-    by GNU Bison version 1.28  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tMPI_Rank	264
-#define	tMPI_Size	265
-#define	tExp	266
-#define	tLog	267
-#define	tLog10	268
-#define	tSqrt	269
-#define	tSin	270
-#define	tAsin	271
-#define	tCos	272
-#define	tAcos	273
-#define	tTan	274
-#define	tRand	275
-#define	tAtan	276
-#define	tAtan2	277
-#define	tSinh	278
-#define	tCosh	279
-#define	tTanh	280
-#define	tFabs	281
-#define	tFloor	282
-#define	tCeil	283
-#define	tFmod	284
-#define	tModulo	285
-#define	tHypot	286
-#define	tPrintf	287
-#define	tSprintf	288
-#define	tStrCat	289
-#define	tStrPrefix	290
-#define	tDraw	291
-#define	tPoint	292
-#define	tCircle	293
-#define	tEllipsis	294
-#define	tLine	295
-#define	tSurface	296
-#define	tSpline	297
-#define	tVolume	298
-#define	tCharacteristic	299
-#define	tLength	300
-#define	tParametric	301
-#define	tElliptic	302
-#define	tPlane	303
-#define	tRuled	304
-#define	tTransfinite	305
-#define	tComplex	306
-#define	tPhysical	307
-#define	tUsing	308
-#define	tBump	309
-#define	tProgression	310
-#define	tPlugin	311
-#define	tRotate	312
-#define	tTranslate	313
-#define	tSymmetry	314
-#define	tDilate	315
-#define	tExtrude	316
-#define	tDuplicata	317
-#define	tLoop	318
-#define	tRecombine	319
-#define	tDelete	320
-#define	tCoherence	321
-#define	tIntersect	322
-#define	tAttractor	323
-#define	tLayers	324
-#define	tScalarTetrahedron	325
-#define	tVectorTetrahedron	326
-#define	tTensorTetrahedron	327
-#define	tScalarTriangle	328
-#define	tVectorTriangle	329
-#define	tTensorTriangle	330
-#define	tScalarLine	331
-#define	tVectorLine	332
-#define	tTensorLine	333
-#define	tScalarPoint	334
-#define	tVectorPoint	335
-#define	tTensorPoint	336
-#define	tBSpline	337
-#define	tNurbs	338
-#define	tOrder	339
-#define	tWith	340
-#define	tBounds	341
-#define	tKnots	342
-#define	tColor	343
-#define	tColorTable	344
-#define	tFor	345
-#define	tIn	346
-#define	tEndFor	347
-#define	tIf	348
-#define	tEndIf	349
-#define	tExit	350
-#define	tReturn	351
-#define	tCall	352
-#define	tFunction	353
-#define	tMesh	354
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	355
-#define	tB_SPLINE_CURVE_WITH_KNOTS	356
-#define	tCARTESIAN_POINT	357
-#define	tTRUE	358
-#define	tFALSE	359
-#define	tUNSPECIFIED	360
-#define	tU	361
-#define	tV	362
-#define	tEDGE_CURVE	363
-#define	tVERTEX_POINT	364
-#define	tORIENTED_EDGE	365
-#define	tPLANE	366
-#define	tFACE_OUTER_BOUND	367
-#define	tEDGE_LOOP	368
-#define	tADVANCED_FACE	369
-#define	tVECTOR	370
-#define	tDIRECTION	371
-#define	tAXIS2_PLACEMENT_3D	372
-#define	tISO	373
-#define	tENDISO	374
-#define	tENDSEC	375
-#define	tDATA	376
-#define	tHEADER	377
-#define	tFILE_DESCRIPTION	378
-#define	tFILE_SCHEMA	379
-#define	tFILE_NAME	380
-#define	tMANIFOLD_SOLID_BREP	381
-#define	tCLOSED_SHELL	382
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	383
-#define	tFACE_BOUND	384
-#define	tCYLINDRICAL_SURFACE	385
-#define	tCONICAL_SURFACE	386
-#define	tCIRCLE	387
-#define	tTRIMMED_CURVE	388
-#define	tGEOMETRIC_SET	389
-#define	tCOMPOSITE_CURVE_SEGMENT	390
-#define	tCONTINUOUS	391
-#define	tCOMPOSITE_CURVE	392
-#define	tTOROIDAL_SURFACE	393
-#define	tPRODUCT_DEFINITION	394
-#define	tPRODUCT_DEFINITION_SHAPE	395
-#define	tSHAPE_DEFINITION_REPRESENTATION	396
-#define	tELLIPSE	397
-#define	tTrimmed	398
-#define	tSolid	399
-#define	tEndSolid	400
-#define	tVertex	401
-#define	tFacet	402
-#define	tNormal	403
-#define	tOuter	404
-#define	tLoopSTL	405
-#define	tEndLoop	406
-#define	tEndFacet	407
-#define	tAFFECTPLUS	408
-#define	tAFFECTMINUS	409
-#define	tAFFECTTIMES	410
-#define	tAFFECTDIVIDE	411
-#define	tOR	412
-#define	tAND	413
-#define	tEQUAL	414
-#define	tNOTEQUAL	415
-#define	tAPPROXEQUAL	416
-#define	tLESSOREQUAL	417
-#define	tGREATEROREQUAL	418
-#define	tCROSSPRODUCT	419
-#define	tPLUSPLUS	420
-#define	tMINUSMINUS	421
-#define	UNARYPREC	422
-
-#line 1 "Gmsh.y"
- 
-
-// $Id: Gmsh.tab.cpp,v 1.106 2001-08-12 14:24:50 geuzaine Exp $
-
-  //
-  // Generaliser sprintf avec des chaines de caracteres
-  // 
-
-#include <stdarg.h>
-#ifndef _NOPLUGIN
-#include "PluginManager.h"
-#endif
-#include "ParUtil.h"
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Context.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "DataBase.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Create.h"
-#include "Views.h"
-#include "StepGeomDatabase.h"
-#include "Options.h"
-#include "Colors.h"
-#include "Parser.h"
-#include "OpenFile.h"
-#include "FunctionManager.h"
-#include "ColorTable.h"
-#include "Timer.h"
-#include "CreateFile.h"
-#include "STL.h"
-
-#ifdef __DECCXX // bug in bison
-#include <alloca.h>
-#endif
-
-List_T *Symbol_L=NULL;
-
-extern Context_T  CTX;
-extern Mesh      *THEM;
-
-static FILE          *yyinTab[MAX_OPEN_FILES];
-static int            yylinenoTab[MAX_OPEN_FILES];
-static fpos_t         yyposImbricatedLoopsTab[MAX_OPEN_FILES];
-static double         LoopControlVariablesTab[MAX_OPEN_FILES][3];
-static char*          LoopControlVariablesNameTab[MAX_OPEN_FILES];
-static char           yynameTab[MAX_OPEN_FILES][256];
-static char           tmpstring[256];
-static char           tmpstring2[256], tmpstring3[256];
-static Symbol         TheSymbol, *pSymbol;
-static Surface       *STL_Surf;
-static Shape          TheShape;
-static int            i,j,k,flag,RecursionLevel=0,ImbricatedLoop = 0;
-static int            Last_NumberOfPoints = 0;
-static double         d, *pd;
-static ExtrudeParams  extr;
-static char           *str;
-static StringXString  *pStrCat;
-static StringXNumber  *pNumCat;
-static StringXColor   *pColCat;
-static double         (*pNumOpt)(int num, int action, double value);
-static char*          (*pStrOpt)(int num, int action, char *value);
-static unsigned int   (*pColOpt)(int num, int action, unsigned int value);
-static Post_View      *View;
-
-char *strsave(char *ptr);
-void  yyerror (char *s);
-void  vyyerror (char *fmt, ...);
-void  skip_until (char *skip, char *until);
-
-#line 74 "Gmsh.y"
-typedef union {
-  char    *c;
-  int      i;
-  unsigned int u;
-  double   d;
-  double   v[5];
-  Shape    s;
-  List_T  *l;
-} YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define	YYFINAL		1542
-#define	YYFLAG		-32768
-#define	YYNTBASE	187
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 422 ? yytranslate[x] : 270)
-
-static const short yytranslate[] = {     0,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   174,     2,     2,     2,   172,     2,     2,   179,
-   180,   170,   168,   184,   169,   183,   171,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   164,
-     2,   166,   158,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   181,     2,   182,   178,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   185,     2,   186,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-   157,   159,   160,   161,   162,   163,   165,   167,   173,   175,
-   176,   177
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,     9,    11,    14,    16,    38,    40,
-    41,    44,    46,    48,    50,    53,    56,    59,    62,    65,
-    73,    79,    97,   107,   131,   163,   179,   191,   203,   219,
-   229,   243,   253,   265,   279,   289,   299,   311,   321,   333,
-   343,   355,   369,   383,   395,   409,   427,   437,   449,   461,
-   475,   487,   497,   498,   501,   503,   505,   507,   509,   511,
-   513,   515,   517,   519,   521,   523,   525,   531,   539,   546,
-   555,   556,   559,   562,   565,   568,   571,   574,   577,   580,
-   583,   586,   589,   592,   594,   598,   599,   613,   615,   619,
-   620,   634,   636,   640,   641,   655,   657,   661,   662,   682,
-   684,   688,   689,   709,   711,   715,   716,   736,   738,   742,
-   743,   769,   771,   775,   776,   802,   804,   808,   809,   835,
-   837,   841,   842,   874,   876,   880,   881,   913,   915,   919,
-   920,   952,   954,   956,   958,   960,   962,   964,   966,   971,
-   979,   989,   996,  1000,  1007,  1014,  1024,  1031,  1041,  1047,
-  1056,  1065,  1077,  1084,  1094,  1104,  1114,  1122,  1131,  1144,
-  1151,  1157,  1165,  1173,  1186,  1194,  1204,  1222,  1230,  1239,
-  1248,  1256,  1268,  1274,  1283,  1296,  1305,  1328,  1349,  1358,
-  1367,  1373,  1382,  1390,  1399,  1405,  1417,  1423,  1433,  1435,
-  1437,  1439,  1440,  1443,  1448,  1453,  1460,  1464,  1468,  1472,
-  1480,  1483,  1486,  1493,  1502,  1511,  1522,  1524,  1527,  1529,
-  1533,  1538,  1540,  1549,  1562,  1571,  1584,  1593,  1606,  1607,
-  1620,  1621,  1638,  1640,  1643,  1653,  1656,  1663,  1673,  1683,
-  1692,  1701,  1710,  1717,  1722,  1725,  1728,  1730,  1732,  1734,
-  1736,  1738,  1740,  1744,  1747,  1750,  1753,  1757,  1761,  1765,
-  1769,  1773,  1777,  1781,  1785,  1789,  1793,  1797,  1801,  1805,
-  1809,  1815,  1820,  1825,  1830,  1835,  1840,  1845,  1850,  1855,
-  1860,  1865,  1872,  1877,  1882,  1887,  1892,  1897,  1902,  1909,
-  1916,  1923,  1928,  1930,  1932,  1934,  1936,  1938,  1943,  1946,
-  1952,  1956,  1963,  1968,  1976,  1978,  1981,  1984,  1988,  1992,
-  2004,  2014,  2022,  2030,  2031,  2035,  2037,  2041,  2042,  2046,
-  2050,  2052,  2056,  2058,  2060,  2064,  2069,  2073,  2079,  2083,
-  2088,  2095,  2103,  2105,  2107,  2111,  2115,  2125,  2133,  2135,
-  2141,  2145,  2152,  2154,  2158,  2160,  2167,  2172,  2177,  2184,
-  2191
-};
-
-static const short yyrhs[] = {   190,
-     0,   189,     0,   195,     0,     1,     6,     0,     3,     0,
-   169,     3,     0,   145,     0,   148,   149,   188,   188,   188,
-   150,   151,   147,   188,   188,   188,   147,   188,   188,   188,
-   147,   188,   188,   188,   152,   153,     0,   146,     0,     0,
-   190,   191,     0,   192,     0,   194,     0,   193,     0,   119,
-     6,     0,   120,     6,     0,   122,     6,     0,   121,     6,
-     0,   123,     6,     0,   124,   179,   259,   184,     5,   180,
-     6,     0,   125,   179,   259,   180,     6,     0,   126,   179,
-     5,   184,     5,   184,   259,   184,   259,   184,     5,   184,
-     5,   184,     5,   180,     6,     0,     3,     7,   103,   179,
-     5,   184,   257,   180,     6,     0,     3,     7,   102,   179,
-     5,   184,   255,   184,   263,   184,   254,   184,   254,   184,
-   254,   184,   263,   184,   263,   184,   254,   180,     6,     0,
-     3,     7,   101,   179,     5,   184,   255,   184,   255,   184,
-   261,   184,   254,   184,   254,   184,   254,   184,   254,   184,
-   263,   184,   263,   184,   263,   184,   263,   184,   254,   180,
-     6,     0,     3,     7,   109,   179,     5,   184,     3,   184,
-     3,   184,     3,   184,   254,   180,     6,     0,     3,     7,
-   113,   179,     5,   184,     3,   184,   254,   180,     6,     0,
-     3,     7,   130,   179,     5,   184,     3,   184,   254,   180,
-     6,     0,     3,     7,   111,   179,     5,   184,   170,   184,
-   170,   184,   255,   184,   254,   180,     6,     0,     3,     7,
-   114,   179,     5,   184,   263,   180,     6,     0,     3,     7,
-   115,   179,     5,   184,   263,   184,     3,   184,   254,   180,
-     6,     0,     3,     7,   110,   179,     5,   184,     3,   180,
-     6,     0,     3,     7,   116,   179,     5,   184,     3,   184,
-   255,   180,     6,     0,     3,     7,   118,   179,     5,   184,
-     3,   184,     3,   184,     3,   180,     6,     0,     3,     7,
-   117,   179,     5,   184,   257,   180,     6,     0,     3,     7,
-   112,   179,     5,   184,     3,   180,     6,     0,     3,     7,
-    41,   179,     5,   184,     3,   184,     3,   180,     6,     0,
-     3,     7,   128,   179,     5,   184,   263,   180,     6,     0,
-     3,     7,   129,   179,     5,   184,   263,   184,     3,   180,
-     6,     0,     3,     7,   127,   179,     5,   184,     3,   180,
-     6,     0,     3,     7,   131,   179,     5,   184,     3,   184,
-   255,   180,     6,     0,     3,     7,   132,   179,     5,   184,
-     3,   184,   255,   184,   255,   180,     6,     0,     3,     7,
-   139,   179,     5,   184,     3,   184,   255,   184,   255,   180,
-     6,     0,     3,     7,   133,   179,     5,   184,     3,   184,
-   255,   180,     6,     0,     3,     7,   143,   179,     5,   184,
-     3,   184,   255,   184,   255,   180,     6,     0,     3,     7,
-   134,   179,     5,   184,     3,   184,   263,   184,   263,   184,
-   254,   184,   254,   180,     6,     0,     3,     7,   135,   179,
-     5,   184,   263,   180,     6,     0,     3,     7,   136,   179,
-   137,   184,   254,   184,     3,   180,     6,     0,     3,     7,
-   138,   179,     5,   184,   263,   184,   254,   180,     6,     0,
-     3,     7,   140,   179,     5,   184,     5,   184,     3,   184,
-     3,   180,     6,     0,     3,     7,   141,   179,     5,   184,
-     5,   184,     3,   180,     6,     0,     3,     7,   142,   179,
-     3,   184,     3,   180,     6,     0,     0,   195,   196,     0,
-   198,     0,   197,     0,   238,     0,   239,     0,   240,     0,
-   243,     0,   244,     0,   247,     0,   252,     0,   253,     0,
-   246,     0,   245,     0,    33,   179,     5,   180,     6,     0,
-    33,   179,     5,   184,   265,   180,     6,     0,     4,     5,
-   185,   199,   186,     6,     0,     4,     5,     4,   257,   185,
-   199,   186,     6,     0,     0,   199,   201,     0,   199,   204,
-     0,   199,   207,     0,   199,   210,     0,   199,   213,     0,
-   199,   216,     0,   199,   219,     0,   199,   222,     0,   199,
-   225,     0,   199,   228,     0,   199,   231,     0,   199,   234,
-     0,   255,     0,   200,   184,   255,     0,     0,    80,   179,
-   255,   184,   255,   184,   255,   180,   202,   185,   200,   186,
-     6,     0,   255,     0,   203,   184,   255,     0,     0,    81,
-   179,   255,   184,   255,   184,   255,   180,   205,   185,   203,
-   186,     6,     0,   255,     0,   206,   184,   255,     0,     0,
-    82,   179,   255,   184,   255,   184,   255,   180,   208,   185,
-   206,   186,     6,     0,   255,     0,   209,   184,   255,     0,
-     0,    77,   179,   255,   184,   255,   184,   255,   184,   255,
-   184,   255,   184,   255,   180,   211,   185,   209,   186,     6,
-     0,   255,     0,   212,   184,   255,     0,     0,    78,   179,
-   255,   184,   255,   184,   255,   184,   255,   184,   255,   184,
-   255,   180,   214,   185,   212,   186,     6,     0,   255,     0,
-   215,   184,   255,     0,     0,    79,   179,   255,   184,   255,
-   184,   255,   184,   255,   184,   255,   184,   255,   180,   217,
-   185,   215,   186,     6,     0,   255,     0,   218,   184,   255,
-     0,     0,    74,   179,   255,   184,   255,   184,   255,   184,
-   255,   184,   255,   184,   255,   184,   255,   184,   255,   184,
-   255,   180,   220,   185,   218,   186,     6,     0,   255,     0,
-   221,   184,   255,     0,     0,    75,   179,   255,   184,   255,
-   184,   255,   184,   255,   184,   255,   184,   255,   184,   255,
-   184,   255,   184,   255,   180,   223,   185,   221,   186,     6,
-     0,   255,     0,   224,   184,   255,     0,     0,    76,   179,
-   255,   184,   255,   184,   255,   184,   255,   184,   255,   184,
-   255,   184,   255,   184,   255,   184,   255,   180,   226,   185,
-   224,   186,     6,     0,   255,     0,   227,   184,   255,     0,
-     0,    71,   179,   255,   184,   255,   184,   255,   184,   255,
-   184,   255,   184,   255,   184,   255,   184,   255,   184,   255,
-   184,   255,   184,   255,   184,   255,   180,   229,   185,   227,
-   186,     6,     0,   255,     0,   230,   184,   255,     0,     0,
-    72,   179,   255,   184,   255,   184,   255,   184,   255,   184,
-   255,   184,   255,   184,   255,   184,   255,   184,   255,   184,
-   255,   184,   255,   184,   255,   180,   232,   185,   230,   186,
-     6,     0,   255,     0,   233,   184,   255,     0,     0,    73,
-   179,   255,   184,   255,   184,   255,   184,   255,   184,   255,
-   184,   255,   184,   255,   184,   255,   184,   255,   184,   255,
-   184,   255,   184,   255,   180,   235,   185,   233,   186,     6,
-     0,     7,     0,   154,     0,   155,     0,   156,     0,   157,
-     0,   175,     0,   176,     0,     4,   236,   255,     6,     0,
-     4,   181,   255,   182,   236,   255,     6,     0,     4,   181,
-   185,   265,   186,   182,   236,   263,     6,     0,     4,   181,
-   182,     7,   263,     6,     0,     4,   237,     6,     0,     4,
-   181,   255,   182,   237,     6,     0,     4,   183,     4,     7,
-   269,     6,     0,     4,   181,   255,   182,   183,     4,     7,
-   269,     6,     0,     4,   183,     4,   236,   255,     6,     0,
-     4,   181,   255,   182,   183,     4,   236,   255,     6,     0,
-     4,   183,     4,   237,     6,     0,     4,   181,   255,   182,
-   183,     4,   237,     6,     0,     4,   183,    89,   183,     4,
-     7,   266,     6,     0,     4,   181,   255,   182,   183,    89,
-   183,     4,     7,   266,     6,     0,     4,   183,    90,     7,
-   267,     6,     0,     4,   181,   255,   182,   183,    90,     7,
-   267,     6,     0,    57,   179,     4,   180,   183,     4,     7,
-   255,     6,     0,    57,   179,     4,   180,   183,     4,     7,
-   269,     6,     0,    38,   179,   255,   180,     7,   257,     6,
-     0,    53,    38,   179,   255,   180,     7,   263,     6,     0,
-    69,    38,   263,     7,   185,   255,   184,   255,   184,   255,
-   186,     6,     0,    45,    46,   263,     7,   255,     6,     0,
-    38,   185,   255,   186,     6,     0,    41,   179,   255,   180,
-     7,   263,     6,     0,    43,   179,   255,   180,     7,   263,
-     6,     0,    69,    41,   263,     7,   185,   255,   184,   255,
-   184,   255,   186,     6,     0,    39,   179,   255,   180,     7,
-   263,     6,     0,    39,   179,   255,   180,     7,   263,    49,
-   257,     6,     0,    47,   179,   255,   180,     7,   185,   255,
-   184,   255,   184,     5,   184,     5,   184,     5,   186,     6,
-     0,    40,   179,   255,   180,     7,   263,     6,     0,    53,
-    41,   179,   255,   180,     7,   263,     6,     0,    41,    64,
-   179,   255,   180,     7,   263,     6,     0,    83,   179,   255,
-   180,     7,   263,     6,     0,    84,   179,   255,   180,     7,
-   263,    88,   263,    85,   255,     6,     0,    41,   185,   255,
-   186,     6,     0,    49,    42,   179,   255,   180,     7,   263,
-     6,     0,   144,    42,   179,   255,   180,     7,   185,   255,
-   184,   263,   186,     6,     0,    50,    42,   179,   255,   180,
-     7,   263,     6,     0,    84,    42,    86,    87,   179,   255,
-   180,     7,   261,    88,   185,   263,   184,   263,   186,    85,
-   185,   255,   184,   255,   186,     6,     0,    84,    42,   179,
-   255,   180,     7,   261,    88,   185,   263,   184,   263,   186,
-    85,   185,   255,   184,   255,   186,     6,     0,    53,    42,
-   179,   255,   180,     7,   263,     6,     0,    42,    64,   179,
-   255,   180,     7,   263,     6,     0,    42,   185,   255,   186,
-     6,     0,    52,    44,   179,   255,   180,     7,   263,     6,
-     0,    44,   179,   255,   180,     7,   263,     6,     0,    53,
-    44,   179,   255,   180,     7,   263,     6,     0,    59,   257,
-   185,   241,   186,     0,    58,   185,   257,   184,   257,   184,
-   255,   186,   185,   241,   186,     0,    60,   257,   185,   241,
-   186,     0,    61,   185,   257,   184,   255,   186,   185,   241,
-   186,     0,   243,     0,   242,     0,   240,     0,     0,   242,
-   239,     0,    63,   185,   242,   186,     0,    66,   185,   242,
-   186,     0,    66,     4,   181,   255,   182,     6,     0,    66,
-   100,     6,     0,     4,   269,     6,     0,     4,   255,     6,
-     0,    57,   179,     4,   180,   183,     4,     6,     0,    96,
-     6,     0,    37,     6,     0,    91,   179,   255,     8,   255,
-   180,     0,    91,   179,   255,     8,   255,     8,   255,   180,
-     0,    91,     4,    92,   185,   255,     8,   255,   186,     0,
-    91,     4,    92,   185,   255,     8,   255,     8,   255,   186,
-     0,    93,     0,    99,     4,     0,    97,     0,    98,     4,
-     6,     0,    94,   179,   255,   180,     0,    95,     0,    62,
-    38,   185,   255,   184,   257,   186,     6,     0,    62,    38,
-   185,   255,   184,   257,   184,   257,   184,   255,   186,     6,
-     0,    62,    41,   185,   255,   184,   257,   186,     6,     0,
-    62,    41,   185,   255,   184,   257,   184,   257,   184,   255,
-   186,     6,     0,    62,    42,   185,   255,   184,   257,   186,
-     6,     0,    62,    42,   185,   255,   184,   257,   184,   257,
-   184,   255,   186,     6,     0,     0,    62,    42,   185,   255,
-   184,   257,   186,   248,   185,   250,   186,     6,     0,     0,
-    62,    42,   185,   255,   184,   257,   184,   257,   184,   255,
-   186,   249,   185,   250,   186,     6,     0,   251,     0,   250,
-   251,     0,    70,   185,   263,   184,   263,   184,   263,   186,
-     6,     0,    65,     6,     0,    51,    41,   263,     7,   255,
-     6,     0,    51,    41,   263,     7,   255,    54,    56,   255,
-     6,     0,    51,    41,   263,     7,   255,    54,    55,   255,
-     6,     0,    51,    42,   185,   255,   186,     7,   263,     6,
-     0,    48,    42,   185,   255,   186,     7,   263,     6,     0,
-    51,    44,   185,   255,   186,     7,   263,     6,     0,    65,
-    42,   263,     7,   255,     6,     0,    65,    42,   263,     6,
-     0,    67,     6,     0,    68,     6,     0,   104,     0,   105,
-     0,   106,     0,   107,     0,   108,     0,   256,     0,   179,
-   255,   180,     0,   169,   255,     0,   168,   255,     0,   174,
-   255,     0,   255,   169,   255,     0,   255,   168,   255,     0,
-   255,   170,   255,     0,   255,   171,   255,     0,   255,   172,
-   255,     0,   255,   178,   255,     0,   255,   164,   255,     0,
-   255,   166,   255,     0,   255,   165,   255,     0,   255,   167,
-   255,     0,   255,   161,   255,     0,   255,   162,   255,     0,
-   255,   160,   255,     0,   255,   159,   255,     0,   255,   158,
-   255,     8,   255,     0,    12,   179,   255,   180,     0,    13,
-   179,   255,   180,     0,    14,   179,   255,   180,     0,    15,
-   179,   255,   180,     0,    16,   179,   255,   180,     0,    17,
-   179,   255,   180,     0,    18,   179,   255,   180,     0,    19,
-   179,   255,   180,     0,    20,   179,   255,   180,     0,    22,
-   179,   255,   180,     0,    23,   179,   255,   184,   255,   180,
-     0,    24,   179,   255,   180,     0,    25,   179,   255,   180,
-     0,    26,   179,   255,   180,     0,    27,   179,   255,   180,
-     0,    28,   179,   255,   180,     0,    29,   179,   255,   180,
-     0,    30,   179,   255,   184,   255,   180,     0,    31,   179,
-   255,   184,   255,   180,     0,    32,   179,   255,   184,   255,
-   180,     0,    21,   179,   255,   180,     0,     3,     0,     9,
-     0,    10,     0,    11,     0,     4,     0,     4,   181,   255,
-   182,     0,     4,   237,     0,     4,   181,   255,   182,   237,
-     0,     4,   183,     4,     0,     4,   181,   255,   182,   183,
-     4,     0,     4,   183,     4,   237,     0,     4,   181,   255,
-   182,   183,     4,   237,     0,   258,     0,   169,   257,     0,
-   168,   257,     0,   257,   169,   257,     0,   257,   168,   257,
-     0,   185,   255,   184,   255,   184,   255,   184,   255,   184,
-   255,   186,     0,   185,   255,   184,   255,   184,   255,   184,
-   255,   186,     0,   185,   255,   184,   255,   184,   255,   186,
-     0,   179,   255,   184,   255,   184,   255,   180,     0,     0,
-   179,   260,   180,     0,     5,     0,   260,   184,     5,     0,
-     0,   185,   262,   186,     0,   179,   262,   180,     0,   263,
-     0,   262,   184,   263,     0,   255,     0,   264,     0,   185,
-   265,   186,     0,   169,   185,   265,   186,     0,   255,     8,
-   255,     0,   255,     8,   255,     8,   255,     0,     4,   181,
-   182,     0,   169,     4,   181,   182,     0,     4,   181,   185,
-   265,   186,   182,     0,   169,     4,   181,   185,   265,   186,
-   182,     0,   255,     0,   264,     0,   265,   184,   255,     0,
-   265,   184,   264,     0,   185,   255,   184,   255,   184,   255,
-   184,   255,   186,     0,   185,   255,   184,   255,   184,   255,
-   186,     0,     4,     0,     4,   183,    89,   183,     4,     0,
-   185,   268,   186,     0,     4,   181,   255,   182,   183,    90,
-     0,   266,     0,   268,   184,   266,     0,     5,     0,    35,
-   179,   269,   184,   269,   180,     0,    36,   179,   269,   180,
-     0,    34,   179,   269,   180,     0,    34,   179,   269,   184,
-   265,   180,     0,    34,   179,     4,   183,     4,   180,     0,
-    34,   179,     4,   181,   255,   182,   183,     4,   180,     0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   156,   158,   159,   160,   167,   169,   172,   180,   194,   206,
-   208,   211,   213,   214,   217,   223,   228,   229,   230,   233,
-   237,   240,   246,   251,   257,   265,   270,   274,   280,   285,
-   289,   294,   298,   301,   306,   310,   314,   318,   323,   327,
-   330,   334,   338,   342,   346,   350,   354,   357,   361,   364,
-   368,   371,   380,   384,   390,   392,   393,   394,   395,   396,
-   397,   398,   399,   400,   401,   402,   405,   410,   439,   444,
-   450,   455,   456,   457,   458,   459,   460,   461,   462,   463,
-   464,   465,   466,   469,   472,   476,   482,   488,   491,   495,
-   501,   507,   510,   514,   520,   526,   529,   533,   541,   547,
-   550,   554,   562,   568,   571,   575,   583,   589,   592,   596,
-   608,   614,   617,   621,   633,   639,   642,   646,   658,   664,
-   667,   671,   684,   690,   693,   697,   710,   716,   719,   723,
-   736,   748,   750,   751,   752,   753,   755,   757,   759,   790,
-   824,   871,   886,   895,   910,   922,   936,   959,   983,   995,
-  1009,  1021,  1035,  1051,  1067,  1080,  1100,  1111,  1117,  1136,
-  1147,  1155,  1161,  1167,  1186,  1192,  1208,  1215,  1221,  1227,
-  1233,  1239,  1258,  1270,  1276,  1295,  1316,  1324,  1330,  1336,
-  1342,  1354,  1360,  1366,  1378,  1384,  1389,  1394,  1401,  1403,
-  1404,  1407,  1412,  1423,  1441,  1449,  1454,  1465,  1533,  1553,
-  1559,  1563,  1583,  1599,  1613,  1638,  1663,  1689,  1695,  1700,
-  1705,  1709,  1719,  1725,  1731,  1735,  1739,  1743,  1747,  1752,
-  1757,  1763,  1770,  1774,  1779,  1800,  1810,  1829,  1847,  1865,
-  1887,  1908,  1929,  1943,  1964,  1969,  1980,  1982,  1983,  1984,
-  1985,  1988,  1990,  1991,  1992,  1993,  1994,  1995,  1996,  1997,
-  2004,  2005,  2006,  2007,  2008,  2009,  2010,  2011,  2012,  2013,
-  2014,  2015,  2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,
-  2024,  2025,  2026,  2027,  2028,  2029,  2030,  2031,  2032,  2033,
-  2034,  2035,  2040,  2045,  2046,  2047,  2051,  2062,  2079,  2090,
-  2109,  2125,  2141,  2157,  2174,  2179,  2183,  2187,  2191,  2196,
-  2201,  2205,  2209,  2215,  2219,  2224,  2228,  2233,  2237,  2241,
-  2247,  2253,  2260,  2266,  2270,  2274,  2284,  2291,  2302,  2316,
-  2332,  2352,  2376,  2382,  2386,  2390,  2401,  2406,  2417,  2422,
-  2440,  2445,  2458,  2464,  2470,  2475,  2483,  2496,  2500,  2525,
-  2539
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","tDOUBLE",
-"tSTRING","tBIGSTR","tEND","tAFFECT","tDOTS","tPi","tMPI_Rank","tMPI_Size","tExp",
-"tLog","tLog10","tSqrt","tSin","tAsin","tCos","tAcos","tTan","tRand","tAtan",
-"tAtan2","tSinh","tCosh","tTanh","tFabs","tFloor","tCeil","tFmod","tModulo",
-"tHypot","tPrintf","tSprintf","tStrCat","tStrPrefix","tDraw","tPoint","tCircle",
-"tEllipsis","tLine","tSurface","tSpline","tVolume","tCharacteristic","tLength",
-"tParametric","tElliptic","tPlane","tRuled","tTransfinite","tComplex","tPhysical",
-"tUsing","tBump","tProgression","tPlugin","tRotate","tTranslate","tSymmetry",
-"tDilate","tExtrude","tDuplicata","tLoop","tRecombine","tDelete","tCoherence",
-"tIntersect","tAttractor","tLayers","tScalarTetrahedron","tVectorTetrahedron",
-"tTensorTetrahedron","tScalarTriangle","tVectorTriangle","tTensorTriangle","tScalarLine",
-"tVectorLine","tTensorLine","tScalarPoint","tVectorPoint","tTensorPoint","tBSpline",
-"tNurbs","tOrder","tWith","tBounds","tKnots","tColor","tColorTable","tFor","tIn",
-"tEndFor","tIf","tEndIf","tExit","tReturn","tCall","tFunction","tMesh","tB_SPLINE_SURFACE_WITH_KNOTS",
-"tB_SPLINE_CURVE_WITH_KNOTS","tCARTESIAN_POINT","tTRUE","tFALSE","tUNSPECIFIED",
-"tU","tV","tEDGE_CURVE","tVERTEX_POINT","tORIENTED_EDGE","tPLANE","tFACE_OUTER_BOUND",
-"tEDGE_LOOP","tADVANCED_FACE","tVECTOR","tDIRECTION","tAXIS2_PLACEMENT_3D","tISO",
-"tENDISO","tENDSEC","tDATA","tHEADER","tFILE_DESCRIPTION","tFILE_SCHEMA","tFILE_NAME",
-"tMANIFOLD_SOLID_BREP","tCLOSED_SHELL","tADVANCED_BREP_SHAPE_REPRESENTATION",
-"tFACE_BOUND","tCYLINDRICAL_SURFACE","tCONICAL_SURFACE","tCIRCLE","tTRIMMED_CURVE",
-"tGEOMETRIC_SET","tCOMPOSITE_CURVE_SEGMENT","tCONTINUOUS","tCOMPOSITE_CURVE",
-"tTOROIDAL_SURFACE","tPRODUCT_DEFINITION","tPRODUCT_DEFINITION_SHAPE","tSHAPE_DEFINITION_REPRESENTATION",
-"tELLIPSE","tTrimmed","tSolid","tEndSolid","tVertex","tFacet","tNormal","tOuter",
-"tLoopSTL","tEndLoop","tEndFacet","tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES",
-"tAFFECTDIVIDE","'?'","tOR","tAND","tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'",
-"tLESSOREQUAL","'>'","tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT",
-"'!'","tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'","'('","')'","'['","']'","'.'",
-"','","'{'","'}'","All","SignedDouble","STLFormatItem","StepFormatItems","StepFormatItem",
-"StepSpecial","StepHeaderItem","StepDataItem","GeomFormatList","GeomFormat",
-"Printf","View","Views","ScalarPointValues","ScalarPoint","@1","VectorPointValues",
-"VectorPoint","@2","TensorPointValues","TensorPoint","@3","ScalarLineValues",
-"ScalarLine","@4","VectorLineValues","VectorLine","@5","TensorLineValues","TensorLine",
-"@6","ScalarTriangleValues","ScalarTriangle","@7","VectorTriangleValues","VectorTriangle",
-"@8","TensorTriangleValues","TensorTriangle","@9","ScalarTetrahedronValues",
-"ScalarTetrahedron","@10","VectorTetrahedronValues","VectorTetrahedron","@11",
-"TensorTetrahedronValues","TensorTetrahedron","@12","NumericAffectation","NumericIncrement",
-"Affectation","Shape","Transform","MultipleShape","ListOfShapes","Duplicata",
-"Delete","Command","Loop","Extrude","@13","@14","ExtrudeParameters","ExtrudeParameter",
-"Transfini","Coherence","BoolExpr","FExpr","FExpr_Single","VExpr","VExpr_Single",
-"ListOfStrings","RecursiveListOfStrings","ListOfListOfDouble","RecursiveListOfListOfDouble",
-"ListOfDouble","FExpr_Multi","RecursiveListOfDouble","ColorExpr","ListOfColor",
-"RecursiveListOfColor","StringExpr", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-   187,   187,   187,   187,   188,   188,   189,   189,   189,   190,
-   190,   191,   191,   191,   192,   192,   192,   192,   192,   193,
-   193,   193,   194,   194,   194,   194,   194,   194,   194,   194,
-   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
-   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
-   194,   194,   195,   195,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   196,   196,   196,   197,   197,   198,   198,
-   199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
-   199,   199,   199,   200,   200,   202,   201,   203,   203,   205,
-   204,   206,   206,   208,   207,   209,   209,   211,   210,   212,
-   212,   214,   213,   215,   215,   217,   216,   218,   218,   220,
-   219,   221,   221,   223,   222,   224,   224,   226,   225,   227,
-   227,   229,   228,   230,   230,   232,   231,   233,   233,   235,
-   234,   236,   236,   236,   236,   236,   237,   237,   238,   238,
-   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-   238,   238,   238,   238,   238,   238,   239,   239,   239,   239,
-   239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-   239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-   239,   239,   239,   239,   240,   240,   240,   240,   241,   241,
-   241,   242,   242,   243,   244,   244,   244,   245,   245,   245,
-   245,   245,   246,   246,   246,   246,   246,   246,   246,   246,
-   246,   246,   247,   247,   247,   247,   247,   247,   248,   247,
-   249,   247,   250,   250,   251,   251,   252,   252,   252,   252,
-   252,   252,   252,   252,   253,   253,   254,   254,   254,   254,
-   254,   255,   255,   255,   255,   255,   255,   255,   255,   255,
-   255,   255,   255,   255,   255,   255,   255,   255,   255,   255,
-   255,   255,   255,   255,   255,   255,   255,   255,   255,   255,
-   255,   255,   255,   255,   255,   255,   255,   255,   255,   255,
-   255,   255,   256,   256,   256,   256,   256,   256,   256,   256,
-   256,   256,   256,   256,   257,   257,   257,   257,   257,   258,
-   258,   258,   258,   259,   259,   260,   260,   261,   261,   261,
-   262,   262,   263,   263,   263,   263,   264,   264,   264,   264,
-   264,   264,   265,   265,   265,   265,   266,   266,   266,   266,
-   267,   267,   268,   268,   269,   269,   269,   269,   269,   269,
-   269
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     2,     1,     2,     1,    21,     1,     0,
-     2,     1,     1,     1,     2,     2,     2,     2,     2,     7,
-     5,    17,     9,    23,    31,    15,    11,    11,    15,     9,
-    13,     9,    11,    13,     9,     9,    11,     9,    11,     9,
-    11,    13,    13,    11,    13,    17,     9,    11,    11,    13,
-    11,     9,     0,     2,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     5,     7,     6,     8,
-     0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     1,     3,     0,    13,     1,     3,     0,
-    13,     1,     3,     0,    13,     1,     3,     0,    19,     1,
-     3,     0,    19,     1,     3,     0,    19,     1,     3,     0,
-    25,     1,     3,     0,    25,     1,     3,     0,    25,     1,
-     3,     0,    31,     1,     3,     0,    31,     1,     3,     0,
-    31,     1,     1,     1,     1,     1,     1,     1,     4,     7,
-     9,     6,     3,     6,     6,     9,     6,     9,     5,     8,
-     8,    11,     6,     9,     9,     9,     7,     8,    12,     6,
-     5,     7,     7,    12,     7,     9,    17,     7,     8,     8,
-     7,    11,     5,     8,    12,     8,    22,    20,     8,     8,
-     5,     8,     7,     8,     5,    11,     5,     9,     1,     1,
-     1,     0,     2,     4,     4,     6,     3,     3,     3,     7,
-     2,     2,     6,     8,     8,    10,     1,     2,     1,     3,
-     4,     1,     8,    12,     8,    12,     8,    12,     0,    12,
-     0,    16,     1,     2,     9,     2,     6,     9,     9,     8,
-     8,     8,     6,     4,     2,     2,     1,     1,     1,     1,
-     1,     1,     3,     2,     2,     2,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     5,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     4,     6,     4,     4,     4,     4,     4,     4,     6,     6,
-     6,     4,     1,     1,     1,     1,     1,     4,     2,     5,
-     3,     6,     4,     7,     1,     2,     2,     3,     3,    11,
-     9,     7,     7,     0,     3,     1,     3,     0,     3,     3,
-     1,     3,     1,     1,     3,     4,     3,     5,     3,     4,
-     6,     7,     1,     1,     3,     3,     9,     7,     1,     5,
-     3,     6,     1,     3,     1,     6,     4,     4,     6,     6,
-     9
-};
-
-static const short yydefact[] = {     0,
-     0,     7,     9,     0,     2,     1,     3,     4,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-    14,    13,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   207,     0,   212,     0,   209,
-     0,     0,     0,    54,    56,    55,    57,    58,    59,    60,
-    61,    66,    65,    62,    63,    64,     5,     0,     0,     0,
-    15,    16,    18,    17,    19,   304,   304,     0,   283,   287,
-   335,   132,   284,   285,   286,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   133,
-   134,   135,   136,     0,     0,     0,   137,   138,     0,     0,
-     0,     0,     0,     0,   242,     0,     0,   202,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
-     0,     0,     0,     0,     0,   192,     0,     0,     0,   192,
-   235,   236,     0,     0,     0,     0,     0,     0,     0,     0,
-   201,     0,   208,     0,     6,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   289,     0,    71,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   245,
-   244,   246,     0,     0,     0,     0,     0,     0,     0,     0,
-   143,   199,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   198,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   287,     0,     0,   313,     0,   314,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   297,   296,     0,     0,     0,     0,   192,   192,     0,     0,
-     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   210,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   306,
-     0,     0,     0,     0,     0,   291,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   335,     0,     0,     0,   243,     0,     0,   323,   324,     0,
-     0,   132,     0,     0,     0,     0,   139,     0,   260,   259,
-   257,   258,   253,   255,   254,   256,   248,   247,   249,   250,
-   251,   252,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   287,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   299,   298,   191,
-     0,   190,   189,     0,     0,     0,     0,     0,   194,   193,
-   234,     0,     0,   195,     0,     0,     0,     0,     0,     0,
-     0,     0,   211,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   305,     0,     0,    21,     0,
-   288,   293,    71,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,   262,   263,
-   264,   265,   266,   267,   268,   269,   270,   282,   271,     0,
-   273,   274,   275,   276,   277,   278,     0,     0,     0,     0,
-     0,   338,     0,     0,   337,     0,     0,     0,     0,     0,
-     0,     0,     0,   149,     0,     0,     0,     0,     0,    67,
-     0,     0,   161,     0,     0,     0,     0,   173,     0,   181,
-     0,     0,   319,     0,     0,     0,   315,   317,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   185,   187,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   307,     0,   304,     0,   290,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    69,     0,     0,     0,     0,     0,     0,     0,     0,
-   142,   325,   326,     0,     0,     0,     0,     0,   144,   145,
-   147,     0,     0,   329,     0,   333,     0,   153,   261,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   320,
-     0,   316,     0,   160,     0,     0,     0,     0,   227,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   233,   196,     0,     0,     0,
-     0,   308,     0,     0,     0,   203,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   237,   238,   239,   240,   241,     0,     0,     0,     0,
-     0,     0,     0,    20,     0,   292,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   272,
-   279,   280,   281,     0,   340,   339,   336,     0,   132,     0,
-     0,     0,     0,   140,     0,     0,     0,     0,     0,   331,
-    68,   157,   165,     0,   168,     0,   162,     0,   163,   183,
-     0,     0,   318,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   200,     0,     0,     0,
-     0,   192,     0,     0,     0,     0,     0,   219,     0,     0,
-   171,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   304,   294,    70,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   150,
-     0,     0,   151,     0,     0,     0,   334,     0,   170,   180,
-   321,     0,     0,   231,   174,   176,     0,     0,   230,   232,
-   182,   158,   169,   179,   184,     0,     0,     0,   303,     0,
-   302,     0,     0,   213,     0,   215,     0,   217,     0,     0,
-     0,   308,     0,   311,     0,     0,     0,     0,   205,   204,
-     0,     0,     0,     0,     0,    23,     0,    32,     0,    36,
-     0,    30,     0,     0,    35,     0,    40,    38,     0,     0,
-     0,     0,     0,     0,    47,     0,     0,     0,     0,     0,
-    52,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   141,   146,   148,     0,
-   154,     0,     0,     0,   166,   322,     0,   229,   228,   155,
-   156,   192,     0,   188,     0,     0,     0,     0,     0,     0,
-     0,   310,     0,   309,     0,     0,     0,     0,     0,     0,
-   308,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   341,     0,   332,   330,     0,     0,     0,
-     0,   301,     0,     0,     0,     0,     0,     0,   223,     0,
-     0,     0,   312,     0,     0,   206,     0,     0,    37,     0,
-     0,     0,     0,    27,     0,    33,     0,    39,    28,    41,
-     0,    44,     0,    48,    49,     0,     0,    51,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   152,     0,     0,   186,     0,     0,     0,   221,
-   226,     0,     0,   224,     0,     0,     0,     0,   172,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    86,    90,    94,     0,   328,     0,   300,   214,
-   216,   218,     0,     0,   220,   159,   164,     0,     0,   175,
-     0,     0,     0,     0,     0,    31,    34,    42,     0,    43,
-    50,    45,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   327,     0,     0,     0,     0,     0,     0,     0,     0,    26,
-    29,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    84,     0,    88,     0,    92,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   222,     0,     0,     0,     0,     0,
-     0,    46,    22,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    85,    87,    89,    91,    93,    95,   167,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    98,   102,   106,   225,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     8,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   178,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    96,     0,   100,     0,   104,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   177,     0,    24,     0,     0,     0,
-     0,     0,     0,    97,    99,   101,   103,   105,   107,     0,
-     0,     0,     0,   110,   114,   118,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   108,     0,   112,     0,   116,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   109,   111,   113,   115,   117,   119,
-     0,   122,   126,   130,    25,     0,     0,     0,     0,     0,
-     0,     0,   120,     0,   124,     0,   128,     0,     0,     0,
-     0,     0,     0,   121,   123,   125,   127,   129,   131,     0,
-     0,     0
-};
-
-static const short yydefgoto[] = {  1540,
-    79,     5,     6,    19,    20,    21,    22,     7,    64,    65,
-    66,   388,  1313,   557,  1263,  1315,   558,  1264,  1317,   559,
-  1265,  1424,   560,  1397,  1426,   561,  1398,  1428,   562,  1399,
-  1485,   563,  1471,  1487,   564,  1472,  1489,   565,  1473,  1522,
-   566,  1516,  1524,   567,  1517,  1526,   568,  1518,   132,   233,
-    67,   490,   480,   481,   482,   483,    71,    72,    73,    74,
-   999,  1233,  1138,  1139,    75,    76,   817,   304,   135,   169,
-   170,   228,   381,   905,  1003,  1004,   306,   420,   736,   608,
-   737,   136
-};
-
-static const short yypact[] = {  1927,
-   108,-32768,-32768,   -10,-32768,    27,  2128,-32768,    11,   176,
-   136,   196,   228,   233,   269,   102,   119,   126,-32768,-32768,
--32768,-32768,  1572,   162,   338,   -75,   180,   190,   -45,   -44,
-   212,   219,   283,   238,   339,   378,   384,   168,   386,   346,
-   262,   274,   207,   207,   278,   202,   282,   428,    13,   475,
-   476,    92,   334,   -21,     8,-32768,   335,-32768,   496,-32768,
-   514,   551,   520,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   553,    11,  1978,
--32768,-32768,-32768,-32768,-32768,   389,   389,   567,-32768,   264,
-     7,-32768,-32768,-32768,-32768,   405,   419,   439,   440,   444,
-   445,   446,   447,   448,   449,   450,   451,   454,   456,   457,
-   458,   461,   462,   467,   469,   495,   497,   513,   515,-32768,
--32768,-32768,-32768,    67,    67,    67,-32768,-32768,    67,   522,
-    70,    67,   569,   811,-32768,   593,   604,-32768,    67,    67,
-    67,    67,   516,    67,    67,   518,    67,    67,    67,   984,
-    67,   464,   519,   521,   984,   490,   508,   523,   526,   527,
-   529,   530,   695,   207,   207,   207,    67,    67,    97,-32768,
-   135,   207,   528,   544,   546,-32768,   984,   533,   705,-32768,
--32768,-32768,   984,   984,    67,   -14,    67,   644,    67,    67,
--32768,   744,-32768,   574,-32768,    11,   575,   576,   577,   578,
-   579,   580,   581,   584,   585,   586,   587,   588,   589,   592,
-   594,   595,   620,   621,   622,   623,   624,   626,   627,   628,
-   629,   632,   633,   634,   635,   637,   747,   638,   639,   640,
-    67,   768,-32768,   207,-32768,    67,    67,    67,    67,    67,
-    67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
-    67,    67,    67,    67,    67,    67,   279,   242,   242,   643,
-   643,   643,  4939,   818,  1606,  4814,    15,   646,   821,   952,
--32768,-32768,    67,    67,    67,    67,    67,    67,    67,    67,
-    67,    67,    67,    67,    67,    67,    67,-32768,  -111,  4962,
-  1976,  4985,  5008,    67,  5031,  2176,    67,  2199,  5054,  5077,
-   285,  1507,  1606,   978,   823,-32768,  5100,    67,    67,    67,
-   825,    67,    67,    67,    67,    67,    67,    67,   653,   104,
--32768,-32768,  2567,  2588,   207,   207,   500,   500,   209,    67,
-    67,    67,   313,   150,    67,-32768,  2016,   827,   829,  5123,
-   731,    67,  5146,   659,  1674,  5169,-32768,    67,   688,   849,
-   853,   855,   857,   858,   864,   865,   866,   867,   868,   869,
-   870,   873,   874,   875,   876,   877,   878,   879,   880,   895,
-   896,   897,   772,   898,   900,   905,   906,   909,   911,-32768,
-     4,   913,   908,   914,  4839,   160,   204,   330,  5192,  5215,
-  5238,  5261,  5284,  5307,  5330,  5353,  5376,  5399,  5422,  2609,
-  5445,  5468,  5491,  5514,  5537,  5560,  2630,  2651,  2672,  -152,
--32768,    23,   736,   753,-32768,   984,  1778,   978,-32768,   132,
-    21,   242,    67,   930,   933,     9,-32768,  1701,   573,   726,
-   425,   425,   280,   280,   280,   280,   302,   302,   643,   643,
-   643,   643,   932,  1606,   934,   936,   937,   939,  5583,   940,
-   943,  5606,   946,   947,   948,   641,   329,  1606,   258,    67,
-    67,   949,  2222,  5629,  5652,    67,  2245,  2268,  5675,  5698,
-  5721,  5744,  5767,   770,   207,    67,    67,-32768,-32768,-32768,
-   773,  1323,-32768,   774,    67,  2693,  2714,  2735,-32768,-32768,
--32768,    67,  4864,-32768,   776,   778,   957,   786,  5790,   959,
-    67,    67,-32768,  5813,   817,   790,   808,   833,   840,   850,
-   851,   852,   854,   856,   859,   860,   862,   863,   881,   882,
-   883,   884,   885,   886,   888,   889,   890,   893,   894,   899,
-   901,   902,   904,   917,   918,-32768,  1032,   871,-32768,   919,
-   164,-32768,-32768,   903,   925,   927,   928,   950,   953,   954,
-   955,   956,   962,   972,   975,  1035,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    67,
--32768,-32768,-32768,-32768,-32768,-32768,    67,    67,    67,    67,
-  1038,-32768,  1606,   242,-32768,  1039,  1606,   944,   159,    67,
-  1042,  1043,  1012,-32768,  1051,   974,    14,  1044,    67,-32768,
-   147,   207,-32768,   984,   984,  1052,   984,-32768,  1053,-32768,
-   984,   984,-32768,  1606,   766,   314,-32768,  1716,  1049,   924,
-  1054,  1055,  1057,   861,  1073,  1074,  1108,  1120,  1124,  1150,
-  1152,  1156,   211,  2756,  2777,-32768,-32768,  2291,   207,   207,
-   207,  1070,  1155,    67,    67,   984,    67,  1157,   984,  1748,
-   681,  1158,  1015,  1163,    67,    67,   207,  1164,  1182,  1016,
-  1184,  1185,   984,   984,  1186,   207,  1197,  1198,   984,   984,
-  1199,  1201,  1202,  1203,  1209,   984,   416,   984,  1219,  1220,
-  1221,  1230,  1240,-32768,  1238,   389,  1241,-32768,   645,    67,
-    67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
-    67,-32768,  5836,  5859,  5882,  5905,  4889,  1066,   166,  1067,
--32768,   978,-32768,   113,   167,  1069,  1242,  1119,-32768,-32768,
--32768,    14,    67,  1071,    67,-32768,   322,-32768,  6411,  1244,
-    17,    59,  1247,   984,  1249,   984,  1262,  1263,   323,-32768,
-  1606,-32768,    67,-32768,    67,   984,   984,   984,-32768,   400,
-   984,   984,   984,   984,   984,   984,   984,   470,    67,    67,
-    67,  1085,   -57,   142,   199,-32768,-32768,  2798,  2819,  1265,
-  5928,   -47,  1187,    67,    67,-32768,  1087,    11,  1089,  2840,
-  2861,   169,  1090,  1102,  1109,  1112,  1110,  1115,  1114,  1117,
-   256,  1118,  1116,  1123,  1121,  1132,  1134,  1136,  1137,  1138,
-  1143,-32768,-32768,-32768,-32768,-32768,  1140,  1141,  1142,  1148,
-  1159,  1162,  1160,-32768,  1161,   160,  1293,  2882,  2903,  2924,
-  2945,  2966,  2987,  3008,  3029,  3050,  3071,  3092,  3113,-32768,
--32768,-32768,-32768,  1167,-32768,-32768,-32768,   984,   242,    67,
-  1298,  1342,     9,-32768,  1345,  4914,  1270,  3134,    14,-32768,
--32768,-32768,-32768,   207,-32768,  1346,-32768,  1354,-32768,-32768,
-  1189,   331,  6411,  3155,  1363,  1368,  1372,    67,    67,  1373,
-  1374,  1375,  1385,  1387,  1388,  1389,-32768,    32,  2314,  5951,
-  2075,   500,   207,  1390,   207,  1391,   207,  1392,    67,    67,
--32768,  1393,   984,   984,  1311,   984,   325,  5974,    67,    11,
-  1398,    67,   984,  1396,  1400,  1399,  1234,  1402,   416,  1403,
-  1414,    67,  1413,  1420,  1419,  1421,  1423,   416,    67,    67,
-    67,   984,  1424,  1428,   416,    67,  1429,  1430,  1431,    67,
-   389,-32768,-32768,    67,    67,    67,    67,    67,    67,    67,
-    67,    67,    67,    67,    67,  1432,  1435,  1436,  1169,-32768,
-  1427,  1437,-32768,  1252,  1261,    67,-32768,    69,-32768,-32768,
--32768,  1264,    67,-32768,-32768,-32768,  1482,  1536,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  1599,  1439,  1266,-32768,    67,
--32768,  1272,   245,-32768,   247,-32768,   250,-32768,  1274,  3176,
-  3197,   -47,   243,-32768,   343,  1275,  1362,    67,-32768,-32768,
-  3218,    11,  1268,  3239,  1277,-32768,  1278,-32768,  1280,-32768,
-  1269,-32768,  1281,  5997,-32768,  1284,-32768,-32768,  1295,  1297,
-  6020,  3260,  6043,  1289,-32768,  1299,  1302,  3281,  1294,  1303,
--32768,  3302,  1300,  3323,  3344,  3365,  3386,  3407,  3428,  3449,
-  3470,  3491,  3512,  3533,  3554,  1305,-32768,-32768,-32768,    14,
--32768,  1360,  1485,  3575,-32768,-32768,  3596,-32768,-32768,-32768,
--32768,   500,  2118,-32768,    67,    67,    67,    35,    67,    67,
-  1404,-32768,   984,-32768,   984,    67,  2337,   984,  1343,  1488,
-   -47,   416,  1496,    67,  1494,   416,  1495,  1499,  1497,  1498,
-  1500,    67,  1502,   984,  1506,  1508,    67,  1510,  1509,    67,
-  1486,    67,    67,    67,    67,    67,    67,    67,    67,    67,
-    67,    67,    67,-32768,  1534,-32768,-32768,    67,  1538,  1355,
-    67,-32768,  2360,  2383,  2406,  1539,  1359,   -32,-32768,  2429,
-  2452,  1361,-32768,  1364,  1653,-32768,  1366,    11,-32768,  1365,
-  1370,  1371,  3617,-32768,  1367,-32768,  1376,-32768,-32768,-32768,
-  6066,-32768,  1377,-32768,-32768,  6089,  1378,-32768,  6112,  1382,
-  3638,  3659,  3680,  3701,  3722,  3743,  3764,  3785,  3806,  6135,
-  6158,  6181,-32768,  2147,  1383,-32768,  2475,  1544,  1551,  1553,
--32768,   984,  1554,-32768,  1556,  1574,   984,   984,-32768,  1605,
-    11,   416,   416,   416,   416,  1607,  1608,  1633,   416,  1639,
-  1650,  1651,  1573,    67,    67,    67,    67,    67,    67,    67,
-    67,    67,-32768,-32768,-32768,    67,-32768,  1656,-32768,-32768,
--32768,-32768,  1473,  1478,-32768,-32768,-32768,  1479,  1426,-32768,
-    11,  1480,  1481,  1487,  1489,-32768,-32768,-32768,  1484,-32768,
--32768,-32768,  1490,  3827,  3848,  3869,  3890,  3911,  3932,  3953,
-  3974,  3995,  1492,  1493,  1503,  2498,  1501,    35,   984,   984,
-  1581,  1523,   416,   416,  1665,  1666,   416,  1668,    67,    67,
-    67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
--32768,  1675,   -31,  1505,  1504,  1514,    11,  1526,  1527,-32768,
--32768,  1511,  1513,  4016,  4037,  4058,  4079,  4100,  4121,  4142,
-  4163,  4184,   344,  6411,   387,  6411,   392,  6411,  1529,  1673,
-   984,  1598,    67,    11,   416,   984,  1678,  1681,    67,    67,
-    67,    67,    67,    67,    67,    67,    67,    67,  1706,    67,
-  1710,    67,  1711,  1712,-32768,  1533,  1537,  4205,    11,  1541,
-  1546,-32768,-32768,  4226,  4247,  4268,  4289,  4310,  4331,  6204,
-  6227,  6250,  6411,-32768,  6411,-32768,  6411,-32768,-32768,  1715,
-    67,    67,  1571,   416,   984,    67,    67,    67,    67,    67,
-    67,-32768,-32768,-32768,-32768,  4352,  2521,  1578,  1548,  1549,
-  4373,  4394,  4415,  4436,  4457,  4478,  1550,  1552,  1557,    67,
-  1728,-32768,   984,   416,    67,    67,    67,    67,    67,    67,
-    67,    67,    67,  2544,-32768,  1559,  1558,  4499,  4520,  4541,
-  4562,  4583,  4604,   395,  6411,   396,  6411,   401,  6411,  1730,
-   984,  1738,    67,    67,    67,    67,    67,    67,    67,  1739,
-    67,  1743,    67,  1744,-32768,  1568,-32768,  4625,  4646,  4667,
-  6273,  6296,  6319,  6411,-32768,  6411,-32768,  6411,-32768,   984,
-    67,    67,    67,-32768,-32768,-32768,  1570,  4688,  4709,  4730,
-  1577,  1587,  1588,   984,    67,    67,    67,    67,    67,    67,
-  1592,  4751,  4772,  4793,   420,  6411,   421,  6411,   424,  6411,
-   416,    67,    67,    67,    67,  1772,    67,  1773,    67,  1777,
-  1604,  6342,  6365,  6388,  6411,-32768,  6411,-32768,  6411,-32768,
-  1780,-32768,-32768,-32768,-32768,  1631,  1641,  1642,    67,    67,
-    67,   427,  6411,   430,  6411,   431,  6411,    67,  1822,    67,
-  1823,    67,  1824,  6411,-32768,  6411,-32768,  6411,-32768,  1837,
-  1847,-32768
-};
-
-static const short yypgoto[] = {-32768,
-   -73,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  1306,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -260,   -22,
--32768,  1841,  1843,  -323,   252,  1844,-32768,-32768,-32768,-32768,
--32768,-32768,   590, -1114,-32768,-32768,  -903,   -23,-32768,   -29,
--32768,   -84,-32768,  -976,   951,   807,  -263,  -276,  -728,  1000,
--32768,  -249
-};
-
-
-#define	YYLAST		6589
-
-
-static const short yytable[] = {   134,
-   133,   419,   229,   855,   484,   196,   423,   412,   413,   414,
-   234,   188,   606,    77,   171,  1021,   178,   734,   143,   146,
-   186,   422,   862,  1194,  1030,  1081,   459,    92,   590,    10,
-   591,  1037,  1136,  1136,    89,    90,   411,  1137,  1137,   419,
-    93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   863,   117,   118,   119,   443,    89,
-    90,   341,   444,   267,  1065,    93,    94,    95,    96,    97,
-    98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-   108,   109,   110,   111,   112,   113,   114,   115,   116,  1136,
-   260,   261,   262,   139,  1137,   263,   266,   864,   270,   140,
-   325,   326,   179,     8,  1150,   290,   291,   292,   293,    92,
-   295,   296,   349,   298,   299,   300,   893,   307,   894,   183,
-   967,   903,   184,   144,   320,   321,   322,   904,     9,   145,
-   147,    81,   329,   323,   324,    11,    12,    13,    14,    15,
-    16,    17,    18,  1193,  1320,   491,   492,   187,   268,   269,
-   600,   340,   725,   343,   342,   345,   346,   611,   120,   121,
-   122,   123,   602,   849,   120,   121,   122,   123,  1194,    78,
-   419,   626,    80,   536,   325,   326,   189,   537,  1151,   127,
-   128,   235,  1155,   607,   419,   127,   128,   180,   735,   124,
-   125,    82,   592,   599,   387,   126,   593,   385,   155,   156,
-   129,   157,   389,   390,   391,   392,   393,   394,   395,   396,
-   397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-   407,   408,   409,    83,   124,   125,   325,   326,    84,   173,
-   126,   418,   174,   175,   424,   129,   411,   726,   727,   428,
-   429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
-   439,   440,   441,   442,   325,   326,   120,   121,   122,   123,
-   449,   325,   326,   452,    85,   117,   118,   119,   261,   418,
-    86,   327,   410,   411,   463,   464,   465,   475,   467,   468,
-   469,   470,   471,   472,   473,   478,   479,    87,  1242,  1243,
-  1244,  1245,   325,   326,    88,  1249,   486,   487,   488,   325,
-   326,   493,   117,   118,   119,   597,   719,   598,   499,   328,
-   120,   121,   122,   123,   504,   895,   740,   896,   150,   419,
-   597,  1125,  1008,   723,   127,   128,   325,   326,   127,   128,
-   137,   127,   128,   138,   720,   846,   697,   749,   914,   597,
-    26,    27,    28,    29,    30,    31,    32,    33,   141,    34,
-   419,    36,    37,   542,    39,    40,   325,   326,   142,  1298,
-  1299,   325,   326,  1302,   165,   166,   325,   326,   325,   326,
-   152,    52,   897,   159,   898,   167,   160,   161,   543,   162,
-   148,   168,   485,   261,   769,    53,    54,   149,   601,   603,
-   544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-   554,   555,   325,   326,   325,   326,   151,   325,   326,   153,
-   418,  1350,  1082,   325,   326,   154,  1083,   333,  1075,   158,
-  1076,   337,   385,  1077,   418,   923,   628,   629,   127,   128,
-   163,   597,   634,   627,   231,   643,   232,   282,   283,   284,
-   285,   286,   644,   645,   878,   879,    63,   287,   164,   127,
-   128,   648,   172,   848,   850,   456,   176,   232,   652,   177,
-  1389,   284,   285,   286,   872,   887,   888,   660,   661,   287,
-   181,   182,   273,   274,   275,   276,   277,   419,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,   597,   489,   752,
-  1417,   191,   287,   127,   128,   859,   597,   860,   871,   625,
-  1009,   232,   185,   190,   597,   556,   972,   192,   698,   812,
-   813,   814,   815,   816,    89,    90,  1083,  1338,  1084,  1339,
-    93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,   193,   195,   713,    42,    43,    44,
-    45,   194,    47,   714,   715,   716,   717,   227,   992,   418,
-  1340,   230,  1341,   722,   271,  1342,   728,  1343,  1439,  1441,
-  1440,  1442,   741,   236,  1443,   739,  1444,  1501,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,   237,   288,   958,
-   418,   385,   287,  1495,  1497,  1496,  1498,  1499,   289,  1500,
-  1528,   825,  1529,  1530,  1532,  1531,  1533,   238,   239,   773,
-   774,   775,   240,   241,   242,   243,   244,   245,   246,   247,
-   778,   779,   248,   781,   249,   250,   251,   792,   987,   252,
-   253,   790,   791,    89,    90,   254,   801,   255,   308,    93,
-    94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-   114,   115,   116,   256,   312,   257,   828,   829,   830,   831,
-   832,   833,   834,   835,   836,   837,   838,   839,   785,   124,
-   125,   258,   313,   259,   294,   126,   297,   309,   319,   310,
-   129,   314,   851,   264,   315,   316,   265,   317,   318,   856,
-   336,   858,   330,   335,   910,   544,   545,   546,   547,   548,
-   549,   550,   551,   552,   553,   554,   555,   418,   331,   873,
-   332,   874,   275,   276,   277,   344,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,   889,   890,   891,  1130,   347,
-   287,   380,   348,   350,   351,   352,   353,   354,   355,   356,
-   907,   908,   357,   358,   359,   360,   361,   362,    89,    90,
-   363,   386,   364,   365,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-   109,   110,   111,   112,   113,   114,   115,   116,   366,   367,
-   368,   369,   370,   942,   371,   372,   373,   374,   124,   125,
-   375,   376,   377,   378,   126,   379,   272,   498,   383,   129,
-   287,   382,   623,   384,   416,   624,   959,   426,   425,   461,
-   827,   466,   474,   495,   968,   496,  1012,   505,   273,   274,
-   275,   276,   277,   501,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,   506,   977,   978,  1043,   507,   287,   508,
-   786,   509,   510,   993,   986,   995,   759,   997,   511,   512,
-   513,   514,   515,   516,   517,  1000,  1001,   518,   519,   520,
-   521,   522,   523,   524,   525,  1011,   276,   277,  1014,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,  1024,   526,
-   527,   528,   530,   287,   531,  1031,  1032,  1033,   529,   532,
-   533,   534,  1038,   539,   760,   535,  1042,   538,   540,   594,
-  1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1053,
-  1054,  1055,   595,   124,   125,   604,   605,   610,  1089,   126,
-   612,   613,  1064,   614,   129,   615,   617,   750,   618,  1067,
-   751,   620,   642,   621,   622,   630,   305,   427,   646,   647,
-   654,   311,   655,   656,   657,   659,  1073,   663,   273,   274,
-   275,   276,   277,   664,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,   334,  1087,   460,    89,   301,   287,   338,
-   339,   665,    93,    94,    95,    96,    97,    98,    99,   100,
-   101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-   111,   112,   113,   114,   115,   116,   666,   731,   273,   274,
-   275,   276,   277,   667,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,   668,   669,   670,   694,   671,   287,   672,
-   712,   718,   673,   674,   721,   675,   676,   729,   730,   738,
-   695,  1133,  1134,  1135,   754,  1140,  1141,   732,   744,   746,
-   756,   757,  1145,   758,   677,   678,   679,   680,   681,   682,
-  1153,   683,   684,   685,  1201,   776,   686,   687,  1161,   761,
-   762,   700,   688,  1166,   689,   690,  1169,   691,  1171,  1172,
-  1173,  1174,  1175,  1176,  1177,  1178,  1179,  1180,  1181,  1182,
-   692,   693,   696,   701,  1184,   702,   703,  1187,   755,   273,
-   274,   275,   276,   277,   763,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,   854,   724,   764,  1241,   704,   287,
-   765,   705,   706,   707,   708,   273,   274,   275,   276,   277,
-   709,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-   710,   124,   302,   711,   733,   287,   766,   126,   767,   768,
-   777,   788,   129,   782,   787,   789,   793,  1272,   303,   273,
-   274,   275,   276,   277,  1059,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,   794,   795,   796,   797,   800,   287,
-  1254,  1255,  1256,  1257,  1258,  1259,  1260,  1261,  1262,   802,
-   803,   806,  1266,   807,   808,   809,   273,   274,   275,   276,
-   277,   810,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,   819,   596,  1324,   820,   821,   287,   273,   274,   275,
-   276,   277,   822,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,   823,   824,   826,   845,   847,   287,   853,   861,
-  1349,   852,   865,   857,   867,  1304,  1305,  1306,  1307,  1308,
-  1309,  1310,  1311,  1312,  1314,  1316,  1318,   869,   870,   892,
-   901,   909,   911,   915,   906,  1373,   273,   274,   275,   276,
-   277,   916,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,   918,   917,   919,   920,   925,   287,   921,   943,  1348,
-   922,   924,   926,   960,   927,  1354,  1355,  1356,  1357,  1358,
-  1359,  1360,  1361,  1362,  1363,   928,  1365,   929,  1367,   930,
-   931,   932,   933,   934,   935,   936,   273,   274,   275,   276,
-   277,   937,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,   939,   938,   940,   941,   961,   287,  1386,  1387,   956,
-   963,   969,  1391,  1392,  1393,  1394,  1395,  1396,   965,   970,
-    26,    27,    28,    29,    30,    31,    32,    33,   974,    34,
-   971,    36,    37,   975,    39,    40,  1414,   976,   979,   980,
-   981,  1418,  1419,  1420,  1421,  1422,  1423,  1425,  1427,  1429,
-   982,    52,   983,   984,   985,   994,   996,   998,  1006,  1002,
-  1013,  1016,  1017,  1019,  1018,    53,    54,  1020,  1022,  1448,
-  1449,  1450,  1451,  1452,  1453,  1454,  1023,  1456,  1025,  1458,
-   742,   743,  1026,   745,  1027,  1029,  1028,   747,   748,  1035,
-  1036,  1039,  1040,  1060,  1062,  1056,  1041,  1468,  1469,  1470,
-  1057,  1058,  1061,  1063,  1071,  1066,  1086,  1090,  1095,  1126,
-  1072,  1482,  1483,  1484,  1486,  1488,  1490,  1074,  1078,  1085,
-  1092,  1093,   780,  1094,  1096,   783,    63,  1098,  1502,  1503,
-  1504,  1505,  1104,  1507,  1099,  1509,  1100,  1108,  1105,   798,
-   799,  1106,  1109,  1111,  1124,   804,   805,  1068,  1127,  1148,
-  1170,  1142,   811,  1149,   818,  1523,  1525,  1527,  1152,  1154,
-  1156,  1157,  1158,  1159,  1534,  1160,  1536,  1162,  1538,    89,
-   457,  1164,  1167,  1165,  1168,    93,    94,    95,    96,    97,
-    98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-   108,   109,   110,   111,   112,   113,   114,   115,   116,  1183,
-  1186,  1069,  1185,  1192,  1191,  1197,  1206,  1198,  1202,  1230,
-   866,  1200,   868,  1203,  1204,  1207,  1231,  1211,  1232,  1235,
-  1209,  1236,   875,   876,   877,  1213,  1228,   880,   881,   882,
-   883,   884,   885,   886,    89,    90,    91,  1253,    92,  1237,
-    93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-   113,   114,   115,   116,  1070,   117,   118,   119,    89,   301,
-  1240,  1271,  1246,  1247,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-   109,   110,   111,   112,   113,   114,   115,   116,  1248,   273,
-   274,   275,   276,   277,  1250,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,   957,  1251,  1252,  1268,  1199,   287,
-  1267,  1269,  1270,  1273,  1274,  1296,  1275,  1277,  1276,  1297,
-  1300,  1301,  1303,  1278,   124,   125,  1288,  1289,  1345,  1319,
-   126,   502,  1347,  1352,  1292,   129,  1353,  1290,  1321,  1322,
-  1327,   458,  1328,   273,   274,   275,   276,   277,  1323,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,   609,  1325,
-  1326,  1364,  1007,   287,  1344,  1366,  1368,  1369,  1370,  1015,
-  1385,  1371,  1388,   753,  1374,   120,   121,   122,   123,  1375,
-  1402,  1403,  1404,  1415,  1411,  1445,  1412,  1432,  1034,   124,
-   125,  1413,  1431,  1447,  1455,   126,   127,   128,  1457,  1459,
-   129,  1460,   130,  1474,   131,   784,   273,   274,   275,   276,
-   277,  1478,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,  1479,  1480,   124,   417,  1491,   287,  1506,  1508,   126,
-    89,   457,  1510,  1511,   129,  1515,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   273,   274,   275,   276,   277,  1519,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,  1520,  1521,  1535,  1537,  1539,
-   287,   273,   274,   275,   276,   277,  1541,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,  1542,    68,   699,    69,
-    70,   287,   962,     0,  1005,     0,     0,  1293,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,   273,   274,   275,   276,   277,   287,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,  1143,
-     0,  1144,     0,   287,  1147,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   273,   274,   275,   276,   277,
-  1163,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   -10,     1,     0,   -10,
-   -53,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   124,   125,     0,     0,     0,
-     0,   126,     0,     0,     0,     0,   129,     0,     0,   -53,
-     0,     0,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
-   -53,   -53,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
-     0,     0,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
-     0,   -53,   -53,   -53,   -53,   -53,     0,     0,  1234,     0,
-     0,     0,     0,  1238,  1239,     0,     0,     0,     0,   -53,
-   -53,     0,     0,     0,     0,     0,     0,   -53,   197,   -53,
-   -53,   -53,   -53,   -53,   -53,   -53,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   -10,   -10,   -10,   -10,   -10,
-   -10,   -10,   -10,    26,    27,    28,    29,    30,    31,    32,
-    33,     0,    34,     0,    36,    37,     0,    39,    40,     0,
-   -53,     2,     3,     0,     4,  1294,  1295,     0,   198,   199,
-   200,     0,     0,     0,    52,     0,   201,   202,   203,   204,
-   205,   206,   207,   208,   209,   210,     0,     0,    53,    54,
-     0,     0,     0,     0,   211,   212,   213,   214,   215,   216,
-   217,   218,   219,   220,     0,   221,   222,   223,   224,   225,
-   226,     0,     0,     0,     0,     0,     0,  1346,     0,     0,
-     0,    23,  1351,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,     0,     0,     0,     0,    63,
-    24,   446,     0,     0,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,     0,    34,    35,    36,    37,    38,    39,
-    40,  1390,     0,     0,    41,    42,    43,    44,    45,    46,
-    47,     0,    48,    49,    50,    51,    52,     0,     0,     0,
-     0,   494,     0,     0,     0,     0,     0,     0,     0,  1416,
-    53,    54,     0,     0,     0,     0,     0,     0,    55,     0,
-    56,    57,    58,    59,    60,    61,    62,     0,     0,     0,
-     0,     0,   273,   274,   275,   276,   277,  1446,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,     0,     0,     0,     0,   990,     0,
-   991,     0,     0,     0,     0,     0,  1467,     0,     0,     0,
-     0,    63,     0,     0,     0,   273,   274,   275,   276,   277,
-  1481,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,     0,     0,     0,
-     0,  1131,     0,  1132,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
-  1226,     0,  1227,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,     0,   273,   274,   275,   276,
-   277,   451,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,     0,   273,
-   274,   275,   276,   277,   453,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,     0,   273,   274,   275,   276,   277,   631,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,     0,   273,   274,   275,   276,   277,
-   635,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,     0,   273,   274,
-   275,   276,   277,   636,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-     0,   273,   274,   275,   276,   277,   772,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,     0,   273,   274,   275,   276,   277,   988,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,     0,   273,   274,   275,
-   276,   277,  1146,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,     0,
-   273,   274,   275,   276,   277,  1188,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,     0,   273,   274,   275,   276,   277,  1189,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,     0,   273,   274,   275,   276,
-   277,  1190,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,     0,   273,
-   274,   275,   276,   277,  1195,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,     0,   273,   274,   275,   276,   277,  1196,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,     0,   273,   274,   275,   276,   277,
-  1229,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,     0,   273,   274,
-   275,   276,   277,  1291,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-     0,   273,   274,   275,   276,   277,  1401,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,     0,   273,   274,   275,   276,   277,  1430,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-   476,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,   477,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,   580,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,   587,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,   588,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,   589,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,   649,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,   650,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,   651,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,   770,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-   771,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,   899,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,   900,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,   912,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,   913,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,   944,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,   945,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,   946,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,   947,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,   948,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-   949,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,   950,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,   951,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,   952,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,   953,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,   954,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,   955,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,   966,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,   973,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1079,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1080,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1088,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1091,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1102,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1107,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1110,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1112,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1113,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1114,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1115,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1116,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1117,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1118,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1119,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1120,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1121,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1122,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1123,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1128,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1129,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1205,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1214,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1215,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1216,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1217,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1218,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1219,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1220,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1221,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1222,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1279,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1280,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1281,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1282,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1283,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1284,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1285,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1286,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1287,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1329,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1330,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1331,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1332,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1333,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1334,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1335,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1336,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1337,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1372,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1376,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1377,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1378,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1379,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1380,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1381,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1400,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1405,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1406,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1407,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1408,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1409,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1410,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1433,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1434,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1435,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1436,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1437,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,   273,   274,   275,   276,   277,  1438,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,   273,   274,   275,   276,   277,  1461,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,   273,   274,   275,   276,   277,  1462,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,   273,   274,   275,   276,   277,
-  1463,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,   273,   274,   275,   276,
-   277,  1475,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,   273,   274,   275,
-   276,   277,  1476,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,   273,   274,
-   275,   276,   277,  1477,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,   273,
-   274,   275,   276,   277,  1492,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-   273,   274,   275,   276,   277,  1493,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,   273,   274,   275,   276,   277,  1494,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,     0,     0,   421,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
-   541,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,     0,     0,   653,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
-   844,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,     0,     0,   964,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,   415,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,   445,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,   447,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,   448,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-   450,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,   454,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,   455,   273,   274,   275,
-   276,   277,     0,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,   462,
-   273,   274,   275,   276,   277,     0,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,   497,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,   500,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,   503,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,   569,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,   570,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,   571,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-   572,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,   573,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,   574,   273,   274,   275,
-   276,   277,     0,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,   575,
-   273,   274,   275,   276,   277,     0,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,   576,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,   577,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,   578,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,   579,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,   581,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,   582,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-   583,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,   584,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,   585,   273,   274,   275,
-   276,   277,     0,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,   586,
-   273,   274,   275,   276,   277,     0,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,   616,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,   619,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,   632,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,   633,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,   637,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,   638,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-   639,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,   640,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,   641,   273,   274,   275,
-   276,   277,     0,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,   658,
-   273,   274,   275,   276,   277,     0,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,   662,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,   840,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,   841,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,   842,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,   843,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,   902,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-   989,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,  1010,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,  1097,   273,   274,   275,
-   276,   277,     0,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,  1101,
-   273,   274,   275,   276,   277,     0,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,  1103,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,  1208,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,  1210,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,  1212,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,  1223,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,  1224,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287,     0,
-  1225,   273,   274,   275,   276,   277,     0,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,     0,     0,     0,     0,
-     0,   287,     0,  1382,   273,   274,   275,   276,   277,     0,
-   278,   279,   280,   281,   282,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,   287,     0,  1383,   273,   274,   275,
-   276,   277,     0,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,   287,     0,  1384,
-   273,   274,   275,   276,   277,     0,   278,   279,   280,   281,
-   282,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-   287,     0,  1464,   273,   274,   275,   276,   277,     0,   278,
-   279,   280,   281,   282,   283,   284,   285,   286,     0,     0,
-     0,     0,     0,   287,     0,  1465,   273,   274,   275,   276,
-   277,     0,   278,   279,   280,   281,   282,   283,   284,   285,
-   286,     0,     0,     0,     0,     0,   287,     0,  1466,   273,
-   274,   275,   276,   277,     0,   278,   279,   280,   281,   282,
-   283,   284,   285,   286,     0,     0,     0,     0,     0,   287,
-     0,  1512,   273,   274,   275,   276,   277,     0,   278,   279,
-   280,   281,   282,   283,   284,   285,   286,     0,     0,     0,
-     0,     0,   287,     0,  1513,   273,   274,   275,   276,   277,
-     0,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     0,     0,     0,     0,     0,   287,     0,  1514,   273,   274,
-   275,   276,   277,     0,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,   287
-};
-
-static const short yycheck[] = {    23,
-    23,   265,    87,   732,   328,    79,   267,   257,   258,   259,
-     4,     4,     4,     3,    44,   919,     4,     4,    64,    64,
-    42,     7,     6,  1138,   928,  1002,   303,     7,   181,     3,
-   183,   935,    65,    65,     3,     4,     5,    70,    70,   303,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,     6,    34,    35,    36,   180,     3,
-     4,    86,   184,     4,     6,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    65,
-   124,   125,   126,   179,    70,   129,   130,    49,   132,   185,
-   168,   169,   100,     6,  1091,   139,   140,   141,   142,     7,
-   144,   145,   196,   147,   148,   149,   184,   151,   186,    38,
-   859,   179,    41,   179,   164,   165,   166,   185,   149,   185,
-   185,     6,   172,   167,   168,   119,   120,   121,   122,   123,
-   124,   125,   126,   186,   186,     6,     7,   179,    89,    90,
-   421,   185,     4,   187,   179,   189,   190,   444,   154,   155,
-   156,   157,   422,     7,   154,   155,   156,   157,  1293,   169,
-   444,   458,     7,   180,   168,   169,   179,   184,  1092,   175,
-   176,   185,  1096,   185,   458,   175,   176,   185,   185,   168,
-   169,     6,   180,   183,   234,   174,   184,   231,    41,    42,
-   179,    44,   236,   237,   238,   239,   240,   241,   242,   243,
-   244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-   254,   255,   256,     6,   168,   169,   168,   169,     6,    38,
-   174,   265,    41,    42,   267,   179,     5,    89,    90,   273,
-   274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-   284,   285,   286,   287,   168,   169,   154,   155,   156,   157,
-   294,   168,   169,   297,     6,    34,    35,    36,   302,   303,
-   179,   185,     4,     5,   308,   309,   310,   184,   312,   313,
-   314,   315,   316,   317,   318,   325,   326,   179,  1202,  1203,
-  1204,  1205,   168,   169,   179,  1209,   330,   331,   332,   168,
-   169,   335,    34,    35,    36,   184,   593,   186,   342,   185,
-   154,   155,   156,   157,   348,   184,   180,   186,    46,   593,
-   184,  1060,     8,   597,   175,   176,   168,   169,   175,   176,
-   179,   175,   176,     6,   594,   180,   183,   624,   180,   184,
-    38,    39,    40,    41,    42,    43,    44,    45,   179,    47,
-   624,    49,    50,   386,    52,    53,   168,   169,   179,  1273,
-  1274,   168,   169,  1277,   168,   169,   168,   169,   168,   169,
-    42,    69,   184,    38,   186,   179,    41,    42,   185,    44,
-   179,   185,   184,   417,   184,    83,    84,   179,   421,   423,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,   168,   169,   168,   169,   179,   168,   169,    42,
-   444,  1325,   180,   168,   169,    42,   184,   176,   184,    44,
-   184,   180,   456,   184,   458,   180,   460,   461,   175,   176,
-   179,   184,   466,   186,   181,   475,   183,   168,   169,   170,
-   171,   172,   476,   477,    55,    56,   144,   178,   185,   175,
-   176,   485,   185,   724,   725,   181,   185,   183,   492,    42,
-  1374,   170,   171,   172,   751,     6,     7,   501,   502,   178,
-     6,     6,   158,   159,   160,   161,   162,   751,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,   184,   186,   186,
-  1404,     6,   178,   175,   176,   184,   184,   186,   186,   181,
-   186,   183,   179,   179,   184,   186,   186,     4,   541,   104,
-   105,   106,   107,   108,     3,     4,   184,   184,   186,   186,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,     4,     3,   580,    58,    59,    60,
-    61,    42,    63,   587,   588,   589,   590,   179,   892,   593,
-   184,     5,   186,   597,     6,   184,   600,   186,   184,   184,
-   186,   186,   612,   179,   184,   609,   186,  1491,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,   179,     6,   849,
-   624,   625,   178,   184,   184,   186,   186,   184,     5,   186,
-   184,   696,   186,   184,   184,   186,   186,   179,   179,   649,
-   650,   651,   179,   179,   179,   179,   179,   179,   179,   179,
-   654,   655,   179,   657,   179,   179,   179,   667,   888,   179,
-   179,   665,   666,     3,     4,   179,   676,   179,   185,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,   179,   185,   179,   700,   701,   702,   703,
-   704,   705,   706,   707,   708,   709,   710,   711,     8,   168,
-   169,   179,   185,   179,   179,   174,   179,   179,     4,   179,
-   179,   179,   725,   182,   179,   179,   185,   179,   179,   733,
-     6,   735,   185,   181,   788,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,   751,   185,   753,
-   185,   755,   160,   161,   162,    92,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   769,   770,   771,  1072,     6,
-   178,     5,   179,   179,   179,   179,   179,   179,   179,   179,
-   784,   785,   179,   179,   179,   179,   179,   179,     3,     4,
-   179,     4,   179,   179,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,   179,   179,
-   179,   179,   179,   826,   179,   179,   179,   179,   168,   169,
-   179,   179,   179,   179,   174,   179,     6,    87,   180,   179,
-   178,   184,   182,   184,     7,   185,   850,     7,   183,     7,
-   186,     7,   180,     7,   864,     7,   910,   150,   158,   159,
-   160,   161,   162,   185,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,     5,   878,   879,   941,     5,   178,     5,
-   180,     5,     5,   893,   888,   895,     6,   897,     5,     5,
-     5,     5,     5,     5,     5,   899,   900,     5,     5,     5,
-     5,     5,     5,     5,     5,   909,   161,   162,   912,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   922,     5,
-     5,     5,     5,   178,     5,   929,   930,   931,   137,     5,
-     5,     3,   936,     6,    54,     5,   940,     5,     5,   184,
-   944,   945,   946,   947,   948,   949,   950,   951,   952,   953,
-   954,   955,   180,   168,   169,     6,     4,     6,  1012,   174,
-     7,     6,   966,     7,   179,     7,     7,   182,     6,   973,
-   185,     6,   183,     7,     7,     7,   150,     6,   186,   186,
-   185,   155,   185,     7,   179,     7,   990,   151,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   177,  1008,     8,     3,     4,   178,   183,
-   184,   184,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,   184,     6,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   184,   184,   184,     5,   184,   178,   184,
-     6,     4,   184,   184,     6,   184,   184,     6,     6,     6,
-   180,  1075,  1076,  1077,     6,  1079,  1080,     7,     7,     7,
-     7,     7,  1086,     7,   184,   184,   184,   184,   184,   184,
-  1094,   184,   184,   184,  1148,     6,   184,   184,  1102,     7,
-     7,   179,   184,  1107,   184,   184,  1110,   184,  1112,  1113,
-  1114,  1115,  1116,  1117,  1118,  1119,  1120,  1121,  1122,  1123,
-   184,   184,   184,   179,  1128,   179,   179,  1131,   185,   158,
-   159,   160,   161,   162,     7,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,     6,   182,     7,  1201,   179,   178,
-     7,   179,   179,   179,   179,   158,   159,   160,   161,   162,
-   179,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   179,   168,   169,   179,   181,   178,     7,   174,     7,     4,
-     6,   147,   179,     7,     7,     3,     3,  1241,   185,   158,
-   159,   160,   161,   162,     6,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,     3,   170,     3,     3,     3,   178,
-  1214,  1215,  1216,  1217,  1218,  1219,  1220,  1221,  1222,     3,
-     3,     3,  1226,     3,     3,     3,   158,   159,   160,   161,
-   162,     3,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,     3,   416,  1297,     5,     5,   178,   158,   159,   160,
-   161,   162,     3,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,     3,     6,     4,   180,   180,   178,     7,     6,
-  1324,   183,     6,   183,     6,  1279,  1280,  1281,  1282,  1283,
-  1284,  1285,  1286,  1287,  1288,  1289,  1290,     6,     6,   185,
-     6,   185,   184,   184,    88,  1349,   158,   159,   160,   161,
-   162,   180,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   180,   184,   184,   180,   180,   178,   184,     6,  1323,
-   184,   184,   180,     6,   184,  1329,  1330,  1331,  1332,  1333,
-  1334,  1335,  1336,  1337,  1338,   184,  1340,   184,  1342,   184,
-   184,   184,   180,   184,   184,   184,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   180,   184,   184,   184,     4,   178,  1371,  1372,   183,
-     6,     6,  1376,  1377,  1378,  1379,  1380,  1381,    89,     6,
-    38,    39,    40,    41,    42,    43,    44,    45,     6,    47,
-   182,    49,    50,     6,    52,    53,  1400,     6,     6,     6,
-     6,  1405,  1406,  1407,  1408,  1409,  1410,  1411,  1412,  1413,
-     6,    69,     6,     6,     6,     6,     6,     6,    88,     7,
-     3,     6,     3,   170,     6,    83,    84,     6,     6,  1433,
-  1434,  1435,  1436,  1437,  1438,  1439,     3,  1441,     6,  1443,
-   614,   615,     3,   617,     6,     3,     6,   621,   622,     6,
-     3,     3,     3,     7,   183,     4,     6,  1461,  1462,  1463,
-     6,     6,     6,   183,     6,   182,    85,   180,   180,    90,
-   185,  1475,  1476,  1477,  1478,  1479,  1480,   186,   185,   185,
-   184,   184,   656,   184,   184,   659,   144,   184,  1492,  1493,
-  1494,  1495,   184,  1497,   180,  1499,   180,   184,   180,   673,
-   674,   180,   180,   184,   180,   679,   680,     6,     4,   147,
-     5,    88,   686,     6,   688,  1519,  1520,  1521,     3,     6,
-     6,     3,     6,     6,  1528,     6,  1530,     6,  1532,     3,
-     4,     6,     3,     6,     6,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,     6,
-   186,     6,     5,   185,     6,   185,   180,   184,   184,     6,
-   744,   186,   746,   184,   184,   180,     6,   180,     6,     6,
-   184,     6,   756,   757,   758,   184,   184,   761,   762,   763,
-   764,   765,   766,   767,     3,     4,     5,     5,     7,     6,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,     6,    34,    35,    36,     3,     4,
-     6,   186,     6,     6,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,     6,   158,
-   159,   160,   161,   162,     6,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   848,     6,     6,   185,     6,   178,
-     5,   184,   184,   184,   184,    85,   180,   184,   180,   147,
-     6,     6,     5,   184,   168,   169,   185,   185,     6,     5,
-   174,     8,    85,     6,   184,   179,     6,   185,   184,   186,
-   180,   185,   180,   158,   159,   160,   161,   162,   185,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,     8,   184,
-   184,     6,   906,   178,   186,     6,     6,     6,   186,   913,
-     6,   185,   152,     8,   184,   154,   155,   156,   157,   184,
-   153,   184,   184,     6,   185,     6,   185,   180,   932,   168,
-   169,   185,   184,     6,     6,   174,   175,   176,     6,     6,
-   179,   184,   181,   184,   183,     8,   158,   159,   160,   161,
-   162,   185,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   185,   185,   168,   169,   184,   178,     6,     6,   174,
-     3,     4,     6,   180,   179,     6,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-   158,   159,   160,   161,   162,   185,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   185,   185,     6,     6,     6,
-   178,   158,   159,   160,   161,   162,     0,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,     0,     7,   543,     7,
-     7,   178,   853,    -1,   904,    -1,    -1,  1268,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   158,   159,   160,   161,   162,   178,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,  1083,
-    -1,  1085,    -1,   178,  1088,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   158,   159,   160,   161,   162,
-  1104,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,     0,     1,    -1,     3,
-     4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   168,   169,    -1,    -1,    -1,
-    -1,   174,    -1,    -1,    -1,    -1,   179,    -1,    -1,    33,
-    -1,    -1,    -1,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
-    -1,    -1,    -1,    57,    58,    59,    60,    61,    62,    63,
-    -1,    65,    66,    67,    68,    69,    -1,    -1,  1192,    -1,
-    -1,    -1,    -1,  1197,  1198,    -1,    -1,    -1,    -1,    83,
-    84,    -1,    -1,    -1,    -1,    -1,    -1,    91,    41,    93,
-    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
-   124,   125,   126,    38,    39,    40,    41,    42,    43,    44,
-    45,    -1,    47,    -1,    49,    50,    -1,    52,    53,    -1,
-   144,   145,   146,    -1,   148,  1269,  1270,    -1,   101,   102,
-   103,    -1,    -1,    -1,    69,    -1,   109,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,    -1,    -1,    83,    84,
-    -1,    -1,    -1,    -1,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,    -1,   138,   139,   140,   141,   142,
-   143,    -1,    -1,    -1,    -1,    -1,    -1,  1321,    -1,    -1,
-    -1,     4,  1326,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,    -1,    -1,    -1,    -1,   144,
-    33,   186,    -1,    -1,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    -1,    47,    48,    49,    50,    51,    52,
-    53,  1375,    -1,    -1,    57,    58,    59,    60,    61,    62,
-    63,    -1,    65,    66,    67,    68,    69,    -1,    -1,    -1,
-    -1,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1403,
-    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
-    93,    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,
-    -1,    -1,   158,   159,   160,   161,   162,  1431,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,    -1,    -1,    -1,    -1,   184,    -1,
-   186,    -1,    -1,    -1,    -1,    -1,  1460,    -1,    -1,    -1,
-    -1,   144,    -1,    -1,    -1,   158,   159,   160,   161,   162,
-  1474,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,    -1,    -1,
-    -1,   184,    -1,   186,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,    -1,    -1,    -1,    -1,
-   184,    -1,   186,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,    -1,   158,   159,   160,   161,
-   162,   186,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,   158,
-   159,   160,   161,   162,   186,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,    -1,   158,   159,   160,   161,   162,   186,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,    -1,   158,   159,   160,   161,   162,
-   186,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,   158,   159,
-   160,   161,   162,   186,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-    -1,   158,   159,   160,   161,   162,   186,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,    -1,   158,   159,   160,   161,   162,   186,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,    -1,   158,   159,   160,
-   161,   162,   186,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,
-   158,   159,   160,   161,   162,   186,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,    -1,   158,   159,   160,   161,   162,   186,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,    -1,   158,   159,   160,   161,
-   162,   186,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,   158,
-   159,   160,   161,   162,   186,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,    -1,   158,   159,   160,   161,   162,   186,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,    -1,   158,   159,   160,   161,   162,
-   186,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,   158,   159,
-   160,   161,   162,   186,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-    -1,   158,   159,   160,   161,   162,   186,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,    -1,   158,   159,   160,   161,   162,   186,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,   158,   159,   160,   161,   162,   184,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,   158,   159,   160,   161,   162,   184,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,   184,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,   162,
-   184,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,   161,
-   162,   184,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,   160,
-   161,   162,   184,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,   159,
-   160,   161,   162,   184,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,   158,
-   159,   160,   161,   162,   184,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-   158,   159,   160,   161,   162,   184,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,   158,   159,   160,   161,   162,   184,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,    -1,    -1,   182,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,    -1,
-   182,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,    -1,    -1,   182,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,    -1,
-   182,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,    -1,    -1,   182,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-   180,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,   180,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,
-   161,   162,    -1,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,
-   158,   159,   160,   161,   162,    -1,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,   180,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-   180,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,   180,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,
-   161,   162,    -1,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,
-   158,   159,   160,   161,   162,    -1,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,   180,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-   180,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,   180,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,
-   161,   162,    -1,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,
-   158,   159,   160,   161,   162,    -1,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,   180,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-   180,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,   180,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,
-   161,   162,    -1,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,
-   158,   159,   160,   161,   162,    -1,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,   180,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-   180,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,   180,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,
-   161,   162,    -1,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,
-   158,   159,   160,   161,   162,    -1,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,   180,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,
-   180,   158,   159,   160,   161,   162,    -1,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,
-    -1,   178,    -1,   180,   158,   159,   160,   161,   162,    -1,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,    -1,
-    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,
-   161,   162,    -1,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,
-   158,   159,   160,   161,   162,    -1,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,
-   178,    -1,   180,   158,   159,   160,   161,   162,    -1,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,    -1,    -1,
-    -1,    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,
-   162,    -1,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,
-   159,   160,   161,   162,    -1,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178,
-    -1,   180,   158,   159,   160,   161,   162,    -1,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,    -1,    -1,    -1,
-    -1,    -1,   178,    -1,   180,   158,   159,   160,   161,   162,
-    -1,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-    -1,    -1,    -1,    -1,    -1,   178,    -1,   180,   158,   159,
-   160,   161,   162,    -1,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,    -1,    -1,    -1,    -1,    -1,   178
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/lib/bison.simple"
-/* This file comes from bison-1.28.  */
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-	 instead, just don't use alloca.  */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
- #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-		 and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
-
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		-2
-#define YYEOF		0
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
-#define YYERROR		goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-#define YYFAIL		goto yyerrlab
-#define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    { yychar = (token), yylval = (value);			\
-      yychar1 = YYTRANSLATE (yychar);				\
-      YYPOPSTACK;						\
-      goto yybackup;						\
-    }								\
-  else								\
-    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
-while (0)
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-#ifndef YYPURE
-#define YYLEX		yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int	yychar;			/*  the lookahead symbol		*/
-YYSTYPE	yylval;			/*  the semantic value of the		*/
-				/*  lookahead symbol			*/
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;			/*  location data for the lookahead	*/
-				/*  symbol				*/
-#endif
-
-int yynerrs;			/*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;			/*  nonzero means print parse trace	*/
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
-
-#ifndef	YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
-
-#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
-#else				/* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
-{
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-
-#line 217 "/usr/lib/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
-int yyparse (void);
-#endif
-#endif
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
-
-  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
-  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
-
-  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
-
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
-
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
-
-  YYSTYPE yyval;		/*  the variable used to return		*/
-				/*  semantic values from the action	*/
-				/*  routines				*/
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY;		/* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss - 1;
-  yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
-
-  *++yyssp = yystate;
-
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
-      /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-	 the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-	 but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yyls1, size * sizeof (*yylsp),
-		 &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
-#else /* no yyoverflow */
-      /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-	{
-	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
-	  return 2;
-	}
-      yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
-	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
-      if (yyssp >= yyss + yystacksize - 1)
-	YYABORT;
-    }
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
-  goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
-    {
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Reading a token: ");
-#endif
-      yychar = YYLEX;
-    }
-
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)		/* This means end of input. */
-    {
-      yychar1 = 0;
-      yychar = YYEOF;		/* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Now at end of input.\n");
-#endif
-    }
-  else
-    {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-	{
-	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-	  /* Give the individual parser a way to print the precise meaning
-	     of a token, for further debugging info.  */
-#ifdef YYPRINT
-	  YYPRINT (stderr, yychar, yylval);
-#endif
-	  fprintf (stderr, ")\n");
-	}
-#endif
-    }
-
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-    goto yydefault;
-
-  yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-	goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrlab;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
-  yystate = yyn;
-  goto yynewstate;
-
-/* Do the default action for the current state.  */
-yydefault:
-
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
-yyreduce:
-  yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-	       yyn, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
-
-
-  switch (yyn) {
-
-case 4:
-#line 160 "Gmsh.y"
-{ yyerrok ; return 1; ;
-    break;}
-case 5:
-#line 168 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
-    break;}
-case 6:
-#line 169 "Gmsh.y"
-{ yyval.d = -yyvsp[0].d; ;
-    break;}
-case 7:
-#line 174 "Gmsh.y"
-{
-      Msg(PARSER_INFO,"STL file format");
-      STL_Surf = Create_Surface(1,MSH_SURF_STL,1);
-      STL_Surf->STL = new STL_Data;
-      return 1;
-    ;
-    break;}
-case 8:
-#line 188 "Gmsh.y"
-{
-      STL_Surf->STL->Add_Facet( yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d,
-				yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d,
-				yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].d);
-      return 1;
-    ;
-    break;}
-case 9:
-#line 195 "Gmsh.y"
-{
-      Msg(PARSER_INFO,"STL file format read");
-      Tree_Add(THEM->Surfaces, &STL_Surf);
-      return 1;
-    ;
-    break;}
-case 12:
-#line 212 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 13:
-#line 213 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 14:
-#line 214 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 15:
-#line 219 "Gmsh.y"
-{
-      Msg(PARSER_INFO,"Step Iso-10303-21 file format");
-      Create_Step_Solid_BRep();
-    ;
-    break;}
-case 16:
-#line 224 "Gmsh.y"
-{
-      Msg(PARSER_INFO,"Step Iso-10303-21 file format read");
-      Resolve_BREP ();
-    ;
-    break;}
-case 20:
-#line 235 "Gmsh.y"
-{
-    ;
-    break;}
-case 21:
-#line 238 "Gmsh.y"
-{
-    ;
-    break;}
-case 22:
-#line 242 "Gmsh.y"
-{
-   ;
-    break;}
-case 23:
-#line 248 "Gmsh.y"
-{
-        Add_Cartesian_Point((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2]);
-    ;
-    break;}
-case 24:
-#line 254 "Gmsh.y"
-{
-       Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l,	yyvsp[-6].l, yyvsp[-4].l, 0., 1.);
-    ;
-    break;}
-case 25:
-#line 261 "Gmsh.y"
-{
-      Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l,
-				      yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. );
-    ;
-    break;}
-case 26:
-#line 267 "Gmsh.y"
-{
-      Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d);
-    ;
-    break;}
-case 27:
-#line 271 "Gmsh.y"
-{
-      Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,1);
-    ;
-    break;}
-case 28:
-#line 275 "Gmsh.y"
-{
-      /* La je dois voir la norme ! Face_Bound : trou externe a la surface ! */
-      Msg(PARSER_INFO,"Found a face bound");
-      Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,0);
-    ;
-    break;}
-case 29:
-#line 282 "Gmsh.y"
-{
-      Add_Oriented_Edge((int)yyvsp[-14].d,yyvsp[-10].c,(int)yyvsp[-4].d,yyvsp[-2].i);
-    ;
-    break;}
-case 30:
-#line 286 "Gmsh.y"
-{
-      Add_Edge_Loop((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].l);
-    ;
-    break;}
-case 31:
-#line 291 "Gmsh.y"
-{
-      Add_Advanced_Face((int)yyvsp[-12].d,yyvsp[-8].c,yyvsp[-6].l,(int)yyvsp[-4].d,yyvsp[-2].i);
-    ;
-    break;}
-case 32:
-#line 295 "Gmsh.y"
-{
-      Add_Vertex_Point((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d);
-    ;
-    break;}
-case 33:
-#line 299 "Gmsh.y"
-{
-    ;
-    break;}
-case 34:
-#line 303 "Gmsh.y"
-{
-      Add_Axis2_Placement3D  ( (int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d);
-    ;
-    break;}
-case 35:
-#line 307 "Gmsh.y"
-{
-      Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]);
-    ;
-    break;}
-case 36:
-#line 311 "Gmsh.y"
-{
-      Add_Plane((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d);
-    ;
-    break;}
-case 37:
-#line 315 "Gmsh.y"
-{
-      Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d);
-    ;
-    break;}
-case 38:
-#line 319 "Gmsh.y"
-{
-      Msg(PARSER_INFO,"Found a closed shell");
-      Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l);
-    ;
-    break;}
-case 39:
-#line 325 "Gmsh.y"
-{
-    ;
-    break;}
-case 40:
-#line 328 "Gmsh.y"
-{
-    ;
-    break;}
-case 41:
-#line 331 "Gmsh.y"
-{
-      Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 42:
-#line 335 "Gmsh.y"
-{
-      Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d);
-    ;
-    break;}
-case 43:
-#line 339 "Gmsh.y"
-{
-      Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d);
-    ;
-    break;}
-case 44:
-#line 343 "Gmsh.y"
-{
-      Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 45:
-#line 347 "Gmsh.y"
-{
-      Add_Ellipsis((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
-    ;
-    break;}
-case 46:
-#line 352 "Gmsh.y"
-{
-    ;
-    break;}
-case 47:
-#line 355 "Gmsh.y"
-{
-    ;
-    break;}
-case 48:
-#line 359 "Gmsh.y"
-{
-    ;
-    break;}
-case 49:
-#line 362 "Gmsh.y"
-{
-    ;
-    break;}
-case 50:
-#line 366 "Gmsh.y"
-{
-    ;
-    break;}
-case 51:
-#line 369 "Gmsh.y"
-{
-    ;
-    break;}
-case 52:
-#line 372 "Gmsh.y"
-{
-    ;
-    break;}
-case 53:
-#line 382 "Gmsh.y"
-{
-  ;
-    break;}
-case 54:
-#line 385 "Gmsh.y"
-{
-      Msg(PARSER_INFO,"Gmsh file format read");
-    ;
-    break;}
-case 55:
-#line 391 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 56:
-#line 392 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 57:
-#line 393 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 58:
-#line 394 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 59:
-#line 395 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 60:
-#line 396 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 61:
-#line 397 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 62:
-#line 398 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 63:
-#line 399 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 64:
-#line 400 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 65:
-#line 401 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 66:
-#line 402 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 67:
-#line 407 "Gmsh.y"
-{
-      Msg(DIRECT, yyvsp[-2].c);
-    ;
-    break;}
-case 68:
-#line 411 "Gmsh.y"
-{
-      for(i = 0 ; i<List_Nbr(yyvsp[-2].l) ; i++){
-	if(!i){
-	  str = strtok(yyvsp[-4].c, "%");
-	  strcpy(tmpstring, str); 
-	}
-	str = strtok(NULL, "%");
-	if(str){
-	  strcpy(tmpstring2, "%");
-	  strcat(tmpstring2, str);
-	  sprintf(tmpstring3, tmpstring2, *(double*)List_Pointer(yyvsp[-2].l,i)); 
-	  strcat(tmpstring, tmpstring3);
-	}
-	else{
-	  vyyerror("Missing %d parameter(s) in Printf format",
-		   List_Nbr(yyvsp[-2].l)-i);
-	  break ;
-	}
-      }
-      Msg(DIRECT, tmpstring);
-      List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 69:
-#line 441 "Gmsh.y"
-{ 
-      if(!strcmp(yyvsp[-5].c, "View")) EndView(View, 1, yyname, yyvsp[-4].c); 
-    ;
-    break;}
-case 70:
-#line 445 "Gmsh.y"
-{
-      if(!strcmp(yyvsp[-7].c, "View")) EndView(View, 1, yyname, yyvsp[-6].c);
-    ;
-    break;}
-case 71:
-#line 452 "Gmsh.y"
-{
-      View = BeginView(1); 
-    ;
-    break;}
-case 84:
-#line 471 "Gmsh.y"
-{ List_Add(View->SP, &yyvsp[0].d) ; ;
-    break;}
-case 85:
-#line 473 "Gmsh.y"
-{ List_Add(View->SP, &yyvsp[0].d) ; ;
-    break;}
-case 86:
-#line 478 "Gmsh.y"
-{ 
-      List_Add(View->SP, &yyvsp[-5].d); List_Add(View->SP, &yyvsp[-3].d);
-      List_Add(View->SP, &yyvsp[-1].d);
-    ;
-    break;}
-case 87:
-#line 483 "Gmsh.y"
-{
-      View->NbSP++ ;
-    ;
-    break;}
-case 88:
-#line 490 "Gmsh.y"
-{ List_Add(View->VP, &yyvsp[0].d) ; ;
-    break;}
-case 89:
-#line 492 "Gmsh.y"
-{ List_Add(View->VP, &yyvsp[0].d) ; ;
-    break;}
-case 90:
-#line 497 "Gmsh.y"
-{ 
-      List_Add(View->VP, &yyvsp[-5].d); List_Add(View->VP, &yyvsp[-3].d);
-      List_Add(View->VP, &yyvsp[-1].d); 
-    ;
-    break;}
-case 91:
-#line 502 "Gmsh.y"
-{
-      View->NbVP++ ;
-    ;
-    break;}
-case 92:
-#line 509 "Gmsh.y"
-{ List_Add(View->TP, &yyvsp[0].d) ; ;
-    break;}
-case 93:
-#line 511 "Gmsh.y"
-{ List_Add(View->TP, &yyvsp[0].d) ; ;
-    break;}
-case 94:
-#line 516 "Gmsh.y"
-{ 
-      List_Add(View->TP, &yyvsp[-5].d); List_Add(View->TP, &yyvsp[-3].d);
-      List_Add(View->TP, &yyvsp[-1].d);
-    ;
-    break;}
-case 95:
-#line 521 "Gmsh.y"
-{
-      View->NbTP++ ;
-    ;
-    break;}
-case 96:
-#line 528 "Gmsh.y"
-{ List_Add(View->SL, &yyvsp[0].d) ; ;
-    break;}
-case 97:
-#line 530 "Gmsh.y"
-{ List_Add(View->SL, &yyvsp[0].d) ; ;
-    break;}
-case 98:
-#line 536 "Gmsh.y"
-{ 
-      List_Add(View->SL, &yyvsp[-11].d); List_Add(View->SL, &yyvsp[-5].d);
-      List_Add(View->SL, &yyvsp[-9].d); List_Add(View->SL, &yyvsp[-3].d);
-      List_Add(View->SL, &yyvsp[-7].d); List_Add(View->SL, &yyvsp[-1].d);
-    ;
-    break;}
-case 99:
-#line 542 "Gmsh.y"
-{
-      View->NbSL++ ;
-    ;
-    break;}
-case 100:
-#line 549 "Gmsh.y"
-{ List_Add(View->VL, &yyvsp[0].d) ; ;
-    break;}
-case 101:
-#line 551 "Gmsh.y"
-{ List_Add(View->VL, &yyvsp[0].d) ; ;
-    break;}
-case 102:
-#line 557 "Gmsh.y"
-{ 
-      List_Add(View->VL, &yyvsp[-11].d); List_Add(View->VL, &yyvsp[-5].d);
-      List_Add(View->VL, &yyvsp[-9].d); List_Add(View->VL, &yyvsp[-3].d);
-      List_Add(View->VL, &yyvsp[-7].d); List_Add(View->VL, &yyvsp[-1].d);
-    ;
-    break;}
-case 103:
-#line 563 "Gmsh.y"
-{
-      View->NbVL++ ;
-    ;
-    break;}
-case 104:
-#line 570 "Gmsh.y"
-{ List_Add(View->TL, &yyvsp[0].d) ; ;
-    break;}
-case 105:
-#line 572 "Gmsh.y"
-{ List_Add(View->TL, &yyvsp[0].d) ; ;
-    break;}
-case 106:
-#line 578 "Gmsh.y"
-{ 
-      List_Add(View->TL, &yyvsp[-11].d); List_Add(View->TL, &yyvsp[-5].d);
-      List_Add(View->TL, &yyvsp[-9].d); List_Add(View->TL, &yyvsp[-3].d);
-      List_Add(View->TL, &yyvsp[-7].d); List_Add(View->TL, &yyvsp[-1].d);
-    ;
-    break;}
-case 107:
-#line 584 "Gmsh.y"
-{
-      View->NbTL++ ;
-    ;
-    break;}
-case 108:
-#line 591 "Gmsh.y"
-{ List_Add(View->ST, &yyvsp[0].d) ; ;
-    break;}
-case 109:
-#line 593 "Gmsh.y"
-{ List_Add(View->ST, &yyvsp[0].d) ; ;
-    break;}
-case 110:
-#line 600 "Gmsh.y"
-{ 
-      List_Add(View->ST, &yyvsp[-17].d); List_Add(View->ST, &yyvsp[-11].d);
-      List_Add(View->ST, &yyvsp[-5].d);
-      List_Add(View->ST, &yyvsp[-15].d); List_Add(View->ST, &yyvsp[-9].d);
-      List_Add(View->ST, &yyvsp[-3].d);
-      List_Add(View->ST, &yyvsp[-13].d); List_Add(View->ST, &yyvsp[-7].d);
-      List_Add(View->ST, &yyvsp[-1].d);
-    ;
-    break;}
-case 111:
-#line 609 "Gmsh.y"
-{
-      View->NbST++ ;
-    ;
-    break;}
-case 112:
-#line 616 "Gmsh.y"
-{ List_Add(View->VT, &yyvsp[0].d) ; ;
-    break;}
-case 113:
-#line 618 "Gmsh.y"
-{ List_Add(View->VT, &yyvsp[0].d) ; ;
-    break;}
-case 114:
-#line 625 "Gmsh.y"
-{ 
-      List_Add(View->VT, &yyvsp[-17].d); List_Add(View->VT, &yyvsp[-11].d);
-      List_Add(View->VT, &yyvsp[-5].d);
-      List_Add(View->VT, &yyvsp[-15].d); List_Add(View->VT, &yyvsp[-9].d);
-      List_Add(View->VT, &yyvsp[-3].d);
-      List_Add(View->VT, &yyvsp[-13].d); List_Add(View->VT, &yyvsp[-7].d);
-      List_Add(View->VT, &yyvsp[-1].d);
-    ;
-    break;}
-case 115:
-#line 634 "Gmsh.y"
-{
-      View->NbVT++ ;
-    ;
-    break;}
-case 116:
-#line 641 "Gmsh.y"
-{ List_Add(View->TT, &yyvsp[0].d) ; ;
-    break;}
-case 117:
-#line 643 "Gmsh.y"
-{ List_Add(View->TT, &yyvsp[0].d) ; ;
-    break;}
-case 118:
-#line 650 "Gmsh.y"
-{ 
-      List_Add(View->TT, &yyvsp[-17].d); List_Add(View->TT, &yyvsp[-11].d);
-      List_Add(View->TT, &yyvsp[-5].d);
-      List_Add(View->TT, &yyvsp[-15].d); List_Add(View->TT, &yyvsp[-9].d);
-      List_Add(View->TT, &yyvsp[-3].d);
-      List_Add(View->TT, &yyvsp[-13].d); List_Add(View->TT, &yyvsp[-7].d);
-      List_Add(View->TT, &yyvsp[-1].d);
-    ;
-    break;}
-case 119:
-#line 659 "Gmsh.y"
-{
-      View->NbTT++ ;
-    ;
-    break;}
-case 120:
-#line 666 "Gmsh.y"
-{ List_Add(View->SS, &yyvsp[0].d) ; ;
-    break;}
-case 121:
-#line 668 "Gmsh.y"
-{ List_Add(View->SS, &yyvsp[0].d) ; ;
-    break;}
-case 122:
-#line 676 "Gmsh.y"
-{ 
-      List_Add(View->SS, &yyvsp[-23].d);  List_Add(View->SS, &yyvsp[-17].d);
-      List_Add(View->SS, &yyvsp[-11].d); List_Add(View->SS, &yyvsp[-5].d);
-      List_Add(View->SS, &yyvsp[-21].d);  List_Add(View->SS, &yyvsp[-15].d);
-      List_Add(View->SS, &yyvsp[-9].d); List_Add(View->SS, &yyvsp[-3].d);
-      List_Add(View->SS, &yyvsp[-19].d);  List_Add(View->SS, &yyvsp[-13].d);
-      List_Add(View->SS, &yyvsp[-7].d); List_Add(View->SS, &yyvsp[-1].d);
-    ;
-    break;}
-case 123:
-#line 685 "Gmsh.y"
-{
-      View->NbSS++ ;
-    ;
-    break;}
-case 124:
-#line 692 "Gmsh.y"
-{ List_Add(View->VS, &yyvsp[0].d) ; ;
-    break;}
-case 125:
-#line 694 "Gmsh.y"
-{ List_Add(View->VS, &yyvsp[0].d) ; ;
-    break;}
-case 126:
-#line 702 "Gmsh.y"
-{ 
-      List_Add(View->VS, &yyvsp[-23].d);  List_Add(View->VS, &yyvsp[-17].d);
-      List_Add(View->VS, &yyvsp[-11].d); List_Add(View->VS, &yyvsp[-5].d);
-      List_Add(View->VS, &yyvsp[-21].d);  List_Add(View->VS, &yyvsp[-15].d);
-      List_Add(View->VS, &yyvsp[-9].d); List_Add(View->VS, &yyvsp[-3].d);
-      List_Add(View->VS, &yyvsp[-19].d);  List_Add(View->VS, &yyvsp[-13].d);
-      List_Add(View->VS, &yyvsp[-7].d); List_Add(View->VS, &yyvsp[-1].d);
-    ;
-    break;}
-case 127:
-#line 711 "Gmsh.y"
-{
-      View->NbVS++ ;
-    ;
-    break;}
-case 128:
-#line 718 "Gmsh.y"
-{ List_Add(View->TS, &yyvsp[0].d) ; ;
-    break;}
-case 129:
-#line 720 "Gmsh.y"
-{ List_Add(View->TS, &yyvsp[0].d) ; ;
-    break;}
-case 130:
-#line 728 "Gmsh.y"
-{ 
-      List_Add(View->TS, &yyvsp[-23].d);  List_Add(View->TS, &yyvsp[-17].d);
-      List_Add(View->TS, &yyvsp[-11].d); List_Add(View->TS, &yyvsp[-5].d);
-      List_Add(View->TS, &yyvsp[-21].d);  List_Add(View->TS, &yyvsp[-15].d);
-      List_Add(View->TS, &yyvsp[-9].d); List_Add(View->TS, &yyvsp[-3].d);
-      List_Add(View->TS, &yyvsp[-19].d);  List_Add(View->TS, &yyvsp[-13].d);
-      List_Add(View->TS, &yyvsp[-7].d); List_Add(View->TS, &yyvsp[-1].d);
-    ;
-    break;}
-case 131:
-#line 737 "Gmsh.y"
-{
-      View->NbTS++ ;
-    ;
-    break;}
-case 132:
-#line 749 "Gmsh.y"
-{ yyval.i = 0 ; ;
-    break;}
-case 133:
-#line 750 "Gmsh.y"
-{ yyval.i = 1 ; ;
-    break;}
-case 134:
-#line 751 "Gmsh.y"
-{ yyval.i = 2 ; ;
-    break;}
-case 135:
-#line 752 "Gmsh.y"
-{ yyval.i = 3 ; ;
-    break;}
-case 136:
-#line 753 "Gmsh.y"
-{ yyval.i = 4 ; ;
-    break;}
-case 137:
-#line 756 "Gmsh.y"
-{ yyval.i = 1 ; ;
-    break;}
-case 138:
-#line 757 "Gmsh.y"
-{ yyval.i = -1 ; ;
-    break;}
-case 139:
-#line 764 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-3].c;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(1,1,sizeof(double));
-	if(!yyvsp[-2].i){
-	  List_Put(TheSymbol.val, 0, &yyvsp[-1].d);
-	  List_Add(Symbol_L, &TheSymbol);
-	}
-	else
-	  vyyerror("Unknown variable '%s'", yyvsp[-3].c) ;
-      }
-      else{
-	pd = (double*)List_Pointer_Fast(pSymbol->val, 0) ; 
-	switch(yyvsp[-2].i){
-	case 0 : *pd = yyvsp[-1].d; break ;
-	case 1 : *pd += yyvsp[-1].d ; break ;
-	case 2 : *pd -= yyvsp[-1].d ; break ;
-	case 3 : *pd *= yyvsp[-1].d ; break ;
-	case 4 : 
-	  if(yyvsp[-1].d) *pd /= yyvsp[-1].d ; 
-	  else vyyerror("Division by zero in '%s /= %g'", yyvsp[-3].c, yyvsp[-1].d);
-	  break;
-	}
-      }
-    ;
-    break;}
-case 140:
-#line 791 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-6].c;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(5,5,sizeof(double));
-	if(!yyvsp[-2].i){
-	  List_Put(TheSymbol.val, (int)yyvsp[-4].d, &yyvsp[-1].d);
-	  List_Add(Symbol_L, &TheSymbol);
-	}
-	else
-	  vyyerror("Unknown variable '%s'", yyvsp[-6].c) ;
-      }
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-4].d))){
-	  switch(yyvsp[-2].i){
-	  case 0 : *pd = yyvsp[-1].d; break ;
-	  case 1 : *pd += yyvsp[-1].d ; break ;
-	  case 2 : *pd -= yyvsp[-1].d ; break ;
-	  case 3 : *pd *= yyvsp[-1].d ; break ;
-	  case 4 : 
-	    if(yyvsp[-1].d) *pd /= yyvsp[-1].d ; 
-	    else vyyerror("Division by zero in '%s[%d] /= %g'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].d);
-	    break;
-	  }
-	}
-	else{
-	  if(!yyvsp[-2].i)
-	    List_Put(pSymbol->val, (int)yyvsp[-4].d, &yyvsp[-1].d);
-	  else
-	    vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d) ;
-	}
-      }
-    ;
-    break;}
-case 141:
-#line 825 "Gmsh.y"
-{
-      if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l))
-	vyyerror("Incompatible array dimensions in affectation");
-      else{
-	TheSymbol.Name = yyvsp[-8].c;
-	if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	  TheSymbol.val = List_Create(5,5,sizeof(double));
-	  if(!yyvsp[-2].i){
-	    for(i=0 ; i<List_Nbr(yyvsp[-5].l) ; i++){
-	      List_Put(TheSymbol.val, (int)(*(double*)List_Pointer(yyvsp[-5].l,i)),
-		       (double*)List_Pointer(yyvsp[-1].l,i));
-	    }
-	    List_Add(Symbol_L, &TheSymbol);
-	  }
-	  else
-	    vyyerror("Unknown variable '%s'", yyvsp[-8].c) ;
-	}
-	else{
-	  for(i=0 ; i<List_Nbr(yyvsp[-5].l) ; i++){
-	    j = (int)(*(double*)List_Pointer(yyvsp[-5].l,i)) ;
-	    d = *(double*)List_Pointer(yyvsp[-1].l,i) ;
-	    if((pd = (double*)List_Pointer_Test(pSymbol->val, j))){
-	      switch(yyvsp[-2].i){
-	      case 0 : *pd = d; break ;
-	      case 1 : *pd += d ; break ;
-	      case 2 : *pd -= d ; break ;
-	      case 3 : *pd *= d ; break ;
-	      case 4 : 
-		if(yyvsp[-1].l) *pd /= d ; 
-		else vyyerror("Division by zero in '%s[%d] /= %g'", yyvsp[-8].c, j, d);
-		break;
-	      }
-	    }
-	    else{
-	      if(!yyvsp[-2].i)
-		List_Put(pSymbol->val, j, &d);
-	      else
-		vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-8].c, j) ;	  
-	    }
-	  }
-	}
-      }
-      List_Delete(yyvsp[-5].l);
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 142:
-#line 872 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-5].c;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(5,5,sizeof(double));
-	List_Copy(yyvsp[-1].l,TheSymbol.val);
-	List_Add(Symbol_L, &TheSymbol);
-      }
-      else{
-	List_Reset(pSymbol->val);
-	List_Copy(yyvsp[-1].l, pSymbol->val);
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 143:
-#line 887 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-2].c;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
-	vyyerror("Unknown variable '%s'", yyvsp[-2].c) ; 
-      else
-	*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i; 
-    ;
-    break;}
-case 144:
-#line 896 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-5].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
-	vyyerror("Unknown variable '%s'", yyvsp[-5].c) ; 
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-3].d)))
-	  *pd += yyvsp[-1].i ;
-	else
-	  vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-5].c, (int)yyvsp[-3].d) ;
-      }
-    ;
-    break;}
-case 145:
-#line 911 "Gmsh.y"
-{ 
-      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown string option class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption(yyvsp[-3].c, pStrCat)))
-	  vyyerror("Unknown string option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else
-	  pStrOpt(0,GMSH_SET|GMSH_GUI,yyvsp[-1].c) ;
-      }
-    ;
-    break;}
-case 146:
-#line 923 "Gmsh.y"
-{ 
-      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-8].c)))
-	vyyerror("Unknown string option class '%s'", yyvsp[-8].c);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption(yyvsp[-3].c, pStrCat)))
-	  vyyerror("Unknown string option '%s[%d].%s'", yyvsp[-8].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	else
-	  pStrOpt((int)yyvsp[-6].d,GMSH_SET|GMSH_GUI,yyvsp[-1].c) ;
-      }
-    ;
-    break;}
-case 147:
-#line 937 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pNumOpt = (double (*) (int, int, double))Get_NumberOption(yyvsp[-3].c, pNumCat)))
-	  vyyerror("Unknown numeric option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  switch(yyvsp[-2].i){
-	  case 0 : d = yyvsp[-1].d ; break ;
-	  case 1 : d = pNumOpt(0,GMSH_GET,0) + yyvsp[-1].d ; break ;
-	  case 2 : d = pNumOpt(0,GMSH_GET,0) - yyvsp[-1].d ; break ;
-	  case 3 : d = pNumOpt(0,GMSH_GET,0) * yyvsp[-1].d ; break ;
-	  case 4 : 
-	    if(yyvsp[-1].d) d = pNumOpt(0,GMSH_GET,0) / yyvsp[-1].d ; 
-	    else vyyerror("Division by zero in '%s.%s /= %g'", yyvsp[-5].c, yyvsp[-3].c, yyvsp[-1].d);
-	    break;
-	  }
-	  pNumOpt(0,GMSH_SET|GMSH_GUI, d) ;
-	}
-      }
-    ;
-    break;}
-case 148:
-#line 960 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-8].c)))
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-8].c);
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-3].c, pNumCat)))
-	  vyyerror("Unknown numeric option '%s[%d].%s'", yyvsp[-8].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	else{
-	  switch(yyvsp[-2].i){
-	  case 0 : d = yyvsp[-1].d; break ;
-	  case 1 : d = pNumOpt((int)yyvsp[-6].d,GMSH_GET,0) + yyvsp[-1].d ; break ;
-	  case 2 : d = pNumOpt((int)yyvsp[-6].d,GMSH_GET,0) - yyvsp[-1].d ; break ;
-	  case 3 : d = pNumOpt((int)yyvsp[-6].d,GMSH_GET,0) * yyvsp[-1].d ; break ;
-	  case 4 : 
-	    if(yyvsp[-1].d) d = pNumOpt((int)yyvsp[-6].d,GMSH_GET,0) / yyvsp[-1].d ;
-	    else vyyerror("Division by zero in '%s[%d].%s /= %g'", 
-			  yyvsp[-8].c, (int)yyvsp[-6].d, yyvsp[-3].c, yyvsp[-1].d);
-	    break;
-	  }
-	  pNumOpt((int)yyvsp[-6].d,GMSH_SET|GMSH_GUI,d) ;
-	}
-      }
-    ;
-    break;}
-case 149:
-#line 984 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-4].c);
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-2].c, pNumCat)))
-	  vyyerror("Unknown numeric option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
-	else
-	  pNumOpt(0,GMSH_SET|GMSH_GUI,pNumOpt(0,GMSH_GET,0)+yyvsp[-1].i) ;
-      }
-    ;
-    break;}
-case 150:
-#line 996 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-7].c)))
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-7].c);
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-2].c, pNumCat)))
-	  vyyerror("Unknown numeric option '%s[%d].%s'", yyvsp[-7].c, (int)yyvsp[-5].d, yyvsp[-2].c);
-	else
-	  pNumOpt((int)yyvsp[-5].d,GMSH_SET|GMSH_GUI,pNumOpt((int)yyvsp[-5].d,GMSH_GET,0)+yyvsp[-1].i) ;
-      }
-    ;
-    break;}
-case 151:
-#line 1010 "Gmsh.y"
-{
-      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
-	vyyerror("Unknown color option class '%s'", yyvsp[-7].c);
-      else{
-	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption(yyvsp[-3].c, pColCat)))
-	  vyyerror("Unknown color option '%s.Color.%s'", yyvsp[-7].c, yyvsp[-3].c);
-	else
-	  pColOpt(0,GMSH_SET|GMSH_GUI,yyvsp[-1].u) ;
-      }
-    ;
-    break;}
-case 152:
-#line 1022 "Gmsh.y"
-{
-      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-10].c)))
-	vyyerror("Unknown color option class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption(yyvsp[-3].c, pColCat)))
-	  vyyerror("Unknown color option '%s[%d].Color.%s'", yyvsp[-10].c, (int)yyvsp[-8].d, yyvsp[-3].c);
-	else
-	  pColOpt((int)yyvsp[-8].d,GMSH_SET|GMSH_GUI,yyvsp[-1].u) ;
-      }
-    ;
-    break;}
-case 153:
-#line 1036 "Gmsh.y"
-{
-      ColorTable *ct = Get_ColorTable(0);
-      if(!ct)
-	vyyerror("View[%d] does not exist", 0);
-      else{
-	ct->size = List_Nbr(yyvsp[-1].l);
-	if(ct->size > COLORTABLE_NBMAX_COLOR)
-	  vyyerror("Too many (%d>%d) colors in View[%d].ColorTable", 
-		   ct->size, COLORTABLE_NBMAX_COLOR, 0);
-	else
-	  for(i=0 ; i<ct->size ; i++) List_Read(yyvsp[-1].l, i, &ct->table[i]);
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 154:
-#line 1052 "Gmsh.y"
-{
-      ColorTable *ct = Get_ColorTable((int)yyvsp[-6].d);
-      if(!ct)
-	vyyerror("View[%d] does not exist", (int)yyvsp[-6].d);
-      else{
-	ct->size = List_Nbr(yyvsp[-1].l);
-	if(ct->size > COLORTABLE_NBMAX_COLOR)
-	  vyyerror("Too many (%d>%d) colors in View[%d].ColorTable", 
-		   ct->size, COLORTABLE_NBMAX_COLOR, (int)yyvsp[-6].d);
-	else
-	  for(i=0 ; i<ct->size ; i++) List_Read(yyvsp[-1].l, i, &ct->table[i]);
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 155:
-#line 1068 "Gmsh.y"
-{
-#ifndef _NOPLUGIN
-    try 
-      {
-	GMSH_PluginManager::Instance()->SetPluginOption(yyvsp[-6].c,yyvsp[-3].c,yyvsp[-1].d); 
-      }
-    catch (...)
-      {
-	Msg(WARNING,"Unknown option '%s' or plugin '%s'",yyvsp[-3].c,yyvsp[-6].c);
-      }
-#endif
-  ;
-    break;}
-case 156:
-#line 1081 "Gmsh.y"
-{
-#ifndef _NOPLUGIN
-    try 
-      {
-	GMSH_PluginManager::Instance()->SetPluginOption(yyvsp[-6].c,yyvsp[-3].c,yyvsp[-1].c); 
-      }
-    catch (...)
-      {
-	Msg(WARNING,"Unknown option '%s' or plugin '%s'",yyvsp[-3].c,yyvsp[-6].c);
-      }
-#endif
-  ;
-    break;}
-case 157:
-#line 1105 "Gmsh.y"
-{
-      Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]);
-      yyval.s.Type = MSH_POINT;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 158:
-#line 1112 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_POINT;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 159:
-#line 1118 "Gmsh.y"
-{
-      Vertex *v;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
-      	List_Read(yyvsp[-9].l,i,&p);
-        ip = (int)p;
-        v = FindPoint(ip,THEM);
-        if(!v)
-	  vyyerror("Unkown Point %d", ip);
-	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,v,NULL,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
-      }
-    ;
-    break;}
-case 160:
-#line 1137 "Gmsh.y"
-{
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-	List_Read(yyvsp[-3].l,i,&d);
-	Vertex *v = FindPoint((int)d,THEM);
-	if(!v)
-	  vyyerror("Unkown Point %d", (int)d);
-	else
-	  v->lc = yyvsp[-1].d;
-      }
-    ;
-    break;}
-case 161:
-#line 1148 "Gmsh.y"
-{
-      yyval.s.Type = MSH_POINT;
-      yyval.s.Num  = (int)yyvsp[-2].d;
-    ;
-    break;}
-case 162:
-#line 1156 "Gmsh.y"
-{
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_LINE;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 163:
-#line 1162 "Gmsh.y"
-{
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_SPLN;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 164:
-#line 1168 "Gmsh.y"
-{
-      Curve *c;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
-      	List_Read(yyvsp[-9].l,i,&p);
-        ip = (int)p;
-        c = FindCurve(ip,THEM);
-        if(!c)
-	  vyyerror("Unkown Curve %d", ip);
-	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,NULL,c,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
-      }
-    ;
-    break;}
-case 165:
-#line 1187 "Gmsh.y"
-{
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_CIRC ;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 166:
-#line 1193 "Gmsh.y"
-{
-      List_T *temp;
-      int i,j;
-      double d;
-      temp = List_Create(List_Nbr(yyvsp[-3].l),1,sizeof(int));
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-      	List_Read(yyvsp[-3].l,i,&d);
-        j = (int)d;
-        List_Add(temp,&j);
-      }
-      AddCircleInDataBase ((int) yyvsp[-6].d, MSH_SEGM_CIRC, temp, yyvsp[-1].v);
-      List_Delete(temp);
-      yyval.s.Type = MSH_SEGM_CIRC ;
-      yyval.s.Num  = (int)yyvsp[-6].d;
-    ;
-    break;}
-case 167:
-#line 1210 "Gmsh.y"
-{
-      Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c);
-      yyval.s.Type = MSH_SEGM_PARAMETRIC ;
-      yyval.s.Num  = (int)yyvsp[-14].d;
-    ;
-    break;}
-case 168:
-#line 1216 "Gmsh.y"
-{
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_ELLI ;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 169:
-#line 1222 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_LINE;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 170:
-#line 1228 "Gmsh.y"
-{
-      yyval.s.Type = MSH_SEGM_LOOP;
-      Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Num = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 171:
-#line 1234 "Gmsh.y"
-{
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_BSPLN;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 172:
-#line 1240 "Gmsh.y"
-{
-      List_T *Temp;
-      int i;
-      double d;
-      if((int)yyvsp[-1].d + 1 + List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-3].l)){
-	vyyerror("Wrong definition of Nurbs Curve %d: "
-		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
-		(int)yyvsp[-8].d, (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l), List_Nbr(yyvsp[-3].l));
-      }
-      Temp = List_Create(List_Nbr(yyvsp[-5].l),1,sizeof(int));
-      for(i=0;i<List_Nbr(yyvsp[-5].l);i++) {
-      	List_Read(yyvsp[-5].l,i,&d);
-        j = (int)d;
-        List_Add(Temp,&j);
-      }
-      AddCurveInDataBase ((int)yyvsp[-8].d,MSH_SEGM_NURBS,(int)yyvsp[-1].d,Temp,yyvsp[-3].l,-1,-1,0.,1.);
-      List_Delete(Temp);
-    ;
-    break;}
-case 173:
-#line 1259 "Gmsh.y"
-{
-      yyval.s.Num = (int)yyvsp[-2].d;
-      Curve *c = FindCurve(yyval.s.Num,THEM);
-      if(!c)
-	vyyerror("Unkown Curve %d", yyval.s.Num);
-      else
-	yyval.s.Type = c->Typ;
-    ;
-    break;}
-case 174:
-#line 1271 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_SURF_PLAN;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 175:
-#line 1277 "Gmsh.y"
-{
-      Surface *s,*support;
-      support = FindSurface((int)yyvsp[-4].d,THEM);
-      if(!support)
-	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
-      else{
-	Cdbz101((int)yyvsp[-8].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-2].l,NULL);
-	s = FindSurface((int)yyvsp[-8].d,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", (int)yyvsp[-8].d);
-	else{
-	  s->Typ =  MSH_SURF_TRIMMED;
-	  s->Support = support;
-	  yyval.s.Type = MSH_SURF_TRIMMED;
-	  yyval.s.Num  = (int)yyvsp[-8].d;
-	}
-      }
-    ;
-    break;}
-case 176:
-#line 1296 "Gmsh.y"
-{
-      List_Read(yyvsp[-1].l,0,&d);
-      i = (int)d;
-      EdgeLoop *el = FindEdgeLoop(i,THEM);
-      if(!el)
-	vyyerror("Unkown Line Loop %d", i);
-      else{
-	j = List_Nbr(el->Curves);
-	if(j==4)
-	  yyval.s.Type = MSH_SURF_REGL;
-	else if(j==3)
-	  yyval.s.Type  = MSH_SURF_TRIC;
-	else
-	  vyyerror("Wrong definition of Ruled Surface %d: "
-		   "%d borders instead of 3 or 4", 
-		   (int)yyvsp[-4].d, j);
-	Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-	yyval.s.Num = (int)yyvsp[-4].d;
-      }
-    ;
-    break;}
-case 177:
-#line 1319 "Gmsh.y"
-{
-      CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
-      yyval.s.Type  = MSH_SURF_NURBS;
-      yyval.s.Num = (int)yyvsp[-16].d;
-    ;
-    break;}
-case 178:
-#line 1327 "Gmsh.y"
-{
-      CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
-    ;
-    break;}
-case 179:
-#line 1331 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_SURFACE;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 180:
-#line 1337 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_SURF_LOOP;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 181:
-#line 1343 "Gmsh.y"
-{
-      yyval.s.Num = (int)yyvsp[-2].d;
-      Surface *s = FindSurface(yyval.s.Num,THEM);
-      if(!s)
-	vyyerror("Unknown Surface %d", yyval.s.Num);
-      else
-	yyval.s.Type = s->Typ;
-     ;
-    break;}
-case 182:
-#line 1355 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_VOLUME;
-      yyval.s.Num  = (int)yyvsp[-4].d;      
-    ;
-    break;}
-case 183:
-#line 1361 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_VOLUME;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 184:
-#line 1367 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_VOLUME;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 185:
-#line 1380 "Gmsh.y"
-{
-      TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
-      yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 186:
-#line 1385 "Gmsh.y"
-{
-      RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l);
-      yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 187:
-#line 1390 "Gmsh.y"
-{
-      SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
-      yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 188:
-#line 1395 "Gmsh.y"
-{
-      DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1);
-      yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 189:
-#line 1402 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 190:
-#line 1403 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 191:
-#line 1404 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
-    break;}
-case 192:
-#line 1409 "Gmsh.y"
-{
-      yyval.l = List_Create(3,3,sizeof(Shape));
-    ;
-    break;}
-case 193:
-#line 1413 "Gmsh.y"
-{
-      List_Add(yyval.l,&yyvsp[0].s);
-      yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 194:
-#line 1425 "Gmsh.y"
-{
-      yyval.l = List_Create(3,3,sizeof(Shape));
-      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
-	List_Read (yyvsp[-1].l,i,&TheShape);
-	CopyShape(TheShape.Type,TheShape.Num,&j);
-	TheShape.Num = j;
-	List_Add(yyval.l,&TheShape);
-      }
-    ;
-    break;}
-case 195:
-#line 1443 "Gmsh.y"
-{
-      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
-	List_Read (yyvsp[-1].l,i,&TheShape);
-	DeleteShape(TheShape.Type,TheShape.Num);
-      }
-    ;
-    break;}
-case 196:
-#line 1450 "Gmsh.y"
-{
-	if(!strcmp(yyvsp[-4].c, "View"))
-	  FreeView((int)yyvsp[-2].d);
-      ;
-    break;}
-case 197:
-#line 1455 "Gmsh.y"
-{
-      Init_Mesh(THEM, 1);
-    ;
-    break;}
-case 198:
-#line 1467 "Gmsh.y"
-{
-      if(!strcmp(yyvsp[-2].c, "Include")){
-
-	yyinTab[RecursionLevel++] = yyin;
-
-	strcpy(tmpstring, yyname);
-	i = strlen(yyname)-1 ;
-	while(i >= 0 && yyname[i] != '/' && yyname[i] != '\\') i-- ;
-	tmpstring[i+1] = '\0';
-	strcat(tmpstring,yyvsp[-1].c);
-
-	if((yyin = fopen(tmpstring,"r"))){
-	  Msg(INFO, "Including '%s'", tmpstring); 
-	  strcpy(yynameTab[RecursionLevel-1],yyname);
-	  yylinenoTab[RecursionLevel-1]=yylineno;
-	  yylineno=1;
-	  strcpy(yyname,tmpstring);
-	  while(!feof(yyin)){
-	    yyparse();
-	  }
-	  //
-	  //Est-ce grave de laisser le stream ouvert? Si on fait le
-	  //fclose, on ne peut pas faire appel a une fonction
-	  //(Function) definie en dehors de son fichier de
-	  //definition...
-	  //
-	  //fclose(yyin);
-	  yyin = yyinTab[--RecursionLevel];
-	  strcpy(yyname,yynameTab[RecursionLevel]);
-	  yylineno = yylinenoTab[RecursionLevel];
-	}
-	else{
-	  vyyerror("Unknown file '%s'", tmpstring) ;  
-	  yyin = yyinTab[--RecursionLevel];
-	}
-
-      }
-      else if(!strcmp(yyvsp[-2].c, "Print")){
-	if(!CTX.batch) CreateOutputFile(yyvsp[-1].c, CTX.print.format);
-      }
-      else if(!strcmp(yyvsp[-2].c, "Save")){
-	CreateOutputFile(yyvsp[-1].c, CTX.mesh.format);
-      }
-      else if(!strcmp(yyvsp[-2].c, "Merge")){
-
-	FILE *ff = yyin;
-	MergeProblem(yyvsp[-1].c);
-	yyin = ff;
-
-      }
-      else if(!strcmp(yyvsp[-2].c, "Open")){
-
-	FILE *ff = yyin;
-	OpenProblem(yyvsp[-1].c);
-	yyin = ff;
-
-      }
-      else if(!strcmp(yyvsp[-2].c, "System")){
-	
-	Msg(PARSER_INFO, "Executing system call \"%s\"", yyvsp[-1].c);
-	system(yyvsp[-1].c);
-
-      }
-      else
-	vyyerror("Unknown command '%s'", yyvsp[-2].c);
-    ;
-    break;}
-case 199:
-#line 1534 "Gmsh.y"
-{
-      if(!strcmp(yyvsp[-2].c, "Sleep")){
-
-	long sleep_time = GetTime();
-	while(1){
-	  if(GetTime() - sleep_time > (long)(yyvsp[-1].d*1.e6)) break;
-	}
-      
-      }
-      else if(!strcmp(yyvsp[-2].c, "Mesh")){
-
-	//Maillage_Dimension_0(THEM);
-	//mai3d(THEM,(int)$2);
-	vyyerror("Mesh directives are not (yet) allowed in scripts");
-
-      }
-      else
-	vyyerror("Unknown command '%s'", yyvsp[-2].c);
-    ;
-    break;}
-case 200:
-#line 1554 "Gmsh.y"
-{
-#ifndef _NOPLUGIN
-    GMSH_PluginManager::Instance()->Action(yyvsp[-4].c,yyvsp[-1].c,0); 
-#endif
-   ;
-    break;}
-case 201:
-#line 1560 "Gmsh.y"
-{
-      exit(0);
-    ;
-    break;}
-case 202:
-#line 1564 "Gmsh.y"
-{
-      if(!CTX.batch){ // we're in interactive mode
-	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
-	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
-	  Replot();
-	  DrawUI();
-	}
-	else{
-	  Draw();
-	  DrawUI();
-	}
-      }
-    ;
-    break;}
-case 203:
-#line 1586 "Gmsh.y"
-{
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    ;
-    break;}
-case 204:
-#line 1600 "Gmsh.y"
-{
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    ;
-    break;}
-case 205:
-#line 1614 "Gmsh.y"
-{
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ;
-      
-      TheSymbol.Name = yyvsp[-6].c;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(1,1,sizeof(double));
-	List_Put(TheSymbol.val, 0, &yyvsp[-3].d);
-	List_Add(Symbol_L, &TheSymbol);
-      }
-      else{
-	List_Write(pSymbol->val, 0, &yyvsp[-3].d);
-      }
-      
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    ;
-    break;}
-case 206:
-#line 1639 "Gmsh.y"
-{
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ;
-
-      TheSymbol.Name = yyvsp[-8].c;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(1,1,sizeof(double));
-	List_Put(TheSymbol.val, 0, &yyvsp[-5].d);
-	List_Add(Symbol_L, &TheSymbol);
-      }
-      else{
-	List_Write(pSymbol->val, 0, &yyvsp[-5].d);
-      }
-      
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    ;
-    break;}
-case 207:
-#line 1664 "Gmsh.y"
-{
-      if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
-	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
-	FILE* ff;
-	if(RecursionLevel)
-	  ff = yyinTab[RecursionLevel-1];
-	else
-	  ff = yyin;
-	
-	LoopControlVariablesTab[ImbricatedLoop-1][0] +=
-	  LoopControlVariablesTab[ImbricatedLoop-1][2];
-	
-	if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){
-	  TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
-	  pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols);
-	  *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
-	    LoopControlVariablesTab[ImbricatedLoop-1][2] ;
-	}
-	
-	fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
-      }
-      else{
-	ImbricatedLoop--;
-      }
-    ;
-    break;}
-case 208:
-#line 1690 "Gmsh.y"
-{
-      if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno))
-	vyyerror("Redefinition of function %s",yyvsp[0].c);
-      skip_until(NULL, "Return");
-    ;
-    break;}
-case 209:
-#line 1696 "Gmsh.y"
-{
-      if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno))
-	vyyerror("Error while exiting function");
-    ;
-    break;}
-case 210:
-#line 1701 "Gmsh.y"
-{
-      if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno))
-	vyyerror("Unknown function %s",yyvsp[-1].c);
-    ;
-    break;}
-case 211:
-#line 1706 "Gmsh.y"
-{
-      if(!yyvsp[-1].d) skip_until("If", "EndIf");
-    ;
-    break;}
-case 212:
-#line 1710 "Gmsh.y"
-{
-    ;
-    break;}
-case 213:
-#line 1721 "Gmsh.y"
-{
-      Curve *pc, *prc;
-      Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL);
-    ;
-    break;}
-case 214:
-#line 1726 "Gmsh.y"
-{
-      Curve *pc, *prc;
-      Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,
-			   &pc,&prc,NULL);
-    ;
-    break;}
-case 215:
-#line 1732 "Gmsh.y"
-{
-      Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL);
-    ;
-    break;}
-case 216:
-#line 1736 "Gmsh.y"
-{
-      Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL);
-    ;
-    break;}
-case 217:
-#line 1740 "Gmsh.y"
-{
-      Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL);
-    ;
-    break;}
-case 218:
-#line 1744 "Gmsh.y"
-{
-      Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
-    ;
-    break;}
-case 219:
-#line 1748 "Gmsh.y"
-{
-      extr.mesh.ExtrudeMesh = false;
-      extr.mesh.Recombine = false;
-    ;
-    break;}
-case 220:
-#line 1753 "Gmsh.y"
-{
-      int vol = NEWREG();
-      Extrude_ProtudeSurface(1,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],0.,0.,0.,0.,vol,&extr);
-    ;
-    break;}
-case 221:
-#line 1758 "Gmsh.y"
-{
-      extr.mesh.ExtrudeMesh = false;
-      extr.mesh.Recombine = false;
-    ;
-    break;}
-case 222:
-#line 1764 "Gmsh.y"
-{
-      int vol = NEWREG();
-      Extrude_ProtudeSurface(0,(int)yyvsp[-12].d,yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr);
-    ;
-    break;}
-case 223:
-#line 1772 "Gmsh.y"
-{
-    ;
-    break;}
-case 224:
-#line 1775 "Gmsh.y"
-{
-    ;
-    break;}
-case 225:
-#line 1781 "Gmsh.y"
-{
-      double d;
-      int j;
-      extr.mesh.ExtrudeMesh = true;
-      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
-      for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)d;
-	extr.mesh.NbElmLayer[i] = j;
-	List_Read(yyvsp[-4].l,i,&d);
-	j = (int)d;
-	extr.mesh.ZonLayer[i] = j;
-	List_Read(yyvsp[-2].l,i,&d);
-	extr.mesh.hLayer[i] = d;
-      }
-      List_Delete(yyvsp[-6].l);
-      List_Delete(yyvsp[-4].l);
-      List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 226:
-#line 1801 "Gmsh.y"
-{
-      extr.mesh.Recombine = true;
-    ;
-    break;}
-case 227:
-#line 1812 "Gmsh.y"
-{
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-	List_Read(yyvsp[-3].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  Msg(WARNING, "Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-1].d;
-	  c->ipar[1] = sign(d);
-	  c->dpar[0] = 1.0;
-	}
-      }
-      List_Delete(yyvsp[-3].l);
-    ;
-    break;}
-case 228:
-#line 1830 "Gmsh.y"
-{
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  Msg(WARNING, "Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-4].d;
-	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
-	  c->dpar[0] = fabs(yyvsp[-1].d);
-	}
-      }
-      List_Delete(yyvsp[-6].l);
-    ;
-    break;}
-case 229:
-#line 1848 "Gmsh.y"
-{
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  Msg(WARNING, "Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-4].d;
-	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = fabs(yyvsp[-1].d);
-	}
-      }
-      List_Delete(yyvsp[-6].l);
-    ;
-    break;}
-case 230:
-#line 1866 "Gmsh.y"
-{
-      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
-      if(!s)
-	Msg(WARNING, "Unkown Surface %d", (int)yyvsp[-4].d);
-      else{
-	s->Method = TRANSFINI;
-	k = List_Nbr(yyvsp[-1].l);
-	if(k!=3 && k!=4){
-	  vyyerror("Wrong definition of Transfinite Surface %d: "
-		   "%d points instead of 3 or 4" , yyvsp[-4].d, k) ;
-	}
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read(yyvsp[-1].l,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 231:
-#line 1888 "Gmsh.y"
-{
-      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
-      if(!s)
-	Msg(WARNING, "Unkown Surface %d", (int)yyvsp[-4].d);
-      else{
-        s->Method = ELLIPTIC;
-        k = List_Nbr(yyvsp[-1].l);
-        if(k != 4)
-	  vyyerror("Wrong definition of Elliptic Surface %d: "
-		   "%d points instead of 4" , yyvsp[-4].d, k) ;
-        else{
-	  for(i=0;i<k;i++){
-	    List_Read(yyvsp[-1].l,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 232:
-#line 1909 "Gmsh.y"
-{
-      Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
-      if(!v)
-	Msg(WARNING, "Unkown Volume %d", (int)yyvsp[-4].d);
-      else{
-	v->Method = TRANSFINI;
-	k = List_Nbr(yyvsp[-1].l);
-	if(k!=6 && k!=8)
-	  vyyerror("Wrong definition of Transfinite Volume %d: "
-		   "%d points instead of 6 or 8" , yyvsp[-4].d, k) ;
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read(yyvsp[-1].l,i,&d);
-	    j = (int)fabs(d);
-	    v->ipar[i] = j;
-	  }
-	}
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 233:
-#line 1930 "Gmsh.y"
-{
-      Surface *s;
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-	List_Read(yyvsp[-3].l,i,&d);
-	j = (int)d;
-	s = FindSurface(j,THEM);
-	if(s){
-	  s->Recombine = 1;
-	  s->RecombineAngle = (yyvsp[-1].d > 0 && yyvsp[-1].d < 90) ? yyvsp[-1].d : 90;
-	}
-      }
-      List_Delete(yyvsp[-3].l);
-    ;
-    break;}
-case 234:
-#line 1944 "Gmsh.y"
-{
-      Surface *s;
-      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
-	List_Read(yyvsp[-1].l,i,&d);
-	j = (int)d;
-        s = FindSurface(j,THEM);
-	if(s){
-	  s->Recombine = 1;
-	  s->RecombineAngle = 30.;
-        }
-      }
-      List_Delete(yyvsp[-1].l);
-    ;
-    break;}
-case 235:
-#line 1966 "Gmsh.y"
-{ 
-      Coherence_PS();
-    ;
-    break;}
-case 236:
-#line 1970 "Gmsh.y"
-{ 
-      IntersectAllSegmentsTogether();
-    ;
-    break;}
-case 237:
-#line 1981 "Gmsh.y"
-{yyval.i = 1;;
-    break;}
-case 238:
-#line 1982 "Gmsh.y"
-{yyval.i = 0;;
-    break;}
-case 239:
-#line 1983 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 240:
-#line 1984 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 241:
-#line 1985 "Gmsh.y"
-{yyval.i = -1;;
-    break;}
-case 242:
-#line 1989 "Gmsh.y"
-{ yyval.d = yyvsp[0].d;           ;
-    break;}
-case 243:
-#line 1990 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d ;          ;
-    break;}
-case 244:
-#line 1991 "Gmsh.y"
-{ yyval.d = -yyvsp[0].d ;         ;
-    break;}
-case 245:
-#line 1992 "Gmsh.y"
-{ yyval.d = yyvsp[0].d;           ;
-    break;}
-case 246:
-#line 1993 "Gmsh.y"
-{ yyval.d = !yyvsp[0].d ;         ;
-    break;}
-case 247:
-#line 1994 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
-    break;}
-case 248:
-#line 1995 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
-    break;}
-case 249:
-#line 1996 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
-    break;}
-case 250:
-#line 1998 "Gmsh.y"
-{ 
-      if(!yyvsp[0].d)
-	vyyerror("Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
-      else
-	yyval.d = yyvsp[-2].d / yyvsp[0].d ;     
-    ;
-    break;}
-case 251:
-#line 2004 "Gmsh.y"
-{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
-    break;}
-case 252:
-#line 2005 "Gmsh.y"
-{ yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
-    break;}
-case 253:
-#line 2006 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
-    break;}
-case 254:
-#line 2007 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
-    break;}
-case 255:
-#line 2008 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
-    break;}
-case 256:
-#line 2009 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
-    break;}
-case 257:
-#line 2010 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
-    break;}
-case 258:
-#line 2011 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
-    break;}
-case 259:
-#line 2012 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
-    break;}
-case 260:
-#line 2013 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
-    break;}
-case 261:
-#line 2014 "Gmsh.y"
-{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
-    break;}
-case 262:
-#line 2015 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
-    break;}
-case 263:
-#line 2016 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
-    break;}
-case 264:
-#line 2017 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
-    break;}
-case 265:
-#line 2018 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
-    break;}
-case 266:
-#line 2019 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
-    break;}
-case 267:
-#line 2020 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
-    break;}
-case 268:
-#line 2021 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
-    break;}
-case 269:
-#line 2022 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
-    break;}
-case 270:
-#line 2023 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
-    break;}
-case 271:
-#line 2024 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
-    break;}
-case 272:
-#line 2025 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
-    break;}
-case 273:
-#line 2026 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
-    break;}
-case 274:
-#line 2027 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
-    break;}
-case 275:
-#line 2028 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
-    break;}
-case 276:
-#line 2029 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
-    break;}
-case 277:
-#line 2030 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
-    break;}
-case 278:
-#line 2031 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
-    break;}
-case 279:
-#line 2032 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
-    break;}
-case 280:
-#line 2033 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
-    break;}
-case 281:
-#line 2034 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
-    break;}
-case 282:
-#line 2035 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
-    break;}
-case 283:
-#line 2044 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
-    break;}
-case 284:
-#line 2045 "Gmsh.y"
-{ yyval.d = 3.141592653589793; ;
-    break;}
-case 285:
-#line 2046 "Gmsh.y"
-{ yyval.d = ParUtil::Instance()->rank(); ;
-    break;}
-case 286:
-#line 2047 "Gmsh.y"
-{ yyval.d = ParUtil::Instance()->size(); ;
-    break;}
-case 287:
-#line 2052 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[0].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[0].c) ;
-	yyval.d = 0. ;
-      }
-      else
-	yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ;
-    ;
-    break;}
-case 288:
-#line 2063 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-3].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-3].c) ;
-	yyval.d = 0. ;
-      }
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-1].d)))
-	  yyval.d = *pd ;
-	else{
-	  vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d) ;
-	  yyval.d = 0. ;
-	}
-      }
-    ;
-    break;}
-case 289:
-#line 2080 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-1].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-1].c) ;
-	yyval.d = 0. ;
-      }
-      else
-	yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ;
-    ;
-    break;}
-case 290:
-#line 2091 "Gmsh.y"
-{
-      TheSymbol.Name = yyvsp[-4].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-4].c) ;
-	yyval.d = 0. ;
-      }
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d)))
-	  yyval.d = (*pd += yyvsp[0].i) ;
-	else{
-	  vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ;
-	  yyval.d = 0. ;
-	}
-      }
-    ;
-    break;}
-case 291:
-#line 2110 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c);
-	yyval.d = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
-	  vyyerror("Unknown numeric option '%s.%s'", yyvsp[-2].c, yyvsp[0].c);
-	  yyval.d = 0. ;
-	}
-	else
-	  yyval.d = pNumOpt(0, GMSH_GET, 0);
-      }
-    ;
-    break;}
-case 292:
-#line 2126 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c);
-	yyval.d = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[0].c, pNumCat))){
-	  vyyerror("Unknown numeric option '%s[%d].%s'", yyvsp[-5].c, (int)yyvsp[-3].d, yyvsp[0].c);
-	  yyval.d = 0. ;
-	}
-	else
-	  yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0);
-      }
-    ;
-    break;}
-case 293:
-#line 2142 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-3].c);
-	yyval.d = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-1].c, pNumCat))){
-	  vyyerror("Unknown numeric option '%s.%s'", yyvsp[-3].c, yyvsp[-1].c);
-	  yyval.d = 0. ;
-	}
-	else
-	  yyval.d = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[0].i);
-      }
-    ;
-    break;}
-case 294:
-#line 2158 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){
-	vyyerror("Unknown numeric option class '%s'", yyvsp[-6].c);
-	yyval.d = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption(yyvsp[-1].c, pNumCat))){
-	  vyyerror("Unknown numeric option '%s[%d].%s'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].c);
-	  yyval.d = 0. ;
-	}
-	else
-	  yyval.d = pNumOpt((int)yyvsp[-4].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-4].d, GMSH_GET, 0)+yyvsp[0].i);
-      }
-    ;
-    break;}
-case 295:
-#line 2176 "Gmsh.y"
-{
-      memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ;
-    ;
-    break;}
-case 296:
-#line 2180 "Gmsh.y"
-{
-      for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ;
-    ;
-    break;}
-case 297:
-#line 2184 "Gmsh.y"
-{ 
-      for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i];
-    ;
-    break;}
-case 298:
-#line 2188 "Gmsh.y"
-{ 
-      for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ;
-    ;
-    break;}
-case 299:
-#line 2192 "Gmsh.y"
-{
-      for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ;
-    ;
-    break;}
-case 300:
-#line 2198 "Gmsh.y"
-{ 
-      yyval.v[0]=yyvsp[-9].d;  yyval.v[1]=yyvsp[-7].d;  yyval.v[2]=yyvsp[-5].d;  yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d;
-    ;
-    break;}
-case 301:
-#line 2202 "Gmsh.y"
-{ 
-      yyval.v[0]=yyvsp[-7].d;  yyval.v[1]=yyvsp[-5].d;  yyval.v[2]=yyvsp[-3].d;  yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0;
-    ;
-    break;}
-case 302:
-#line 2206 "Gmsh.y"
-{
-      yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
-    ;
-    break;}
-case 303:
-#line 2210 "Gmsh.y"
-{
-      yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
-    ;
-    break;}
-case 304:
-#line 2217 "Gmsh.y"
-{
-    ;
-    break;}
-case 305:
-#line 2220 "Gmsh.y"
-{
-    ;
-    break;}
-case 306:
-#line 2226 "Gmsh.y"
-{
-    ;
-    break;}
-case 307:
-#line 2229 "Gmsh.y"
-{
-    ;
-    break;}
-case 308:
-#line 2235 "Gmsh.y"
-{
-    ;
-    break;}
-case 309:
-#line 2238 "Gmsh.y"
-{
-       yyval.l=yyvsp[-1].l;
-    ;
-    break;}
-case 310:
-#line 2242 "Gmsh.y"
-{
-       yyval.l=yyvsp[-1].l;
-    ;
-    break;}
-case 311:
-#line 2249 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(List_T*)) ;
-      List_Add(yyval.l, &(yyvsp[0].l)) ;
-    ;
-    break;}
-case 312:
-#line 2254 "Gmsh.y"
-{
-      List_Add(yyval.l, &(yyvsp[0].l)) ;
-    ;
-    break;}
-case 313:
-#line 2262 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ;
-      List_Add(yyval.l, &(yyvsp[0].d)) ;
-    ;
-    break;}
-case 314:
-#line 2267 "Gmsh.y"
-{
-      yyval.l = yyvsp[0].l ;
-    ;
-    break;}
-case 315:
-#line 2271 "Gmsh.y"
-{
-      yyval.l=yyvsp[-1].l;
-    ;
-    break;}
-case 316:
-#line 2275 "Gmsh.y"
-{
-      yyval.l=yyvsp[-1].l;
-      for(i=0 ; i<List_Nbr(yyval.l) ; i++){
-	pd = (double*)List_Pointer(yyval.l, i);
-	(*pd) = - (*pd);
-      }
-    ;
-    break;}
-case 317:
-#line 2286 "Gmsh.y"
-{ 
-      yyval.l = List_Create(2,1,sizeof(double)) ; 
-      for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) 
-	List_Add(yyval.l, &d) ;
-    ;
-    break;}
-case 318:
-#line 2292 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ; 
-      if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){
-        vyyerror("Wrong increment in '%g:%g:%g'", yyvsp[-4].d, yyvsp[-2].d, yyvsp[0].d) ;
-	List_Add(yyval.l, &(yyvsp[-4].d)) ;
-      }
-      else
-	for(d=yyvsp[-4].d ; (yyvsp[0].d>0)?(d<=yyvsp[-2].d):(d>=yyvsp[-2].d) ; d+=yyvsp[0].d)
-	  List_Add(yyval.l, &d) ;
-   ;
-    break;}
-case 319:
-#line 2303 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = yyvsp[-2].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-2].c) ;
-	d = 0.0 ;
-	List_Add(yyval.l, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++)
-	  List_Add(yyval.l, (double*)List_Pointer_Fast(pSymbol->val, i)) ;
-      }
-    ;
-    break;}
-case 320:
-#line 2317 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = yyvsp[-2].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-2].c) ;
-	d = 0.0 ;
-	List_Add(yyval.l, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++){
-	  d = - *(double*)List_Pointer_Fast(pSymbol->val, i);
-	  List_Add(yyval.l, &d) ;
-	}
-      }
-    ;
-    break;}
-case 321:
-#line 2333 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = yyvsp[-5].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-5].c) ;
-	d = 0.0 ;
-	List_Add(yyval.l, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr(yyvsp[-2].l) ; i++){
-	  j = (int)(*(double*)List_Pointer_Fast(yyvsp[-2].l, i));
-	  if((pd = (double*)List_Pointer_Test(pSymbol->val, j)))
-	    List_Add(yyval.l, pd) ;
-	  else
-	    vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-5].c, j) ;	  
-	}
-      }
-      List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 322:
-#line 2353 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = yyvsp[-5].c ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", yyvsp[-5].c) ;
-	d = 0.0 ;
-	List_Add(yyval.l, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr(yyvsp[-2].l) ; i++){
-	  j = (int)(*(double*)List_Pointer_Fast(yyvsp[-2].l, i));
-	  if((pd = (double*)List_Pointer_Test(pSymbol->val, j))){
-	    d = - *pd;
-	    List_Add(yyval.l, &d) ;
-	  }
-	  else
-	    vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-5].c, j) ;	  
-	}
-      }
-      List_Delete(yyvsp[-2].l);
-    ;
-    break;}
-case 323:
-#line 2378 "Gmsh.y"
-{
-      yyval.l = List_Create(2,1,sizeof(double)) ;
-      List_Add(yyval.l, &(yyvsp[0].d)) ;
-    ;
-    break;}
-case 324:
-#line 2383 "Gmsh.y"
-{
-      yyval.l = yyvsp[0].l ;
-    ;
-    break;}
-case 325:
-#line 2387 "Gmsh.y"
-{
-      List_Add(yyval.l, &(yyvsp[0].d)) ;
-    ;
-    break;}
-case 326:
-#line 2391 "Gmsh.y"
-{
-      for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){
-	List_Read(yyvsp[0].l, i, &d) ;
-	List_Add(yyval.l, &d) ;
-      }
-      List_Delete(yyvsp[0].l);
-    ;
-    break;}
-case 327:
-#line 2403 "Gmsh.y"
-{
-      yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
-    ;
-    break;}
-case 328:
-#line 2407 "Gmsh.y"
-{
-      yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
-    ;
-    break;}
-case 329:
-#line 2418 "Gmsh.y"
-{
-      yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
-      if(flag) vyyerror("Unknown color '%s'", yyvsp[0].c);
-    ;
-    break;}
-case 330:
-#line 2423 "Gmsh.y"
-{
-      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
-	vyyerror("Unknown color option class '%s'", yyvsp[-4].c);
-	yyval.u = 0 ;
-      }
-      else{
-	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption(yyvsp[0].c, pColCat))){
-	  vyyerror("Unknown color option '%s.Color.%s'", yyvsp[-4].c, yyvsp[0].c);
-	  yyval.u = 0 ;
-	}
-	else{
-	  yyval.u = pColOpt(0,GMSH_GET,0) ;
-	}
-      }
-    ;
-    break;}
-case 331:
-#line 2442 "Gmsh.y"
-{
-      yyval.l = yyvsp[-1].l;
-    ;
-    break;}
-case 332:
-#line 2446 "Gmsh.y"
-{
-      yyval.l = List_Create(256,10,sizeof(unsigned int)) ;
-      ColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
-      if(!ct)
-	vyyerror("View[%d] does not exist", (int)yyvsp[-3].d);
-      else{
-	for(i=0 ; i<ct->size ; i++) 
-	  List_Add(yyval.l, &ct->table[i]);
-      }
-    ;
-    break;}
-case 333:
-#line 2460 "Gmsh.y"
-{
-      yyval.l = List_Create(256,10,sizeof(unsigned int)) ;
-      List_Add(yyval.l, &(yyvsp[0].u)) ;
-    ;
-    break;}
-case 334:
-#line 2465 "Gmsh.y"
-{
-      List_Add(yyval.l, &(yyvsp[0].u)) ;
-    ;
-    break;}
-case 335:
-#line 2472 "Gmsh.y"
-{
-      yyval.c = yyvsp[0].c;
-    ;
-    break;}
-case 336:
-#line 2476 "Gmsh.y"
-{
-      yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)) ;
-      strcpy(yyval.c, yyvsp[-3].c) ;  
-      strcat(yyval.c, yyvsp[-1].c) ;
-      Free(yyvsp[-3].c);
-      Free(yyvsp[-1].c);
-    ;
-    break;}
-case 337:
-#line 2484 "Gmsh.y"
-{
-      yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)) ;
-      for(i=strlen(yyvsp[-1].c)-1; i>=0; i--){
-	if(yyvsp[-1].c[i] == '.'){
-	  strncpy(yyval.c,yyvsp[-1].c,i);
-	  yyval.c[i]='\0';
-	  break;
-	}
-      }
-      if(i<=0) strcpy(yyval.c,yyvsp[-1].c);
-      Free(yyvsp[-1].c);
-    ;
-    break;}
-case 338:
-#line 2497 "Gmsh.y"
-{
-      yyval.c = yyvsp[-1].c;
-    ;
-    break;}
-case 339:
-#line 2501 "Gmsh.y"
-{
-      for(i = 0 ; i<List_Nbr(yyvsp[-1].l) ; i++){
-	if(!i){
-	  str = strtok(yyvsp[-3].c, "%");
-	  strcpy(tmpstring, str);
-	}
-	str = strtok(NULL, "%");
-	if(str){
-	  strcpy(tmpstring2, "%");
-	  strcat(tmpstring2, str);
-	  sprintf(tmpstring3, tmpstring2, *(double*)List_Pointer(yyvsp[-1].l,i)); 
-	  strcat(tmpstring, tmpstring3);
-	}
-	else{
-	  vyyerror("Missing %d parameter(s) in Sprintf format",
-		   List_Nbr(yyvsp[-1].l)-i);
-	  break ;
-	}
-      }
-      yyval.c = (char*)Malloc((strlen(tmpstring)+1)*sizeof(char));
-      strcpy(yyval.c, tmpstring);
-      List_Delete(yyvsp[-1].l);
-      Free(yyvsp[-3].c);
-    ;
-    break;}
-case 340:
-#line 2526 "Gmsh.y"
-{ 
-      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c)))
-	vyyerror("Unknown string option class '%s'", yyvsp[-3].c);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption(yyvsp[-1].c, pStrCat)))
-	  vyyerror("Unknown string option '%s.%s'", yyvsp[-3].c, yyvsp[-1].c);
-	else{
-	  str = pStrOpt(0,GMSH_GET,NULL) ;
-	  yyval.c = (char*)Malloc((strlen(str)+1)*sizeof(char));
-	  strcpy(yyval.c, str);
-	}
-      }
-    ;
-    break;}
-case 341:
-#line 2540 "Gmsh.y"
-{ 
-      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c)))
-	vyyerror("Unknown string option class '%s'", yyvsp[-6].c);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption(yyvsp[-1].c, pStrCat)))
-	  vyyerror("Unknown string option '%s[%d].%s'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].c);
-	else{
-	  str = pStrOpt((int)yyvsp[-4].d,GMSH_GET,NULL) ;
-	  yyval.c = (char*)Malloc((strlen(str)+1)*sizeof(char));
-	  strcpy(yyval.c, str);
-	}
-      }
-    ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/lib/bison.simple"
-
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-  *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
-
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTBASE];
-
-  goto yynewstate;
-
-yyerrlab:   /* here on detecting error */
-
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
-    {
-      ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-	{
-	  int size = 0;
-	  char *msg;
-	  int x, count;
-
-	  count = 0;
-	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-	  for (x = (yyn < 0 ? -yyn : 0);
-	       x < (sizeof(yytname) / sizeof(char *)); x++)
-	    if (yycheck[x + yyn] == x)
-	      size += strlen(yytname[x]) + 15, count++;
-	  msg = (char *) malloc(size + 15);
-	  if (msg != 0)
-	    {
-	      strcpy(msg, "parse error");
-
-	      if (count < 5)
-		{
-		  count = 0;
-		  for (x = (yyn < 0 ? -yyn : 0);
-		       x < (sizeof(yytname) / sizeof(char *)); x++)
-		    if (yycheck[x + yyn] == x)
-		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
-		      }
-		}
-	      yyerror(msg);
-	      free(msg);
-	    }
-	  else
-	    yyerror ("parse error; also virtual memory exceeded");
-	}
-      else
-#endif /* YYERROR_VERBOSE */
-	yyerror("parse error");
-    }
-
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
-
-  if (yyerrstatus == 3)
-    {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
-
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
-	YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;		/* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-	goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  yystate = yyn;
-  goto yynewstate;
-
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
-
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 1;
-}
-#line 2555 "Gmsh.y"
-
-
-void InitSymbols(void){
-  if(!Symbol_L)
-    Symbol_L = List_Create(50,10,sizeof(Symbol));
-  else
-    List_Reset(Symbol_L);
-}
-
-void DeleteSymbols(void){
-  int i;
-  for(i = 0 ; i < List_Nbr(Symbol_L) ; i++)
-    List_Delete(((Symbol*)List_Pointer_Fast(Symbol_L,i))->val);
-  List_Delete(Symbol_L);
-}
-
-int CompareSymbols (const void *a, const void *b){
-  return(strcmp(((Symbol*)a)->Name,((Symbol*)b)->Name));
-}
-  
-void yyerror(char *s){
-  Msg(PARSER_ERROR, "'%s', line %d : %s (%s)",yyname,yylineno-1,s,yytext);
-  yyerrorstate=1;
-}
-
-void vyyerror(char *fmt, ...){
-  va_list args;
-  char tmp[1024];
-
-  va_start (args, fmt);
-  vsprintf (tmp, fmt, args);
-  va_end (args);
-
-  Msg(PARSER_ERROR, "'%s', line %d : %s", yyname, yylineno-1, tmp);
-  yyerrorstate=1;
-}
-
-
diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h
deleted file mode 100644
index 5b28b27a9794be0f5da3b362c7a6de8586231242..0000000000000000000000000000000000000000
--- a/Parser/Gmsh.tab.cpp.h
+++ /dev/null
@@ -1,178 +0,0 @@
-typedef union {
-  char    *c;
-  int      i;
-  unsigned int u;
-  double   d;
-  double   v[5];
-  Shape    s;
-  List_T  *l;
-} YYSTYPE;
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tMPI_Rank	264
-#define	tMPI_Size	265
-#define	tExp	266
-#define	tLog	267
-#define	tLog10	268
-#define	tSqrt	269
-#define	tSin	270
-#define	tAsin	271
-#define	tCos	272
-#define	tAcos	273
-#define	tTan	274
-#define	tRand	275
-#define	tAtan	276
-#define	tAtan2	277
-#define	tSinh	278
-#define	tCosh	279
-#define	tTanh	280
-#define	tFabs	281
-#define	tFloor	282
-#define	tCeil	283
-#define	tFmod	284
-#define	tModulo	285
-#define	tHypot	286
-#define	tPrintf	287
-#define	tSprintf	288
-#define	tStrCat	289
-#define	tStrPrefix	290
-#define	tDraw	291
-#define	tPoint	292
-#define	tCircle	293
-#define	tEllipsis	294
-#define	tLine	295
-#define	tSurface	296
-#define	tSpline	297
-#define	tVolume	298
-#define	tCharacteristic	299
-#define	tLength	300
-#define	tParametric	301
-#define	tElliptic	302
-#define	tPlane	303
-#define	tRuled	304
-#define	tTransfinite	305
-#define	tComplex	306
-#define	tPhysical	307
-#define	tUsing	308
-#define	tBump	309
-#define	tProgression	310
-#define	tPlugin	311
-#define	tRotate	312
-#define	tTranslate	313
-#define	tSymmetry	314
-#define	tDilate	315
-#define	tExtrude	316
-#define	tDuplicata	317
-#define	tLoop	318
-#define	tRecombine	319
-#define	tDelete	320
-#define	tCoherence	321
-#define	tIntersect	322
-#define	tAttractor	323
-#define	tLayers	324
-#define	tScalarTetrahedron	325
-#define	tVectorTetrahedron	326
-#define	tTensorTetrahedron	327
-#define	tScalarTriangle	328
-#define	tVectorTriangle	329
-#define	tTensorTriangle	330
-#define	tScalarLine	331
-#define	tVectorLine	332
-#define	tTensorLine	333
-#define	tScalarPoint	334
-#define	tVectorPoint	335
-#define	tTensorPoint	336
-#define	tBSpline	337
-#define	tNurbs	338
-#define	tOrder	339
-#define	tWith	340
-#define	tBounds	341
-#define	tKnots	342
-#define	tColor	343
-#define	tColorTable	344
-#define	tFor	345
-#define	tIn	346
-#define	tEndFor	347
-#define	tIf	348
-#define	tEndIf	349
-#define	tExit	350
-#define	tReturn	351
-#define	tCall	352
-#define	tFunction	353
-#define	tMesh	354
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	355
-#define	tB_SPLINE_CURVE_WITH_KNOTS	356
-#define	tCARTESIAN_POINT	357
-#define	tTRUE	358
-#define	tFALSE	359
-#define	tUNSPECIFIED	360
-#define	tU	361
-#define	tV	362
-#define	tEDGE_CURVE	363
-#define	tVERTEX_POINT	364
-#define	tORIENTED_EDGE	365
-#define	tPLANE	366
-#define	tFACE_OUTER_BOUND	367
-#define	tEDGE_LOOP	368
-#define	tADVANCED_FACE	369
-#define	tVECTOR	370
-#define	tDIRECTION	371
-#define	tAXIS2_PLACEMENT_3D	372
-#define	tISO	373
-#define	tENDISO	374
-#define	tENDSEC	375
-#define	tDATA	376
-#define	tHEADER	377
-#define	tFILE_DESCRIPTION	378
-#define	tFILE_SCHEMA	379
-#define	tFILE_NAME	380
-#define	tMANIFOLD_SOLID_BREP	381
-#define	tCLOSED_SHELL	382
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	383
-#define	tFACE_BOUND	384
-#define	tCYLINDRICAL_SURFACE	385
-#define	tCONICAL_SURFACE	386
-#define	tCIRCLE	387
-#define	tTRIMMED_CURVE	388
-#define	tGEOMETRIC_SET	389
-#define	tCOMPOSITE_CURVE_SEGMENT	390
-#define	tCONTINUOUS	391
-#define	tCOMPOSITE_CURVE	392
-#define	tTOROIDAL_SURFACE	393
-#define	tPRODUCT_DEFINITION	394
-#define	tPRODUCT_DEFINITION_SHAPE	395
-#define	tSHAPE_DEFINITION_REPRESENTATION	396
-#define	tELLIPSE	397
-#define	tTrimmed	398
-#define	tSolid	399
-#define	tEndSolid	400
-#define	tVertex	401
-#define	tFacet	402
-#define	tNormal	403
-#define	tOuter	404
-#define	tLoopSTL	405
-#define	tEndLoop	406
-#define	tEndFacet	407
-#define	tAFFECTPLUS	408
-#define	tAFFECTMINUS	409
-#define	tAFFECTTIMES	410
-#define	tAFFECTDIVIDE	411
-#define	tOR	412
-#define	tAND	413
-#define	tEQUAL	414
-#define	tNOTEQUAL	415
-#define	tAPPROXEQUAL	416
-#define	tLESSOREQUAL	417
-#define	tGREATEROREQUAL	418
-#define	tCROSSPRODUCT	419
-#define	tPLUSPLUS	420
-#define	tMINUSMINUS	421
-#define	UNARYPREC	422
-
-
-extern YYSTYPE yylval;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
deleted file mode 100644
index ab99f027ef00d2c9dfbe57d6b059707ab71593ee..0000000000000000000000000000000000000000
--- a/Parser/Gmsh.y
+++ /dev/null
@@ -1,2592 +0,0 @@
-%{ 
-
-// $Id: Gmsh.y,v 1.92 2001-08-12 14:24:50 geuzaine Exp $
-
-  //
-  // Generaliser sprintf avec des chaines de caracteres
-  // 
-
-#include <stdarg.h>
-#ifndef _NOPLUGIN
-#include "PluginManager.h"
-#endif
-#include "ParUtil.h"
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Context.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "DataBase.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Create.h"
-#include "Views.h"
-#include "StepGeomDatabase.h"
-#include "Options.h"
-#include "Colors.h"
-#include "Parser.h"
-#include "OpenFile.h"
-#include "FunctionManager.h"
-#include "ColorTable.h"
-#include "Timer.h"
-#include "CreateFile.h"
-#include "STL.h"
-
-#ifdef __DECCXX // bug in bison
-#include <alloca.h>
-#endif
-
-List_T *Symbol_L=NULL;
-
-extern Context_T  CTX;
-extern Mesh      *THEM;
-
-static FILE          *yyinTab[MAX_OPEN_FILES];
-static int            yylinenoTab[MAX_OPEN_FILES];
-static fpos_t         yyposImbricatedLoopsTab[MAX_OPEN_FILES];
-static double         LoopControlVariablesTab[MAX_OPEN_FILES][3];
-static char*          LoopControlVariablesNameTab[MAX_OPEN_FILES];
-static char           yynameTab[MAX_OPEN_FILES][256];
-static char           tmpstring[256];
-static char           tmpstring2[256], tmpstring3[256];
-static Symbol         TheSymbol, *pSymbol;
-static Surface       *STL_Surf;
-static Shape          TheShape;
-static int            i,j,k,flag,RecursionLevel=0,ImbricatedLoop = 0;
-static int            Last_NumberOfPoints = 0;
-static double         d, *pd;
-static ExtrudeParams  extr;
-static char           *str;
-static StringXString  *pStrCat;
-static StringXNumber  *pNumCat;
-static StringXColor   *pColCat;
-static double         (*pNumOpt)(int num, int action, double value);
-static char*          (*pStrOpt)(int num, int action, char *value);
-static unsigned int   (*pColOpt)(int num, int action, unsigned int value);
-static Post_View      *View;
-
-char *strsave(char *ptr);
-void  yyerror (char *s);
-void  vyyerror (char *fmt, ...);
-void  skip_until (char *skip, char *until);
-%}
-
-%union {
-  char    *c;
-  int      i;
-  unsigned int u;
-  double   d;
-  double   v[5];
-  Shape    s;
-  List_T  *l;
-}
-
-%token <d> tDOUBLE
-%token <c> tSTRING tBIGSTR
-
-%token tEND tAFFECT tDOTS tPi tMPI_Rank tMPI_Size
-%token tExp tLog tLog10 tSqrt tSin tAsin tCos tAcos tTan tRand
-%token tAtan tAtan2 tSinh tCosh tTanh tFabs tFloor tCeil
-%token tFmod tModulo tHypot tPrintf tSprintf tStrCat tStrPrefix tDraw
-%token tPoint tCircle tEllipsis tLine tSurface tSpline tVolume
-%token tCharacteristic tLength tParametric tElliptic
-%token tPlane tRuled tTransfinite tComplex tPhysical
-%token tUsing tBump tProgression tPlugin
-%token tRotate tTranslate tSymmetry tDilate tExtrude tDuplicata
-%token tLoop tRecombine tDelete tCoherence tIntersect
-%token tAttractor tLayers
-%token tScalarTetrahedron tVectorTetrahedron tTensorTetrahedron
-%token tScalarTriangle tVectorTriangle tTensorTriangle
-%token tScalarLine tVectorLine tTensorLine
-%token tScalarPoint tVectorPoint tTensorPoint
-%token tBSpline tNurbs tOrder tWith tBounds tKnots
-%token tColor tColorTable tFor tIn tEndFor tIf tEndIf tExit
-%token tReturn tCall tFunction tMesh
-
-%token tB_SPLINE_SURFACE_WITH_KNOTS
-%token tB_SPLINE_CURVE_WITH_KNOTS
-%token tCARTESIAN_POINT
-%token tTRUE tFALSE tUNSPECIFIED tU tV tEDGE_CURVE tVERTEX_POINT tORIENTED_EDGE tPLANE
-%token tFACE_OUTER_BOUND tEDGE_LOOP tADVANCED_FACE tVECTOR tDIRECTION tAXIS2_PLACEMENT_3D
-%token tISO tENDISO tENDSEC tDATA tHEADER tFILE_DESCRIPTION tFILE_SCHEMA tFILE_NAME
-%token tMANIFOLD_SOLID_BREP tCLOSED_SHELL tADVANCED_BREP_SHAPE_REPRESENTATION
-%token tFACE_BOUND tCYLINDRICAL_SURFACE tCONICAL_SURFACE tCIRCLE tTRIMMED_CURVE
-%token tGEOMETRIC_SET tCOMPOSITE_CURVE_SEGMENT tCOMPOSITE_CURVE_SEGMENT tCONTINUOUS
-%token tCOMPOSITE_CURVE tTOROIDAL_SURFACE tPRODUCT_DEFINITION tPRODUCT_DEFINITION_SHAPE
-%token tSHAPE_DEFINITION_REPRESENTATION tELLIPSE tTrimmed
-
-%token tSolid tEndSolid tVertex tFacet tNormal tOuter tLoopSTL tEndLoop tEndFacet
-
-%type <d> FExpr FExpr_Single SignedDouble
-%type <v> VExpr VExpr_Single
-%type <i> BoolExpr NumericAffectation NumericIncrement
-%type <u> ColorExpr
-%type <c> StringExpr
-%type <l> FExpr_Multi ListOfDouble RecursiveListOfDouble
-%type <l> ListOfListOfDouble RecursiveListOfListOfDouble 
-%type <l> ListOfColor RecursiveListOfColor 
-%type <l> ListOfShapes Duplicata Transform MultipleShape
-%type <l> ListOfStrings
-%type <s> Shape
-
-/* ------------------------------------------------------------------ */
-/* Operators (with ascending priority): cf. C language                */
-/*                                                                    */
-/* Notes: - associativity (%left, %right)                             */
-/*        - UNARYPREC is a dummy terminal to resolve ambiguous cases  */ 
-/*          for + and - (which exist in both unary and binary form)   */
-/* ------------------------------------------------------------------ */
-%right   tAFFECT tAFFECTPLUS tAFFECTMINUS tAFFECTTIMES tAFFECTDIVIDE
-%right   '?' tDOTS
-%left    tOR
-%left    tAND
-%left    tEQUAL tNOTEQUAL tAPPROXEQUAL
-%left    '<' tLESSOREQUAL  '>' tGREATEROREQUAL
-%left    '+' '-'
-%left    '*' '/' '%' tCROSSPRODUCT
-%right   '!' tPLUSPLUS tMINUSMINUS UNARYPREC
-%right   '^'
-%left    '(' ')' '[' ']' '.'
-/* ------------------------------------------------------------------ */
-
-%start All
-
-%%
-
-All : 
-    StepFormatItems
-  | STLFormatItem
-  | GeomFormatList
-  | error tEND { yyerrok ; return 1; }
-;
-
-/*  ----------------------------------------------------------------------
-    S T E R E O L I T H O G R A P H Y  ( S T L )
-    ---------------------------------------------------------------------- */
-
-SignedDouble :
-    tDOUBLE     { $$ = $1; }
-  | '-' tDOUBLE { $$ = -$2; }
-;
-
-STLFormatItem : 
-    tSolid
-    {
-      Msg(PARSER_INFO,"STL file format");
-      STL_Surf = Create_Surface(1,MSH_SURF_STL,1);
-      STL_Surf->STL = new STL_Data;
-      return 1;
-    }
-  | tFacet
-    tNormal SignedDouble SignedDouble SignedDouble
-    tOuter tLoopSTL
-      tVertex SignedDouble SignedDouble SignedDouble
-      tVertex SignedDouble SignedDouble SignedDouble
-      tVertex SignedDouble SignedDouble SignedDouble
-    tEndLoop
-    tEndFacet
-    {
-      STL_Surf->STL->Add_Facet( $9, $10, $11,
-				$13, $14, $15,
-				$17, $18, $19);
-      return 1;
-    }
-  | tEndSolid
-    {
-      Msg(PARSER_INFO,"STL file format read");
-      Tree_Add(THEM->Surfaces, &STL_Surf);
-      return 1;
-    }
-;
-
-/*  ----------------------------------------------------------------------
-    S T E P   I S O - 1 0 3 0 3 - 2 1   F I L E   F O R M A T
-    ---------------------------------------------------------------------- */
-
-StepFormatItems :
-    /* nothing */
-  | StepFormatItems StepFormatItem
-;
-
-StepFormatItem :
-    StepSpecial { return 1; }
-  | StepDataItem { return 1; }
-  | StepHeaderItem { return 1; }
-;
-
-StepSpecial :
-    tISO tEND
-    {
-      Msg(PARSER_INFO,"Step Iso-10303-21 file format");
-      Create_Step_Solid_BRep();
-    }
-  | tENDISO tEND
-    {
-      Msg(PARSER_INFO,"Step Iso-10303-21 file format read");
-      Resolve_BREP ();
-    }
-  | tDATA tEND
-  | tENDSEC tEND
-  | tHEADER tEND
-;
-
-StepHeaderItem :
-    tFILE_DESCRIPTION '(' ListOfStrings ',' tBIGSTR ')' tEND
-    {
-    }
-  | tFILE_SCHEMA '(' ListOfStrings ')' tEND
-    {
-    }
-  | tFILE_NAME '(' tBIGSTR ',' tBIGSTR ',' ListOfStrings ',' 
-                    ListOfStrings ',' tBIGSTR ',' tBIGSTR ',' tBIGSTR ')' tEND
-   {
-   }
-;
-
-StepDataItem  :
-    tDOUBLE tAFFECT tCARTESIAN_POINT '(' tBIGSTR ',' VExpr ')' tEND
-    {
-        Add_Cartesian_Point((int)$1,$5,$7[0],$7[1],$7[2]);
-    }
-  | tDOUBLE tAFFECT tB_SPLINE_CURVE_WITH_KNOTS 
-    '(' tBIGSTR ',' FExpr ',' ListOfDouble ',' BoolExpr ',' BoolExpr ',' 
-        BoolExpr ',' ListOfDouble ',' ListOfDouble ',' BoolExpr ')' tEND
-    {
-       Add_BSpline_Curve_With_Knots ((int)$1, $5, (int) $7, $9,	$17, $19, 0., 1.);
-    }
-  | tDOUBLE tAFFECT tB_SPLINE_SURFACE_WITH_KNOTS 
-    '(' tBIGSTR ',' FExpr ',' FExpr ',' ListOfListOfDouble ',' BoolExpr ',' 
-        BoolExpr ',' BoolExpr ',' BoolExpr ',' ListOfDouble ',' ListOfDouble ',' 
-        ListOfDouble ',' ListOfDouble ',' BoolExpr ')' tEND
-    {
-      Add_BSpline_Surface_With_Knots ((int)$1, $5, (int) $7, (int) $9, $11, $21,
-				      $23, $25, $27, 0., 1., 0., 1. );
-    }
-  | tDOUBLE tAFFECT tEDGE_CURVE '(' tBIGSTR ',' tDOUBLE ','  tDOUBLE ',' 
-                                    tDOUBLE ',' BoolExpr ')' tEND
-    {
-      Add_Edge_Curve ((int)$1, $5 , (int)$7 , (int)$9, (int)$11);
-    }
-  | tDOUBLE tAFFECT tFACE_OUTER_BOUND '(' tBIGSTR ',' tDOUBLE ','  BoolExpr  ')' tEND
-    {
-      Add_Face_Outer_Bound((int)$1,$5,(int)$7,$9,1);
-    }
-  | tDOUBLE tAFFECT tFACE_BOUND '(' tBIGSTR ',' tDOUBLE ','  BoolExpr  ')' tEND
-    {
-      /* La je dois voir la norme ! Face_Bound : trou externe a la surface ! */
-      Msg(PARSER_INFO,"Found a face bound");
-      Add_Face_Outer_Bound((int)$1,$5,(int)$7,$9,0);
-    }
-  | tDOUBLE tAFFECT tORIENTED_EDGE '(' tBIGSTR ',' '*' ','  '*' ','  FExpr ',' 
-                                       BoolExpr ')' tEND
-    {
-      Add_Oriented_Edge((int)$1,$5,(int)$11,$13);
-    }
-  | tDOUBLE tAFFECT tEDGE_LOOP '(' tBIGSTR ',' ListOfDouble ')' tEND
-    {
-      Add_Edge_Loop((int)$1,$5,$7);
-    }
-  | tDOUBLE tAFFECT tADVANCED_FACE '(' tBIGSTR ',' ListOfDouble ',' 
-                                       tDOUBLE ',' BoolExpr ')' tEND
-    {
-      Add_Advanced_Face((int)$1,$5,$7,(int)$9,$11);
-    }
-  | tDOUBLE tAFFECT tVERTEX_POINT '(' tBIGSTR ',' tDOUBLE ')'  tEND
-    {
-      Add_Vertex_Point((int)$1,$5,(int)$7);
-    }
-  | tDOUBLE tAFFECT tVECTOR '(' tBIGSTR ',' tDOUBLE ',' FExpr ')'  tEND
-    {
-    }
-  | tDOUBLE  tAFFECT tAXIS2_PLACEMENT_3D '(' tBIGSTR ',' tDOUBLE ',' 
-                                             tDOUBLE ',' tDOUBLE ')'  tEND
-    {
-      Add_Axis2_Placement3D  ( (int)$1, (int)$9, (int)$11, (int)$7);
-    }
-  | tDOUBLE tAFFECT tDIRECTION '(' tBIGSTR ',' VExpr ')' tEND
-    {
-      Add_Direction((int)$1 , $5, $7[0], $7[1], $7[2]);
-    }
-  | tDOUBLE tAFFECT tPLANE '(' tBIGSTR ',' tDOUBLE ')' tEND
-    {
-      Add_Plane((int)$1,$5,(int)$7);
-    }
-  | tDOUBLE tAFFECT tLine '(' tBIGSTR ',' tDOUBLE ',' tDOUBLE ')'  tEND
-    {
-      Add_Line ((int)$1, $5 , (int) $7, (int)$9);
-    }
-  | tDOUBLE tAFFECT tCLOSED_SHELL '(' tBIGSTR ',' ListOfDouble ')' tEND
-    {
-      Msg(PARSER_INFO,"Found a closed shell");
-      Add_Closed_Shell((int)$1, $5 , $7);
-    }
-  | tDOUBLE tAFFECT tADVANCED_BREP_SHAPE_REPRESENTATION
-     '(' tBIGSTR ',' ListOfDouble ',' tDOUBLE')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tMANIFOLD_SOLID_BREP '(' tBIGSTR ',' tDOUBLE ')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tCYLINDRICAL_SURFACE '(' tBIGSTR ',' tDOUBLE ',' FExpr ')' tEND
-    {
-      Add_Cylinder ((int)$1, $5 , (int)$7, $9);
-    }
-  | tDOUBLE tAFFECT tCONICAL_SURFACE '(' tBIGSTR ',' tDOUBLE ',' FExpr ',' FExpr ')' tEND
-    {
-      Add_Cone ((int)$1, $5 , (int)$7, $9,$11);
-    }
-  | tDOUBLE tAFFECT tTOROIDAL_SURFACE '(' tBIGSTR ',' tDOUBLE ',' FExpr ',' FExpr ')' tEND
-    {
-      Add_Torus ((int)$1, $5 , (int)$7, $9,$11);
-    }
-  | tDOUBLE tAFFECT tCIRCLE '(' tBIGSTR ',' tDOUBLE ',' FExpr ')' tEND
-    {
-      Add_Circle((int) $1, $5, (int) $7, $9);
-    }
-  | tDOUBLE tAFFECT tELLIPSE '(' tBIGSTR ',' tDOUBLE ',' FExpr ',' FExpr ')' tEND
-    {
-      Add_Ellipsis((int) $1, $5, (int) $7, $9, $11);
-    }
-  | tDOUBLE tAFFECT tTRIMMED_CURVE '(' tBIGSTR ',' tDOUBLE ','
-            ListOfDouble ',' ListOfDouble ',' BoolExpr ',' BoolExpr ')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tGEOMETRIC_SET '(' tBIGSTR ',' ListOfDouble')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tCOMPOSITE_CURVE_SEGMENT 
-       '(' tCONTINUOUS ',' BoolExpr ',' tDOUBLE ')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tCOMPOSITE_CURVE '(' tBIGSTR ',' ListOfDouble ',' BoolExpr ')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tPRODUCT_DEFINITION 
-       '(' tBIGSTR ',' tBIGSTR ',' tDOUBLE',' tDOUBLE ')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tPRODUCT_DEFINITION_SHAPE '(' tBIGSTR ',' tBIGSTR ',' tDOUBLE ')' tEND
-    {
-    }
-  | tDOUBLE tAFFECT tSHAPE_DEFINITION_REPRESENTATION '(' tDOUBLE ',' tDOUBLE ')' tEND
-    {
-    }
-;
-
-/*  ----------------------------------------------------------------------
-    G E O   F I L E   F O R M A T
-    ---------------------------------------------------------------------- */
-
-GeomFormatList : 
-    /* none*/
-  {
-  }  
-  | GeomFormatList GeomFormat
-  {
-      Msg(PARSER_INFO,"Gmsh file format read");
-    }
-;
-
-GeomFormat :
-    View        { return 1; }
-  | Printf      { return 1; }
-  | Affectation { return 1; }
-  | Shape       { return 1; }
-  | Transform   { return 1; }
-  | Duplicata   { return 1; }
-  | Delete      { return 1; }
-  | Extrude     { return 1; }
-  | Transfini   { return 1; }
-  | Coherence   { return 1; }
-  | Loop        { return 1; }
-  | Command     { return 1; }
-;
-
-Printf :
-    tPrintf '(' tBIGSTR ')' tEND
-    {
-      Msg(DIRECT, $3);
-    }
-  | tPrintf '(' tBIGSTR ',' RecursiveListOfDouble ')' tEND
-    {
-      for(i = 0 ; i<List_Nbr($5) ; i++){
-	if(!i){
-	  str = strtok($3, "%");
-	  strcpy(tmpstring, str); 
-	}
-	str = strtok(NULL, "%");
-	if(str){
-	  strcpy(tmpstring2, "%");
-	  strcat(tmpstring2, str);
-	  sprintf(tmpstring3, tmpstring2, *(double*)List_Pointer($5,i)); 
-	  strcat(tmpstring, tmpstring3);
-	}
-	else{
-	  vyyerror("Missing %d parameter(s) in Printf format",
-		   List_Nbr($5)-i);
-	  break ;
-	}
-      }
-      Msg(DIRECT, tmpstring);
-      List_Delete($5);
-    }
-;
-
-/* ------------
-   V I E W 
-   ------------ */
-
-View :
-    tSTRING tBIGSTR '{' Views '}' tEND
-    { 
-      if(!strcmp($1, "View")) EndView(View, 1, yyname, $2); 
-    }
-  | tSTRING tBIGSTR tSTRING VExpr '{' Views '}' tEND
-    {
-      if(!strcmp($1, "View")) EndView(View, 1, yyname, $2);
-    }  
-;
-
-Views :
-    /* none */
-    {
-      View = BeginView(1); 
-    }
-  | Views ScalarPoint
-  | Views VectorPoint
-  | Views TensorPoint
-  | Views ScalarLine
-  | Views VectorLine
-  | Views TensorLine
-  | Views ScalarTriangle
-  | Views VectorTriangle
-  | Views TensorTriangle
-  | Views ScalarTetrahedron
-  | Views VectorTetrahedron
-  | Views TensorTetrahedron
-;
-
-ScalarPointValues :
-    FExpr
-    { List_Add(View->SP, &$1) ; }
-  | ScalarPointValues ',' FExpr
-    { List_Add(View->SP, &$3) ; }
-  ;
-
-ScalarPoint : 
-    tScalarPoint '(' FExpr ',' FExpr ',' FExpr ')'
-    { 
-      List_Add(View->SP, &$3); List_Add(View->SP, &$5);
-      List_Add(View->SP, &$7);
-    }
-    '{' ScalarPointValues '}' tEND
-    {
-      View->NbSP++ ;
-    }
-;
-
-VectorPointValues :
-    FExpr
-    { List_Add(View->VP, &$1) ; }
-  | VectorPointValues ',' FExpr
-    { List_Add(View->VP, &$3) ; }
-  ;
-
-VectorPoint : 
-    tVectorPoint '(' FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->VP, &$3); List_Add(View->VP, &$5);
-      List_Add(View->VP, &$7); 
-    }
-    '{' VectorPointValues '}' tEND
-    {
-      View->NbVP++ ;
-    }
-;
-
-TensorPointValues :
-    FExpr
-    { List_Add(View->TP, &$1) ; }
-  | TensorPointValues ',' FExpr
-    { List_Add(View->TP, &$3) ; }
-  ;
-
-TensorPoint :
-    tTensorPoint '(' FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->TP, &$3); List_Add(View->TP, &$5);
-      List_Add(View->TP, &$7);
-    }
-    '{' TensorPointValues '}' tEND
-    {
-      View->NbTP++ ;
-    }
-;
-
-ScalarLineValues :
-    FExpr
-    { List_Add(View->SL, &$1) ; }
-  | ScalarLineValues ',' FExpr
-    { List_Add(View->SL, &$3) ; }
-  ;
-
-ScalarLine : 
-    tScalarLine '(' FExpr ',' FExpr ',' FExpr ',' 
-                    FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->SL, &$3); List_Add(View->SL, &$9);
-      List_Add(View->SL, &$5); List_Add(View->SL, &$11);
-      List_Add(View->SL, &$7); List_Add(View->SL, &$13);
-    }
-    '{' ScalarLineValues '}' tEND
-    {
-      View->NbSL++ ;
-    }
-;
-
-VectorLineValues :
-    FExpr
-    { List_Add(View->VL, &$1) ; }
-  | VectorLineValues ',' FExpr
-    { List_Add(View->VL, &$3) ; }
-  ;
-
-VectorLine : 
-    tVectorLine '(' FExpr ',' FExpr ',' FExpr ',' 
-                    FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->VL, &$3); List_Add(View->VL, &$9);
-      List_Add(View->VL, &$5); List_Add(View->VL, &$11);
-      List_Add(View->VL, &$7); List_Add(View->VL, &$13);
-    }
-    '{' VectorLineValues '}' tEND
-    {
-      View->NbVL++ ;
-    }
-;
-
-TensorLineValues :
-    FExpr
-    { List_Add(View->TL, &$1) ; }
-  | TensorLineValues ',' FExpr
-    { List_Add(View->TL, &$3) ; }
-  ;
-
-TensorLine :
-    tTensorLine '(' FExpr ',' FExpr ',' FExpr ',' 
-                    FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->TL, &$3); List_Add(View->TL, &$9);
-      List_Add(View->TL, &$5); List_Add(View->TL, &$11);
-      List_Add(View->TL, &$7); List_Add(View->TL, &$13);
-    }
-    '{' TensorLineValues '}' tEND
-    {
-      View->NbTL++ ;
-    }
-;
-
-ScalarTriangleValues :
-    FExpr
-    { List_Add(View->ST, &$1) ; }
-  | ScalarTriangleValues ',' FExpr
-    { List_Add(View->ST, &$3) ; }
-  ;
-
-ScalarTriangle : 
-    tScalarTriangle '(' FExpr ',' FExpr ',' FExpr ',' 
-                        FExpr ',' FExpr ',' FExpr ','
-                        FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->ST, &$3); List_Add(View->ST, &$9);
-      List_Add(View->ST, &$15);
-      List_Add(View->ST, &$5); List_Add(View->ST, &$11);
-      List_Add(View->ST, &$17);
-      List_Add(View->ST, &$7); List_Add(View->ST, &$13);
-      List_Add(View->ST, &$19);
-    }
-    '{' ScalarTriangleValues '}' tEND
-    {
-      View->NbST++ ;
-    }
-;
-
-VectorTriangleValues :
-    FExpr
-    { List_Add(View->VT, &$1) ; }
-  | VectorTriangleValues ',' FExpr
-    { List_Add(View->VT, &$3) ; }
-  ;
-
-VectorTriangle : 
-    tVectorTriangle '(' FExpr ',' FExpr ',' FExpr ',' 
-                        FExpr ',' FExpr ',' FExpr ','
-                        FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->VT, &$3); List_Add(View->VT, &$9);
-      List_Add(View->VT, &$15);
-      List_Add(View->VT, &$5); List_Add(View->VT, &$11);
-      List_Add(View->VT, &$17);
-      List_Add(View->VT, &$7); List_Add(View->VT, &$13);
-      List_Add(View->VT, &$19);
-    }
-    '{' VectorTriangleValues '}' tEND
-    {
-      View->NbVT++ ;
-    }
-;
-
-TensorTriangleValues :
-    FExpr
-    { List_Add(View->TT, &$1) ; }
-  | TensorTriangleValues ',' FExpr
-    { List_Add(View->TT, &$3) ; }
-  ;
-
-TensorTriangle :
-    tTensorTriangle '(' FExpr ',' FExpr ',' FExpr ',' 
-                        FExpr ',' FExpr ',' FExpr ','
-                        FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->TT, &$3); List_Add(View->TT, &$9);
-      List_Add(View->TT, &$15);
-      List_Add(View->TT, &$5); List_Add(View->TT, &$11);
-      List_Add(View->TT, &$17);
-      List_Add(View->TT, &$7); List_Add(View->TT, &$13);
-      List_Add(View->TT, &$19);
-    }
-    '{' TensorTriangleValues '}' tEND
-    {
-      View->NbTT++ ;
-    }
-;
-
-ScalarTetrahedronValues :
-    FExpr
-    { List_Add(View->SS, &$1) ; }
-  | ScalarTetrahedronValues ',' FExpr
-    { List_Add(View->SS, &$3) ; }
-  ;
-
-ScalarTetrahedron : 
-    tScalarTetrahedron '(' FExpr ',' FExpr ',' FExpr ',' 
-                           FExpr ',' FExpr ',' FExpr ','
-                           FExpr ',' FExpr ',' FExpr ',' 
-                           FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->SS, &$3);  List_Add(View->SS, &$9);
-      List_Add(View->SS, &$15); List_Add(View->SS, &$21);
-      List_Add(View->SS, &$5);  List_Add(View->SS, &$11);
-      List_Add(View->SS, &$17); List_Add(View->SS, &$23);
-      List_Add(View->SS, &$7);  List_Add(View->SS, &$13);
-      List_Add(View->SS, &$19); List_Add(View->SS, &$25);
-    }
-    '{' ScalarTetrahedronValues '}' tEND
-    {
-      View->NbSS++ ;
-    }
-;
-
-VectorTetrahedronValues :
-    FExpr
-    { List_Add(View->VS, &$1) ; }
-  | VectorTetrahedronValues ',' FExpr
-    { List_Add(View->VS, &$3) ; }
-  ;
-
-VectorTetrahedron : 
-    tVectorTetrahedron '(' FExpr ',' FExpr ',' FExpr ',' 
-                           FExpr ',' FExpr ',' FExpr ','
-                           FExpr ',' FExpr ',' FExpr ',' 
-                           FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->VS, &$3);  List_Add(View->VS, &$9);
-      List_Add(View->VS, &$15); List_Add(View->VS, &$21);
-      List_Add(View->VS, &$5);  List_Add(View->VS, &$11);
-      List_Add(View->VS, &$17); List_Add(View->VS, &$23);
-      List_Add(View->VS, &$7);  List_Add(View->VS, &$13);
-      List_Add(View->VS, &$19); List_Add(View->VS, &$25);
-    }
-    '{' VectorTetrahedronValues '}' tEND
-    {
-      View->NbVS++ ;
-    }
-;
-
-TensorTetrahedronValues :
-    FExpr
-    { List_Add(View->TS, &$1) ; }
-  | TensorTetrahedronValues ',' FExpr
-    { List_Add(View->TS, &$3) ; }
-  ;
-
-TensorTetrahedron :
-    tTensorTetrahedron '(' FExpr ',' FExpr ',' FExpr ',' 
-                           FExpr ',' FExpr ',' FExpr ','
-                           FExpr ',' FExpr ',' FExpr ',' 
-                           FExpr ',' FExpr ',' FExpr ')' 
-    { 
-      List_Add(View->TS, &$3);  List_Add(View->TS, &$9);
-      List_Add(View->TS, &$15); List_Add(View->TS, &$21);
-      List_Add(View->TS, &$5);  List_Add(View->TS, &$11);
-      List_Add(View->TS, &$17); List_Add(View->TS, &$23);
-      List_Add(View->TS, &$7);  List_Add(View->TS, &$13);
-      List_Add(View->TS, &$19); List_Add(View->TS, &$25);
-    }
-    '{' TensorTetrahedronValues '}' tEND
-    {
-      View->NbTS++ ;
-    }
-;
-
-
-
-/* -----------------------
-    A F F E C T A T I O N
-   ----------------------- */
-
-NumericAffectation :
-    tAFFECT        { $$ = 0 ; }
-  | tAFFECTPLUS    { $$ = 1 ; }
-  | tAFFECTMINUS   { $$ = 2 ; }
-  | tAFFECTTIMES   { $$ = 3 ; }
-  | tAFFECTDIVIDE  { $$ = 4 ; }
-
-NumericIncrement :
-    tPLUSPLUS      { $$ = 1 ; }
-  | tMINUSMINUS    { $$ = -1 ; }
-
-Affectation :
-
-  /* -------- Variables -------- */ 
-
-    tSTRING NumericAffectation FExpr tEND
-    {
-      TheSymbol.Name = $1;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(1,1,sizeof(double));
-	if(!$2){
-	  List_Put(TheSymbol.val, 0, &$3);
-	  List_Add(Symbol_L, &TheSymbol);
-	}
-	else
-	  vyyerror("Unknown variable '%s'", $1) ;
-      }
-      else{
-	pd = (double*)List_Pointer_Fast(pSymbol->val, 0) ; 
-	switch($2){
-	case 0 : *pd = $3; break ;
-	case 1 : *pd += $3 ; break ;
-	case 2 : *pd -= $3 ; break ;
-	case 3 : *pd *= $3 ; break ;
-	case 4 : 
-	  if($3) *pd /= $3 ; 
-	  else vyyerror("Division by zero in '%s /= %g'", $1, $3);
-	  break;
-	}
-      }
-    }
-
-  | tSTRING '[' FExpr ']' NumericAffectation FExpr tEND
-    {
-      TheSymbol.Name = $1;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(5,5,sizeof(double));
-	if(!$5){
-	  List_Put(TheSymbol.val, (int)$3, &$6);
-	  List_Add(Symbol_L, &TheSymbol);
-	}
-	else
-	  vyyerror("Unknown variable '%s'", $1) ;
-      }
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))){
-	  switch($5){
-	  case 0 : *pd = $6; break ;
-	  case 1 : *pd += $6 ; break ;
-	  case 2 : *pd -= $6 ; break ;
-	  case 3 : *pd *= $6 ; break ;
-	  case 4 : 
-	    if($6) *pd /= $6 ; 
-	    else vyyerror("Division by zero in '%s[%d] /= %g'", $1, (int)$3, $6);
-	    break;
-	  }
-	}
-	else{
-	  if(!$5)
-	    List_Put(pSymbol->val, (int)$3, &$6);
-	  else
-	    vyyerror("Uninitialized variable '%s[%d]'", $1, (int)$3) ;
-	}
-      }
-    }
-
-  | tSTRING '[' '{' RecursiveListOfDouble '}' ']' NumericAffectation ListOfDouble tEND
-    {
-      if(List_Nbr($4) != List_Nbr($8))
-	vyyerror("Incompatible array dimensions in affectation");
-      else{
-	TheSymbol.Name = $1;
-	if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	  TheSymbol.val = List_Create(5,5,sizeof(double));
-	  if(!$7){
-	    for(i=0 ; i<List_Nbr($4) ; i++){
-	      List_Put(TheSymbol.val, (int)(*(double*)List_Pointer($4,i)),
-		       (double*)List_Pointer($8,i));
-	    }
-	    List_Add(Symbol_L, &TheSymbol);
-	  }
-	  else
-	    vyyerror("Unknown variable '%s'", $1) ;
-	}
-	else{
-	  for(i=0 ; i<List_Nbr($4) ; i++){
-	    j = (int)(*(double*)List_Pointer($4,i)) ;
-	    d = *(double*)List_Pointer($8,i) ;
-	    if((pd = (double*)List_Pointer_Test(pSymbol->val, j))){
-	      switch($7){
-	      case 0 : *pd = d; break ;
-	      case 1 : *pd += d ; break ;
-	      case 2 : *pd -= d ; break ;
-	      case 3 : *pd *= d ; break ;
-	      case 4 : 
-		if($8) *pd /= d ; 
-		else vyyerror("Division by zero in '%s[%d] /= %g'", $1, j, d);
-		break;
-	      }
-	    }
-	    else{
-	      if(!$7)
-		List_Put(pSymbol->val, j, &d);
-	      else
-		vyyerror("Uninitialized variable '%s[%d]'", $1, j) ;	  
-	    }
-	  }
-	}
-      }
-      List_Delete($4);
-      List_Delete($8);
-    }
-
-  | tSTRING '[' ']' tAFFECT ListOfDouble tEND
-    {
-      TheSymbol.Name = $1;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(5,5,sizeof(double));
-	List_Copy($5,TheSymbol.val);
-	List_Add(Symbol_L, &TheSymbol);
-      }
-      else{
-	List_Reset(pSymbol->val);
-	List_Copy($5, pSymbol->val);
-      }
-      List_Delete($5);
-    }
-
-  | tSTRING NumericIncrement tEND
-    {
-      TheSymbol.Name = $1;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
-	vyyerror("Unknown variable '%s'", $1) ; 
-      else
-	*(double*)List_Pointer_Fast(pSymbol->val, 0) += $2; 
-    }
-
-  | tSTRING '[' FExpr ']' NumericIncrement tEND
-    {
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
-	vyyerror("Unknown variable '%s'", $1) ; 
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3)))
-	  *pd += $5 ;
-	else
-	  vyyerror("Uninitialized variable '%s[%d]'", $1, (int)$3) ;
-      }
-    }
-
-  /* -------- Option Strings -------- */ 
-
-  | tSTRING '.' tSTRING tAFFECT StringExpr tEND 
-    { 
-      if(!(pStrCat = Get_StringOptionCategory($1)))
-	vyyerror("Unknown string option class '%s'", $1);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($3, pStrCat)))
-	  vyyerror("Unknown string option '%s.%s'", $1, $3);
-	else
-	  pStrOpt(0,GMSH_SET|GMSH_GUI,$5) ;
-      }
-    }
-
-  | tSTRING '[' FExpr ']' '.' tSTRING tAFFECT StringExpr tEND 
-    { 
-      if(!(pStrCat = Get_StringOptionCategory($1)))
-	vyyerror("Unknown string option class '%s'", $1);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($6, pStrCat)))
-	  vyyerror("Unknown string option '%s[%d].%s'", $1, (int)$3, $6);
-	else
-	  pStrOpt((int)$3,GMSH_SET|GMSH_GUI,$8) ;
-      }
-    }
-
-  /* -------- Option Numbers -------- */ 
-
-  | tSTRING '.' tSTRING NumericAffectation FExpr tEND 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown numeric option class '%s'", $1);
-      else{
-	if(!(pNumOpt = (double (*) (int, int, double))Get_NumberOption($3, pNumCat)))
-	  vyyerror("Unknown numeric option '%s.%s'", $1, $3);
-	else{
-	  switch($4){
-	  case 0 : d = $5 ; break ;
-	  case 1 : d = pNumOpt(0,GMSH_GET,0) + $5 ; break ;
-	  case 2 : d = pNumOpt(0,GMSH_GET,0) - $5 ; break ;
-	  case 3 : d = pNumOpt(0,GMSH_GET,0) * $5 ; break ;
-	  case 4 : 
-	    if($5) d = pNumOpt(0,GMSH_GET,0) / $5 ; 
-	    else vyyerror("Division by zero in '%s.%s /= %g'", $1, $3, $5);
-	    break;
-	  }
-	  pNumOpt(0,GMSH_SET|GMSH_GUI, d) ;
-	}
-      }
-    }
-
-  | tSTRING '[' FExpr ']' '.' tSTRING NumericAffectation FExpr tEND 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown numeric option class '%s'", $1);
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($6, pNumCat)))
-	  vyyerror("Unknown numeric option '%s[%d].%s'", $1, (int)$3, $6);
-	else{
-	  switch($7){
-	  case 0 : d = $8; break ;
-	  case 1 : d = pNumOpt((int)$3,GMSH_GET,0) + $8 ; break ;
-	  case 2 : d = pNumOpt((int)$3,GMSH_GET,0) - $8 ; break ;
-	  case 3 : d = pNumOpt((int)$3,GMSH_GET,0) * $8 ; break ;
-	  case 4 : 
-	    if($8) d = pNumOpt((int)$3,GMSH_GET,0) / $8 ;
-	    else vyyerror("Division by zero in '%s[%d].%s /= %g'", 
-			  $1, (int)$3, $6, $8);
-	    break;
-	  }
-	  pNumOpt((int)$3,GMSH_SET|GMSH_GUI,d) ;
-	}
-      }
-    }
-
-  | tSTRING '.' tSTRING NumericIncrement tEND 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown numeric option class '%s'", $1);
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($3, pNumCat)))
-	  vyyerror("Unknown numeric option '%s.%s'", $1, $3);
-	else
-	  pNumOpt(0,GMSH_SET|GMSH_GUI,pNumOpt(0,GMSH_GET,0)+$4) ;
-      }
-    }
-
-  | tSTRING '[' FExpr ']' '.' tSTRING NumericIncrement tEND 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown numeric option class '%s'", $1);
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($6, pNumCat)))
-	  vyyerror("Unknown numeric option '%s[%d].%s'", $1, (int)$3, $6);
-	else
-	  pNumOpt((int)$3,GMSH_SET|GMSH_GUI,pNumOpt((int)$3,GMSH_GET,0)+$7) ;
-      }
-    }
-
-  /* -------- Option Colors -------- */ 
-
-  | tSTRING '.' tColor '.' tSTRING tAFFECT ColorExpr tEND 
-    {
-      if(!(pColCat = Get_ColorOptionCategory($1)))
-	vyyerror("Unknown color option class '%s'", $1);
-      else{
-	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption($5, pColCat)))
-	  vyyerror("Unknown color option '%s.Color.%s'", $1, $5);
-	else
-	  pColOpt(0,GMSH_SET|GMSH_GUI,$7) ;
-      }
-    }
-
-  | tSTRING '[' FExpr ']' '.' tColor '.' tSTRING tAFFECT ColorExpr tEND 
-    {
-      if(!(pColCat = Get_ColorOptionCategory($1)))
-	vyyerror("Unknown color option class '%s'", $1);
-      else{
-	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption($8, pColCat)))
-	  vyyerror("Unknown color option '%s[%d].Color.%s'", $1, (int)$3, $8);
-	else
-	  pColOpt((int)$3,GMSH_SET|GMSH_GUI,$10) ;
-      }
-    }
-
-  /* -------- ColorTable -------- */ 
-
-  | tSTRING '.' tColorTable tAFFECT ListOfColor tEND 
-    {
-      ColorTable *ct = Get_ColorTable(0);
-      if(!ct)
-	vyyerror("View[%d] does not exist", 0);
-      else{
-	ct->size = List_Nbr($5);
-	if(ct->size > COLORTABLE_NBMAX_COLOR)
-	  vyyerror("Too many (%d>%d) colors in View[%d].ColorTable", 
-		   ct->size, COLORTABLE_NBMAX_COLOR, 0);
-	else
-	  for(i=0 ; i<ct->size ; i++) List_Read($5, i, &ct->table[i]);
-      }
-      List_Delete($5);
-    }
-
-  | tSTRING '[' FExpr ']' '.' tColorTable tAFFECT ListOfColor tEND 
-    {
-      ColorTable *ct = Get_ColorTable((int)$3);
-      if(!ct)
-	vyyerror("View[%d] does not exist", (int)$3);
-      else{
-	ct->size = List_Nbr($8);
-	if(ct->size > COLORTABLE_NBMAX_COLOR)
-	  vyyerror("Too many (%d>%d) colors in View[%d].ColorTable", 
-		   ct->size, COLORTABLE_NBMAX_COLOR, (int)$3);
-	else
-	  for(i=0 ; i<ct->size ; i++) List_Read($8, i, &ct->table[i]);
-      }
-      List_Delete($8);
-    }
-    // P l u g i n s ...
-  | tPlugin '(' tSTRING ')' '.' tSTRING tAFFECT FExpr tEND 
-  {
-#ifndef _NOPLUGIN
-    try 
-      {
-	GMSH_PluginManager::Instance()->SetPluginOption($3,$6,$8); 
-      }
-    catch (...)
-      {
-	Msg(WARNING,"Unknown option '%s' or plugin '%s'",$6,$3);
-      }
-#endif
-  }
-  | tPlugin '(' tSTRING ')' '.' tSTRING tAFFECT StringExpr tEND 
-  {
-#ifndef _NOPLUGIN
-    try 
-      {
-	GMSH_PluginManager::Instance()->SetPluginOption($3,$6,$8); 
-      }
-    catch (...)
-      {
-	Msg(WARNING,"Unknown option '%s' or plugin '%s'",$6,$3);
-      }
-#endif
-  }
-;
-
-
-/* -----------
-    S H A P E
-   ----------- */
-
-Shape :
-
-  /* -------- Points -------- */ 
-
-    tPoint '(' FExpr ')' tAFFECT VExpr tEND
-    {
-      Cdbpts101((int)$3,$6[0],$6[1],$6[2],$6[3],$6[4]);
-      $$.Type = MSH_POINT;
-      $$.Num  = (int)$3;
-    }
-
-  | tPhysical tPoint '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_POINT;
-      $$.Num  = (int)$4;
-    }
-  | tAttractor tPoint ListOfDouble tAFFECT '{' FExpr ',' FExpr ',' FExpr '}'  tEND
-    {
-      Vertex *v;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr($3);i++){
-      	List_Read($3,i,&p);
-        ip = (int)p;
-        v = FindPoint(ip,THEM);
-        if(!v)
-	  vyyerror("Unkown Point %d", ip);
-	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       $6,$8,$10,v,NULL,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
-      }
-    }
-  | tCharacteristic tLength ListOfDouble tAFFECT FExpr tEND
-    {
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	Vertex *v = FindPoint((int)d,THEM);
-	if(!v)
-	  vyyerror("Unkown Point %d", (int)d);
-	else
-	  v->lc = $5;
-      }
-    }  
-  | tPoint '{' FExpr '}' tEND
-    {
-      $$.Type = MSH_POINT;
-      $$.Num  = (int)$3;
-    }
-
-  /* -------- Lines -------- */ 
-
-  | tLine '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_LINE,1,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_LINE;
-      $$.Num  = (int)$3;
-    }
-  | tSpline '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_SPLN,3,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_SPLN;
-      $$.Num  = (int)$3;
-    }
-  | tAttractor tLine ListOfDouble tAFFECT '{' FExpr ',' FExpr ',' FExpr '}'  tEND
-    {
-      Curve *c;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr($3);i++){
-      	List_Read($3,i,&p);
-        ip = (int)p;
-        c = FindCurve(ip,THEM);
-        if(!c)
-	  vyyerror("Unkown Curve %d", ip);
-	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       $6,$8,$10,NULL,c,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
-      }
-    }
-  | tCircle '(' FExpr ')'  tAFFECT ListOfDouble tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_CIRC,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_CIRC ;
-      $$.Num  = (int)$3;
-    }
-  | tCircle '(' FExpr ')'  tAFFECT ListOfDouble tPlane VExpr tEND
-    {
-      List_T *temp;
-      int i,j;
-      double d;
-      temp = List_Create(List_Nbr($6),1,sizeof(int));
-      for(i=0;i<List_Nbr($6);i++){
-      	List_Read($6,i,&d);
-        j = (int)d;
-        List_Add(temp,&j);
-      }
-      AddCircleInDataBase ((int) $3, MSH_SEGM_CIRC, temp, $8);
-      List_Delete(temp);
-      $$.Type = MSH_SEGM_CIRC ;
-      $$.Num  = (int)$3;
-    }
-  | tParametric '(' FExpr ')' tAFFECT 
-      '{' FExpr ',' FExpr ',' tBIGSTR ',' tBIGSTR ',' tBIGSTR '}' tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,$7,$9,$11,$13,$15);
-      $$.Type = MSH_SEGM_PARAMETRIC ;
-      $$.Num  = (int)$3;
-    }
-  | tEllipsis '(' FExpr ')'  tAFFECT ListOfDouble tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_ELLI,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_ELLI ;
-      $$.Num  = (int)$3;
-    }
-  | tPhysical tLine '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_LINE;
-      $$.Num  = (int)$4;
-    }
-  | tLine tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      $$.Type = MSH_SEGM_LOOP;
-      Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL);
-      $$.Num = (int)$4;
-    }
-  | tBSpline '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_BSPLN,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_BSPLN;
-      $$.Num  = (int)$3;
-    }
-  | tNurbs  '(' FExpr ')' tAFFECT ListOfDouble tKnots ListOfDouble tOrder FExpr tEND
-    {
-      List_T *Temp;
-      int i;
-      double d;
-      if((int)$10 + 1 + List_Nbr($6) != List_Nbr($8)){
-	vyyerror("Wrong definition of Nurbs Curve %d: "
-		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
-		(int)$3, (int)$10, List_Nbr($6), List_Nbr($8));
-      }
-      Temp = List_Create(List_Nbr($6),1,sizeof(int));
-      for(i=0;i<List_Nbr($6);i++) {
-      	List_Read($6,i,&d);
-        j = (int)d;
-        List_Add(Temp,&j);
-      }
-      AddCurveInDataBase ((int)$3,MSH_SEGM_NURBS,(int)$10,Temp,$8,-1,-1,0.,1.);
-      List_Delete(Temp);
-    }
-  | tLine '{' FExpr '}' tEND
-    {
-      $$.Num = (int)$3;
-      Curve *c = FindCurve($$.Num,THEM);
-      if(!c)
-	vyyerror("Unkown Curve %d", $$.Num);
-      else
-	$$.Type = c->Typ;
-    }
-
-  /* -------- Surfaces -------- */ 
-
-  | tPlane tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_SURF_PLAN,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_SURF_PLAN;
-      $$.Num  = (int)$4;
-    }
-  | tTrimmed tSurface '(' FExpr ')' tAFFECT '{' FExpr ',' ListOfDouble '}' tEND
-    {
-      Surface *s,*support;
-      support = FindSurface((int)$8,THEM);
-      if(!support)
-	vyyerror("Unkown Surface %d", (int)$8);
-      else{
-	Cdbz101((int)$4,MSH_SURF_PLAN,0,0,0,0,0,NULL,$10,NULL);
-	s = FindSurface((int)$4,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", (int)$4);
-	else{
-	  s->Typ =  MSH_SURF_TRIMMED;
-	  s->Support = support;
-	  $$.Type = MSH_SURF_TRIMMED;
-	  $$.Num  = (int)$4;
-	}
-      }
-    }
-  | tRuled tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      List_Read($7,0,&d);
-      i = (int)d;
-      EdgeLoop *el = FindEdgeLoop(i,THEM);
-      if(!el)
-	vyyerror("Unkown Line Loop %d", i);
-      else{
-	j = List_Nbr(el->Curves);
-	if(j==4)
-	  $$.Type = MSH_SURF_REGL;
-	else if(j==3)
-	  $$.Type  = MSH_SURF_TRIC;
-	else
-	  vyyerror("Wrong definition of Ruled Surface %d: "
-		   "%d borders instead of 3 or 4", 
-		   (int)$4, j);
-	Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL);
-	$$.Num = (int)$4;
-      }
-    }
-  | tNurbs tSurface tWith tBounds '(' FExpr ')' tAFFECT 
-    ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
-    tOrder '{' FExpr ',' FExpr '}' tEND
-    {
-      CreateNurbsSurface ( (int) $6 , (int)$18 , (int)$20  , $9, $12, $14);
-      $$.Type  = MSH_SURF_NURBS;
-      $$.Num = (int)$6;
-    }
-  | tNurbs  tSurface '(' FExpr ')' tAFFECT 
-    ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
-    tOrder '{' FExpr ',' FExpr '}' tEND
-    {
-      CreateNurbsSurfaceSupport ((int)$4, (int) $16 , (int) $18 , $7, $10, $12);
-    }
-  | tPhysical tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_SURFACE;
-      $$.Num  = (int)$4;
-    }
-  | tSurface tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_SURF_LOOP,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_SURF_LOOP;
-      $$.Num  = (int)$4;
-    }
-  | tSurface '{' FExpr '}' tEND
-    {
-      $$.Num = (int)$3;
-      Surface *s = FindSurface($$.Num,THEM);
-      if(!s)
-	vyyerror("Unknown Surface %d", $$.Num);
-      else
-	$$.Type = s->Typ;
-     }
-
-  /* -------- Volumes -------- */ 
-
-  | tComplex tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_VOLUME,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_VOLUME;
-      $$.Num  = (int)$4;      
-    }
-  | tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$3,MSH_VOLUME,0,0,0,0,0,NULL,$6,NULL);
-      $$.Type = MSH_VOLUME;
-      $$.Num  = (int)$3;
-    }
-  | tPhysical tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_VOLUME;
-      $$.Num  = (int)$4;
-    }
-;
-
-/* -------------------
-    T R A N S F O R M
-   ------------------- */
-
-Transform :
-    tTranslate VExpr '{' MultipleShape '}'
-    {
-      TranslateShapes ($2[0],$2[1],$2[2],$4,1);
-      $$ = $4;
-    }
-  | tRotate '{' VExpr ',' VExpr ',' FExpr '}' '{' MultipleShape '}'
-    {
-      RotateShapes($3[0],$3[1],$3[2],$5[0],$5[1],$5[2],$7,$10);
-      $$ = $10;
-    }
-  | tSymmetry  VExpr   '{' MultipleShape '}'
-    {
-      SymmetryShapes($2[0],$2[1],$2[2],$2[3],$4,1);
-      $$ = $4;
-    }
-  | tDilate '{' VExpr ',' FExpr '}'  '{' MultipleShape '}'
-    {
-      DilatShapes($3[0],$3[1],$3[2],$5,$8,1);
-      $$ = $8;
-    }
-;
-
-MultipleShape : 
-    Duplicata     { $$ = $1; }
-  | ListOfShapes  { $$ = $1; }
-  | Transform     { $$ = $1; }
-;
-
-ListOfShapes : 
-    /* none */
-    {
-      $$ = List_Create(3,3,sizeof(Shape));
-    }   
-  | ListOfShapes Shape
-    {
-      List_Add($$,&$2);
-      $$ = $1;
-    }
-;
-
-/* -------------------
-    D U P L I C A T A
-   ------------------- */
-
-Duplicata :
-    tDuplicata '{' ListOfShapes '}'
-    {
-      $$ = List_Create(3,3,sizeof(Shape));
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read ($3,i,&TheShape);
-	CopyShape(TheShape.Type,TheShape.Num,&j);
-	TheShape.Num = j;
-	List_Add($$,&TheShape);
-      }
-    }
-;
-
-
-/* -------------
-    D E L E T E 
-   ------------- */
-
-Delete :
-    tDelete '{' ListOfShapes '}'
-    {
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read ($3,i,&TheShape);
-	DeleteShape(TheShape.Type,TheShape.Num);
-      }
-    }
-    | tDelete tSTRING '[' FExpr ']' tEND
-      {
-	if(!strcmp($2, "View"))
-	  FreeView((int)$4);
-      }
-    | tDelete tMesh tEND
-    {
-      Init_Mesh(THEM, 1);
-    }
-;
-
-
-/* -----------------
-    C O M M A N D  
-   ----------------- */
-
-Command :
-    tSTRING StringExpr tEND
-    {
-      if(!strcmp($1, "Include")){
-
-	yyinTab[RecursionLevel++] = yyin;
-
-	strcpy(tmpstring, yyname);
-	i = strlen(yyname)-1 ;
-	while(i >= 0 && yyname[i] != '/' && yyname[i] != '\\') i-- ;
-	tmpstring[i+1] = '\0';
-	strcat(tmpstring,$2);
-
-	if((yyin = fopen(tmpstring,"r"))){
-	  Msg(INFO, "Including '%s'", tmpstring); 
-	  strcpy(yynameTab[RecursionLevel-1],yyname);
-	  yylinenoTab[RecursionLevel-1]=yylineno;
-	  yylineno=1;
-	  strcpy(yyname,tmpstring);
-	  while(!feof(yyin)){
-	    yyparse();
-	  }
-	  //
-	  //Est-ce grave de laisser le stream ouvert? Si on fait le
-	  //fclose, on ne peut pas faire appel a une fonction
-	  //(Function) definie en dehors de son fichier de
-	  //definition...
-	  //
-	  //fclose(yyin);
-	  yyin = yyinTab[--RecursionLevel];
-	  strcpy(yyname,yynameTab[RecursionLevel]);
-	  yylineno = yylinenoTab[RecursionLevel];
-	}
-	else{
-	  vyyerror("Unknown file '%s'", tmpstring) ;  
-	  yyin = yyinTab[--RecursionLevel];
-	}
-
-      }
-      else if(!strcmp($1, "Print")){
-	if(!CTX.batch) CreateOutputFile($2, CTX.print.format);
-      }
-      else if(!strcmp($1, "Save")){
-	CreateOutputFile($2, CTX.mesh.format);
-      }
-      else if(!strcmp($1, "Merge")){
-
-	FILE *ff = yyin;
-	MergeProblem($2);
-	yyin = ff;
-
-      }
-      else if(!strcmp($1, "Open")){
-
-	FILE *ff = yyin;
-	OpenProblem($2);
-	yyin = ff;
-
-      }
-      else if(!strcmp($1, "System")){
-	
-	Msg(PARSER_INFO, "Executing system call \"%s\"", $2);
-	system($2);
-
-      }
-      else
-	vyyerror("Unknown command '%s'", $1);
-    } 
-  | tSTRING FExpr tEND
-    {
-      if(!strcmp($1, "Sleep")){
-
-	long sleep_time = GetTime();
-	while(1){
-	  if(GetTime() - sleep_time > (long)($2*1.e6)) break;
-	}
-      
-      }
-      else if(!strcmp($1, "Mesh")){
-
-	//Maillage_Dimension_0(THEM);
-	//mai3d(THEM,(int)$2);
-	vyyerror("Mesh directives are not (yet) allowed in scripts");
-
-      }
-      else
-	vyyerror("Unknown command '%s'", $1);
-    }
-   | tPlugin '(' tSTRING ')' '.' tSTRING tEND
-   {
-#ifndef _NOPLUGIN
-    GMSH_PluginManager::Instance()->Action($3,$6,0); 
-#endif
-   }
-   | tExit tEND
-    {
-      exit(0);
-    } 
-   | tDraw tEND
-    {
-      if(!CTX.batch){ // we're in interactive mode
-	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
-	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
-	  Replot();
-	  DrawUI();
-	}
-	else{
-	  Draw();
-	  DrawUI();
-	}
-      }
-    }
-;
-
-/* ---------------
-    L O O P  
-   --------------- */
-
-Loop :   
-
-    tFor '(' FExpr tDOTS FExpr ')'
-    {
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = $3 ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = $5 ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    }
-  | tFor '(' FExpr tDOTS FExpr tDOTS FExpr ')'
-    {
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = $3 ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = $5 ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = $7 ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = "" ;
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    }
-  | tFor tSTRING tIn '{' FExpr tDOTS FExpr '}' 
-    {
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = $5 ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = $7 ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = 1.0 ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = $2 ;
-      
-      TheSymbol.Name = $2;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(1,1,sizeof(double));
-	List_Put(TheSymbol.val, 0, &$5);
-	List_Add(Symbol_L, &TheSymbol);
-      }
-      else{
-	List_Write(pSymbol->val, 0, &$5);
-      }
-      
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    }
-  | tFor tSTRING tIn '{' FExpr tDOTS FExpr tDOTS FExpr '}' 
-    {
-      FILE* ff;
-      if(RecursionLevel)
-	ff = yyinTab[RecursionLevel-1];
-      else
-	ff = yyin;
-      // here, we seek remember the position in yyin
-      LoopControlVariablesTab[ImbricatedLoop][0] = $5 ;
-      LoopControlVariablesTab[ImbricatedLoop][1] = $7 ;
-      LoopControlVariablesTab[ImbricatedLoop][2] = $9 ;
-      LoopControlVariablesNameTab[ImbricatedLoop] = $2 ;
-
-      TheSymbol.Name = $2;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
-	TheSymbol.val = List_Create(1,1,sizeof(double));
-	List_Put(TheSymbol.val, 0, &$5);
-	List_Add(Symbol_L, &TheSymbol);
-      }
-      else{
-	List_Write(pSymbol->val, 0, &$5);
-      }
-      
-      fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-    }
-  | tEndFor 
-    {
-      if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
-	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
-	FILE* ff;
-	if(RecursionLevel)
-	  ff = yyinTab[RecursionLevel-1];
-	else
-	  ff = yyin;
-	
-	LoopControlVariablesTab[ImbricatedLoop-1][0] +=
-	  LoopControlVariablesTab[ImbricatedLoop-1][2];
-	
-	if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){
-	  TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1];
-	  pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols);
-	  *(double*)List_Pointer_Fast(pSymbol->val, 0) += 
-	    LoopControlVariablesTab[ImbricatedLoop-1][2] ;
-	}
-	
-	fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
-      }
-      else{
-	ImbricatedLoop--;
-      }
-    }
-  | tFunction tSTRING
-    {
-      if(!FunctionManager::Instance()->createFunction($2,yyin,yylineno))
-	vyyerror("Redefinition of function %s",$2);
-      skip_until(NULL, "Return");
-    }
-  | tReturn
-    {
-      if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno))
-	vyyerror("Error while exiting function");
-    } 
-  | tCall tSTRING tEND
-    {
-      if(!FunctionManager::Instance()->enterFunction($2,&yyin,yylineno))
-	vyyerror("Unknown function %s",$2);
-    } 
-  | tIf '(' FExpr ')'
-    {
-      if(!$3) skip_until("If", "EndIf");
-    }
-  | tEndIf
-    {
-    }
-;
-
-
-/* ---------------
-    E X T R U D E 
-   --------------- */
-
-Extrude :
-    tExtrude tPoint '{' FExpr ',' VExpr '}' tEND
-    {
-      Curve *pc, *prc;
-      Extrude_ProtudePoint(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,&pc,&prc,NULL);
-    }
-  | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
-    {
-      Curve *pc, *prc;
-      Extrude_ProtudePoint(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,
-			   &pc,&prc,NULL);
-    }
-  | tExtrude tLine'{' FExpr ',' VExpr '}' tEND
-    {
-      Extrude_ProtudeCurve(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,NULL);
-    }
-  | tExtrude tLine'{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
-    {
-      Extrude_ProtudeCurve(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,NULL);
-    }
-  |  tExtrude tSurface '{' FExpr ',' VExpr '}' tEND
-    {
-      Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,0,NULL);
-    }
-  | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
-    {
-      Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,0,NULL);
-    }
-  | tExtrude tSurface '{' FExpr ',' VExpr '}'
-    {
-      extr.mesh.ExtrudeMesh = false;
-      extr.mesh.Recombine = false;
-    }
-                      '{' ExtrudeParameters '}' tEND
-    {
-      int vol = NEWREG();
-      Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,vol,&extr);
-    }
-  | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' 
-    {
-      extr.mesh.ExtrudeMesh = false;
-      extr.mesh.Recombine = false;
-    }
-  
-                      '{' ExtrudeParameters '}'tEND
-    {
-      int vol = NEWREG();
-      Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,vol,&extr);
-    }
-;
-
-ExtrudeParameters :
-    ExtrudeParameter
-    {
-    }
-  | ExtrudeParameters ExtrudeParameter
-    {
-    }
-;
-
-ExtrudeParameter :
-    tLayers '{' ListOfDouble ',' ListOfDouble ',' ListOfDouble '}' tEND
-    {
-      double d;
-      int j;
-      extr.mesh.ExtrudeMesh = true;
-      extr.mesh.NbLayer = List_Nbr($3);
-      for(int i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)d;
-	extr.mesh.NbElmLayer[i] = j;
-	List_Read($5,i,&d);
-	j = (int)d;
-	extr.mesh.ZonLayer[i] = j;
-	List_Read($7,i,&d);
-	extr.mesh.hLayer[i] = d;
-      }
-      List_Delete($3);
-      List_Delete($5);
-      List_Delete($7);
-    }
-  | tRecombine tEND
-    {
-      extr.mesh.Recombine = true;
-    }
-;
-
-/* -------------------
-    T R A N S F I N I
-   ------------------- */
-
-Transfini : 
-    tTransfinite tLine ListOfDouble tAFFECT FExpr tEND
-    {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  Msg(WARNING, "Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = sign(d);
-	  c->dpar[0] = 1.0;
-	}
-      }
-      List_Delete($3);
-    }
-  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tProgression FExpr tEND
-    {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  Msg(WARNING, "Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
-	  c->dpar[0] = fabs($8);
-	}
-      }
-      List_Delete($3);
-    }
-  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tBump FExpr tEND
-    {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  Msg(WARNING, "Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = fabs($8);
-	}
-      }
-      List_Delete($3);
-    }
-  | tTransfinite tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
-    {
-      Surface *s = FindSurface((int)$4,THEM);
-      if(!s)
-	Msg(WARNING, "Unkown Surface %d", (int)$4);
-      else{
-	s->Method = TRANSFINI;
-	k = List_Nbr($7);
-	if(k!=3 && k!=4){
-	  vyyerror("Wrong definition of Transfinite Surface %d: "
-		   "%d points instead of 3 or 4" , $4, k) ;
-	}
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read($7,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
-      List_Delete($7);
-    }
-  | tElliptic tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
-    {
-      Surface *s = FindSurface((int)$4,THEM);
-      if(!s)
-	Msg(WARNING, "Unkown Surface %d", (int)$4);
-      else{
-        s->Method = ELLIPTIC;
-        k = List_Nbr($7);
-        if(k != 4)
-	  vyyerror("Wrong definition of Elliptic Surface %d: "
-		   "%d points instead of 4" , $4, k) ;
-        else{
-	  for(i=0;i<k;i++){
-	    List_Read($7,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
-      List_Delete($7);
-    }
-  | tTransfinite tVolume '{' FExpr '}' tAFFECT ListOfDouble tEND
-    {
-      Volume *v = FindVolume((int)$4,THEM);
-      if(!v)
-	Msg(WARNING, "Unkown Volume %d", (int)$4);
-      else{
-	v->Method = TRANSFINI;
-	k = List_Nbr($7);
-	if(k!=6 && k!=8)
-	  vyyerror("Wrong definition of Transfinite Volume %d: "
-		   "%d points instead of 6 or 8" , $4, k) ;
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read($7,i,&d);
-	    j = (int)fabs(d);
-	    v->ipar[i] = j;
-	  }
-	}
-      }
-      List_Delete($7);
-    }
-  | tRecombine tSurface ListOfDouble tAFFECT FExpr tEND
-    {
-      Surface *s;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)d;
-	s = FindSurface(j,THEM);
-	if(s){
-	  s->Recombine = 1;
-	  s->RecombineAngle = ($5 > 0 && $5 < 90) ? $5 : 90;
-	}
-      }
-      List_Delete($3);
-    }
-  | tRecombine tSurface ListOfDouble tEND
-    {
-      Surface *s;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)d;
-        s = FindSurface(j,THEM);
-	if(s){
-	  s->Recombine = 1;
-	  s->RecombineAngle = 30.;
-        }
-      }
-      List_Delete($3);
-    }
-;
-
-
-/* -------------------
-    C O H E R E N C E
-   ------------------- */
-
-Coherence : 
-    tCoherence tEND
-    { 
-      Coherence_PS();
-    }
-  | tIntersect tEND
-    { 
-      IntersectAllSegmentsTogether();
-    }
-;
-
-
-/* ---------------
-    G E N E R A L
-    --------------- */
-
-BoolExpr :
-    tTRUE {$$ = 1;}
-  | tFALSE {$$ = 0;}
-  | tUNSPECIFIED {$$ = -1;}
-  | tU {$$ = -1;}
-  | tV {$$ = -1;}
-  ;
-
-FExpr :
-    FExpr_Single                     { $$ = $1;           }
-  | '(' FExpr ')'                    { $$ = $2 ;          }
-  | '-' FExpr %prec UNARYPREC        { $$ = -$2 ;         }
-  | '+' FExpr %prec UNARYPREC        { $$ = $2;           }
-  | '!' FExpr                        { $$ = !$2 ;         }
-  | FExpr '-' FExpr                  { $$ = $1 - $3 ;     }
-  | FExpr '+' FExpr                  { $$ = $1 + $3 ;     }
-  | FExpr '*' FExpr                  { $$ = $1 * $3 ;     }
-  | FExpr '/' FExpr
-    { 
-      if(!$3)
-	vyyerror("Division by zero in '%g / %g'", $1, $3);
-      else
-	$$ = $1 / $3 ;     
-    }
-  | FExpr '%' FExpr                  { $$ = (int)$1 % (int)$3 ;  }
-  | FExpr '^' FExpr                  { $$ = pow($1,$3) ;  }
-  | FExpr '<' FExpr                  { $$ = $1 < $3 ;     }
-  | FExpr '>' FExpr                  { $$ = $1 > $3 ;     }
-  | FExpr tLESSOREQUAL FExpr         { $$ = $1 <= $3 ;    }
-  | FExpr tGREATEROREQUAL FExpr      { $$ = $1 >= $3 ;    }
-  | FExpr tEQUAL FExpr               { $$ = $1 == $3 ;    }
-  | FExpr tNOTEQUAL FExpr            { $$ = $1 != $3 ;    }
-  | FExpr tAND FExpr                 { $$ = $1 && $3 ;    }
-  | FExpr tOR FExpr                  { $$ = $1 || $3 ;    }
-  | FExpr '?' FExpr tDOTS FExpr      { $$ = $1? $3 : $5 ; }
-  | tExp    '(' FExpr ')'            { $$ = exp($3);      }
-  | tLog    '(' FExpr ')'            { $$ = log($3);      }
-  | tLog10  '(' FExpr ')'            { $$ = log10($3);    }
-  | tSqrt   '(' FExpr ')'            { $$ = sqrt($3);     }
-  | tSin    '(' FExpr ')'            { $$ = sin($3);      }
-  | tAsin   '(' FExpr ')'            { $$ = asin($3);     }
-  | tCos    '(' FExpr ')'            { $$ = cos($3);      }
-  | tAcos   '(' FExpr ')'            { $$ = acos($3);     }
-  | tTan    '(' FExpr ')'            { $$ = tan($3);      }
-  | tAtan   '(' FExpr ')'            { $$ = atan($3);     }
-  | tAtan2  '(' FExpr ',' FExpr ')'  { $$ = atan2($3,$5); }
-  | tSinh   '(' FExpr ')'            { $$ = sinh($3);     }
-  | tCosh   '(' FExpr ')'            { $$ = cosh($3);     }
-  | tTanh   '(' FExpr ')'            { $$ = tanh($3);     }
-  | tFabs   '(' FExpr ')'            { $$ = fabs($3);     }
-  | tFloor  '(' FExpr ')'            { $$ = floor($3);    }
-  | tCeil   '(' FExpr ')'            { $$ = ceil($3);     }
-  | tFmod   '(' FExpr ',' FExpr ')'  { $$ = fmod($3,$5);  }
-  | tModulo '(' FExpr ',' FExpr ')'  { $$ = fmod($3,$5);  }
-  | tHypot  '(' FExpr ',' FExpr ')'  { $$ = sqrt($3*$3+$5*$5); }
-  | tRand   '(' FExpr ')'            { $$ = $3*(double)rand()/(double)RAND_MAX; }
-;
-
-/* Pour etre vraiment complet, il faudrait encore ajouter +=, -=, *= et /= */
-
-FExpr_Single :
-
-  /* -------- Constants -------- */ 
-
-    tDOUBLE   { $$ = $1; }
-  | tPi       { $$ = 3.141592653589793; }
-  | tMPI_Rank { $$ = ParUtil::Instance()->rank(); }
-  | tMPI_Size { $$ = ParUtil::Instance()->size(); }
-
-  /* -------- Variables -------- */ 
-
-  | tSTRING
-    {
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $1) ;
-	$$ = 0. ;
-      }
-      else
-	$$ = *(double*)List_Pointer_Fast(pSymbol->val, 0) ;
-    }
-
-  | tSTRING '[' FExpr ']'
-    {
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $1) ;
-	$$ = 0. ;
-      }
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3)))
-	  $$ = *pd ;
-	else{
-	  vyyerror("Uninitialized variable '%s[%d]'", $1, (int)$3) ;
-	  $$ = 0. ;
-	}
-      }
-    }
-
-  | tSTRING NumericIncrement
-    {
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $1) ;
-	$$ = 0. ;
-      }
-      else
-	$$ = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += $2) ;
-    }
-
-  | tSTRING '[' FExpr ']' NumericIncrement
-    {
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $1) ;
-	$$ = 0. ;
-      }
-      else{
-	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3)))
-	  $$ = (*pd += $5) ;
-	else{
-	  vyyerror("Uninitialized variable '%s[%d]'", $1, (int)$3) ;
-	  $$ = 0. ;
-	}
-      }
-    }
-
-  /* -------- Option Strings -------- */ 
-
-  | tSTRING '.' tSTRING 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1))){
-	vyyerror("Unknown numeric option class '%s'", $1);
-	$$ = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($3, pNumCat))){
-	  vyyerror("Unknown numeric option '%s.%s'", $1, $3);
-	  $$ = 0. ;
-	}
-	else
-	  $$ = pNumOpt(0, GMSH_GET, 0);
-      }
-    }
-
-  | tSTRING '[' FExpr ']' '.' tSTRING 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1))){
-	vyyerror("Unknown numeric option class '%s'", $1);
-	$$ = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($6, pNumCat))){
-	  vyyerror("Unknown numeric option '%s[%d].%s'", $1, (int)$3, $6);
-	  $$ = 0. ;
-	}
-	else
-	  $$ = pNumOpt((int)$3, GMSH_GET, 0);
-      }
-    }
-
-  | tSTRING '.' tSTRING NumericIncrement
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1))){
-	vyyerror("Unknown numeric option class '%s'", $1);
-	$$ = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($3, pNumCat))){
-	  vyyerror("Unknown numeric option '%s.%s'", $1, $3);
-	  $$ = 0. ;
-	}
-	else
-	  $$ = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+$4);
-      }
-    }
-
-  | tSTRING '[' FExpr ']' '.' tSTRING NumericIncrement
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1))){
-	vyyerror("Unknown numeric option class '%s'", $1);
-	$$ = 0. ;
-      }
-      else{
-	if(!(pNumOpt =  (double (*) (int, int, double))Get_NumberOption($6, pNumCat))){
-	  vyyerror("Unknown numeric option '%s[%d].%s'", $1, (int)$3, $6);
-	  $$ = 0. ;
-	}
-	else
-	  $$ = pNumOpt((int)$3, GMSH_SET|GMSH_GUI, pNumOpt((int)$3, GMSH_GET, 0)+$7);
-      }
-    }
-;
-
-VExpr :
-    VExpr_Single
-    {
-      memcpy($$, $1, 5*sizeof(double)) ;
-    }
-  | '-' VExpr %prec UNARYPREC
-    {
-      for(i=0 ; i<5 ; i++) $$[i] = -$2[i] ;
-    }
-  | '+' VExpr %prec UNARYPREC
-    { 
-      for(i=0 ; i<5 ; i++) $$[i] = $2[i];
-    }
-  | VExpr '-' VExpr
-    { 
-      for(i=0 ; i<5 ; i++) $$[i] = $1[i] - $3[i] ;
-    }
-  | VExpr '+' VExpr
-    {
-      for(i=0 ; i<5 ; i++) $$[i] = $1[i] + $3[i] ;
-    }
-
-VExpr_Single :
-    '{' FExpr ',' FExpr ',' FExpr ',' FExpr ',' FExpr  '}'
-    { 
-      $$[0]=$2;  $$[1]=$4;  $$[2]=$6;  $$[3]=$8; $$[4]=$10;
-    }
-  | '{' FExpr ',' FExpr ',' FExpr ',' FExpr '}'
-    { 
-      $$[0]=$2;  $$[1]=$4;  $$[2]=$6;  $$[3]=$8; $$[4]=1.0;
-    }
-  | '{' FExpr ',' FExpr ',' FExpr '}'
-    {
-      $$[0]=$2;  $$[1]=$4;  $$[2]=$6;  $$[3]=0.0; $$[4]=1.0;
-    }
-  | '(' FExpr ',' FExpr ',' FExpr ')'
-    {
-      $$[0]=$2;  $$[1]=$4;  $$[2]=$6;  $$[3]=0.0; $$[4]=1.0;
-    }
-;
-
-ListOfStrings :
-    /* none */
-    {
-    }
-  | '(' RecursiveListOfStrings ')'
-    {
-    }
-;
-
-RecursiveListOfStrings :
-    tBIGSTR
-    {
-    }
-  | RecursiveListOfStrings ',' tBIGSTR
-    {
-    }
-;
-
-ListOfListOfDouble :
-    /* none */
-    {
-    }
-  | '{' RecursiveListOfListOfDouble '}'
-    {
-       $$=$2;
-    }
-  | '(' RecursiveListOfListOfDouble ')'
-    {
-       $$=$2;
-    }
-;
-
-RecursiveListOfListOfDouble :
-    ListOfDouble
-    {
-      $$ = List_Create(2,1,sizeof(List_T*)) ;
-      List_Add($$, &($1)) ;
-    }
-  | RecursiveListOfListOfDouble ',' ListOfDouble
-    {
-      List_Add($$, &($3)) ;
-    }
-;
-
-
-ListOfDouble :
-    FExpr
-    {
-      $$ = List_Create(2,1,sizeof(double)) ;
-      List_Add($$, &($1)) ;
-    }
-  | FExpr_Multi
-    {
-      $$ = $1 ;
-    }
-  | '{' RecursiveListOfDouble '}'
-    {
-      $$=$2;
-    }
-  | '-' '{' RecursiveListOfDouble '}'
-    {
-      $$=$3;
-      for(i=0 ; i<List_Nbr($$) ; i++){
-	pd = (double*)List_Pointer($$, i);
-	(*pd) = - (*pd);
-      }
-    }
-;
-
-FExpr_Multi :
-    FExpr tDOTS FExpr
-    { 
-      $$ = List_Create(2,1,sizeof(double)) ; 
-      for(d=$1 ; ($1<$3)?(d<=$3):(d>=$3) ; ($1<$3)?(d+=1.):(d-=1.)) 
-	List_Add($$, &d) ;
-    }
-  | FExpr tDOTS FExpr tDOTS FExpr
-   {
-      $$ = List_Create(2,1,sizeof(double)) ; 
-      if(!$5 || ($1<$3 && $5<0) || ($1>$3 && $5>0)){
-        vyyerror("Wrong increment in '%g:%g:%g'", $1, $3, $5) ;
-	List_Add($$, &($1)) ;
-      }
-      else
-	for(d=$1 ; ($5>0)?(d<=$3):(d>=$3) ; d+=$5)
-	  List_Add($$, &d) ;
-   }
-  | tSTRING '[' ']'
-    {
-      $$ = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $1) ;
-	d = 0.0 ;
-	List_Add($$, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++)
-	  List_Add($$, (double*)List_Pointer_Fast(pSymbol->val, i)) ;
-      }
-    }
-  | '-' tSTRING '[' ']'
-    {
-      $$ = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = $2 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $2) ;
-	d = 0.0 ;
-	List_Add($$, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++){
-	  d = - *(double*)List_Pointer_Fast(pSymbol->val, i);
-	  List_Add($$, &d) ;
-	}
-      }
-    }
-  | tSTRING '[' '{' RecursiveListOfDouble '}' ']'
-    {
-      $$ = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = $1 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $1) ;
-	d = 0.0 ;
-	List_Add($$, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr($4) ; i++){
-	  j = (int)(*(double*)List_Pointer_Fast($4, i));
-	  if((pd = (double*)List_Pointer_Test(pSymbol->val, j)))
-	    List_Add($$, pd) ;
-	  else
-	    vyyerror("Uninitialized variable '%s[%d]'", $1, j) ;	  
-	}
-      }
-      List_Delete($4);
-    }
-  | '-' tSTRING '[' '{' RecursiveListOfDouble '}' ']'
-    {
-      $$ = List_Create(2,1,sizeof(double)) ;
-      TheSymbol.Name = $2 ;
-      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
-	vyyerror("Unknown variable '%s'", $2) ;
-	d = 0.0 ;
-	List_Add($$, &d);
-      }
-      else{
-	for(i = 0 ; i < List_Nbr($5) ; i++){
-	  j = (int)(*(double*)List_Pointer_Fast($5, i));
-	  if((pd = (double*)List_Pointer_Test(pSymbol->val, j))){
-	    d = - *pd;
-	    List_Add($$, &d) ;
-	  }
-	  else
-	    vyyerror("Uninitialized variable '%s[%d]'", $2, j) ;	  
-	}
-      }
-      List_Delete($5);
-    }
-;
-
-RecursiveListOfDouble :
-    FExpr
-    {
-      $$ = List_Create(2,1,sizeof(double)) ;
-      List_Add($$, &($1)) ;
-    }
-  | FExpr_Multi
-    {
-      $$ = $1 ;
-    }
-  | RecursiveListOfDouble ',' FExpr
-    {
-      List_Add($$, &($3)) ;
-    }
-  | RecursiveListOfDouble ',' FExpr_Multi
-    {
-      for(i=0 ; i<List_Nbr($3) ; i++){
-	List_Read($3, i, &d) ;
-	List_Add($$, &d) ;
-      }
-      List_Delete($3);
-    }
-;
-
-
-ColorExpr :
-    '{' FExpr ',' FExpr ',' FExpr ',' FExpr '}'
-    {
-      $$ = PACK_COLOR((int)$2, (int)$4, (int)$6, (int)$8);
-    }
-  | '{' FExpr ',' FExpr ',' FExpr '}'
-    {
-      $$ = PACK_COLOR((int)$2, (int)$4, (int)$6, 255);
-    }
-/* shift/reduce conflict
-  | '{' tSTRING ',' FExpr '}'
-    {
-      $$ = Get_ColorForString(ColorString, (int)$4, $2, &flag);
-      if(flag) vyyerror("Unknown color '%s'", $2);
-    }
-*/
-  | tSTRING
-    {
-      $$ = Get_ColorForString(ColorString, -1, $1, &flag);
-      if(flag) vyyerror("Unknown color '%s'", $1);
-    }
-  | tSTRING '.' tColor '.' tSTRING 
-    {
-      if(!(pColCat = Get_ColorOptionCategory($1))){
-	vyyerror("Unknown color option class '%s'", $1);
-	$$ = 0 ;
-      }
-      else{
-	if(!(pColOpt =  (unsigned int (*) (int, int, unsigned int))Get_ColorOption($5, pColCat))){
-	  vyyerror("Unknown color option '%s.Color.%s'", $1, $5);
-	  $$ = 0 ;
-	}
-	else{
-	  $$ = pColOpt(0,GMSH_GET,0) ;
-	}
-      }
-    }
-;
-
-ListOfColor :
-    '{' RecursiveListOfColor '}'
-    {
-      $$ = $2;
-    }
-  | tSTRING '[' FExpr ']' '.' tColorTable
-    {
-      $$ = List_Create(256,10,sizeof(unsigned int)) ;
-      ColorTable *ct = Get_ColorTable((int)$3);
-      if(!ct)
-	vyyerror("View[%d] does not exist", (int)$3);
-      else{
-	for(i=0 ; i<ct->size ; i++) 
-	  List_Add($$, &ct->table[i]);
-      }
-    }
-;
-
-RecursiveListOfColor :
-    ColorExpr
-    {
-      $$ = List_Create(256,10,sizeof(unsigned int)) ;
-      List_Add($$, &($1)) ;
-    }
-  | RecursiveListOfColor ',' ColorExpr
-    {
-      List_Add($$, &($3)) ;
-    }
-;
-
-StringExpr :
-    tBIGSTR
-    {
-      $$ = $1;
-    }
-  | tStrCat '(' StringExpr ',' StringExpr ')'
-    {
-      $$ = (char *)Malloc((strlen($3)+strlen($5)+1)*sizeof(char)) ;
-      strcpy($$, $3) ;  
-      strcat($$, $5) ;
-      Free($3);
-      Free($5);
-    }
-  | tStrPrefix '(' StringExpr ')'
-    {
-      $$ = (char *)Malloc((strlen($3)+1)*sizeof(char)) ;
-      for(i=strlen($3)-1; i>=0; i--){
-	if($3[i] == '.'){
-	  strncpy($$,$3,i);
-	  $$[i]='\0';
-	  break;
-	}
-      }
-      if(i<=0) strcpy($$,$3);
-      Free($3);
-    }
-  | tSprintf '(' StringExpr ')'
-    {
-      $$ = $3;
-    }
-  | tSprintf '(' StringExpr ',' RecursiveListOfDouble ')'
-    {
-      for(i = 0 ; i<List_Nbr($5) ; i++){
-	if(!i){
-	  str = strtok($3, "%");
-	  strcpy(tmpstring, str);
-	}
-	str = strtok(NULL, "%");
-	if(str){
-	  strcpy(tmpstring2, "%");
-	  strcat(tmpstring2, str);
-	  sprintf(tmpstring3, tmpstring2, *(double*)List_Pointer($5,i)); 
-	  strcat(tmpstring, tmpstring3);
-	}
-	else{
-	  vyyerror("Missing %d parameter(s) in Sprintf format",
-		   List_Nbr($5)-i);
-	  break ;
-	}
-      }
-      $$ = (char*)Malloc((strlen(tmpstring)+1)*sizeof(char));
-      strcpy($$, tmpstring);
-      List_Delete($5);
-      Free($3);
-    }
-  | tSprintf '(' tSTRING '.' tSTRING ')'
-    { 
-      if(!(pStrCat = Get_StringOptionCategory($3)))
-	vyyerror("Unknown string option class '%s'", $3);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($5, pStrCat)))
-	  vyyerror("Unknown string option '%s.%s'", $3, $5);
-	else{
-	  str = pStrOpt(0,GMSH_GET,NULL) ;
-	  $$ = (char*)Malloc((strlen(str)+1)*sizeof(char));
-	  strcpy($$, str);
-	}
-      }
-    }
-  | tSprintf '('  tSTRING '[' FExpr ']' '.' tSTRING   ')'
-    { 
-      if(!(pStrCat = Get_StringOptionCategory($3)))
-	vyyerror("Unknown string option class '%s'", $3);
-      else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($8, pStrCat)))
-	  vyyerror("Unknown string option '%s[%d].%s'", $3, (int)$5, $8);
-	else{
-	  str = pStrOpt((int)$5,GMSH_GET,NULL) ;
-	  $$ = (char*)Malloc((strlen(str)+1)*sizeof(char));
-	  strcpy($$, str);
-	}
-      }
-    }
-;
-
-%%
-
-void InitSymbols(void){
-  if(!Symbol_L)
-    Symbol_L = List_Create(50,10,sizeof(Symbol));
-  else
-    List_Reset(Symbol_L);
-}
-
-void DeleteSymbols(void){
-  int i;
-  for(i = 0 ; i < List_Nbr(Symbol_L) ; i++)
-    List_Delete(((Symbol*)List_Pointer_Fast(Symbol_L,i))->val);
-  List_Delete(Symbol_L);
-}
-
-int CompareSymbols (const void *a, const void *b){
-  return(strcmp(((Symbol*)a)->Name,((Symbol*)b)->Name));
-}
-  
-void yyerror(char *s){
-  Msg(PARSER_ERROR, "'%s', line %d : %s (%s)",yyname,yylineno-1,s,yytext);
-  yyerrorstate=1;
-}
-
-void vyyerror(char *fmt, ...){
-  va_list args;
-  char tmp[1024];
-
-  va_start (args, fmt);
-  vsprintf (tmp, fmt, args);
-  va_end (args);
-
-  Msg(PARSER_ERROR, "'%s', line %d : %s", yyname, yylineno-1, tmp);
-  yyerrorstate=1;
-}
-
-
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
deleted file mode 100644
index c7bee26d07fd8b019eaa073f6232acb0d7028cad..0000000000000000000000000000000000000000
--- a/Parser/Gmsh.yy.cpp
+++ /dev/null
@@ -1,3172 +0,0 @@
-#line 2 "Gmsh.yy.cpp"
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.106 2001-08-12 14:24:51 geuzaine Exp $
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-#include <unistd.h>
-
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif	/* __STDC__ */
-#endif	/* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- * 	if ( condition_holds )
- *		yyless( 5 );
- *	else
- *		do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-		*yy_cp = yy_hold_char; \
-		YY_RESTORE_YY_MORE_OFFSET \
-		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via yyrestart()), so that the user can continue scanning by
-	 * just pointing yyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-	};
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	yytext_ptr = yy_bp; \
-	yyleng = (int) (yy_cp - yy_bp); \
-	yy_hold_char = *yy_cp; \
-	*yy_cp = '\0'; \
-	yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 185
-#define YY_END_OF_BUFFER 186
-static yyconst short int yy_accept[1009] =
-    {   0,
-        0,    0,  186,  184,    1,    1,  184,    5,  178,  184,
-        6,  184,  184,  184,  184,  184,  179,   14,    2,  184,
-        9,  184,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  184,  184,    0,    0,   22,  178,   18,   12,   19,
-       10,   20,   11,    0,  181,    0,    0,    0,    0,    3,
-        4,   13,   16,  180,  179,    0,   24,   21,   25,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,   68,   67,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,   84,  183,  183,  183,  183,  183,
-      183,  183,  183,  120,  123,  114,  117,  183,  183,  183,
-      183,  183,  183,  122,  183,  125,  183,  116,  119,  183,
-      183,  183,  183,  121,  124,  115,  118,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,   17,   23,    0,
-        0,   15,    0,  131,  132,  133,  134,  180,    0,    0,
-
-      182,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,   40,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,   53,  183,  183,  183,  183,  183,  183,   64,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-       74,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,   98,  183,  183,  183,  183,
-      183,  183,  183,  183,  109,  183,  183,  183,  183,  183,
-
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-        0,    0,    0,  181,    0,    0,  180,  183,  183,  183,
-      183,   26,  183,  183,  183,   28,   30,  183,  183,  183,
-      183,   35,  183,  183,  183,  183,  183,  183,   48,  183,
-       38,  183,  183,  183,  183,  183,   39,  148,  183,  183,
-      183,   52,  183,  183,  183,    0,  183,  183,  183,  183,
-       60,  183,  183,  183,   61,  183,   63,  183,  183,  183,
-      183,    0,  183,  183,  142,  183,  183,   72,  183,   73,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,   95,  183,  183,
-
-      183,  183,  183,   99,  183,  183,   97,  183,  183,  183,
-      183,  183,  183,  108,  183,  183,  183,  183,  183,  183,
-      113,  183,  183,  183,  183,  173,    8,  183,  183,  183,
-      183,  183,    0,    0,    0,  180,  183,  183,  183,  183,
-      183,  183,  183,   32,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,   45,  183,
-      183,  183,  183,  183,  183,  183,    0,  183,  183,  183,
-       59,  183,  183,  183,   62,  183,  183,  183,   66,    0,
-      183,   70,  183,  183,   75,  183,  183,  183,  183,  183,
-       81,  183,   82,  146,  183,  183,  183,   85,  183,   86,
-
-       87,  183,  183,  183,  183,  183,   94,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  111,  183,
-      183,  183,  183,  183,  183,  170,  183,  183,  172,  177,
-      183,    0,    0,  183,  183,  183,  183,   27,   29,   31,
-      183,  183,  183,   37,  183,  161,  183,  183,  183,  183,
-      183,  183,   42,  183,  183,  183,  183,   49,   50,  183,
-      183,  183,  183,    0,  154,  183,  183,   58,  183,  183,
-      183,  183,  183,  183,  183,  183,  147,    0,  183,   76,
-       71,  183,  183,  183,   78,   77,  183,  183,  183,  183,
-       91,   90,  183,  183,   96,   93,  183,  100,  183,  104,
-
-      183,  183,  183,  183,  183,  183,  183,  183,  143,  183,
-      112,  183,  183,  183,    7,  171,  169,    0,    0,  183,
-      183,  183,  183,   33,  183,   36,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,   44,  183,  183,  183,
-      183,   57,    0,  183,  183,   55,  183,  183,  183,  183,
-      183,  183,  183,    0,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  103,  183,  101,  183,  183,
-      183,  183,  183,  110,  183,  183,  174,  183,    0,    0,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,    0,
-
-       54,   56,  183,  183,  183,  183,  183,   65,  183,    0,
-      183,  183,   79,   80,  183,  183,  183,   83,  183,  183,
-      183,  183,  102,  183,  183,  183,  183,  183,  175,  176,
-        0,    0,  183,  183,  183,  183,   34,  183,  183,  183,
-      183,  183,  183,  183,  183,   43,  183,  144,   51,  183,
-      137,    0,  183,  183,  183,  150,  183,  183,    0,   69,
-      183,  183,  183,  183,  183,   92,  183,  105,  183,  183,
-      183,  107,  183,    0,    0,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,   47,  183,   46,
-      136,    0,  140,  183,  183,  183,  183,    0,  183,  183,
-
-      183,   89,  183,  183,  183,  183,  183,  183,    0,    0,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,    0,  183,  183,  149,  183,    0,  183,
-      183,  183,   88,  183,  183,  183,  106,  183,  130,    0,
-      130,  183,  183,  183,  183,  183,  183,  183,  155,  183,
-      183,  183,  183,    0,  183,  183,  183,  152,  183,  183,
-      183,  183,  183,  183,  138,  129,  183,  141,  129,  183,
-      183,  183,  183,  183,  183,  183,  183,    0,  183,  183,
-      163,  183,  135,  183,  183,  183,  162,  183,  183,  183,
-      183,  183,  183,  183,  183,   41,    0,  183,  183,  183,
-
-      183,  183,  183,  183,  183,  183,  183,  126,  165,  159,
-      183,    0,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  153,  139,  151,  183,  183,  183,
-      160,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  145,  183,  183,  183,  183,  183,  166,  183,  183,
-      183,  183,  183,  158,  157,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  164,  183,
-      183,  183,  183,  183,  167,  183,  183,  128,  183,  183,
-      183,  183,  183,  183,  127,  183,  183,  183,  183,  183,
-
-      183,  183,  183,  168,  183,  183,  156,    0
-    } ;
-
-static yyconst int yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    2,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    4,    5,    6,    1,    1,    7,    8,    1,
-        1,    9,   10,    1,   11,   12,   13,   14,   15,   16,
-       17,   18,   18,   18,   18,   18,   18,   19,   20,   21,
-       22,   23,    1,    1,   24,   25,   26,   27,   28,   29,
-       30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
-       33,   40,   41,   42,   43,   44,   45,   46,   47,   33,
-        1,   48,    1,    1,   49,    1,   50,   51,   52,   53,
-
-       54,   55,   56,   57,   58,   33,   59,   60,   61,   62,
-       63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
-       73,   74,    1,   75,    1,   76,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst int yy_meta[77] =
-    {   0,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    3,    3,    3,    3,    3,    1,    1,
-        1,    1,    1,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    1,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    1,    1
-    } ;
-
-static yyconst short int yy_base[1014] =
-    {   0,
-        0,    0, 1272,   51,   52, 1273,   57,   54,   70,   75,
-       55,   67,   80,   81,  113,   95,  132,   73,   79,   89,
-      111,  119,  125,  133,  179,  140,  181,  189,  135,  161,
-      204,   83,  158,  214,  230,  110,  222,  252,  253,  297,
-      307,  184,  278,  154,  212,  255,  237,  271,  268,  300,
-      325,  256,  147, 1233, 1233, 1273,  360, 1273, 1273, 1273,
-     1273, 1273, 1273, 1257,  366, 1256, 1255,  128, 1254, 1273,
-     1273, 1273, 1273,  371,  386,  395, 1273, 1273, 1273,    0,
-     1227, 1220, 1226, 1230, 1198, 1208, 1201,  117, 1194, 1216,
-     1187, 1194, 1214, 1213, 1214,   83, 1216,  163, 1192, 1199,
-
-     1182,  361, 1205, 1206, 1185, 1184, 1193, 1178, 1211, 1205,
-     1212, 1178, 1184,  203, 1210, 1200, 1183, 1170, 1169, 1165,
-     1168, 1191, 1204, 1163, 1188,    0, 1157, 1161, 1186, 1149,
-     1159, 1158,  125, 1182, 1186, 1150, 1163, 1149, 1182, 1160,
-     1188, 1173, 1144, 1136,    0,  150,  212,  227, 1146,  176,
-     1139, 1146, 1181,    0,    0,    0,    0, 1142,  264, 1137,
-     1136, 1135, 1139,    0, 1159,    0, 1166,    0,    0, 1135,
-      277, 1138,  249,    0,    0,    0,    0, 1135, 1126, 1140,
-     1140, 1128, 1119, 1123, 1120, 1127, 1120, 1273, 1273, 1148,
-     1143, 1273,  416, 1273, 1273, 1273, 1273,  421,  436,  427,
-
-      441, 1146, 1158, 1140, 1139, 1112,  318, 1116, 1115, 1110,
-     1115, 1135, 1111, 1108, 1129, 1144, 1128, 1129, 1135, 1134,
-     1105, 1103, 1103, 1096, 1109, 1106, 1096, 1094, 1100, 1132,
-     1127, 1100, 1103, 1081, 1091, 1122, 1117,  184, 1090,  324,
-     1079,    0, 1080, 1117, 1116, 1076, 1079, 1088,    0, 1088,
-     1103, 1111, 1074, 1125, 1081, 1066, 1105, 1078, 1075, 1076,
-     1114, 1064, 1095, 1077, 1068, 1055, 1072, 1094, 1067, 1083,
-     1092, 1068, 1050, 1054, 1059, 1052, 1059, 1050, 1055, 1057,
-     1046, 1039, 1057, 1052, 1066, 1047, 1045, 1044, 1033,  328,
-     1045, 1038, 1060, 1061, 1039, 1033, 1033, 1031, 1050, 1049,
-
-     1021, 1032,  405, 1034, 1023,   48, 1025, 1031, 1026, 1015,
-     1040, 1042,  452,  462,  471,  476,  481, 1038, 1042, 1039,
-     1061,    0, 1013, 1017, 1024,    0, 1057, 1022, 1013, 1035,
-     1016,    0, 1040, 1032, 1038, 1027, 1038, 1026,    0,  993,
-        0, 1011, 1000,  993,  992,  997,    0,    0, 1030,  987,
-      986,    0,  995, 1003, 1012, 1018, 1021,  984,  984,  991,
-        0,  976,  995,  994,    0,  976,    0,  973, 1012, 1011,
-      970, 1022,  970,  968,    0,  968,  965,    0, 1018,    0,
-     1002,   94,  976,  969,  961,  990,  960,  997,  981,  962,
-      964,  967,  962,  951,  952,  949,  950,    0,  954,  948,
-
-      945,  959,  983,    0,  948,  947,    0,  958,  941,  956,
-      951,  972,  967,    0,  935,  940,  944,  961,  970,  936,
-        0,  946,  932,  931,  925,    0,    0,  938,  941,  924,
-      936,  934,  955,  958,  486,  491,  953,  958,  955,  933,
-      914,  918,  917,    0,  926,  915,  944,  908,  933,  945,
-      945,  930,  946,  942,  908,  915,  912,  911,  922,  909,
-      920,  907,  906,  907,  381,  917,  916,  930,  304,  889,
-        0,  901,  370,  483,    0,  895,  910,  911,    0,  936,
-      882,    0,  881,  890,    0,  908,  895,  886,  876,  879,
-        0,  899,    0,    0,  914,  885,  886,    0,  875,    0,
-
-        0,  881,  881,  883,  871,  878,    0,  882,  876,  861,
-      860,  873,  874,  857,  897,  895,  231,  868,    0,  881,
-      874,  865,  866,  854,  856,    0,  859,  854,    0,    0,
-      841,  875,  885,  873,  881,  882,  868,    0,    0,  890,
-      837,  850,  866,    0,  870,    0,  852,  868,  864,  858,
-      837,  828,    0,  833,  844,  821,  860,    0,    0,  841,
-      847,  851,  860,  849,    0,  828,  827,    0,  830,  845,
-      839,  853,  856,  853,  815,  837,    0,  859,  821,    0,
-        0,  839,  811,  798,    0,    0,  843,  828,  801,  818,
-        0,    0,  800,  808,    0,    0,  838,    0,  809,    0,
-
-      808,  808,  795,  836,  832,  800,  807,  803,    0,  806,
-        0,  800,  789,  794,    0,    0,    0,  808,  818,  806,
-      821,  815,  811,    0,  782,    0,  816,  819,  801,  799,
-      791,  807,  798,  783,  784,  784,    0,  796,  765,  792,
-      793,    0,  819,  762,  776,    0,  784,  784,  784,  788,
-      792,  760,  789,  806,  767,  791,  758,  762,  788,  765,
-      747,  752,  744,  748,  781,    0,  750,    0,  734,  771,
-      756,  742,  735,    0,  763,  733,    0,  747,  761,  769,
-      759,  747,  766,  770,  727,  743,  754,  759,  761,  747,
-      761,  723,  719,  730,  723,  745,  731,  736,  740,  763,
-
-        0,    0,  739,  745,  744,  739,   63,    0,  144,  182,
-      167,  211,    0,    0,  227,  274,  250,    0,  271,  298,
-      329,  292,    0,  320,  364,  333,  338,  355,    0,    0,
-      353,  365,  372,  394,  385,  398,    0,  422,  380,  433,
-      413,  421,  447,  412,  416,    0,  429,    0,    0,  456,
-        0,  497,  485,  473,  474,    0,  479,  467,  506,    0,
-      477,  491,  493,  470,  460,    0,  493,    0,  485,  484,
-      460,    0,  497,  489,  503,  491,  493,  510,  507,  508,
-      494,  495,  500,  505,  515,  502,  508,    0,  477,    0,
-        0,  528,    0,  497,  515,  524,  508,  534,  513,  525,
-
-      524,    0,  492,  518,  513,  517,  504,  522,    0,  533,
-      560,  535,  548,  548,  540,  537,  538,  546,  550,  543,
-      558,  539,  521,  576,  566,  553,    0,  565,  579,  560,
-      566,  565,    0,  566,  559,  556,    0,  559, 1273,    0,
-        0,  563,  575,  636,  576,  561,  577,  575,    0,  569,
-      586,  570,  554,  596,  576,  573,  574, 1273,  585,  590,
-      582,  578,  592,  594,    0, 1273,  574,    0,    0,  587,
-      597,  602,  590,  584,  603,  587,  579,  621,  590,  602,
-        0,  612,    0,  618,  619,  628,    0,  612,  612,  611,
-      635,  620,  635,  636,  625,    0,  650,  630,  630,  620,
-
-      628,  633,  646,  642,  625,  630,  648,    0,  628,    0,
-      649,  664,  653,  644,  657,  651,  648,  658,  663,  671,
-      657,  641,  650,  668, 1273,    0,    0,  653,  656,  646,
-        0,  657,  670,  656,  654,  672,  675,  674,  666,  664,
-      677,    0,  675,  675,  678,  681,  671,  664,  686,  666,
-      667,  675,  682,    0,    0,  678,  681,  681,  688,  692,
-      696,  694,  686,  699,  691,  680,  693,  707,  704,  694,
-      696,  701,  694,  698,  697,  699,  698,  704,    0,  714,
-      715,  716,  704,  708,    0,  710,  707,    0,  707,  708,
-      723,  711,  729,  717,    0,  713,  714,  725,  734,  721,
-
-      718,  724,  730,    0,  725,  727,    0, 1273,  762,  765,
-      768,  771,  774
-    } ;
-
-static yyconst short int yy_def[1014] =
-    {   0,
-     1008,    1, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-
-     1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1008, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1008, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1008, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1008,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1008, 1008, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1008, 1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1010, 1008,
-     1011, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1008, 1009, 1009, 1009, 1009, 1008, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1012,
-     1009, 1009, 1009, 1013, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1008, 1009, 1009, 1009, 1008, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1008, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1008, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1009, 1009, 1009, 1009, 1009, 1009,    0, 1008, 1008,
-     1008, 1008, 1008
-    } ;
-
-static yyconst short int yy_nxt[1350] =
-    {   0,
-        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
-       14,   15,   16,   17,   17,   17,   17,   17,   18,   19,
-       20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
-       30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
-       40,   41,   42,   43,   44,   32,   32,    4,   32,   32,
-       32,   32,   32,   45,   46,   32,   32,   32,   32,   47,
-       32,   48,   49,   32,   32,   32,   50,   32,   32,   51,
-       32,   32,   32,   32,   52,   53,   54,   54,   56,   54,
-       54,   58,   54,   57,   57,   57,   57,   57,   59,   60,
-      757,   62,   54,   55,   55,   54,   55,   55,   54,   55,
-
-       54,   61,   63,   70,   54,   54,   54,   71,   81,   55,
-       77,  427,   55,  428,   54,   55,   72,   55,  218,  219,
-       54,   55,   55,   55,   64,   83,   65,   65,   65,   65,
-       65,   55,   78,  487,  488,   81,   54,   55,   54,  196,
-       79,   66,   73,   74,   54,   75,   75,   75,   75,   75,
-       81,   82,   83,   55,   67,   68,   69,   54,   81,   76,
-       81,   55,  122,  103,  191,   81,  209,   83,  189,  758,
-       84,  104,   54,   89,   55,   83,   85,   83,  138,   81,
-      261,   90,   83,   81,  210,   76,   81,  262,  123,   55,
-       86,   87,   88,  105,  356,   91,   83,  106,  759,  274,
-
-       83,   92,   93,   83,   81,  107,   81,  109,  108,   81,
-       94,  179,  115,   95,   81,  110,   96,  111,  275,  128,
-      116,   83,  221,   83,  357,   97,   83,  281,   98,   81,
-      222,   83,   99,  124,  760,  100,  101,   81,  117,   81,
-      112,  102,  113,  282,  125,  129,   83,   81,  118,  119,
-      172,  120,  114,  134,   83,   81,   83,  121,  126,  761,
-      241,  139,   81,  130,   83,  127,  242,  131,  135,  276,
-      243,  132,   83,  180,  299,  762,  133,   81,   81,   83,
-       81,   54,  277,  136,  278,  606,  141,  140,  300,  279,
-      607,  142,  137,   81,   83,   83,   81,   83,   55,  182,
-
-      763,  143,  149,   81,  181,  173,  150,  764,  144,  145,
-       83,  146,  174,   83,  147,  151,  175,  148,  176,  177,
-       83,  152,   81,  287,  183,   81,  296,  153,  765,  288,
-      188,  154,   81,  184,  297,  155,  185,  156,  157,   83,
-      178,  164,   83,  323,  165,  166,  167,  168,  169,   83,
-       81,  766,  359,  408,  158,  360,  170,  767,  324,  325,
-      159,  160,  186,  768,  161,  162,  409,   83,  769,  163,
-      566,  567,  171,   57,   57,   57,   57,   57,  187,   65,
-       65,   65,   65,   65,  198,  198,  198,  198,  198,  770,
-      771,  772,  773,  193,  570,  774,  775,   74,  199,   75,
-
-       75,   75,   75,   75,  200,  200,  561,  571,  201,  201,
-      201,  201,  201,   76,  776,  562,  779,  226,  777,  193,
-      227,  228,  778,  780,  199,  313,  313,  229,  783,  314,
-      314,  314,  314,  314,  198,  198,  198,  198,  198,   76,
-      201,  201,  201,  201,  201,  316,  316,  781,  315,  317,
-      317,  317,  317,  317,  201,  201,  201,  201,  201,  422,
-      784,  785,  782,  786,  423,  314,  314,  314,  314,  314,
-      787,  424,  788,  789,  315,  314,  314,  314,  314,  314,
-      435,  435,  790,  791,  436,  436,  436,  436,  436,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  436,
-
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  572,
-      792,  793,  794,  795,  796,  797,  798,  799,  800,  573,
-      801,  802,  803,  574,  804,  805,  806,  807,  808,  809,
-      810,  811,  812,  813,  814,  815,  816,  817,  818,  819,
-      820,  821,  822,  823,  824,  825,  826,  827,  828,  829,
-      830,  831,  832,  833,  834,  835,  836,  837,  838,  840,
-      839,  839,  842,  839,  839,  839,  839,  839,  839,  839,
-      839,  839,  839,  843,  844,  845,  846,  847,  839,  839,
-      839,  839,  839,  848,  849,  850,  851,  852,  853,  854,
-      855,  856,  857,  858,  859,  860,  861,  862,  863,  864,
-
-      865,  867,  868,  870,  871,  872,  873,  839,  874,  875,
-      876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
-      886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  899,  839,  839,  866,  866,  900,  866,
-      866,  866,  866,  866,  866,  866,  866,  866,  866,  901,
-      902,  903,  904,  905,  866,  866,  866,  866,  866,  906,
-      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
-      917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
-      927,  928,  929,  866,  930,  931,  932,  933,  934,  935,
-      936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
-
-      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
-      866,  866,  956,  957,  958,  959,  960,  961,  962,  963,
-      964,  965,  966,  967,  968,  969,  970,  971,  972,  973,
-      974,  975,  976,  977,  978,  979,  980,  981,  982,  983,
-      984,  985,  986,  987,  988,  989,  990,  991,  992,  993,
-      994,  995,  996,  997,  998,  999, 1000, 1001, 1002, 1003,
-     1004, 1005, 1006, 1007,   80,  839,  756,  839,  841,  755,
-      841,  866,  754,  866,  869,  753,  869,  752,  751,  750,
-      749,  748,  747,  746,  745,  744,  743,  742,  741,  740,
-      739,  738,  737,  736,  735,  734,  733,  732,  731,  730,
-
-      729,  728,  727,  726,  725,  724,  723,  722,  721,  720,
-      719,  718,  717,  716,  715,  714,  713,  712,  711,  710,
-      709,  708,  707,  706,  705,  704,  703,  702,  701,  700,
-      699,  698,  697,  696,  695,  694,  693,  692,  691,  690,
-      689,  688,  687,  686,  685,  684,  683,  682,  681,  680,
-      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
-      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
-      659,  658,  657,  656,  655,  654,  653,  652,  651,  650,
-      649,  648,  647,  646,  645,  644,  643,  642,  641,  640,
-      639,  638,  637,  636,  635,  634,  633,  632,  631,  630,
-
-      629,  628,  627,  626,  625,  624,  623,  622,  621,  620,
-      619,  618,  617,  616,  615,  614,  613,  612,  611,  610,
-      609,  608,  605,  604,  603,  602,  601,  600,  599,  598,
-      597,  596,  595,  594,  593,  592,  591,  590,  589,  588,
-      587,  586,  585,  584,  583,  582,  581,  580,  579,  578,
-      577,  576,  575,  569,  568,  565,  564,  563,  560,  559,
-      558,  557,  556,  555,  554,  553,  552,  551,  550,  549,
-      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
-      538,  537,  536,  535,  534,  533,  532,  531,  530,  529,
-      528,  527,  526,  525,  524,  523,  522,  521,  520,  519,
-
-      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
-      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
-      498,  497,  496,  495,  494,  493,  492,  491,  490,  489,
-      486,  485,  484,  483,  482,  481,  480,  479,  478,  477,
-      476,  475,  474,  473,  472,  471,  470,  469,  468,  467,
-      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
-      456,  455,  454,  453,  452,  451,  450,  449,  448,  447,
-      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
-      434,  433,  432,  431,  430,  429,  426,  425,  421,  420,
-      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
-
-      407,  406,  405,  404,  403,  402,  401,  400,  399,  398,
-      397,  396,  395,  394,  393,  392,  391,  390,  389,  388,
-      387,  386,  385,  384,  383,  382,  381,  380,  379,  378,
-      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
-      367,  366,  365,  364,  363,  362,  361,  358,  355,  354,
-      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
-      343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
-      333,  332,  331,  330,  329,  328,  327,  326,  322,  321,
-      320,  319,  318,  312,  311,  310,  309,  308,  307,  306,
-      305,  304,  303,  302,  301,  298,  295,  294,  293,  292,
-
-      291,  290,  289,  286,  285,  284,  283,  280,  273,  272,
-      271,  270,  269,  268,  267,  266,  265,  264,  263,  260,
-      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
-      249,  248,  247,  246,  245,  244,  240,  239,  238,  237,
-      236,  235,  234,  233,  232,  231,  230,  225,  224,  223,
-      220,  217,  216,  215,  214,  213,  212,  211,  208,  207,
-      206,  205,  204,  203,  202,  197,  195,  194,  192,  191,
-      190, 1008,    3, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008
-    } ;
-
-static yyconst short int yy_chk[1350] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    4,    5,    7,    8,
-       11,   10,    7,    9,    9,    9,    9,    9,   12,   13,
-      707,   14,   12,    4,    5,    9,    8,   11,   18,    7,
-
-       10,   13,   14,   16,   19,   13,   14,   16,   32,   12,
-       20,  306,    9,  306,   20,   18,   16,   10,   96,   96,
-       16,   19,   13,   14,   15,   32,   15,   15,   15,   15,
-       15,   20,   21,  382,  382,   36,   21,   16,   15,   68,
-       22,   15,   16,   17,   22,   17,   17,   17,   17,   17,
-       23,   23,   36,   21,   15,   15,   15,   17,   24,   17,
-       29,   22,   29,   26,   68,   26,   88,   23,   53,  709,
-       23,   26,   53,   24,   17,   24,   23,   29,   36,   44,
-      133,   24,   26,   33,   88,   17,   30,  133,   30,   53,
-       23,   23,   23,   26,  238,   24,   44,   26,  710,  146,
-
-       33,   24,   25,   30,   25,   26,   27,   27,   26,   42,
-       25,   44,   28,   25,   28,   27,   25,   27,  146,   33,
-       28,   25,   98,   27,  238,   25,   42,  150,   25,   31,
-       98,   28,   25,   30,  711,   25,   25,   45,   28,   34,
-       27,   25,   27,  150,   31,   34,   31,   37,   28,   28,
-       42,   28,   27,   35,   45,   35,   34,   28,   31,  712,
-      114,   37,   47,   34,   37,   31,  114,   34,   35,  147,
-      114,   34,   35,   45,  173,  715,   34,   38,   39,   47,
-       46,   52,  147,   35,  148,  517,   38,   37,  173,  148,
-      517,   38,   35,   49,   38,   39,   48,   46,   52,   47,
-
-      716,   38,   39,   43,   46,   43,   39,  717,   38,   38,
-       49,   38,   43,   48,   38,   39,   43,   38,   43,   43,
-       43,   39,   40,  159,   48,   50,  171,   40,  719,  159,
-       52,   40,   41,   48,  171,   40,   49,   40,   40,   40,
-       43,   41,   50,  207,   41,   41,   41,   41,   41,   41,
-       51,  720,  240,  290,   40,  240,   41,  721,  207,  207,
-       40,   40,   50,  722,   40,   40,  290,   51,  724,   40,
-      469,  469,   41,   57,   57,   57,   57,   57,   51,   65,
-       65,   65,   65,   65,   74,   74,   74,   74,   74,  725,
-      726,  727,  728,   65,  473,  731,  732,   75,   74,   75,
-
-       75,   75,   75,   75,   76,   76,  465,  473,   76,   76,
-       76,   76,   76,   75,  733,  465,  735,  102,  734,   65,
-      102,  102,  734,  736,   74,  193,  193,  102,  739,  193,
-      193,  193,  193,  193,  198,  198,  198,  198,  198,   75,
-      200,  200,  200,  200,  200,  199,  199,  738,  198,  199,
-      199,  199,  199,  199,  201,  201,  201,  201,  201,  303,
-      740,  741,  738,  742,  303,  313,  313,  313,  313,  313,
-      743,  303,  744,  745,  198,  314,  314,  314,  314,  314,
-      315,  315,  747,  750,  315,  315,  315,  315,  315,  316,
-      316,  316,  316,  316,  317,  317,  317,  317,  317,  435,
-
-      435,  435,  435,  435,  436,  436,  436,  436,  436,  474,
-      752,  753,  754,  755,  757,  758,  759,  761,  762,  474,
-      763,  764,  765,  474,  767,  769,  770,  771,  773,  774,
-      775,  776,  777,  778,  779,  780,  781,  782,  783,  784,
-      785,  786,  787,  789,  792,  794,  795,  796,  797,  798,
-      799,  800,  801,  803,  804,  805,  806,  807,  808,  810,
-      811,  811,  812,  811,  811,  811,  811,  811,  811,  811,
-      811,  811,  811,  813,  814,  815,  816,  817,  811,  811,
-      811,  811,  811,  818,  819,  820,  821,  822,  823,  824,
-      825,  826,  828,  829,  830,  831,  832,  834,  835,  836,
-
-      838,  842,  843,  845,  846,  847,  848,  811,  850,  851,
-      852,  853,  854,  855,  856,  857,  859,  860,  861,  862,
-      863,  864,  867,  870,  871,  872,  873,  874,  875,  876,
-      877,  878,  879,  880,  811,  811,  844,  844,  882,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  884,
-      885,  886,  888,  889,  844,  844,  844,  844,  844,  890,
-      891,  892,  893,  894,  895,  897,  898,  899,  900,  901,
-      902,  903,  904,  905,  906,  907,  909,  911,  912,  913,
-      914,  915,  916,  844,  917,  918,  919,  920,  921,  922,
-      923,  924,  928,  929,  930,  932,  933,  934,  935,  936,
-
-      937,  938,  939,  940,  941,  943,  944,  945,  946,  947,
-      844,  844,  948,  949,  950,  951,  952,  953,  956,  957,
-      958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
-      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
-      978,  980,  981,  982,  983,  984,  986,  987,  989,  990,
-      991,  992,  993,  994,  996,  997,  998,  999, 1000, 1001,
-     1002, 1003, 1005, 1006, 1009, 1010,  706, 1010, 1011,  705,
-     1011, 1012,  704, 1012, 1013,  703, 1013,  700,  699,  698,
-      697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
-      687,  686,  685,  684,  683,  682,  681,  680,  679,  678,
-
-      676,  675,  673,  672,  671,  670,  669,  667,  665,  664,
-      663,  662,  661,  660,  659,  658,  657,  656,  655,  654,
-      653,  652,  651,  650,  649,  648,  647,  645,  644,  643,
-      641,  640,  639,  638,  636,  635,  634,  633,  632,  631,
-      630,  629,  628,  627,  625,  623,  622,  621,  620,  619,
-      618,  614,  613,  612,  610,  608,  607,  606,  605,  604,
-      603,  602,  601,  599,  597,  594,  593,  590,  589,  588,
-      587,  584,  583,  582,  579,  578,  576,  575,  574,  573,
-      572,  571,  570,  569,  567,  566,  564,  563,  562,  561,
-      560,  557,  556,  555,  554,  552,  551,  550,  549,  548,
-
-      547,  545,  543,  542,  541,  540,  537,  536,  535,  534,
-      533,  532,  531,  528,  527,  525,  524,  523,  522,  521,
-      520,  518,  516,  515,  514,  513,  512,  511,  510,  509,
-      508,  506,  505,  504,  503,  502,  499,  497,  496,  495,
-      492,  490,  489,  488,  487,  486,  484,  483,  481,  480,
-      478,  477,  476,  472,  470,  468,  467,  466,  464,  463,
-      462,  461,  460,  459,  458,  457,  456,  455,  454,  453,
-      452,  451,  450,  449,  448,  447,  446,  445,  443,  442,
-      441,  440,  439,  438,  437,  434,  433,  432,  431,  430,
-      429,  428,  425,  424,  423,  422,  420,  419,  418,  417,
-
-      416,  415,  413,  412,  411,  410,  409,  408,  406,  405,
-      403,  402,  401,  400,  399,  397,  396,  395,  394,  393,
-      392,  391,  390,  389,  388,  387,  386,  385,  384,  383,
-      381,  379,  377,  376,  374,  373,  372,  371,  370,  369,
-      368,  366,  364,  363,  362,  360,  359,  358,  357,  356,
-      355,  354,  353,  351,  350,  349,  346,  345,  344,  343,
-      342,  340,  338,  337,  336,  335,  334,  333,  331,  330,
-      329,  328,  327,  325,  324,  323,  321,  320,  319,  318,
-      312,  311,  310,  309,  308,  307,  305,  304,  302,  301,
-      300,  299,  298,  297,  296,  295,  294,  293,  292,  291,
-
-      289,  288,  287,  286,  285,  284,  283,  282,  281,  280,
-      279,  278,  277,  276,  275,  274,  273,  272,  271,  270,
-      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
-      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
-      248,  247,  246,  245,  244,  243,  241,  239,  237,  236,
-      235,  234,  233,  232,  231,  230,  229,  228,  227,  226,
-      225,  224,  223,  222,  221,  220,  219,  218,  217,  216,
-      215,  214,  213,  212,  211,  210,  209,  208,  206,  205,
-      204,  203,  202,  191,  190,  187,  186,  185,  184,  183,
-      182,  181,  180,  179,  178,  172,  170,  167,  165,  163,
-
-      162,  161,  160,  158,  153,  152,  151,  149,  144,  143,
-      142,  141,  140,  139,  138,  137,  136,  135,  134,  132,
-      131,  130,  129,  128,  127,  125,  124,  123,  122,  121,
-      120,  119,  118,  117,  116,  115,  113,  112,  111,  110,
-      109,  108,  107,  106,  105,  104,  103,  101,  100,   99,
-       97,   95,   94,   93,   92,   91,   90,   89,   87,   86,
-       85,   84,   83,   82,   81,   69,   67,   66,   64,   55,
-       54,    3, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "Gmsh.l"
-#define INITIAL 0
-#line 2 "Gmsh.l"
-
-// $Id: Gmsh.yy.cpp,v 1.106 2001-08-12 14:24:51 geuzaine Exp $
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Geo.h"
-#include "CAD.h"
-#include "Gmsh.tab.cpp.h"
-
-char   TmpString[1024];
-int    yywhere = INFILE;
-int    yylineno = 1;
-
-void   parsestring(char endchar);
-char  *strsave(char *ptr);
-void   skipcomments(void);
-void   skipline(void);
-
-#define YY_ALWAYS_INTERACTIVE 1
-
-#define YY_INPUT(buf,result,max_size)					\
-   if ( yy_current_buffer->yy_is_interactive )				\
-     {									\
-       int c = '*', n;							\
-       for ( n = 0; n < max_size &&					\
-	       (c = getc( yyin )) != EOF && c != '\n'; ++n )		\
-	 buf[n] = (char) c;						\
-       if ( c == '\n' ){						\
-	 buf[n++] = (char) c;						\
-	 yylineno++;							\
-       }								\
-       if ( c == EOF && ferror( yyin ) )				\
-	 YY_FATAL_ERROR( "input in flex scanner failed" );		\
-       result = n;							\
-     }									\
-   else if ( ((result = fread( buf, 1, max_size, yyin )) == 0)		\
-	     && ferror( yyin ) )					\
-     YY_FATAL_ERROR( "input in flex scanner failed" );
-
-#line 1042 "Gmsh.yy.cpp"
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( yy_current_buffer->yy_is_interactive ) \
-		{ \
-		int c = '*', n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( yyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-		  && ferror( yyin ) ) \
-		YY_FATAL_ERROR( "input in flex scanner failed" );
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-YY_DECL
-	{
-	register yy_state_type yy_current_state;
-	register char *yy_cp = NULL, *yy_bp = NULL;
-	register int yy_act;
-
-#line 63 "Gmsh.l"
-
-
-#line 1196 "Gmsh.yy.cpp"
-
-	if ( yy_init )
-		{
-		yy_init = 0;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! yy_start )
-			yy_start = 1;	/* first start state */
-
-		if ( ! yyin )
-			yyin = stdin;
-
-		if ( ! yyout )
-			yyout = stdout;
-
-		if ( ! yy_current_buffer )
-			yy_current_buffer =
-				yy_create_buffer( yyin, YY_BUF_SIZE );
-
-		yy_load_buffer_state();
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = yy_c_buf_p;
-
-		/* Support of yytext. */
-		*yy_cp = yy_hold_char;
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = yy_start;
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			if ( yy_accept[yy_current_state] )
-				{
-				yy_last_accepting_state = yy_current_state;
-				yy_last_accepting_cpos = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 1009 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 1273 );
-
-yy_find_action:
-		yy_act = yy_accept[yy_current_state];
-		if ( yy_act == 0 )
-			{ /* have to back up */
-			yy_cp = yy_last_accepting_cpos;
-			yy_current_state = yy_last_accepting_state;
-			yy_act = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-
-do_action:	/* This label is used only to access EOF actions. */
-
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = yy_hold_char;
-			yy_cp = yy_last_accepting_cpos;
-			yy_current_state = yy_last_accepting_state;
-			goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 65 "Gmsh.l"
-/* none */ ;
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 66 "Gmsh.l"
-return tEND;
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 67 "Gmsh.l"
-skipcomments();
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 68 "Gmsh.l"
-skipline();
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 69 "Gmsh.l"
-{parsestring('\"'); return tBIGSTR;}
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 70 "Gmsh.l"
-{parsestring('\''); return tBIGSTR;}
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 71 "Gmsh.l"
-{yylval.d = NEWREG(); return tDOUBLE;}
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 72 "Gmsh.l"
-{yylval.d = NEWPOINT(); return tDOUBLE;}
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 73 "Gmsh.l"
-return tAFFECT;
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 74 "Gmsh.l"
-return tAFFECTPLUS ;
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 75 "Gmsh.l"
-return tAFFECTMINUS ;
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 76 "Gmsh.l"
-return tAFFECTTIMES ;
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 77 "Gmsh.l"
-return tAFFECTDIVIDE ;
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 78 "Gmsh.l"
-return tDOTS;
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 79 "Gmsh.l"
-return tDOTS;
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 80 "Gmsh.l"
-return tCROSSPRODUCT ;
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 81 "Gmsh.l"
-return tOR ;
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 82 "Gmsh.l"
-return tAND ;
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 83 "Gmsh.l"
-return tPLUSPLUS ;
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 84 "Gmsh.l"
-return tMINUSMINUS ;
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 85 "Gmsh.l"
-return tEQUAL ;
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 86 "Gmsh.l"
-return tNOTEQUAL ;
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 87 "Gmsh.l"
-return tAPPROXEQUAL ;
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 88 "Gmsh.l"
-return tLESSOREQUAL ;
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 89 "Gmsh.l"
-return tGREATEROREQUAL ;
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 91 "Gmsh.l"
-return tAcos ;
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 92 "Gmsh.l"
-return tAcos ;
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 93 "Gmsh.l"
-return tAsin;
-	YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 94 "Gmsh.l"
-return tAsin;
-	YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 95 "Gmsh.l"
-return tAtan ;
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 96 "Gmsh.l"
-return tAtan ;
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 97 "Gmsh.l"
-return tAtan2 ;
-	YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 98 "Gmsh.l"
-return tAtan2 ;
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 99 "Gmsh.l"
-return tAttractor;
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 101 "Gmsh.l"
-return tBump;
-	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 102 "Gmsh.l"
-return tBSpline;
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 103 "Gmsh.l"
-return tBounds;
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 105 "Gmsh.l"
-return tCeil ;
-	YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 106 "Gmsh.l"
-return tCosh ;
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 107 "Gmsh.l"
-return tCos ;
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 108 "Gmsh.l"
-return tCharacteristic;
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 109 "Gmsh.l"
-return tCircle;
-	YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 110 "Gmsh.l"
-return tCoherence;
-	YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 111 "Gmsh.l"
-return tComplex;
-	YY_BREAK
-case 45:
-YY_RULE_SETUP
-#line 112 "Gmsh.l"
-return tColor;
-	YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 113 "Gmsh.l"
-return tColorTable;
-	YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 114 "Gmsh.l"
-return tSpline;
-	YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 115 "Gmsh.l"
-return tCall;
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 117 "Gmsh.l"
-return tDelete;
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 118 "Gmsh.l"
-return tDilate;
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 119 "Gmsh.l"
-return tDuplicata;
-	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 120 "Gmsh.l"
-return tDraw;
-	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 122 "Gmsh.l"
-return tExp ;
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 123 "Gmsh.l"
-return tEllipsis;
-	YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 124 "Gmsh.l"
-return tExtrude;
-	YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 125 "Gmsh.l"
-return tElliptic;
-	YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 126 "Gmsh.l"
-return tELLIPSE;
-	YY_BREAK
-case 58:
-YY_RULE_SETUP
-#line 127 "Gmsh.l"
-return tEndFor;
-	YY_BREAK
-case 59:
-YY_RULE_SETUP
-#line 128 "Gmsh.l"
-return tEndIf;
-	YY_BREAK
-case 60:
-YY_RULE_SETUP
-#line 129 "Gmsh.l"
-return tExit;
-	YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 131 "Gmsh.l"
-return tFabs ;
-	YY_BREAK
-case 62:
-YY_RULE_SETUP
-#line 132 "Gmsh.l"
-return tFloor ;
-	YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 133 "Gmsh.l"
-return tFmod ;
-	YY_BREAK
-case 64:
-YY_RULE_SETUP
-#line 134 "Gmsh.l"
-return tFor;
-	YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 135 "Gmsh.l"
-return tFunction;
-	YY_BREAK
-case 66:
-YY_RULE_SETUP
-#line 137 "Gmsh.l"
-return tHypot ;
-	YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 139 "Gmsh.l"
-return tIn;
-	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 140 "Gmsh.l"
-return tIf;
-	YY_BREAK
-case 69:
-YY_RULE_SETUP
-#line 141 "Gmsh.l"
-return tIntersect;
-	YY_BREAK
-case 70:
-YY_RULE_SETUP
-#line 143 "Gmsh.l"
-return tKnots;
-	YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 145 "Gmsh.l"
-return tLength;
-	YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 146 "Gmsh.l"
-return tLine;
-	YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 147 "Gmsh.l"
-return tLoop;
-	YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 148 "Gmsh.l"
-return tLog ;
-	YY_BREAK
-case 75:
-YY_RULE_SETUP
-#line 149 "Gmsh.l"
-return tLog10 ;
-	YY_BREAK
-case 76:
-YY_RULE_SETUP
-#line 150 "Gmsh.l"
-return tLayers;
-	YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 152 "Gmsh.l"
-return tModulo ;
-	YY_BREAK
-case 78:
-YY_RULE_SETUP
-#line 153 "Gmsh.l"
-return tMesh;
-	YY_BREAK
-case 79:
-YY_RULE_SETUP
-#line 154 "Gmsh.l"
-return tMPI_Rank;
-	YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 155 "Gmsh.l"
-return tMPI_Size;
-	YY_BREAK
-case 81:
-YY_RULE_SETUP
-#line 157 "Gmsh.l"
-return tNurbs;
-	YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 159 "Gmsh.l"
-return tOrder;
-	YY_BREAK
-case 83:
-YY_RULE_SETUP
-#line 161 "Gmsh.l"
-return tPhysical;
-	YY_BREAK
-case 84:
-YY_RULE_SETUP
-#line 162 "Gmsh.l"
-return tPi;
-	YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 163 "Gmsh.l"
-return tPlane;
-	YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 164 "Gmsh.l"
-return tPoint;
-	YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 165 "Gmsh.l"
-return tProgression;
-	YY_BREAK
-case 88:
-YY_RULE_SETUP
-#line 166 "Gmsh.l"
-return tProgression;
-	YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 167 "Gmsh.l"
-return tParametric;
-	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 168 "Gmsh.l"
-return tPrintf;
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 169 "Gmsh.l"
-return tPlugin;
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 171 "Gmsh.l"
-return tRecombine;
-	YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 172 "Gmsh.l"
-return tRotate;
-	YY_BREAK
-case 94:
-YY_RULE_SETUP
-#line 173 "Gmsh.l"
-return tRuled;
-	YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 174 "Gmsh.l"
-return tRand;
-	YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 175 "Gmsh.l"
-return tReturn;
-	YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 177 "Gmsh.l"
-return tSqrt ;
-	YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 178 "Gmsh.l"
-return tSin ;
-	YY_BREAK
-case 99:
-YY_RULE_SETUP
-#line 179 "Gmsh.l"
-return tSinh ;
-	YY_BREAK
-case 100:
-YY_RULE_SETUP
-#line 180 "Gmsh.l"
-return tSpline;
-	YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 181 "Gmsh.l"
-return tSurface;
-	YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 182 "Gmsh.l"
-return tSymmetry;
-	YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 183 "Gmsh.l"
-return tSprintf ;
-	YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 184 "Gmsh.l"
-return tStrCat ;
-	YY_BREAK
-case 105:
-YY_RULE_SETUP
-#line 185 "Gmsh.l"
-return tStrPrefix ;
-	YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 187 "Gmsh.l"
-return tTransfinite;
-	YY_BREAK
-case 107:
-YY_RULE_SETUP
-#line 188 "Gmsh.l"
-return tTranslate;
-	YY_BREAK
-case 108:
-YY_RULE_SETUP
-#line 189 "Gmsh.l"
-return tTanh ;
-	YY_BREAK
-case 109:
-YY_RULE_SETUP
-#line 190 "Gmsh.l"
-return tTan;
-	YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 191 "Gmsh.l"
-return tTrimmed;
-	YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 193 "Gmsh.l"
-return tUsing;
-	YY_BREAK
-case 112:
-YY_RULE_SETUP
-#line 195 "Gmsh.l"
-return tVolume;
-	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 197 "Gmsh.l"
-return tWith;
-	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 199 "Gmsh.l"
-return tScalarTetrahedron;
-	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 200 "Gmsh.l"
-return tVectorTetrahedron;
-	YY_BREAK
-case 116:
-YY_RULE_SETUP
-#line 201 "Gmsh.l"
-return tTensorTetrahedron;
-	YY_BREAK
-case 117:
-YY_RULE_SETUP
-#line 202 "Gmsh.l"
-return tScalarTriangle;
-	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 203 "Gmsh.l"
-return tVectorTriangle;
-	YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 204 "Gmsh.l"
-return tTensorTriangle;
-	YY_BREAK
-case 120:
-YY_RULE_SETUP
-#line 205 "Gmsh.l"
-return tScalarLine;
-	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 206 "Gmsh.l"
-return tVectorLine;
-	YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 207 "Gmsh.l"
-return tTensorLine;
-	YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 208 "Gmsh.l"
-return tScalarPoint;
-	YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 209 "Gmsh.l"
-return tVectorPoint;
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 210 "Gmsh.l"
-return tTensorPoint;
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 213 "Gmsh.l"
-return tCARTESIAN_POINT;
-	YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 214 "Gmsh.l"
-return tB_SPLINE_SURFACE_WITH_KNOTS;
-	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 215 "Gmsh.l"
-return tB_SPLINE_CURVE_WITH_KNOTS;
-	YY_BREAK
-case 129:
-YY_RULE_SETUP
-#line 216 "Gmsh.l"
-return tUNSPECIFIED;
-	YY_BREAK
-case 130:
-YY_RULE_SETUP
-#line 217 "Gmsh.l"
-return tCONTINUOUS;
-	YY_BREAK
-case 131:
-YY_RULE_SETUP
-#line 218 "Gmsh.l"
-return tFALSE;
-	YY_BREAK
-case 132:
-YY_RULE_SETUP
-#line 219 "Gmsh.l"
-return tTRUE;
-	YY_BREAK
-case 133:
-YY_RULE_SETUP
-#line 220 "Gmsh.l"
-return tU;
-	YY_BREAK
-case 134:
-YY_RULE_SETUP
-#line 221 "Gmsh.l"
-return tV;
-	YY_BREAK
-case 135:
-YY_RULE_SETUP
-#line 222 "Gmsh.l"
-return tORIENTED_EDGE;
-	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 223 "Gmsh.l"
-return tEDGE_CURVE;
-	YY_BREAK
-case 137:
-YY_RULE_SETUP
-#line 224 "Gmsh.l"
-return tEDGE_LOOP;
-	YY_BREAK
-case 138:
-YY_RULE_SETUP
-#line 225 "Gmsh.l"
-return tVERTEX_POINT;
-	YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 226 "Gmsh.l"
-return tFACE_OUTER_BOUND;
-	YY_BREAK
-case 140:
-YY_RULE_SETUP
-#line 227 "Gmsh.l"
-return tFACE_BOUND;
-	YY_BREAK
-case 141:
-YY_RULE_SETUP
-#line 228 "Gmsh.l"
-return tADVANCED_FACE;
-	YY_BREAK
-case 142:
-YY_RULE_SETUP
-#line 229 "Gmsh.l"
-return tLine;
-	YY_BREAK
-case 143:
-YY_RULE_SETUP
-#line 230 "Gmsh.l"
-return tVECTOR;
-	YY_BREAK
-case 144:
-YY_RULE_SETUP
-#line 231 "Gmsh.l"
-return tDIRECTION;
-	YY_BREAK
-case 145:
-YY_RULE_SETUP
-#line 232 "Gmsh.l"
-return tAXIS2_PLACEMENT_3D;
-	YY_BREAK
-case 146:
-YY_RULE_SETUP
-#line 233 "Gmsh.l"
-return tPLANE;
-	YY_BREAK
-case 147:
-YY_RULE_SETUP
-#line 234 "Gmsh.l"
-return tHEADER;
-	YY_BREAK
-case 148:
-YY_RULE_SETUP
-#line 235 "Gmsh.l"
-return tDATA;
-	YY_BREAK
-case 149:
-YY_RULE_SETUP
-#line 236 "Gmsh.l"
-return tFILE_SCHEMA;
-	YY_BREAK
-case 150:
-YY_RULE_SETUP
-#line 237 "Gmsh.l"
-return tFILE_NAME;
-	YY_BREAK
-case 151:
-YY_RULE_SETUP
-#line 238 "Gmsh.l"
-return tFILE_DESCRIPTION;
-	YY_BREAK
-case 152:
-YY_RULE_SETUP
-#line 239 "Gmsh.l"
-return tISO;
-	YY_BREAK
-case 153:
-YY_RULE_SETUP
-#line 240 "Gmsh.l"
-return tENDISO;
-	YY_BREAK
-case 154:
-YY_RULE_SETUP
-#line 241 "Gmsh.l"
-return tENDSEC;
-	YY_BREAK
-case 155:
-YY_RULE_SETUP
-#line 242 "Gmsh.l"
-return tCLOSED_SHELL;
-	YY_BREAK
-case 156:
-YY_RULE_SETUP
-#line 243 "Gmsh.l"
-return  tADVANCED_BREP_SHAPE_REPRESENTATION;
-	YY_BREAK
-case 157:
-YY_RULE_SETUP
-#line 244 "Gmsh.l"
-return tMANIFOLD_SOLID_BREP;
-	YY_BREAK
-case 158:
-YY_RULE_SETUP
-#line 245 "Gmsh.l"
-return tCYLINDRICAL_SURFACE;
-	YY_BREAK
-case 159:
-YY_RULE_SETUP
-#line 246 "Gmsh.l"
-return tCONICAL_SURFACE;
-	YY_BREAK
-case 160:
-YY_RULE_SETUP
-#line 247 "Gmsh.l"
-return tTOROIDAL_SURFACE;
-	YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 248 "Gmsh.l"
-return tCIRCLE;
-	YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 249 "Gmsh.l"
-return tTRIMMED_CURVE;
-	YY_BREAK
-case 163:
-YY_RULE_SETUP
-#line 250 "Gmsh.l"
-return tGEOMETRIC_SET;
-	YY_BREAK
-case 164:
-YY_RULE_SETUP
-#line 251 "Gmsh.l"
-return tCOMPOSITE_CURVE_SEGMENT;
-	YY_BREAK
-case 165:
-YY_RULE_SETUP
-#line 252 "Gmsh.l"
-return tCOMPOSITE_CURVE;
-	YY_BREAK
-case 166:
-YY_RULE_SETUP
-#line 253 "Gmsh.l"
-return tPRODUCT_DEFINITION;
-	YY_BREAK
-case 167:
-YY_RULE_SETUP
-#line 254 "Gmsh.l"
-return tPRODUCT_DEFINITION_SHAPE;
-	YY_BREAK
-case 168:
-YY_RULE_SETUP
-#line 255 "Gmsh.l"
-return tSHAPE_DEFINITION_REPRESENTATION;
-	YY_BREAK
-case 169:
-YY_RULE_SETUP
-#line 257 "Gmsh.l"
-return tVertex;
-	YY_BREAK
-case 170:
-YY_RULE_SETUP
-#line 258 "Gmsh.l"
-return tFacet;
-	YY_BREAK
-case 171:
-YY_RULE_SETUP
-#line 259 "Gmsh.l"
-return tNormal;
-	YY_BREAK
-case 172:
-YY_RULE_SETUP
-#line 260 "Gmsh.l"
-return tOuter;
-	YY_BREAK
-case 173:
-YY_RULE_SETUP
-#line 261 "Gmsh.l"
-return tLoopSTL;
-	YY_BREAK
-case 174:
-YY_RULE_SETUP
-#line 262 "Gmsh.l"
-return tEndLoop;
-	YY_BREAK
-case 175:
-YY_RULE_SETUP
-#line 263 "Gmsh.l"
-return tEndFacet;
-	YY_BREAK
-case 176:
-YY_RULE_SETUP
-#line 264 "Gmsh.l"
-{skipline();return tEndSolid;}
-	YY_BREAK
-case 177:
-YY_RULE_SETUP
-#line 265 "Gmsh.l"
-{skipline();return tSolid;}
-	YY_BREAK
-case 178:
-YY_RULE_SETUP
-#line 267 "Gmsh.l"
-{yylval.d = (double)atoi((char*)(yytext+1)); return tDOUBLE;}
-	YY_BREAK
-case 179:
-#line 270 "Gmsh.l"
-case 180:
-#line 271 "Gmsh.l"
-case 181:
-#line 272 "Gmsh.l"
-case 182:
-YY_RULE_SETUP
-#line 272 "Gmsh.l"
-{yylval.d = atof((char *)yytext); return tDOUBLE;}
-	YY_BREAK
-case 183:
-YY_RULE_SETUP
-#line 274 "Gmsh.l"
-{yylval.c = strsave((char*)yytext); return tSTRING;}
-	YY_BREAK
-case 184:
-YY_RULE_SETUP
-#line 276 "Gmsh.l"
-return yytext[0];
-	YY_BREAK
-case 185:
-YY_RULE_SETUP
-#line 278 "Gmsh.l"
-ECHO;
-	YY_BREAK
-#line 2195 "Gmsh.yy.cpp"
-case YY_STATE_EOF(INITIAL):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = yy_hold_char;
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed yyin at a new source and called
-			 * yylex().  If so, then we have to assure
-			 * consistency between yy_current_buffer and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			yy_n_chars = yy_current_buffer->yy_n_chars;
-			yy_current_buffer->yy_input_file = yyin;
-			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state();
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++yy_c_buf_p;
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = yy_c_buf_p;
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer() )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				yy_did_buffer_switch_on_eof = 0;
-
-				if ( yywrap() )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * yytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! yy_did_buffer_switch_on_eof )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				yy_c_buf_p =
-					yytext_ptr + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state();
-
-				yy_cp = yy_c_buf_p;
-				yy_bp = yytext_ptr + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				yy_c_buf_p =
-				&yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-				yy_current_state = yy_get_previous_state();
-
-				yy_cp = yy_c_buf_p;
-				yy_bp = yytext_ptr + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-	} /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-	{
-	register char *dest = yy_current_buffer->yy_ch_buf;
-	register char *source = yytext_ptr;
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( yy_current_buffer->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
-	else
-		{
-		int num_to_read =
-			yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-			YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = yy_current_buffer;
-
-			int yy_c_buf_p_offset =
-				(int) (yy_c_buf_p - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					yy_flex_realloc( (void *) b->yy_ch_buf,
-							 b->yy_buf_size + 2 );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = yy_current_buffer->yy_buf_size -
-						number_to_move - 1;
-#endif
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-			yy_n_chars, num_to_read );
-
-		yy_current_buffer->yy_n_chars = yy_n_chars;
-		}
-
-	if ( yy_n_chars == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			yyrestart( yyin );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			yy_current_buffer->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	yy_n_chars += number_to_move;
-	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-	return ret_val;
-	}
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-	{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-
-	yy_current_state = yy_start;
-
-	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		if ( yy_accept[yy_current_state] )
-			{
-			yy_last_accepting_state = yy_current_state;
-			yy_last_accepting_cpos = yy_cp;
-			}
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 1009 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		}
-
-	return yy_current_state;
-	}
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-	{
-	register int yy_is_jam;
-	register char *yy_cp = yy_c_buf_p;
-
-	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		yy_last_accepting_state = yy_current_state;
-		yy_last_accepting_cpos = yy_cp;
-		}
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 1009 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 1008);
-
-	return yy_is_jam ? 0 : yy_current_state;
-	}
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-	{
-	register char *yy_cp = yy_c_buf_p;
-
-	/* undo effects of setting up yytext */
-	*yy_cp = yy_hold_char;
-
-	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = yy_n_chars + 2;
-		register char *dest = &yy_current_buffer->yy_ch_buf[
-					yy_current_buffer->yy_buf_size + 2];
-		register char *source =
-				&yy_current_buffer->yy_ch_buf[number_to_move];
-
-		while ( source > yy_current_buffer->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		yy_current_buffer->yy_n_chars =
-			yy_n_chars = yy_current_buffer->yy_buf_size;
-
-		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-
-	yytext_ptr = yy_bp;
-	yy_hold_char = *yy_cp;
-	yy_c_buf_p = yy_cp;
-	}
-#endif	/* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-	{
-	int c;
-
-	*yy_c_buf_p = yy_hold_char;
-
-	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-			/* This was really a NUL. */
-			*yy_c_buf_p = '\0';
-
-		else
-			{ /* need more input */
-			int offset = yy_c_buf_p - yytext_ptr;
-			++yy_c_buf_p;
-
-			switch ( yy_get_next_buffer() )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					yyrestart( yyin );
-
-					/* fall through */
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( yywrap() )
-						return EOF;
-
-					if ( ! yy_did_buffer_switch_on_eof )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					yy_c_buf_p = yytext_ptr + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
-	*yy_c_buf_p = '\0';	/* preserve yytext */
-	yy_hold_char = *++yy_c_buf_p;
-
-
-	return c;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-	{
-	if ( ! yy_current_buffer )
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-	yy_init_buffer( yy_current_buffer, input_file );
-	yy_load_buffer_state();
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-	{
-	if ( yy_current_buffer == new_buffer )
-		return;
-
-	if ( yy_current_buffer )
-		{
-		/* Flush out information for old buffer. */
-		*yy_c_buf_p = yy_hold_char;
-		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-		yy_current_buffer->yy_n_chars = yy_n_chars;
-		}
-
-	yy_current_buffer = new_buffer;
-	yy_load_buffer_state();
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (yywrap()) processing, but the only time this flag
-	 * is looked at is after yywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	yy_did_buffer_switch_on_eof = 1;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-	{
-	yy_n_chars = yy_current_buffer->yy_n_chars;
-	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-	yyin = yy_current_buffer->yy_input_file;
-	yy_hold_char = *yy_c_buf_p;
-	}
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-	{
-	YY_BUFFER_STATE b;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	yy_init_buffer( b, file );
-
-	return b;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-	{
-	if ( ! b )
-		return;
-
-	if ( b == yy_current_buffer )
-		yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		yy_flex_free( (void *) b->yy_ch_buf );
-
-	yy_flex_free( (void *) b );
-	}
-
-
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-	{
-	yy_flush_buffer( b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-	b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-	b->yy_is_interactive = 0;
-#else
-	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-	{
-	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == yy_current_buffer )
-		yy_load_buffer_state();
-	}
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-	{
-	YY_BUFFER_STATE b;
-
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	yy_switch_to_buffer( b );
-
-	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
-	{
-	int len;
-	for ( len = 0; yy_str[len]; ++len )
-		;
-
-	return yy_scan_bytes( yy_str, len );
-	}
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-	{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = len + 2;
-	buf = (char *) yy_flex_alloc( n );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-	for ( i = 0; i < len; ++i )
-		buf[i] = bytes[i];
-
-	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = yy_scan_buffer( buf, n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-	{
-	if ( yy_start_stack_ptr >= yy_start_stack_depth )
-		{
-		yy_size_t new_size;
-
-		yy_start_stack_depth += YY_START_STACK_INCR;
-		new_size = yy_start_stack_depth * sizeof( int );
-
-		if ( ! yy_start_stack )
-			yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-		else
-			yy_start_stack = (int *) yy_flex_realloc(
-					(void *) yy_start_stack, new_size );
-
-		if ( ! yy_start_stack )
-			YY_FATAL_ERROR(
-			"out of memory expanding start-condition stack" );
-		}
-
-	yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-	BEGIN(new_state);
-	}
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-	{
-	if ( --yy_start_stack_ptr < 0 )
-		YY_FATAL_ERROR( "start-condition stack underflow" );
-
-	BEGIN(yy_start_stack[yy_start_stack_ptr]);
-	}
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-	{
-	return yy_start_stack[yy_start_stack_ptr - 1];
-	}
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-	{
-	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-	}
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-		yytext[yyleng] = yy_hold_char; \
-		yy_c_buf_p = yytext + n; \
-		yy_hold_char = *yy_c_buf_p; \
-		*yy_c_buf_p = '\0'; \
-		yyleng = n; \
-		} \
-	while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-	{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-	}
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-	{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-	}
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-	{
-	return (void *) malloc( size );
-	}
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-	{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-	}
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-	{
-	free( ptr );
-	}
-
-#if YY_MAIN
-int main()
-	{
-	yylex();
-	return 0;
-	}
-#endif
-#line 278 "Gmsh.l"
-
-
-#undef yywrap
-
-int yywrap() {return 1;}
-
-void skipcomments(void) {
-  int c;
-
-  while (1) {
-    while ((c=yyinput()) != '*'){
-      if(c == EOF){
-        Msg(GERROR, "End of file in commented region") ;
-        return;
-      }
-    }
-    if ((c = yyinput()) == '/')
-      return;
-    unput(c);
-  }
-}
-
-void parsestring(char endchar){
-  int c, i;
-
-  c = yyinput();
-  i = 0;
-  while (c != endchar) {
-    TmpString[i++] = c;
-    c = yyinput();
-  }
-  TmpString[i++] = '\0';
-  yylval.c = strsave(TmpString);
-}
-
-char *strsave(char *ptr){
-  return((char*)strcpy((char*)malloc(strlen(ptr)+1),ptr));
-}
-
-void skipline(void){
-   while (yyinput() != '\n') ;
-}
-
-void skip_until(char *skip, char *until){
-  int i, nb_skip;
-  int l, l_skip, l_until;
-  char chars[256];
-
-  nb_skip = 0 ;
-
-  if(skip)
-    l_skip = strlen(skip);
-  else
-    l_skip = 0 ;
-
-  l_until = strlen(until);
-
-  while(1){
-    while (1){
-      chars[0] = yyinput();
-      if(chars[0] == (char)EOF){
-        Msg(GERROR, "Unexpected end of file") ;
-	return;
-      }
-      if(chars[0] == until[0]) break;
-      if(skip && chars[0] == skip[0]) break;
-    }
-
-    l = MAX(l_skip,l_until) ;
-    for(i=1 ; i<l ; i++){
-      chars[i] = yyinput();
-      if(chars[i] == (char)EOF){
-	l = i;
-	break;
-      }
-    }
-
-    if(!strncmp(chars,until,l_until)){
-      if(!nb_skip){
-	return;
-      }
-      else{
-	nb_skip--;
-      }
-    }
-    else if(skip && !strncmp(chars,skip,l_skip)){
-      nb_skip++;
-    }
-    else{
-      for(i=1;i<l-1;i++){
-	unput(chars[l-i]);
-      }
-    }
-
-  }
-}
-
diff --git a/Parser/Makefile b/Parser/Makefile
deleted file mode 100644
index 1d7d37352a5441f522820d8189949de87540ec8d..0000000000000000000000000000000000000000
--- a/Parser/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-# $Id: Makefile,v 1.29 2001-08-11 23:32:24 geuzaine Exp $
-#
-# Makefile for "libParser.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RANLIB   = ranlib
-RM       = rm
-YACC     = bison
-LEX      = flex
-
-LIB      = ../lib/libParser.a
-INCLUDE  = -I../includes -I../Common -I../DataStr -I../Geo -I../Graphics\
-           -I../Mesh -I../Motif -I../Fltk -I../Plugin -I../Parallel
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = -D_XMOTIF
-
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = -I/usr/X11R6/LessTif/Motif1.2/include
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
-           $(GL_INCLUDE) $(GUI_INCLUDE)
-
-SRC =  	Gmsh.yy.cpp \
-	Gmsh.tab.cpp\
-        OpenFile.cpp\
-	FunctionManager.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ)
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-parser:
-	$(YACC) --output Gmsh.tab.cpp -d Gmsh.y 
-	$(LEX)  -oGmsh.yy.cpp Gmsh.l
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Gmsh.yy.o: Gmsh.yy.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Gmsh.tab.cpp.h
-Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h \
- ../Parallel/ParUtil.h ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h \
- ../Common/Context.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Geo/DataBase.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Mesh/Create.h ../Geo/StepGeomDatabase.h ../Common/Options.h \
- ../Common/Colors.h Parser.h OpenFile.h FunctionManager.h \
- ../Common/Timer.h ../Graphics/CreateFile.h ../Mesh/STL.h
-OpenFile.o: OpenFile.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h \
- ../Common/Context.h Parser.h OpenFile.h ../Common/GetOptions.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Common/Views.h ../Common/ColorTable.h ../Geo/MinMax.h \
- ../Geo/Visibility.h ../Common/GmshUI.h ../Graphics/Draw.h \
- ../Motif/Widgets.h
-FunctionManager.o: FunctionManager.cpp FunctionManager.h
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
deleted file mode 100644
index 416be12b59be1781f5bbc641215d5c9c9ff4901e..0000000000000000000000000000000000000000
--- a/Parser/OpenFile.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-// $Id: OpenFile.cpp,v 1.19 2001-08-11 23:28:34 geuzaine Exp $
-
-#include "Gmsh.h"
-#include "Numeric.h"
-#include "Context.h"
-#include "Parser.h"
-#include "OpenFile.h"
-#include "GetOptions.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Views.h"
-#include "MinMax.h"
-#include "Visibility.h"
-
-#ifndef _BLACKBOX
-#include "GmshUI.h"
-#include "Draw.h"
-#endif
-
-#if _XMOTIF
-#include "Widgets.h"
-extern Widgets_T WID;
-#elif _FLTK
-#include "GUI.h"
-extern GUI *WID;
-#endif
-
-extern Mesh      *THEM, M;
-extern Context_T  CTX;
-
-int ParseFile(char *f){
-  char String[256];
-  int status;
-
-  strncpy(yyname,f,255);
-  yyerrorstate=0;
-  yylineno=1;
-
-  if(!(yyin = fopen(yyname,"r")))
-    return 0;
-  
-  Msg(STATUS2, "Loading '%s'", yyname); 
-
-  fpos_t position;
-  fgetpos(yyin, &position);
-  fgets(String, sizeof(String), yyin) ; 
-  fsetpos(yyin, &position);
-
-  if(!strncmp(String, "$PTS", 4) || 
-     !strncmp(String, "$NO", 3) || 
-     !strncmp(String, "$ELM", 4)){
-    if(THEM->status < 0) mai3d(THEM, 0);
-    Read_Mesh(THEM, yyin, FORMAT_MSH);
-    status = THEM->status;
-  }
-  else if(!strncmp(String, "sms", 3))
-  {
-    if(THEM->status < 0) mai3d(THEM, 0);
-    Read_Mesh(THEM, yyin, FORMAT_SMS);
-    status = THEM->status;
-  }
-  else if(!strncmp(String, "$PostFormat", 11) ||
-          !strncmp(String, "$View", 5)){
-    Read_View(yyin, yyname);
-    status = 0;
-  }
-  else{
-    while(!feof(yyin)) yyparse();
-    status = 0;
-  }
-  fclose(yyin);
-
-  Msg(STATUS2, "Loaded '%s'", yyname); 
-  return status;
-}
-
-
-void ParseString(char *str){
-  FILE *f;
-  if(!str)return;
-  if((f = fopen(CTX.tmp_filename,"w"))){
-    fprintf(f,"%s\n", str);
-    fclose(f);
-    ParseFile(CTX.tmp_filename);
-  }
-}
-
-void MergeProblem(char *name){
-
-  ParseFile(name);  
-  if (yyerrorstate) return;
-
-#ifndef _BLACKBOX
-  if (!EntitesVisibles) {
-    RemplirEntitesVisibles(1);
-    SHOW_ALL_ENTITIES = 1;
-  }
-#endif
-}
-
-void OpenProblem(char *name){
-  char ext[6];
-  int status;
-
-  if(CTX.threads_lock){
-    Msg(INFO, "I'm busy! Ask me that later...");
-    return;
-  }
-  CTX.threads_lock = 1;
-
-  InitSymbols();
-  Init_Mesh(&M, 1);
-
-  ParseString(TheOptString);
-
-  strncpy(CTX.filename,name,255);
-  strncpy(CTX.base_filename,name,255);
-
-  strcpy(ext,name+(strlen(name)-4));
-  if(!strcmp(ext,".geo") || !strcmp(ext,".GEO") ||
-     !strcmp(ext,".msh") || !strcmp(ext,".MSH") ||
-     !strcmp(ext,".stl") || !strcmp(ext,".STL") ||
-     !strcmp(ext,".sms") || !strcmp(ext,".SMS") ||
-     !strcmp(ext,".pos") || !strcmp(ext,".POS")){
-    CTX.base_filename[strlen(name)-4] = '\0';
-  }
-  else{
-    strcat(CTX.filename,".geo");
-  }
-
-  strncpy(THEM->name, CTX.base_filename,255);
-
-  if(!CTX.batch){
-#if _XMOTIF
-    XtVaSetValues(WID.G.shell,
-                  XmNtitle, CTX.filename,
-                  XmNiconName, CTX.base_filename,
-                  NULL);
-#elif _FLTK
-    WID->set_title(CTX.filename);
-#endif
-  }
-
-  int nb = List_Nbr(Post_ViewList);
-
-  status = ParseFile(CTX.filename);  
-
-  ApplyLcFactor(THEM);
-
-  CTX.threads_lock = 0;
-
-  if(!status){
-    mai3d(THEM,0);  
-    Maillage_Dimension_0(&M);
-  }
-
-#ifndef _BLACKBOX
-  ZeroHighlight(&M); 
-#endif
-  
-  if(List_Nbr(Post_ViewList) > nb)
-    CalculateMinMax(NULL, ((Post_View*)List_Pointer
-			   (Post_ViewList,List_Nbr(Post_ViewList)-1))->BBox);
-  else if(!status) 
-    CalculateMinMax(THEM->Points,NULL);
-  else
-    CalculateMinMax(THEM->Vertices,NULL);
-
-#ifndef _BLACKBOX
-  if (!EntitesVisibles) {
-    RemplirEntitesVisibles(1);
-    SHOW_ALL_ENTITIES = 1;
-  }
-#endif
-
-}
-
diff --git a/Parser/OpenFile.h b/Parser/OpenFile.h
deleted file mode 100644
index 179f66e3bb5b3e4eea5ec6acbbb84541f68d2b5e..0000000000000000000000000000000000000000
--- a/Parser/OpenFile.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _OPENFILE_H_
-#define _OPENFILE_H_
-
-#define MAX_OPEN_FILES  256
-
-int  ParseFile(char *filename);
-void ParseString(char *str);
-void OpenProblem(char *filename);
-void MergeProblem(char *filename);
-
-#endif
diff --git a/Parser/Parser.h b/Parser/Parser.h
deleted file mode 100644
index 8e387f1561ff83f1cf3d965025c4e7ca7487137e..0000000000000000000000000000000000000000
--- a/Parser/Parser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _PARSER_H_
-#define _PARSER_H_
-
-typedef struct {
-  char *Name;
-  List_T *val;
-} Symbol;
-
-void InitSymbols (void);
-void DeleteSymbols(void);
-int  CompareSymbols (const void *a, const void *b);
-
-extern List_T *Symbol_L;
-
-int yyparse (void);
-int yylex ();
-
-extern FILE   *yyin;
-extern int     yylineno;
-extern char    yyname[256];
-extern char   *yytext;
-extern int     yyerrorstate;
-
-
-#endif
diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp
deleted file mode 100644
index 83d9bf971efe06d98f12b7491dc9052be10877aa..0000000000000000000000000000000000000000
--- a/Plugin/CutMap.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-// $Id: CutMap.cpp,v 1.22 2001-08-11 23:25:50 geuzaine Exp $
-
-#include "CutMap.h"
-#include "List.h"
-
-StringXNumber CutMapOptions_Number[] = {
-  { GMSH_FULLRC, "A" , NULL , 1. },
-  { GMSH_FULLRC, "iView" , NULL , -1. },
-  { GMSH_FULLRC, "iField" , NULL , 0. }
-};
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterCutMapPlugin ()
-  {
-    return new GMSH_CutMapPlugin ();
-  }
-}
-
-
-GMSH_CutMapPlugin::GMSH_CutMapPlugin()
-{
-}
-
-void GMSH_CutMapPlugin::getName(char *name) const
-{
-  strcpy(name,"Cut Map");
-}
-
-void GMSH_CutMapPlugin::getInfos(char *author, char *copyright, char *help_text) const
-{
-  strcpy(author, "J.-F. Remacle (remacle@scorec.rpi.edu)");
-  strcpy(copyright, "DGR (www.multiphysics.com)");
-  strcpy(help_text, 
-	 "Extracts the isovalue surface of value A from a\n"
-	 "3D scalar map and draw ith component of the field on the iso.\n"
-         "Script name: Plugin(CutMap).");
-}
-
-int GMSH_CutMapPlugin::getNbOptions() const
-{
-  return sizeof(CutMapOptions_Number)/sizeof(StringXNumber);
-}
-
-StringXNumber *GMSH_CutMapPlugin:: GetOption (int iopt)
-{
-  return &CutMapOptions_Number[iopt];
-}
-
-void GMSH_CutMapPlugin::CatchErrorMessage (char *errorMessage) const
-{
-  strcpy(errorMessage,"CutMap failed...");
-}
-
-double GMSH_CutMapPlugin :: levelset (double x, double y, double z, double val) const
-{
-  // we must look into the map for A - Map(x,y,z)
-  // this is the case when the map is the same as the view,
-  // the result is the extraction of isovalue A
-  return CutMapOptions_Number[0].def - val;
-}
-
-extern List_T *Post_ViewList;
-
-Post_View *GMSH_CutMapPlugin::execute (Post_View *v)
-{
-  Post_View *vv;
-  
-  int iView = (int)CutMapOptions_Number[1].def;
-  _ith_field_to_draw_on_the_iso = (int)CutMapOptions_Number[2].def;
-  _orientation = ORIENT_MAP;
-
-  if(v && iView < 0)
-    vv = v;
-  else{
-    if(!v && iView < 0) iView = 0;
-    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
-      Msg(WARNING,"View[%d] does not exist",iView);
-      return 0;
-    }
-  }
-
-  return GMSH_LevelsetPlugin::execute(vv);
-}
-
diff --git a/Plugin/CutMap.h b/Plugin/CutMap.h
deleted file mode 100644
index 75565549a11d22384eb8f8175b6ae553a0b44b66..0000000000000000000000000000000000000000
--- a/Plugin/CutMap.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _CUTMAP_H_
-#define _CUTMAP_H
-#include "LevelsetPlugin.h"
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterCutMapPlugin ();
-}
-
-class GMSH_CutMapPlugin : public GMSH_LevelsetPlugin
-{
-  virtual double levelset (double x, double y, double z, double val) const;
-public:
-  GMSH_CutMapPlugin();
-  virtual void getName  (char *name) const;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const;
-  virtual void CatchErrorMessage (char *errorMessage) const;
-  virtual int getNbOptions() const;
-  virtual StringXNumber* GetOption (int iopt);  
-  virtual Post_View *execute (Post_View *);
-};
-
-#endif
diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp
deleted file mode 100644
index 468231196ca777a5c132eb9380cb38b25903d367..0000000000000000000000000000000000000000
--- a/Plugin/CutPlane.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-// $Id: CutPlane.cpp,v 1.18 2001-08-11 23:25:50 geuzaine Exp $
-
-#include "CutPlane.h"
-#include "List.h"
-
-StringXNumber CutPlaneOptions_Number[] = {
-  { GMSH_FULLRC, "A" , NULL , 1. },
-  { GMSH_FULLRC, "B" , NULL , 0. },
-  { GMSH_FULLRC, "C" , NULL , 0. },
-  { GMSH_FULLRC, "D" , NULL , 0.01 },
-  { GMSH_FULLRC, "iView" , NULL , -1. }
-};
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterCutPlanePlugin ()
-  {
-    return new GMSH_CutPlanePlugin ();
-  }
-}
-
-
-GMSH_CutPlanePlugin::GMSH_CutPlanePlugin()
-{
-}
-
-void GMSH_CutPlanePlugin::getName(char *name) const
-{
-  strcpy(name,"Cut Plane");
-}
-
-void GMSH_CutPlanePlugin::getInfos(char *author, char *copyright, char *help_text) const
-{
-  strcpy(author,"J.-F. Remacle (remacle@scorec.rpi.edu)");
-  strcpy(copyright,"DGR (www.multiphysics.com)");
-  strcpy(help_text,
-	 "Cuts a 3D scalar view with the plane\n"
-	 "A*X + B*Y + C*Z + D = 0.\n"
-	 "Script name: Plugin(CutPlane).");
-}
-
-int GMSH_CutPlanePlugin::getNbOptions() const
-{
-  return sizeof(CutPlaneOptions_Number)/sizeof(StringXNumber);
-}
-
-StringXNumber* GMSH_CutPlanePlugin:: GetOption (int iopt)
-{
-  return  &CutPlaneOptions_Number[iopt];
-}
-
-void GMSH_CutPlanePlugin::CatchErrorMessage (char *errorMessage) const
-{
-  strcpy(errorMessage,"CutPlane failed...");
-}
-
-double GMSH_CutPlanePlugin :: levelset (double x, double y, double z, double val) const
-{
-  return CutPlaneOptions_Number[0].def * x +
-    CutPlaneOptions_Number[1].def * y +
-    CutPlaneOptions_Number[2].def * z +
-    CutPlaneOptions_Number[3].def ;
-}
-
-extern List_T *Post_ViewList;
-
-Post_View *GMSH_CutPlanePlugin::execute (Post_View *v)
-{
-  Post_View *vv;
-
-  int iView = (int)CutPlaneOptions_Number[4].def;
-  _orientation = ORIENT_PLANE;
-  _ref[0] = CutPlaneOptions_Number[0].def;
-  _ref[1] = CutPlaneOptions_Number[1].def;
-  _ref[2] = CutPlaneOptions_Number[2].def;
-
-  if(v && iView < 0)
-    vv = v;
-  else{
-    if(!v && iView < 0) iView = 0;
-    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
-      Msg(WARNING,"View[%d] does not exist",iView);
-      return 0;
-    }
-  }
-
-  return GMSH_LevelsetPlugin::execute(vv);
-}
-
diff --git a/Plugin/CutPlane.h b/Plugin/CutPlane.h
deleted file mode 100644
index 3d88bd048d62fd3bc5759fab24cd1c1dc82f2115..0000000000000000000000000000000000000000
--- a/Plugin/CutPlane.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _CUTPLANE_H_
-#define _CUTPLANE_H
-
-#include "LevelsetPlugin.h"
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterCutPlanePlugin ();
-}
-
-class GMSH_CutPlanePlugin : public GMSH_LevelsetPlugin
-{
-  virtual double levelset (double x, double y, double z, double val) const;
-public:
-  GMSH_CutPlanePlugin();
-  virtual void getName  (char *name) const;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const;
-  virtual void CatchErrorMessage (char *errorMessage) const;
-  virtual int getNbOptions() const;
-  virtual StringXNumber *GetOption (int iopt);  
-  virtual Post_View *execute (Post_View *);
-};
-
-#endif
diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp
deleted file mode 100644
index 493b3c186a969f6ad28f39678964000b45d13113..0000000000000000000000000000000000000000
--- a/Plugin/CutSphere.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-// $Id: CutSphere.cpp,v 1.17 2001-08-11 23:25:50 geuzaine Exp $
-
-#include <string.h>
-#include "CutSphere.h"
-#include "List.h"
-
-StringXNumber CutSphereOptions_Number[] = {
-  { GMSH_FULLRC, "Xc" , NULL , 0. },
-  { GMSH_FULLRC, "Yc" , NULL , 0. },
-  { GMSH_FULLRC, "Zc" , NULL , 0. },
-  { GMSH_FULLRC, "R"  , NULL , 0.25 },
-  { GMSH_FULLRC, "iView" , NULL , -1. }
-};
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterCutSpherePlugin ()
-  {
-    return new GMSH_CutSpherePlugin ();
-  }
-}
-
-
-GMSH_CutSpherePlugin::GMSH_CutSpherePlugin()
-{
-}
-
-void GMSH_CutSpherePlugin::getName(char *name) const
-{
-  strcpy(name,"Cut Sphere");
-}
-
-void GMSH_CutSpherePlugin::getInfos(char *author, char *copyright, char *help_text) const
-{
-  strcpy(author,"J.-F. Remacle (remacle@scorec.rpi.edu)");
-  strcpy(copyright,"DGR (www.multiphysics.com)");
-  strcpy(help_text,
-	 "Cuts a 3D scalar view with the sphere\n"
-	 "(X-Xc)^2 + (Y-Yc)^2 + (Z-Zc)^2  = R^2.\n"
-	 "Script name: Plugin(CutSphere).");
-}
-
-int GMSH_CutSpherePlugin::getNbOptions() const
-{
-  return sizeof(CutSphereOptions_Number)/sizeof(StringXNumber);
-}
-
-StringXNumber* GMSH_CutSpherePlugin:: GetOption (int iopt)
-{
-  return &CutSphereOptions_Number[iopt];
-}
-
-void GMSH_CutSpherePlugin::CatchErrorMessage (char *errorMessage) const
-{
-  strcpy(errorMessage,"CutSphere failed...");
-}
-
-double GMSH_CutSpherePlugin :: levelset (double x, double y, double z, double val) const
-{
-  double a = CutSphereOptions_Number[0].def;
-  double b = CutSphereOptions_Number[1].def;
-  double c = CutSphereOptions_Number[2].def;
-  double r = CutSphereOptions_Number[3].def;
-  return (x-a)*(x-a) + (y-b)*(y-b) + (z-c)*(z-c) - r*r;
-}
-
-extern List_T *Post_ViewList;
-
-Post_View *GMSH_CutSpherePlugin::execute (Post_View *v)
-{
-  Post_View *vv;
-
-  int iView = (int)CutSphereOptions_Number[4].def;
-  _orientation = ORIENT_SPHERE;
-  _ref[0] = CutSphereOptions_Number[0].def;
-  _ref[1] = CutSphereOptions_Number[1].def;
-  _ref[2] = CutSphereOptions_Number[2].def;
-
-  if(v && iView < 0)
-    vv = v;
-  else{
-    if(!v && iView < 0) iView = 0;
-    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
-      Msg(WARNING,"View[%d] does not exist",iView);
-      return 0;
-    }
-  }
-
-  return GMSH_LevelsetPlugin::execute(vv);
-}
-
diff --git a/Plugin/CutSphere.h b/Plugin/CutSphere.h
deleted file mode 100644
index 26b2e3a167a35b49ccb208d2a3e04a46c7bfd6d0..0000000000000000000000000000000000000000
--- a/Plugin/CutSphere.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _CUTSPHERE_H_
-#define _CUTSPHERE_H
-
-#include "LevelsetPlugin.h"
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterCutSpherePlugin ();
-}
-
-class GMSH_CutSpherePlugin : public GMSH_LevelsetPlugin
-{
-  virtual double levelset (double x, double y, double z, double val) const;
-public:
-  GMSH_CutSpherePlugin();
-  virtual void getName  (char *name) const;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const;
-  virtual void CatchErrorMessage (char *errorMessage) const;
-  virtual int getNbOptions() const;
-  virtual StringXNumber* GetOption (int iopt);  
-  virtual Post_View *execute (Post_View *);
-};
-
-#endif
diff --git a/Plugin/LevelsetPlugin.cpp b/Plugin/LevelsetPlugin.cpp
deleted file mode 100644
index 4ab3ed72370604cf5350a42af337cd09fbf02569..0000000000000000000000000000000000000000
--- a/Plugin/LevelsetPlugin.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-// $Id: LevelsetPlugin.cpp,v 1.19 2001-08-13 06:59:52 geuzaine Exp $
-
-#include "LevelsetPlugin.h"
-#include "List.h"
-#include "Views.h"
-#include "Iso.h"
-#include "Numeric.h"
-
-GMSH_LevelsetPlugin::GMSH_LevelsetPlugin()
-{
-  processed = 0;
-  _ith_field_to_draw_on_the_iso = 0;
-  _orientation = ORIENT_NONE; 
-  _ref[0] = _ref[1] = _ref[2] = 0.;
-  strcpy (OutputFileName,"levelset.pos");
-}
-
-void GMSH_LevelsetPlugin::Save ()
-{
-  if(processed){
-    Msg(INFO, "Writing file '%s'", OutputFileName);
-    Write_View(0, processed, OutputFileName);
-    Msg(INFO, "Levelset ouput complete '%s'", OutputFileName);
-    Msg(STATUS2, "Wrote '%s'", OutputFileName);
-  }
-}
-
-void GMSH_LevelsetPlugin::Run () 
-{ 
-  execute (0);
-}
-
-Post_View *GMSH_LevelsetPlugin::execute (Post_View *v)
-{
-  /*
-    This plugin creates a new view which is the result of
-    a cut of the actual view with a levelset.
-   */
-  int    k,i,j,nb,edtet[6][2] = {{0,1},{0,2},{0,3},{1,2},{1,3},{2,3}};
-  double *X, *Y, *Z, *Vals, levels[6], coef;
-  double Xp[6], Yp[6], Zp[6], myVals[6];
-  double Xpi[6], Ypi[6], Zpi[6], myValsi[6];
-  Post_View *View;
-
-  // for all scalar tets
-
-  if(v->NbSS){
-    View = BeginView(1);
-    nb = List_Nbr(v->SS) / v->NbSS ;
-    for(i=0 ; i<List_Nbr(v->SS) ; i+=nb){
-      X = (double*)List_Pointer_Fast(v->SS,i);
-      Y = (double*)List_Pointer_Fast(v->SS,i+4);
-      Z = (double*)List_Pointer_Fast(v->SS,i+8);
-      Vals = (double*)List_Pointer_Fast(v->SS,i+12);
-      for(j=0 ; j<4 ; j++)
-	levels[j] = levelset(X[j],Y[j],Z[j],Vals[j]);
-      int nx = 0;
-      for(k=0 ; k<6 ; k++){
-	if(levels[edtet[k][0]] * levels[edtet[k][1]] <= 0.0){		  
-	  coef = InterpolateIso(X,Y,Z,levels,0.0,
-				edtet[k][0],edtet[k][1],
-				&Xp[nx],&Yp[nx],&Zp[nx]); 
-	  myVals[nx] = what_to_draw (Xp[nx],Yp[nx],Zp[nx],
-				     edtet[k][0],edtet[k][1],coef,Vals);
-	  nx++;
-	}
-      }
-      
-      if(nx == 4){
-	double xx = Xp[3];
-	double yy = Yp[3];
-	double zz = Zp[3];
-	double vv = myVals[3];
-	Xp[3] = Xp[2]; 
-	Yp[3] = Yp[2]; 
-	Zp[3] = Zp[2];
-	myVals[3] = myVals[2];
-	Xp[2] = xx;
-	Yp[2] = yy;
-	Zp[2] = zz;
-	myVals[2] = vv;
-      }
-      
-      double v1[3] = {Xp[2]-Xp[0],Yp[2]-Yp[0],Zp[2]-Zp[0]};
-      double v2[3] = {Xp[1]-Xp[0],Yp[1]-Yp[0],Zp[1]-Zp[0]};
-      double gr[3];
-      double n[3],test;
-      prodve(v1,v2,n);
-
-      switch(_orientation){
-      case ORIENT_MAP:
-	gradSimplex(X,Y,Z,Vals,gr);      
-	prosca(gr,n,&test);
-	break;
-      case ORIENT_PLANE:
-	prosca(n,_ref,&test);
-	break;
-      case ORIENT_SPHERE:
-	gr[0] = Xp[0]-_ref[0];
-	gr[1] = Yp[0]-_ref[1];
-	gr[2] = Zp[0]-_ref[2];
-	prosca(gr,n,&test);
-	break;
-      default:
-	test = 0.;
-	break;
-      }
-      
-      if(test>0){
-	for(k=0;k<nx;k++){
-	  Xpi[k] = Xp[k];
-	  Ypi[k] = Yp[k];
-	  Zpi[k] = Zp[k];
-	  myValsi[k] = myVals[k];
-	}
-	for(k=0;k<nx;k++){
-	  Xp[k] = Xpi[nx-k-1];
-	  Yp[k] = Ypi[nx-k-1];
-	  Zp[k] = Zpi[nx-k-1];	      
-	  myVals[k] = myValsi[nx-k-1];	      
-	}
-      }
-      
-      if(nx == 3 || nx == 4){
-	for(k=0 ; k<3 ; k++) List_Add(View->ST, &Xp[k]);
-	for(k=0 ; k<3 ; k++) List_Add(View->ST, &Yp[k]);
-	for(k=0 ; k<3 ; k++) List_Add(View->ST, &Zp[k]);
-	for(k=0 ; k<3 ; k++) List_Add(View->ST, &myVals[k]);
-	View->NbST++;
-      }
-      if(nx == 4){	  
-	for(k=2 ; k<5 ; k++) List_Add(View->ST, &Xp[k % 4]);
-	for(k=2 ; k<5 ; k++) List_Add(View->ST, &Yp[k % 4]);
-	for(k=2 ; k<5 ; k++) List_Add(View->ST, &Zp[k % 4]);
-	for(k=2 ; k<5 ; k++) List_Add(View->ST, &myVals[k % 4]);
-	View->NbST++;
-      }
-    }
-
-    char name[1024],filename[1024];
-    sprintf(name,"cut-%s",v->Name);
-    sprintf(filename,"cut-%s",v->FileName);
-    EndView(View, 1, filename, name);
-    
-    Msg(INFO, "Created view '%s' (%d triangles)", name, View->NbST);
-    processed = View;
-    return View;
-  }
-  
-  return 0;
-}
-
-double  GMSH_LevelsetPlugin::what_to_draw (double x, double y, double z, 
-					   int p1, int p2, 
-					   double coef, double *Vals) const
-{
-  int offset =  _ith_field_to_draw_on_the_iso * 4;
-  // TEST JF, this would draw y coord on the iso
-  //  return y;
-  p2 += offset;
-  p1 += offset;
-  return coef * (Vals[p2] - Vals[p1]) + Vals[p1]; 
-}
-
-
-
-
-
-
diff --git a/Plugin/LevelsetPlugin.h b/Plugin/LevelsetPlugin.h
deleted file mode 100644
index b2f5f16322f9eae6ddc5d93f68ff344f37642535..0000000000000000000000000000000000000000
--- a/Plugin/LevelsetPlugin.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _LEVELSETPLUGIN_H_
-#define _LEVELSETPLUGIN_H_
-#include "Plugin.h"
-
-#define ORIENT_NONE   0
-#define ORIENT_MAP    1
-#define ORIENT_PLANE  2
-#define ORIENT_SPHERE 3
-
-class GMSH_LevelsetPlugin : public GMSH_Post_Plugin
-{
-protected:
-  int _ith_field_to_draw_on_the_iso;
-  int _orientation;
-  double _ref[3];
-private:
-  virtual double levelset     (double x, double y, double z, double val) const = 0;
-  virtual double what_to_draw (double x, double y, double z, 
-			       int p1, int p2, double coef, double *val) const;
-public:
-  GMSH_LevelsetPlugin();
-  virtual Post_View *execute (Post_View *);
-  virtual void Run();
-  virtual void Save();
-};
-#endif
diff --git a/Plugin/Makefile b/Plugin/Makefile
deleted file mode 100644
index 6ee76137bbf21f2f0d4ec4e93549d6d7fb1920ae..0000000000000000000000000000000000000000
--- a/Plugin/Makefile
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id: Makefile,v 1.16 2001-08-11 23:32:25 geuzaine Exp $
-#
-# Makefile for "libAdapt.a"
-#
-
-.IGNORE:
-
-CC        = c++
-AR        = ar ruvs
-RM        = rm
-RANLIB    = ranlib
-
-LIB       = ../lib/libPlugin.a
-INCLUDE   = -I../Common -I../Graphics -I../DataStr -I../Mesh
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS   = -f
-CFLAGS    = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) $(GUI_INCLUDE) 
-
-SRC = Plugin.cpp\
-        LevelsetPlugin.cpp\
-          CutPlane.cpp CutSphere.cpp CutMap.cpp\
-        Smooth.cpp\
-        Transform.cpp\
-        Skin.cpp
-
-OBJ = $(SRC:.cpp=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ)
-	$(AR) $(LIB) $(OBJ)
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o 
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
- PluginManager.h CutMap.h LevelsetPlugin.h CutPlane.h CutSphere.h \
- Skin.h Smooth.h Transform.h
-LevelsetPlugin.o: LevelsetPlugin.cpp LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Iso.h \
- ../Common/Numeric.h
-CutPlane.o: CutPlane.cpp CutPlane.h LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h
-CutSphere.o: CutSphere.cpp CutSphere.h LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h
-CutMap.o: CutMap.cpp CutMap.h LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h
-Smooth.o: Smooth.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
- Smooth.h ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h
-Transform.o: Transform.cpp Plugin.h ../Common/Options.h \
- ../Common/Message.h Transform.h ../DataStr/List.h ../Common/Views.h \
- ../Common/ColorTable.h
-Skin.o: Skin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
- Skin.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../DataStr/Malloc.h
diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp
deleted file mode 100644
index 4c904909912535f7af274970810e184a944d0c72..0000000000000000000000000000000000000000
--- a/Plugin/Plugin.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-// $Id: Plugin.cpp,v 1.20 2001-08-07 21:00:10 remacle Exp $
-
-#ifndef _NODLL
-#include <dlfcn.h>
-#endif
-
-#include <map>
-
-#ifdef _FLTK
-#include <FL/filename.H>
-#endif
-
-#include "Plugin.h"
-#include "PluginManager.h"
-
-#include "CutMap.h"
-#include "CutPlane.h"
-#include "CutSphere.h"
-#include "Skin.h"
-#include "Smooth.h"
-#include "Transform.h"
-
-using namespace std;
-
-const char *GMSH_PluginEntry = "GMSH_RegisterPlugin";
-
-#if defined(WIN32) && !defined(__CYGWIN__)
-#define SLASH "\\"
-#else
-#define SLASH "/"
-#endif
-
-
-GMSH_PluginManager *GMSH_PluginManager::instance = 0;
-
-GMSH_PluginManager::GMSH_PluginManager(){
-}
-
-GMSH_PluginManager::~GMSH_PluginManager(){
-  for(iter it = allPlugins.begin();
-      it != allPlugins.end();
-      ++it) delete (*it).second;
-}
-
-GMSH_Plugin* GMSH_PluginManager::find (char *pluginName){
-  iter it = allPlugins.find(pluginName);
-  if (it == allPlugins.end()) return 0;
-  return (*it).second;
-}
-
-void GMSH_PluginManager::Action( char *pluginName, char *action, void *data){
-  GMSH_Plugin * plugin = find(pluginName);
-  if(!plugin){
-    throw 1;
-  }
-  if(!strcmp(action,"Run")){      
-    plugin->Run();
-  }
-  else if(!strcmp(action,"Save")){
-    plugin->Save();
-  }
-  else{
-    throw 1;
-  }
-}
-
-void GMSH_PluginManager::SetPluginOption (char *pluginName, char *option, char *value){
-  GMSH_Plugin *plugin = find(pluginName);
-
-  if(!plugin) throw "Unknown plugin name" ;
-
-  if(!strcmp(option,"OutputFileName"))
-    strcpy(plugin->OutputFileName,value);
-  else if(!strcmp(option,"InputFileName"))
-    strcpy(plugin->InputFileName,value);
-  else
-    throw "Unknown plugin option name";
-}
-
-void GMSH_PluginManager::SetPluginOption (char *pluginName, char *option, double value){
-  GMSH_Plugin *plugin = find(pluginName);
-
-  if(!plugin) throw "Unknown plugin name";
-
-  for(int i=0 ; i<plugin->getNbOptions();i++){
-    StringXNumber *sxn;
-    // get the ith option of the plugin
-    sxn = plugin->GetOption(i);
-    // look if it's the good option name
-    if(!strcmp (sxn->str,option)){
-      sxn->def = value;
-      return;
-    }
-  }
-  throw "Unknown plugin option name";
-}
-
-GMSH_PluginManager* GMSH_PluginManager::Instance(){
-  if(!instance){
-    instance = new GMSH_PluginManager;
-  }
-  return instance;
-}
-
-void GMSH_PluginManager::RegisterDefaultPlugins(){
-  struct dirent **list;
-  char ext[6];
-
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutMap",
-						  GMSH_RegisterCutMapPlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutPlane",
-						  GMSH_RegisterCutPlanePlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutSphere",
-						  GMSH_RegisterCutSpherePlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("Skin",
-						  GMSH_RegisterSkinPlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("Smooth",
-						  GMSH_RegisterSmoothPlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("Transform",
-						  GMSH_RegisterTransformPlugin()));
-
-#ifdef _FLTK
-  char *homeplugins = getenv ("GMSHPLUGINSHOME");
-  if(!homeplugins)return;
-  int nbFiles = filename_list(homeplugins,&list);
-  if(nbFiles <= 0)  return;
-  for(int i=0;i<nbFiles;i++){
-    char *name = list[i]->d_name;
-    if(strlen(name) > 3){
-      strcpy(ext,name+(strlen(name)-3));
-      if(!strcmp(ext,".so") || !strcmp(ext,"dll")){
-	AddPlugin(homeplugins,name);
-      }
-    }
-  }
-  for(int i=0;i<nbFiles;i++)free(list[i]);
-  free (list);
-#endif
-}
-
-void GMSH_PluginManager::AddPlugin( char *dirName, char *pluginName){
-
-#if ( defined(WIN32) && !defined(__CYGWIN__) ) || defined(_NODLL) || !defined(_FLTK)
-  Msg(WARNING,"No dynamic plugin loading on this platform");
-  return;
-#else
-  char dynamic_lib[1024];
-  char plugin_name[256];
-  char plugin_author[256];
-  char plugin_copyright[256];
-  char plugin_help[256];
-  class GMSH_Plugin* (*RegisterPlugin)(void);
-  sprintf(dynamic_lib,"%s%s%s",dirName,SLASH,pluginName);
-  Msg(INFO,"Opening Plugin '%s'",dynamic_lib);
-  void *hlib = dlopen (dynamic_lib,RTLD_NOW);
-  char *err = dlerror();
-  if(hlib == NULL){
-    Msg(WARNING,"Error in opening %s (dlerror = %s)",dynamic_lib,err);
-    return;
-  }
-  RegisterPlugin = (class GMSH_Plugin* (*)(void)) dlsym(hlib,GMSH_PluginEntry);
-  err = dlerror();
-  if(err != NULL){
-    Msg(WARNING,"Symbol '%s' missing in plugin '%s' (dlerror = %s)",
-	GMSH_PluginEntry,pluginName,err);
-    return;
-  }
-
-  GMSH_Plugin *p = RegisterPlugin();
-  p->hlib = hlib;
-  p->getName(plugin_name);
-  p->getInfos(plugin_author,plugin_copyright,plugin_help);
-  if(allPlugins.find(plugin_name) != allPlugins.end()){
-    Msg(WARNING,"Plugin '%s' multiply defined",pluginName);
-    return;
-  }
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>(plugin_name,p));
-  Msg(INFO,"Plugin name      : %s",plugin_name);
-  Msg(INFO,"Plugin author    : %s",plugin_author);
-  Msg(INFO,"Plugin copyright : %s",plugin_copyright);
-  Msg(INFO,"Plugin help      : %s",plugin_help);
-#endif
-}
-
-
-
diff --git a/Plugin/Plugin.h b/Plugin/Plugin.h
deleted file mode 100644
index aa5ab41705570f4a6c64edc45473aaff5f0e5796..0000000000000000000000000000000000000000
--- a/Plugin/Plugin.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef _PLUGIN_H_
-#define _PLUGIN_H_
-/*
-  The one who intend to create a plugin for gmsh have to 
-    -) Create a dynamin lib (.so) containing 1 symbols
-       GMSH_Plugin * GMSH_RegisterPlugin ();
-    -) When there is an unacceptable error in the plugin,
-    just throw this, the plugin manager will be able to 
-    catch the exception.
-
-  Some Plugins are default gmsh plugins and are insterted
-  directly in the executable. I think that it's a good 
-  way to start.
-*/
-
-#include <string.h>
-#include <stdio.h>
-#include "Options.h"
-#include "Message.h"
-
-
-class PluginDialogBox;
-class Post_View;
-class GMSH_Plugin
-{
-public :
-  /*output file name*/
-  char OutputFileName[256];
-  /*input file name*/
-  char InputFileName[256];
-  /* a dialog box for user interface */
-  PluginDialogBox *dialogBox;
-  /*this is there for internal use, this variable will be
-   used by the PluginManager, just forget it*/
-  void *hlib;
-  /* 3 kind of plugins, one for cad, one for mesh, one for postpro*/
-  typedef enum GMSH_PLUGIN_TYPE {GMSH_CAD_PLUGIN, 
-				 GMSH_MESH_PLUGIN, 
-				 GMSH_POST_PLUGIN, 
-				 GMSH_SOLVE_PLUGIN};
-  /* returns the type of plugin for downcasting GMSH_Plugin into
-     GMSH_CAD_Plugin, GMSH_Mesh_Plugin and GMSH_Post_Plugin */
-  virtual GMSH_PLUGIN_TYPE getType() const = 0;
-  virtual void getName (char *name) const = 0;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const = 0;
-  /* When an error is thrown by the plugin, the plugin manager
-     will show the message and hopefully continue */
-  virtual void CatchErrorMessage (char *errorMessage) const = 0;
-  /* gmsh style option, ca be loaded, saved and set*/
-  virtual int getNbOptions() const = 0;
-  virtual StringXNumber *GetOption (int iopt) = 0;
-  virtual void Save() = 0;
-  virtual void Run() = 0;
-};
-
-/* Base class for Post-Processing Plugins
-   The user can either modify or duplicate 
-   a Post_View */
-class GMSH_Post_Plugin : public GMSH_Plugin
-{
- protected:
-  Post_View *processed;
-public:
-  inline GMSH_PLUGIN_TYPE getType() const 
-    {return GMSH_Plugin::GMSH_POST_PLUGIN;}
-  /* If returned pointer is the same as the argument, then view is simply modified,
-    else, a new view is added in the view list */
-  virtual Post_View *execute (Post_View *) = 0;
-};
-
-#endif
-
-
-
-
diff --git a/Plugin/PluginManager.h b/Plugin/PluginManager.h
deleted file mode 100644
index 1565d683e3710f38a50a783b7b327b8c9ca7bf02..0000000000000000000000000000000000000000
--- a/Plugin/PluginManager.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef _PLUGINMANAGER_H_
-#define _PLUGINMANAGER_H_
-/*
-  The one who intend to create a plugin for gmsh have to 
-    -) Create a dynamin lib (.so) containing 1 symbols
-       GMSH_Plugin * GMSH_RegisterPlugin ();
-    -) When there is an unacceptable error in the plugin,
-    just throw this, the plugin manager will be able to 
-    catch the exception.
-*/
-
-#include <map>
-#include <iosfwd>
-
-class GMSH_Plugin;
-struct ltstrpg
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return strcmp(s1, s2) < 0;
-  }
-};
-
-class GMSH_PluginManager
-{
-  GMSH_PluginManager();
-  static GMSH_PluginManager *instance;
-  std::map<const char*,GMSH_Plugin*,ltstrpg> allPlugins;
-public :
-  virtual ~GMSH_PluginManager();
-  typedef std::map<const char*,GMSH_Plugin*,ltstrpg>::iterator iter;
-/**
-  Registering all default plugins that are in $(GMSHPLUGINSHOME)
-  In fact, we will load all .so files in dir $(GMSHPLUGINSHOME)
-
-  In fact, loading a .so (or a .o) is not what is usually called a
-  'plugin'. This is a 'module'. A plugin is an _executable_, but
-  can only be executed from inside another program... CG
-  */
-  void RegisterDefaultPlugins();
-  static GMSH_PluginManager *Instance();
-  /** Dynamically add a plugin pluginName.so in dirName*/
-  void AddPlugin(char *dirName, char *pluginName);
-  // uninstall a given plugin
-  void UninstallPlugin (char *pluginName);
-  // set an option to a value in plugin named pluginName
-  void SetPluginOption (char *pluginName, char *option, double value);
-  void SetPluginOption (char *pluginName, char *option, char * value);
-  // iterator on plugins
-  inline iter begin() {return allPlugins.begin();}
-  inline iter end() {return allPlugins.end();}
-  // find a plugin named pluginName
-  GMSH_Plugin *find(char *pluginName);
-  // perform an action on the plugin
-  // default action are Run and Save
-  // other plugins may perform other actions
-  void Action (char *pluginMane , char *action , void *data); 
-};
-#endif
-
-
-
-
-
-
-
-
diff --git a/Plugin/Skin.cpp b/Plugin/Skin.cpp
deleted file mode 100644
index 045def54c6c03abf5b5619b61c3930ba777fe305..0000000000000000000000000000000000000000
--- a/Plugin/Skin.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-// $Id: Skin.cpp,v 1.8 2001-08-11 23:25:50 geuzaine Exp $
-
-#include "Plugin.h"
-#include "Skin.h"
-#include "List.h"
-#include "Tree.h"
-#include "Views.h"
-#include "Context.h"
-#include "Malloc.h"
-
-extern Context_T CTX;
-
-StringXNumber SkinOptions_Number[] = {
-  { GMSH_FULLRC, "iView" , NULL , -1. }
-};
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterSkinPlugin ()
-  {
-    return new GMSH_SkinPlugin();
-  }
-}
-
-GMSH_SkinPlugin::GMSH_SkinPlugin()
-{
-}
-
-void GMSH_SkinPlugin::getName(char *name) const
-{
-  strcpy(name,"Skin");
-}
-
-void GMSH_SkinPlugin::getInfos(char *author, char *copyright, char *help_text) const
-{
-  strcpy(author, "C. Geuzaine (geuz@geuz.org)");
-  strcpy(copyright, "DGR (www.multiphysics.com)");
-  strcpy(help_text, 
-	 "Gets the skin (i.e. the boundary) of a view,\n"
-	 "eliminating all interior drawing).\n"
-	 "Script name: Plugin(Skin).\n");
-}
-
-int GMSH_SkinPlugin::getNbOptions() const
-{
-  return sizeof(SkinOptions_Number)/sizeof(StringXNumber);
-}
-
-StringXNumber *GMSH_SkinPlugin:: GetOption (int iopt)
-{
-  return &SkinOptions_Number[iopt];
-}
-
-void GMSH_SkinPlugin::CatchErrorMessage (char *errorMessage) const
-{
-  strcpy(errorMessage,"Skin failed...");
-}
-
-
-static List_T * List;
-static int    * NbList, NbNod, NbComp, NbTime;
-
-typedef struct{
-  double Coord[9];
-  double *Val;
-} Elm;
-
-static int fcmpElm(const void *a, const void *b){
-  Elm *e1=(Elm*)a, *e2=(Elm*)b;
-  double s1, s2, TOL=CTX.lc*1.e-6;
-  int i;
-  
-  s1 = s2 = 0.0 ;  
-  for(i=0;i<NbNod-1;i++){ s1 += e1->Coord[i]; s2 += e2->Coord[i]; }
-  if(s1-s2 > TOL) return 1; else if(s1-s2 < -TOL) return -1;
-  s1 = s2 = 0.0 ;
-  for(i=0;i<NbNod-1;i++){ s1 += e1->Coord[NbNod-1+i]; s2 += e2->Coord[NbNod-1+i]; }
-  if(s1-s2 > TOL) return 1; else if(s1-s2 < -TOL) return -1;
-  s1 = s2 = 0.0 ;
-  for(i=0;i<NbNod-1;i++){ s1 += e1->Coord[2*(NbNod-1)+i]; s2 += e2->Coord[2*(NbNod-1)+i]; }
-  if(s1-s2 > TOL) return 1; else if(s1-s2 < -TOL) return -1;
-
-  return 0;
-}
-
-static void getElm(int *Nod, double *Coord, double *Val, Elm *Elm){
-  int i, j, k;
-  Elm->Val = (double*)Malloc((NbNod-1)*NbComp*NbTime*sizeof(double));
-  for(i=0; i<NbNod-1; i++) Elm->Coord[i] = Coord[Nod[i]]; //x
-  for(i=0; i<NbNod-1; i++) Elm->Coord[NbNod-1+i] = Coord[NbNod + Nod[i]]; //y
-  for(i=0; i<NbNod-1; i++) Elm->Coord[2*(NbNod-1)+i] = Coord[2*NbNod + Nod[i]]; //z
-  for(i=0; i<NbTime; i++)
-    for(j=0; j<NbNod-1; j++) 
-      for(k=0; k<NbComp; k++)
-	Elm->Val[(NbNod-1)*NbComp*i+NbComp*j+k] = 
-	  Val[NbNod*NbComp*i+NbComp*Nod[j]+k];
-}
-
-static void addInView(void *a, void *b){
-  int i, k;
-  Elm *e = (Elm*)a;
-  for(i=0; i<3*(NbNod-1); i++) List_Add(List, &e->Coord[i]);
-  for(i=0; i<NbTime; i++)
-    for(k=0;k<(NbNod-1)*NbComp;k++)
-      List_Add(List, &e->Val[(NbNod-1)*NbComp*i+k]);
-  Free(e->Val);
-  (*NbList)++;
-}
-
-static void skinSimplex(List_T *Simp, int NbSimp){
-  double *Coords, *Vals;
-  int i, j;
-  int FacesTet[4][3] = {{0,1,2},{0,1,3},{0,2,3},{1,2,3}};
-  int EdgesTri[3][2] = {{0,1},{1,2},{2,0}};
-  Elm e, *pe;
-
-  Tree_T * Skin = Tree_Create(sizeof(Elm), fcmpElm);
-  for(i = 0 ; i < List_Nbr(Simp) ; i+=NbSimp){
-    Coords = (double*)List_Pointer_Fast(Simp,i);
-    Vals = (double*)List_Pointer_Fast(Simp,i+3*NbNod);
-    for(j=0 ; j<NbNod ; j++){
-      getElm(NbNod == 4 ? FacesTet[j] : EdgesTri[j],Coords,Vals,&e);
-      if(!(pe=(Elm*)Tree_PQuery(Skin, &e)))
-	Tree_Add(Skin, &e);
-      else{
-	Free(pe->Val);
-	Free(e.Val);
-	Tree_Suppress(Skin, &e);
-      }
-    }
-  }
-  Tree_Action(Skin, addInView);
-  Tree_Delete(Skin);
-}
-
-extern List_T * Post_ViewList;
-
-Post_View *GMSH_SkinPlugin::execute (Post_View *v)
-{
-  Post_View *vv, *View;
-
-  int iView = (int)SkinOptions_Number[0].def;
-
-  if(v && iView < 0)
-    vv = v;
-  else{
-    if(!v && iView < 0) iView = 0;
-    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
-      Msg(WARNING,"View[%d] does not exist",iView);
-      return 0;
-    }
-  }
-
-  if(vv->NbSS || vv->NbVS || vv->NbST || vv->NbVT){
-    View = BeginView(1);
-    NbTime = vv->NbTimeStep;
-    if(vv->NbSS){
-      List = View->ST; NbList = &View->NbST; NbNod = 4; NbComp = 1;
-      skinSimplex(vv->SS, List_Nbr(vv->SS) / vv->NbSS);
-    }
-    if(vv->NbVS){
-      List = View->VT; NbList = &View->NbVT; NbNod = 4; NbComp = 3;
-      skinSimplex(vv->VS, List_Nbr(vv->VS) / vv->NbVS) ;
-    }
-    if(vv->NbST){
-      List = View->SL; NbList = &View->NbSL; NbNod = 3; NbComp = 1;
-      skinSimplex(vv->ST, List_Nbr(vv->ST) / vv->NbST);
-    }
-    if(vv->NbVT){
-      List = View->VL; NbList = &View->NbVL; NbNod = 3; NbComp = 3;
-      skinSimplex(vv->VT, List_Nbr(vv->VT) / vv->NbVT) ;
-    }
-    if(View->NbST || View->NbVT || View->NbSL || View->NbVL){
-      char name[1024], filename[1024];
-      sprintf(name,"skin-%s",vv->Name);
-      sprintf(filename,"skin-%s",vv->FileName);
-      EndView(View, 1, filename, name);
-      Msg(INFO, "Created view '%s'", name);
-      return View;
-    }
-    else
-      FreeView(View->Index);
-  }
-
-  return 0;
-}
-
-void GMSH_SkinPlugin::Run ()
-{
-  execute(0);
-}
-
-void GMSH_SkinPlugin::Save ()
-{
-}
diff --git a/Plugin/Skin.h b/Plugin/Skin.h
deleted file mode 100644
index 9f9368d175c9e290a36bfc2736d20c3175a1529a..0000000000000000000000000000000000000000
--- a/Plugin/Skin.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _SKIN_H_
-#define _SKIN_H
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterSkinPlugin ();
-}
-
-class GMSH_SkinPlugin : public GMSH_Post_Plugin
-{
-public:
-  GMSH_SkinPlugin();
-  virtual void Run();
-  virtual void Save();
-  virtual void getName  (char *name) const;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const;
-  virtual void CatchErrorMessage (char *errorMessage) const;
-  virtual int getNbOptions() const;
-  virtual StringXNumber* GetOption (int iopt);  
-  virtual Post_View *execute (Post_View *);
-};
-#endif
diff --git a/Plugin/Smooth.cpp b/Plugin/Smooth.cpp
deleted file mode 100644
index 442f8f92f7ea8b9d3a05298c4b42b22639029bfd..0000000000000000000000000000000000000000
--- a/Plugin/Smooth.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// $Id: Smooth.cpp,v 1.6 2001-08-06 11:39:22 geuzaine Exp $
-
-#include "Plugin.h"
-#include "Smooth.h"
-#include "List.h"
-#include "Views.h"
-
-StringXNumber SmoothOptions_Number[] = {
-  { GMSH_FULLRC, "iView" , NULL , -1. }
-};
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterSmoothPlugin ()
-  {
-    return new GMSH_SmoothPlugin();
-  }
-}
-
-
-GMSH_SmoothPlugin::GMSH_SmoothPlugin()
-{
-}
-
-void GMSH_SmoothPlugin::getName(char *name) const
-{
-  strcpy(name,"Smooth");
-}
-
-void GMSH_SmoothPlugin::getInfos(char *author, char *copyright, char *help_text) const
-{
-  strcpy(author, "C. Geuzaine (geuz@geuz.org)");
-  strcpy(copyright, "DGR (www.multiphysics.com)");
-  strcpy(help_text, 
-	 "Smoothes a discontinuous view by averaging all the values at each node.\n"
-	 "Script name: Plugin(Smooth).");
-}
-
-int GMSH_SmoothPlugin::getNbOptions() const
-{
-  return sizeof(SmoothOptions_Number)/sizeof(StringXNumber);
-}
-
-StringXNumber *GMSH_SmoothPlugin:: GetOption (int iopt)
-{
-  return &SmoothOptions_Number[iopt];
-}
-
-void GMSH_SmoothPlugin::CatchErrorMessage (char *errorMessage) const
-{
-  strcpy(errorMessage,"Smooth failed...");
-}
-
-extern List_T *Post_ViewList;
-
-Post_View *GMSH_SmoothPlugin::execute (Post_View *v)
-{
-  Post_View *vv;
-  int iView = (int)SmoothOptions_Number[0].def;
-
-  if(v && iView < 0)
-    vv = v;
-  else{
-    if(!v && iView < 0) iView = 0;
-    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
-      Msg(WARNING,"View[%d] does not exist",iView);
-      return 0;
-    }
-  }
-
-  vv->smooth();
-  return vv;
-}
-
-void GMSH_SmoothPlugin::Run ()
-{
-  execute(0);
-}
-
-void GMSH_SmoothPlugin::Save ()
-{
-}
diff --git a/Plugin/Smooth.h b/Plugin/Smooth.h
deleted file mode 100644
index 647656d2c9cc47c4235735cabca9c58c1bb7d702..0000000000000000000000000000000000000000
--- a/Plugin/Smooth.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _SMOOTH_H_
-#define _SMOOTH_H
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterSmoothPlugin ();
-}
-
-class GMSH_SmoothPlugin : public GMSH_Post_Plugin
-{
-public:
-  GMSH_SmoothPlugin();
-  virtual void Run();
-  virtual void Save();
-  virtual void getName  (char *name) const;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const;
-  virtual void CatchErrorMessage (char *errorMessage) const;
-  virtual int getNbOptions() const;
-  virtual StringXNumber* GetOption (int iopt);  
-  virtual Post_View *execute (Post_View *);
-};
-#endif
diff --git a/Plugin/Transform.cpp b/Plugin/Transform.cpp
deleted file mode 100644
index dbaeec60b3808f6718681fef63f797d1ac254b0d..0000000000000000000000000000000000000000
--- a/Plugin/Transform.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// $Id: Transform.cpp,v 1.7 2001-08-09 20:53:23 geuzaine Exp $
-
-#include "Plugin.h"
-#include "Transform.h"
-#include "List.h"
-#include "Views.h"
-
-StringXNumber TransformOptions_Number[] = {
-  { GMSH_FULLRC, "A11" , NULL , 1. },
-  { GMSH_FULLRC, "A12" , NULL , 0. },
-  { GMSH_FULLRC, "A13" , NULL , 0. },
-  { GMSH_FULLRC, "A21" , NULL , 0. },
-  { GMSH_FULLRC, "A22" , NULL , 1. },
-  { GMSH_FULLRC, "A23" , NULL , 0. },
-  { GMSH_FULLRC, "A31" , NULL , 0. },
-  { GMSH_FULLRC, "A32" , NULL , 0. },
-  { GMSH_FULLRC, "A33" , NULL , 1. },
-  { GMSH_FULLRC, "iView" , NULL , -1. }
-};
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterTransformPlugin ()
-  {
-    return new GMSH_TransformPlugin ();
-  }
-}
-
-
-GMSH_TransformPlugin::GMSH_TransformPlugin()
-{
-}
-
-void GMSH_TransformPlugin::getName(char *name) const
-{
-  strcpy(name,"Transform");
-}
-
-void GMSH_TransformPlugin::getInfos(char *author, char *copyright, char *help_text) const
-{
-  strcpy(author, "C. Geuzaine (geuz@geuz.org)");
-  strcpy(copyright, "DGR (www.multiphysics.com)");
-  strcpy(help_text, 
-	 "Transforms a view by the matrix [ [A11 A12 A13] [A21 A22 A23] [A31 A32 A33] ].\n"
-	 "Script name: Plugin(Transform).");
-}
-
-int GMSH_TransformPlugin::getNbOptions() const
-{
-  return sizeof(TransformOptions_Number)/sizeof(StringXNumber);
-}
-
-StringXNumber *GMSH_TransformPlugin:: GetOption (int iopt)
-{
-  return &TransformOptions_Number[iopt];
-}
-
-void GMSH_TransformPlugin::CatchErrorMessage (char *errorMessage) const
-{
-  strcpy(errorMessage,"Transform failed...");
-}
-
-extern List_T *Post_ViewList;
-
-Post_View *GMSH_TransformPlugin::execute (Post_View *v)
-{
-  Post_View *vv;
-  double mat[3][3];
-
-  mat[0][0] = TransformOptions_Number[0].def;
-  mat[0][1] = TransformOptions_Number[1].def;
-  mat[0][2] = TransformOptions_Number[2].def;
-  mat[1][0] = TransformOptions_Number[3].def;
-  mat[1][1] = TransformOptions_Number[4].def;
-  mat[1][2] = TransformOptions_Number[5].def;
-  mat[2][0] = TransformOptions_Number[6].def;
-  mat[2][1] = TransformOptions_Number[7].def;
-  mat[2][2] = TransformOptions_Number[8].def;
-
-  int iView = (int)TransformOptions_Number[9].def;
-
-  if(v && iView < 0)
-    vv = v;
-  else{
-    if(!v && iView < 0) iView = 0;
-    if(!(vv = (Post_View*)List_Pointer_Test(Post_ViewList,iView))){
-      Msg(WARNING,"View[%d] does not exist",iView);
-      return 0;
-    }
-  }
-  
-  vv->transform(mat);
-  return vv;
-}
-
-void GMSH_TransformPlugin::Run ()
-{
-  execute(0);
-}
-
-void GMSH_TransformPlugin::Save ()
-{
-}
diff --git a/Plugin/Transform.h b/Plugin/Transform.h
deleted file mode 100644
index 7bfcb589c2178e24617005f72dc20975803d22f2..0000000000000000000000000000000000000000
--- a/Plugin/Transform.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _TRANSFORM_H_
-#define _TRANSFORM_H
-
-extern "C"
-{
-  GMSH_Plugin *GMSH_RegisterTransformPlugin ();
-}
-
-class GMSH_TransformPlugin : public GMSH_Post_Plugin
-{
-public:
-  GMSH_TransformPlugin();
-  virtual void Run();
-  virtual void Save();
-  virtual void getName  (char *name) const;
-  virtual void getInfos (char *author, 
-			 char *copyright,
-			 char *help_text) const;
-  virtual void CatchErrorMessage (char *errorMessage) const;
-  virtual int getNbOptions() const;
-  virtual StringXNumber* GetOption (int iopt);  
-  virtual Post_View *execute (Post_View *);
-};
-#endif
diff --git a/Plugin/ideas_for_new_plugins b/Plugin/ideas_for_new_plugins
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/archives/Makefile b/archives/Makefile
deleted file mode 100644
index 67980b35b0a6870d3df3ae8509c3177c9e37a859..0000000000000000000000000000000000000000
--- a/archives/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $
-
-purge:
-	$(RM) $(RMFLAGS) *~
-
diff --git a/benchmarks/1d/ligne.geo b/benchmarks/1d/ligne.geo
deleted file mode 100644
index a3f4b3bc95db336b61cc751152228925eac2a4e8..0000000000000000000000000000000000000000
--- a/benchmarks/1d/ligne.geo
+++ /dev/null
@@ -1,3 +0,0 @@
-Point(1) = {0.0,0.0,0.0,.1}; 
-Point(2) = {1,0.0,0.0,.1}; 
-Line(1) = {1,2}; 
diff --git a/benchmarks/2d/Square-01.geo b/benchmarks/2d/Square-01.geo
deleted file mode 100644
index 4f234fc01ac972173fc7c9de2e23a2e7923c3d25..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-01.geo
+++ /dev/null
@@ -1,16 +0,0 @@
-/******************************      
-Square uniformly meshed      
-******************************/      
-lc = .49999;       
-Point(1) = {0.0,0.0,0,lc};       
-Point(2) = {1,0.0,0,lc};       
-Point(3) = {1,1,0,lc};       
-Point(4) = {0,1,0,lc};       
-Line(1) = {3,2};       
-Line(2) = {2,1};       
-Line(3) = {1,4};       
-Line(4) = {4,3};       
-Line Loop(5) = {1,2,3,4};       
-Plane Surface(6) = {5};       
-Attractor Point{2} = {0.05,0.05,2};
-Mesh.Algorithm = 2;
diff --git a/benchmarks/2d/Square-02.geo b/benchmarks/2d/Square-02.geo
deleted file mode 100644
index d1b5976cd62d242edd90ac51429d77eaa67ebda9..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-02.geo
+++ /dev/null
@@ -1,15 +0,0 @@
-/******************************  
-Square non uniformly 
-meshed  
-******************************/  
-lc = .1;   
-Point(1) = {0.0,0.0,0,lc*.1};   
-Point(2) = {1,0.0,0,lc};   
-Point(3) = {1,1,0,lc};   
-Point(4) = {0,1,0,lc};   
-Line(1) = {3,2};   
-Line(2) = {2,1};   
-Line(3) = {1,4};   
-Line(4) = {4,3};   
-Line Loop(5) = {1,2,3,4};   
-Plane Surface(6) = {5};   
diff --git a/benchmarks/2d/Square-03.geo b/benchmarks/2d/Square-03.geo
deleted file mode 100644
index b303fff71b5032ba2f4dfbfbb591ec18f1e7ef78..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-03.geo
+++ /dev/null
@@ -1,16 +0,0 @@
-/******************************       
-Square uniformly meshed       
-******************************/       
-lc = .49999;        
-Point(1) = {0.0,0.0,0,lc};        
-Point(2) = {1,0.0,0,lc};        
-Point(3) = {1,1,0,lc};        
-Point(4) = {0,1,0,lc};  
-Point(5) = {0,2,0,lc};       
-Line(1) = {3,2};        
-Line(2) = {2,1};        
-Line(3) = {1,4};        
-Line(4) = {4,3};        
-Line Loop(5) = {1,2,3,4};        
-Plane Surface(6) = {5};        
-Line(7) = {4,5};
diff --git a/benchmarks/2d/Square-Attr1.geo b/benchmarks/2d/Square-Attr1.geo
deleted file mode 100644
index 60882900118181db67f1223df2559234fca66282..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-Attr1.geo
+++ /dev/null
@@ -1,19 +0,0 @@
-/******************************                   
-Square uniformly meshed                   
-******************************/                   
-lc = .1;                    
-Point(1) = {0.0,0.0,0,lc};                    
-Point(2) = {1,0.0,0,lc};                    
-Point(3) = {1,1,0,lc};                    
-Point(4) = {0,1,0,lc};                    
-Line(1) = {3,2};                    
-Line(2) = {2,1};                    
-Line(3) = {1,4};                    
-Line(4) = {4,3};                    
-Line Loop(5) = {1,2,3,4};                    
-Plane Surface(6) = {5};      
-Point(11) = {0.5,0.5,-1,lc};                    
-Point(22) = {0.5,0.5,1,lc};                    
-Line(5) = {11,22};                    
-Attractor Line{5} = {1,0.1,7};                             
-Mesh.Algorithm = 2;
diff --git a/benchmarks/2d/Square-Attr2.geo b/benchmarks/2d/Square-Attr2.geo
deleted file mode 100644
index 31609c461c19c30080a3bb81cfa868be10f2d811..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-Attr2.geo
+++ /dev/null
@@ -1,36 +0,0 @@
-/******************************                       
-Square uniformly meshed                       
-******************************/                       
-lc = .1;                        
-Point(1) = {0.0,0.0,0,lc};                        
-Point(2) = {1,0.0,0,lc};                        
-Point(3) = {1,1,0,lc};                        
-Point(4) = {0,1,0,lc};                        
-Line(1) = {3,2};                        
-Line(2) = {2,1};                        
-Line(3) = {1,4};                        
-Line(4) = {4,3};                        
-Line Loop(5) = {1,2,3,4};                        
-Plane Surface(6) = {5};       
-e = .03;          
-Point(11) = {-.2,.5,0,lc};                        
-Point(12) = {.2,.5,0,lc};                        
-Point(13) = {.5,.8-e,0,lc};                        
-Point(14) = { (.8)-(2*e),.5,0,lc};                        
-Point(15) = { .5,(.2)+(3*e),0,lc};                        
-Point(16) = {.2+(4*e),.5,0,lc};                        
-Point(17) = {.5,.8-(5*e),0,lc};                        
-Point(18) = { .8-(6*e),.5,0,lc};                        
-Point(19) = { .5,.2+(7*e),0,lc};                        
-Point(20) = {.2+(8*e),.5,0,lc};                        
-Line(7) = {11,12};         
-Line(8) = {12,13};         
-Line(9) = {13,14};         
-Line(10) = {14,15};         
-Line(11) = {15,16};         
-Line(12) = {16,17};         
-Line(13) = {17,18};         
-Line(14) = {18,19};         
-Line(15) = {19,20};         
-Attractor Line{7,8,9,10,11,12,13,14,15} = {.1,0.01,10} ; 
-Mesh.Algorithm = 2;
diff --git a/benchmarks/2d/Square-Attr3.geo b/benchmarks/2d/Square-Attr3.geo
deleted file mode 100644
index a71a2146de840f5100ad4377cfe075bdb53cdfaf..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-Attr3.geo
+++ /dev/null
@@ -1,18 +0,0 @@
-/******************************                   
-Square uniformly meshed                   
-******************************/                   
-lc = .1;                    
-Point(1) = {0.0,0.0,0,lc};                    
-Point(2) = {1,0.0,0,lc};                    
-Point(3) = {1,1,0,lc};                    
-Point(4) = {0,1,0,lc};                    
-Line(1) = {3,2};                    
-Line(2) = {2,1};                    
-Line(3) = {1,4};                    
-Line(4) = {4,3};                    
-Line Loop(5) = {1,2,3,4};                    
-Plane Surface(6) = {5};      
-Line(5) = {3,1};                    
-Attractor Line{5} = {1,0.01,3};                             
-Mesh.Algorithm = 2;
-
diff --git a/benchmarks/2d/Square-Attr4.geo b/benchmarks/2d/Square-Attr4.geo
deleted file mode 100644
index e15277cc7318b8a048b6929fcc5ee66e98b9ab63..0000000000000000000000000000000000000000
--- a/benchmarks/2d/Square-Attr4.geo
+++ /dev/null
@@ -1,18 +0,0 @@
-/******************************               
-Square uniformly meshed               
-******************************/               
-lc = .149999;                
-Point(1) = {0.0,0.0,0,lc};                
-Point(2) = {1,0.0,0,lc};                
-Point(3) = {1,1,0,lc};                
-Point(4) = {0,1,0,lc};                
-Line(1) = {3,2};                
-Line(2) = {2,1};                
-Line(3) = {1,4};                
-Line(4) = {4,3};   
-Point(55) = {0.2,.5,0,lc};                 
-Line Loop(5) = {1,2,3,4};                
-Plane Surface(6) = {5};                
-Attractor Point {55} = {.01,.1,3.0};       
-Mesh.Algorithm = 2;
-
diff --git a/benchmarks/2d/conge.geo b/benchmarks/2d/conge.geo
deleted file mode 100644
index b7cb6024f36a6b422c713ffc6f31abac2ceb52ac..0000000000000000000000000000000000000000
--- a/benchmarks/2d/conge.geo
+++ /dev/null
@@ -1,80 +0,0 @@
-unit = 1.0e-02 ;
-
-e1 =  4.5 * unit ;
-e2 =  6.0 * unit / 2.0 ;
-e3 =  5.0 * unit / 2.0 ;
-h1 =  5.0 * unit ;
-h2 = 10.0 * unit ;
-h3 =  5.0 * unit ;
-h4 =  2.0 * unit ;
-h5 =  4.5 * unit ;
-R1 =  1.0 * unit ;
-R2 =  1.5 * unit ;
-r  =  1.0 * unit ;
-ccos = (-h5*R1+e2* (h5*h5+e2*e2-R1*R1)^0.5) / (h5*h5+e2*e2) ;
-ssin = ( 1.0 - ccos*ccos )^0.5 ;
-
-Lc1 = 0.01 ;
-Lc2 = 0.003 ;
-
-Point(1) = { -e1-e2, 0.0  , 0.0 , Lc1};
-Point(2) = { -e1-e2, h1   , 0.0 , Lc1};
-Point(3) = { -e3-r , h1   , 0.0 , Lc2};
-Point(4) = { -e3-r , h1+r , 0.0 , Lc2};
-Point(5) = { -e3   , h1+r , 0.0 , Lc2};
-Point(6) = { -e3   , h1+h2, 0.0 , Lc1};
-Point(7) = {  e3   , h1+h2, 0.0 , Lc1};
-Point(8) = {  e3   , h1+r , 0.0 , Lc2};
-Point(9) = {  e3+r , h1+r , 0.0 , Lc2};
-Point(10)= {  e3+r , h1   , 0.0 , Lc2};
-Point(11)= {  e1+e2, h1   , 0.0 , Lc1};
-Point(12)= {  e1+e2, 0.0  , 0.0 , Lc1};
-Point(13)= {  e2   , 0.0  , 0.0 , Lc1};
-
-Point(14)= {  R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(15)= {  0.0       , h5        , 0.0 , Lc2};
-Point(16)= { -R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(17)= { -e2        , 0.0       , 0.0 , Lc1};
-
-Point(18)= { -R2  , h1+h3   , 0.0 , Lc2};
-Point(19)= { -R2  , h1+h3+h4, 0.0 , Lc2};
-Point(20)= {  0.0 , h1+h3+h4, 0.0 , Lc2};
-Point(21)= {  R2  , h1+h3+h4, 0.0 , Lc2};
-Point(22)= {  R2  , h1+h3   , 0.0 , Lc2};
-Point(23)= {  0.0 , h1+h3   , 0.0 , Lc2};
-
-Point(24)= {  0 , h1+h3+h4+R2, 0.0 , Lc2};
-Point(25)= {  0 , h1+h3-R2,    0.0 , Lc2};
-
-Line(1)  = {1 ,17};    /* ux=uy=0 */
-Line(2)  = {17,16};
-Circle(3) = {14,15,16};
-Line(4)  = {14,13};
-Line(5)  = {13,12};    /* ux=uy=0 */
-Line(6)  = {12,11};
-Line(7)  = {11,10};
-Circle(8) = { 8, 9,10};
-Line(9)  = { 8, 7};
-Line(10) = { 7, 6};    /* T=10000 N */
-Line(11) = { 6, 5};
-Circle(12) = { 3, 4, 5};
-Line(13) = { 3, 2};
-Line(14) = { 2, 1};
-
-Line(15) = {18,19};
-Circle(16) = {21,20,24};
-Circle(17) = {24,20,19};
-Circle(18) = {18,23,25};
-Circle(19) = {25,23,22};
-Line(20) = {21,22};
-
-Line Loop(21) = {17,-15,18,19,-20,16};
-Plane Surface(22) = {21};
-Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10};
-Plane Surface(24) = {23,21};
-
-
-
-
-
-
diff --git a/benchmarks/2d/fissure.geo b/benchmarks/2d/fissure.geo
deleted file mode 100644
index 1b33e91c18129d5210ca91f18319cb14a0ac2ea1..0000000000000000000000000000000000000000
--- a/benchmarks/2d/fissure.geo
+++ /dev/null
@@ -1,18 +0,0 @@
-eps = 1.e-3 ;
-
-Point(1) = {-1,-1,0,.1} ;
-Point(2) = {-1,1,0,.1} ;
-Point(3) = {1,-1,0,.1} ;
-Point(4) = {1,1,0,.1} ;
-Point(5) = {-1,0,0,.06} ;
-Point(6) = {0,0,0,.03} ;
-Point(7) = {-1,0+eps,0,.06} ;
-Line(1) = {5,1};
-Line(2) = {1,3};
-Line(3) = {3,4};
-Line(4) = {4,2};
-Line(5) = {2,7};
-Line(6) = {7,6};
-Line(7) = {6,5};
-Line Loop(8) = {5,6,7,1,2,3,4};
-Plane Surface(9) = {8};
diff --git a/benchmarks/2d/function.geo b/benchmarks/2d/function.geo
deleted file mode 100644
index 54ce6fe371ebc182eabebc44a88473947e50c5e3..0000000000000000000000000000000000000000
--- a/benchmarks/2d/function.geo
+++ /dev/null
@@ -1,59 +0,0 @@
-x = 0;
-y = 0;
-r = 1;
-theloop = 0;
-
-Function myCircle
-  p1 = newp;
-  Point (p1) = {x,y,0,0.2};
-  p2 = newp;
-  Point (p2) = {r+x,y,0,0.2};
-  p3 = newp;
-  Point (p3) = {x,r+y,0,0.2};
-  p4 = newp;
-  Point (p4) = {-r+x,y,0,0.2};
-  p5 = newp;
-  Point (p5) = {x,-r+y,0,0.2};
-  c1 = newreg;
-  Circle (c1) = {p2,p1,p3};
-  c2 = newreg;
-  Circle (c2) = {p3,p1,p4};
-  c3 = newreg;
-  Circle (c3) = {p4,p1,p5};
-  c4 = newreg;
-  Circle (c4) = {p5,p1,p2};
-  theloop = newreg;
-  Line Loop (theloop) = {c1,c2,c3,c4};
-Return
-
-x = 2;
-y = 2;
-Call myCircle;
-/*loop,x,y and r should be parameters*/
-loop1 = theloop;
-x = -2;
-y = 2;
-Call myCircle;
-loop2 = theloop;
-x = 2;
-y = -2;
-Call myCircle;
-loop3 = theloop;
-x = -2;
-y = -2;
-Call myCircle;
-loop4 = theloop;
-
-r = 5;
-x = 0;
-y = 0;
-Call myCircle;
-loop5 = theloop;
-
-Plane Surface(newreg) = {loop5,loop4,loop3,loop2,loop1};
-Line(10000) = {6,11};
-Attractor Line {10000} = {1,.03,1};
-
-Mesh.Algorithm = 2 ; // This is the new 2D anisotropic algorithm
-
-
diff --git a/benchmarks/2d/runner_simple_2d.geo b/benchmarks/2d/runner_simple_2d.geo
deleted file mode 100644
index 4eaf6f51b1eb8685fe4fbcf37c5d0d7a005559d6..0000000000000000000000000000000000000000
--- a/benchmarks/2d/runner_simple_2d.geo
+++ /dev/null
@@ -1,119 +0,0 @@
-/*simple runner for 3d-studies;  07.07.1999/hm*/
-
-
-/*variables*/
-r=0.004;
-a=0.005;
-b=0.005;
-m=0.010;
-mh=0.020;
-
-h1=0.005;
-h2=0.005;
-h3=0.005;
-h4=0.005;
-hl = 0.012;
-f   =0.015;
-l   =0.040;
-
-lc1 = 0.001;
-
-/*points*/
-
-Point(1) = {-r,0.0,0.0,lc1};
-
-Point(2) = {0,0.0,0.0,lc1};
-
-Point(3) = {+r,0.0,0.0,lc1};
-Point(4) = {r+a,0.0,0.0,lc1};
-Point(5) = {r+a+b,0.0,0.0,lc1};
-Point(6) = {r+a+b,-h4,0.0,lc1};
-
-Point(11) = {-r,h1,0.0,lc1};
-
-Point(13) = {+r,h1,0.0,lc1};
-Point(14) = {r+a,h2,0.0,lc1};
-Point(15) = {r+a+b,h3,0.0,lc1};
-
-/*flange*/
-
-Point(25) = {r+a+b+f,0,0.0,lc1};
-Point(26) = {r+a+b+f,h3,0.0,lc1};
-Point(27) = {r+a+b+f,-h4,0.0,lc1};
-Point(28) = {r+a+b+f,-hl,0.0,lc1};
-
-/*laminate*/
-
-Point(30) = {r+a+b+f+l,0.0,0.0,lc1};
-Point(31) = {r+a+b+f+l,h3,0.0,lc1};
-Point(32) = {r+a+b+f+l,-h4,0.0,lc1};
-Point(33) = {r+a+b+f+l,-hl,0.0,lc1};
-
-/*lines*/
-
-Circle(100) = {1,2,3};
-
-Line(101) = {1,11};
-Line(102) = {11,13};
-Line(103) = {13,14};
-Line(104) = {14,15};
-Line(105) = {3,13};
-Line(106) = {3,4};
-Line(107) = {4,14};
-Line(108) = {4,5};
-Line(109) = {5,15};
-
-
-
-Line(110) = {15,26};
-Line(111) = {5,25};
-Line(112) = {6,27};
-Line(113) = {5,6};
-Line(114) = {26,25};
-Line(115) = {25,27};
-Line(116) = {26,31};
-Line(117) = {25,30};
-Line(118) = {27,32};
-Line(119) = {31,30};
-Line(120) = {30,32};
-
-Line(121) = {27,28};
-Line(122) = {28,33};
-Line(123) = {32,33};
-
-Line Loop(300) = {-102,-101,100,105};
-Plane Surface(301) = {300};
-Line Loop(400) = {107,-103,-105,106};
-Plane Surface(401) = {400};
-Line Loop(402) = {109,-104,-107,108};
-Plane Surface(403) = {402};
-
-
-Line Loop(404) = {-114,-110,-109,111};
-Plane Surface(405) = {404};
-Line Loop(406) = {-112,-113,111,115};
-Plane Surface(407) = {406};
-Line Loop(408) = {117,-119,-116,114};
-Plane Surface(409) = {408};
-Line Loop(410) = {118,-120,-117,115};
-Plane Surface(411) = {410};
-Line Loop(412) = {118,123,-122,-121};
-Plane Surface(413) = {412};
-
-/*mould*/
-
-Point(511) = {-m,h1,0.0,lc1};
-Point(512) = {-m,h1-mh,0.0,lc1};
-Point(533) = {r+a+b+f+l,h1-mh,0.0,lc1};
-
-Line(614) = {511,512};
-Line(615) = {511,11};
-Line(616) = {512,533};
-Line(617) = {533,33};
-/*
-Line Loop(618) = {-617,-616,-614,615,-101,100,106,108,113,112,121,122,-617,-616,-614,615,-101,100,106,108,113,112};*/
-
-Line Loop(618) = {-617,-616,-614,615,-101,100,106,108,113,112,121,122};
-Plane Surface(619) = {618};
-
-
diff --git a/benchmarks/2d/transfinite.geo b/benchmarks/2d/transfinite.geo
deleted file mode 100644
index a3a0e36fada48474f3755b1ac29a21557697d41b..0000000000000000000000000000000000000000
--- a/benchmarks/2d/transfinite.geo
+++ /dev/null
@@ -1,34 +0,0 @@
-
-// buggy with old mesh algo!
-
-l = .3;
-l2 = .03;
-Point(1) = {-2,-1,0,l};
-Point(2) = {-2,1,0,l2};
-Point(3) = {0,-1,0,l};
-Point(4) = {0,1,0,l};
-Point(5) = {-3,-2,0,l};
-Point(6) = {-3,2,0,l2};
-Point(7) = {1,-2,0,l};
-Point(8) = {1,2,0,l};
-
-Line(1) = {6,8};
-Line(2) = {8,7};
-Line(3) = {7,5};
-Line(4) = {5,6};
-Line(5) = {2,1};
-Line(6) = {1,3};
-Line(7) = {3,4};
-Line(8) = {4,2};
-
-Line Loop(9) = {5,6,7,8};
-Plane Surface(10) = {9};
-
-Line Loop(11) = {2,3,4,1};
-Plane Surface(12) = {11,9};
-
-Transfinite Line {5:8} = 10 Using Progression 5;
-
-Transfinite Surface{10} = {1,3,4,2};
-Recombine Surface {10} = 30;
-
diff --git a/benchmarks/2d/wing.geo b/benchmarks/2d/wing.geo
deleted file mode 100644
index a255c6694556f2e7a807cafc69810dd82695b0f0..0000000000000000000000000000000000000000
--- a/benchmarks/2d/wing.geo
+++ /dev/null
@@ -1,1081 +0,0 @@
-scale = 1 ;
-
-lc1 = 5.e-3 *scale ;
-lc2 = 1.e-2 *scale ;
-lc3 = 10 *scale ;
-
-/* l'aile */
-Point(3895) = {1.177410e-02*scale,-2.768003e-03*scale,0*scale,lc1};
-Point(3897) = {1.081196e-02*scale,-3.794565e-03*scale,0*scale,lc1};
-Point(3896) = {1.040081e-02*scale,-4.225326e-03*scale,0*scale,lc1};
-Point(3968) = {9.501183e-03*scale,-5.167856e-03*scale,0*scale,lc1};
-Point(3995) = {8.172335e-03*scale,-6.541147e-03*scale,0*scale,lc1};
-Point(4003) = {6.820756e-03*scale,-7.914438e-03*scale,0*scale,lc1};
-Point(3857) = {5.454371e-03*scale,-9.287729e-03*scale,0*scale,lc1};
-Point(3856) = {3.534352e-03*scale,-1.119762e-02*scale,0*scale,lc1};
-Point(3860) = {7.877699e-04*scale,-1.389559e-02*scale,0*scale,lc1};
-Point(3861) = {-1.958812e-03*scale,-1.658843e-02*scale,0*scale,lc1};
-Point(3863) = {-4.705394e-03*scale,-1.930092e-02*scale,0*scale,lc1};
-Point(3864) = {-7.451976e-03*scale,-2.206110e-02*scale,0*scale,lc1};
-Point(3865) = {-1.019856e-02*scale,-2.490134e-02*scale,0*scale,lc1};
-Point(3866) = {-1.294514e-02*scale,-2.785668e-02*scale,0*scale,lc1};
-Point(3867) = {-1.569172e-02*scale,-3.097311e-02*scale,0*scale,lc1};
-Point(3868) = {-1.819787e-02*scale,-3.400697e-02*scale,0*scale,lc1};
-Point(3869) = {-1.843830e-02*scale,-3.430929e-02*scale,0*scale,lc1};
-Point(3870) = {-2.032098e-02*scale,-3.675355e-02*scale,0*scale,lc1};
-Point(3871) = {-2.233602e-02*scale,-3.950013e-02*scale,0*scale,lc1};
-Point(3872) = {-2.428062e-02*scale,-4.224671e-02*scale,0*scale,lc1};
-Point(3977) = {-2.615522e-02*scale,-4.499330e-02*scale,0*scale,lc1};
-Point(3877) = {-2.795526e-02*scale,-4.773988e-02*scale,0*scale,lc1};
-Point(3876) = {-2.966457e-02*scale,-5.048646e-02*scale,0*scale,lc1};
-Point(3878) = {-3.128951e-02*scale,-5.323304e-02*scale,0*scale,lc1};
-Point(3934) = {-3.282722e-02*scale,-5.597962e-02*scale,0*scale,lc1};
-Point(3873) = {-3.427526e-02*scale,-5.872621e-02*scale,0*scale,lc1};
-Point(3874) = {-3.563187e-02*scale,-6.147279e-02*scale,0*scale,lc1};
-Point(3875) = {-3.689577e-02*scale,-6.421937e-02*scale,0*scale,lc1};
-Point(3935) = {-3.803475e-02*scale,-6.696595e-02*scale,0*scale,lc1};
-Point(3880) = {-3.906585e-02*scale,-6.971253e-02*scale,0*scale,lc1};
-Point(3879) = {-3.999980e-02*scale,-7.245912e-02*scale,0*scale,lc1};
-Point(3881) = {-4.084348e-02*scale,-7.520570e-02*scale,0*scale,lc1};
-Point(3936) = {-4.159737e-02*scale,-7.795228e-02*scale,0*scale,lc1};
-Point(3882) = {-4.219350e-02*scale,-8.069886e-02*scale,0*scale,lc1};
-Point(3883) = {-4.268262e-02*scale,-8.344544e-02*scale,0*scale,lc1};
-Point(3885) = {-4.302180e-02*scale,-8.619203e-02*scale,0*scale,lc1};
-Point(3884) = {-4.315754e-02*scale,-8.815942e-02*scale,0*scale,lc1};
-Point(1218) = {-4.315754e-02*scale,-8.893861e-02*scale,0*scale,lc1};
-Point(3933) = {-4.315754e-02*scale,-8.955185e-02*scale,0*scale,lc1};
-Point(3996) = {-4.314894e-02*scale,-9.031190e-02*scale,0*scale,lc1};
-Point(3989) = {-4.310538e-02*scale,-9.168519e-02*scale,0*scale,lc1};
-Point(3990) = {-4.298693e-02*scale,-9.305848e-02*scale,0*scale,lc1};
-Point(3978) = {-4.281442e-02*scale,-9.443177e-02*scale,0*scale,lc1};
-Point(3979) = {-4.254831e-02*scale,-9.580506e-02*scale,0*scale,lc1};
-Point(3974) = {-4.215142e-02*scale,-9.717835e-02*scale,0*scale,lc1};
-Point(3973) = {-4.166490e-02*scale,-9.855164e-02*scale,0*scale,lc1};
-Point(3963) = {-4.107412e-02*scale,-9.992494e-02*scale,0*scale,lc1};
-Point(3947) = {-4.041096e-02*scale,-1.011964e-01*scale,0*scale,lc1};
-Point(3948) = {-4.035707e-02*scale,-1.012982e-01*scale,0*scale,lc1};
-Point(3904) = {-3.903767e-02*scale,-1.033356e-01*scale,0*scale,lc1};
-Point(3903) = {-3.766438e-02*scale,-1.048133e-01*scale,0*scale,lc1};
-Point(3946) = {-3.629109e-02*scale,-1.058804e-01*scale,0*scale,lc1};
-Point(3902) = {-3.491780e-02*scale,-1.066897e-01*scale,0*scale,lc1};
-Point(3901) = {-3.354451e-02*scale,-1.073184e-01*scale,0*scale,lc1};
-Point(3900) = {-3.217121e-02*scale,-1.078168e-01*scale,0*scale,lc1};
-Point(3908) = {-3.079792e-02*scale,-1.081973e-01*scale,0*scale,lc1};
-Point(3907) = {-2.942463e-02*scale,-1.084688e-01*scale,0*scale,lc1};
-Point(3951) = {-2.805134e-02*scale,-1.086029e-01*scale,0*scale,lc1};
-Point(3950) = {-2.667805e-02*scale,-1.086423e-01*scale,0*scale,lc1};
-Point(3847) = {-2.580700e-02*scale,-1.086440e-01*scale,0*scale,lc1};
-Point(3949) = {-2.667805e-02*scale,-1.088853e-01*scale,0*scale,lc1};
-Point(3952) = {-2.805134e-02*scale,-1.092658e-01*scale,0*scale,lc1};
-Point(3905) = {-2.942463e-02*scale,-1.096463e-01*scale,0*scale,lc1};
-Point(3906) = {-3.079792e-02*scale,-1.100268e-01*scale,0*scale,lc1};
-Point(3909) = {-3.217121e-02*scale,-1.104020e-01*scale,0*scale,lc1};
-Point(3969) = {-3.354451e-02*scale,-1.107749e-01*scale,0*scale,lc1};
-Point(3970) = {-3.491780e-02*scale,-1.111477e-01*scale,0*scale,lc1};
-Point(3997) = {-3.629109e-02*scale,-1.115205e-01*scale,0*scale,lc1};
-Point(3998) = {-3.766438e-02*scale,-1.118690e-01*scale,0*scale,lc1};
-Point(4004) = {-3.903767e-02*scale,-1.122095e-01*scale,0*scale,lc1};
-Point(3959) = {-4.041096e-02*scale,-1.125499e-01*scale,0*scale,lc1};
-Point(3960) = {-4.315754e-02*scale,-1.131897e-01*scale,0*scale,lc1};
-Point(3972) = {-4.590412e-02*scale,-1.137699e-01*scale,0*scale,lc1};
-Point(3984) = {-4.865071e-02*scale,-1.143079e-01*scale,0*scale,lc1};
-Point(3988) = {-5.139729e-02*scale,-1.147970e-01*scale,0*scale,lc1};
-Point(3961) = {-5.414387e-02*scale,-1.152035e-01*scale,0*scale,lc1};
-Point(3962) = {-5.689045e-02*scale,-1.155501e-01*scale,0*scale,lc1};
-Point(3937) = {-5.963703e-02*scale,-1.157358e-01*scale,0*scale,lc1};
-Point(3938) = {-6.238362e-02*scale,-1.158519e-01*scale,0*scale,lc1};
-Point(3886) = {-6.513020e-02*scale,-1.158332e-01*scale,0*scale,lc1};
-Point(3887) = {-6.787678e-02*scale,-1.156607e-01*scale,0*scale,lc1};
-Point(3888) = {-7.062336e-02*scale,-1.152790e-01*scale,0*scale,lc1};
-Point(3993) = {-7.199665e-02*scale,-1.150098e-01*scale,0*scale,lc1};
-Point(3994) = {-7.336994e-02*scale,-1.146075e-01*scale,0*scale,lc1};
-Point(3971) = {-7.474324e-02*scale,-1.141776e-01*scale,0*scale,lc1};
-Point(3918) = {-7.611653e-02*scale,-1.135965e-01*scale,0*scale,lc1};
-Point(3919) = {-7.748982e-02*scale,-1.129165e-01*scale,0*scale,lc1};
-Point(3920) = {-7.886311e-02*scale,-1.121014e-01*scale,0*scale,lc1};
-Point(3956) = {-8.023640e-02*scale,-1.111186e-01*scale,0*scale,lc1};
-Point(3955) = {-8.047561e-02*scale,-1.109113e-01*scale,0*scale,lc1};
-Point(3965) = {-8.160969e-02*scale,-1.098434e-01*scale,0*scale,lc1};
-Point(3966) = {-8.189452e-02*scale,-1.095380e-01*scale,0*scale,lc1};
-Point(3910) = {-8.297356e-02*scale,-1.081647e-01*scale,0*scale,lc1};
-Point(3913) = {-8.376570e-02*scale,-1.067914e-01*scale,0*scale,lc1};
-Point(3912) = {-8.435627e-02*scale,-1.054263e-01*scale,0*scale,lc1};
-Point(3911) = {-8.435982e-02*scale,-1.054181e-01*scale,0*scale,lc1};
-Point(3914) = {-8.478803e-02*scale,-1.040448e-01*scale,0*scale,lc1};
-Point(3915) = {-8.503641e-02*scale,-1.026715e-01*scale,0*scale,lc1};
-Point(3916) = {-8.516945e-02*scale,-1.012982e-01*scale,0*scale,lc1};
-Point(3917) = {-8.522183e-02*scale,-9.992494e-02*scale,0*scale,lc1};
-Point(3953) = {-8.512327e-02*scale,-9.855164e-02*scale,0*scale,lc1};
-Point(3954) = {-8.495463e-02*scale,-9.717835e-02*scale,0*scale,lc1};
-Point(3964) = {-8.467545e-02*scale,-9.580506e-02*scale,0*scale,lc1};
-Point(3975) = {-8.433113e-02*scale,-9.443177e-02*scale,0*scale,lc1};
-Point(3992) = {-8.387660e-02*scale,-9.305848e-02*scale,0*scale,lc1};
-Point(3991) = {-8.341194e-02*scale,-9.168519e-02*scale,0*scale,lc1};
-Point(3999) = {-8.280629e-02*scale,-9.031190e-02*scale,0*scale,lc1};
-Point(3939) = {-8.220063e-02*scale,-8.893861e-02*scale,0*scale,lc1};
-Point(3967) = {-8.076693e-02*scale,-8.619203e-02*scale,0*scale,lc1};
-Point(3987) = {-7.916546e-02*scale,-8.344544e-02*scale,0*scale,lc1};
-Point(3985) = {-7.886311e-02*scale,-8.298081e-02*scale,0*scale,lc1};
-Point(3986) = {-7.737820e-02*scale,-8.069886e-02*scale,0*scale,lc1};
-Point(4002) = {-7.542111e-02*scale,-7.795228e-02*scale,0*scale,lc1};
-Point(3922) = {-7.335979e-02*scale,-7.520570e-02*scale,0*scale,lc1};
-Point(4005) = {-7.112105e-02*scale,-7.245912e-02*scale,0*scale,lc1};
-Point(3851) = {-6.873828e-02*scale,-6.971253e-02*scale,0*scale,lc1};
-Point(3850) = {-6.372231e-02*scale,-6.421937e-02*scale,0*scale,lc1};
-Point(3853) = {-5.963703e-02*scale,-6.001430e-02*scale,0*scale,lc1};
-Point(3852) = {-5.414387e-02*scale,-5.469298e-02*scale,0*scale,lc1};
-Point(3849) = {-4.865071e-02*scale,-4.961204e-02*scale,0*scale,lc1};
-Point(3848) = {-4.315754e-02*scale,-4.465740e-02*scale,0*scale,lc1};
-Point(3921) = {-3.766438e-02*scale,-3.985542e-02*scale,0*scale,lc1};
-Point(3983) = {-3.491780e-02*scale,-3.750843e-02*scale,0*scale,lc1};
-Point(3982) = {-3.217121e-02*scale,-3.519259e-02*scale,0*scale,lc1};
-Point(3976) = {-2.942463e-02*scale,-3.289435e-02*scale,0*scale,lc1};
-Point(3929) = {-2.744807e-02*scale,-3.126039e-02*scale,0*scale,lc1};
-Point(3958) = {-2.667805e-02*scale,-3.062383e-02*scale,0*scale,lc1};
-Point(3928) = {-2.411032e-02*scale,-2.851380e-02*scale,0*scale,lc1};
-Point(3957) = {-2.393147e-02*scale,-2.836765e-02*scale,0*scale,lc1};
-Point(3927) = {-2.118489e-02*scale,-2.612321e-02*scale,0*scale,lc1};
-Point(3926) = {-1.843830e-02*scale,-2.390843e-02*scale,0*scale,lc1};
-Point(3925) = {-1.569172e-02*scale,-2.170681e-02*scale,0*scale,lc1};
-Point(3924) = {-1.294514e-02*scale,-1.952576e-02*scale,0*scale,lc1};
-Point(3932) = {-1.040573e-02*scale,-1.752748e-02*scale,0*scale,lc1};
-Point(3931) = {-1.019856e-02*scale,-1.736495e-02*scale,0*scale,lc1};
-Point(3930) = {-7.451976e-03*scale,-1.521330e-02*scale,0*scale,lc1};
-Point(3923) = {-4.705394e-03*scale,-1.307794e-02*scale,0*scale,lc1};
-Point(3862) = {-1.958812e-03*scale,-1.095092e-02*scale,0*scale,lc1};
-Point(3859) = {1.960946e-04*scale,-9.287729e-03*scale,0*scale,lc1};
-Point(3858) = {7.877699e-04*scale,-8.831063e-03*scale,0*scale,lc1};
-Point(3855) = {3.534352e-03*scale,-6.728705e-03*scale,0*scale,lc1};
-Point(3854) = {6.280934e-03*scale,-4.633175e-03*scale,0*scale,lc1};
-Point(3945) = {7.386845e-03*scale,-3.794565e-03*scale,0*scale,lc1};
-Point(3944) = {7.654225e-03*scale,-3.591811e-03*scale,0*scale,lc1};
-Point(3899) = {9.027516e-03*scale,-2.550448e-03*scale,0*scale,lc1};
-Point(3898) = {1.040081e-02*scale,-1.509310e-03*scale,0*scale,lc1};
-Point(3894) = {1.177410e-02*scale,-4.686545e-04*scale,0*scale,lc1};
-Point(3890) = {1.282184e-02*scale,3.253082e-04*scale,0*scale,lc1};
-Point(3893) = {1.314739e-02*scale,5.720012e-04*scale,0*scale,lc1};
-Point(3941) = {1.463351e-02*scale,1.698599e-03*scale,0*scale,lc1};
-Point(4000) = {1.644012e-02*scale,3.071890e-03*scale,0*scale,lc1};
-Point(3980) = {1.824674e-02*scale,4.445181e-03*scale,0*scale,lc1};
-Point(3846) = {1.892400e-02*scale,4.960000e-03*scale,0*scale,lc1};
-Point(3981) = {1.843389e-02*scale,4.445181e-03*scale,0*scale,lc1};
-Point(4001) = {1.712649e-02*scale,3.071890e-03*scale,0*scale,lc1};
-Point(3942) = {1.584524e-02*scale,1.698599e-03*scale,0*scale,lc1};
-Point(3940) = {1.460138e-02*scale,3.253082e-04*scale,0*scale,lc1};
-Point(3889) = {1.452068e-02*scale,2.362167e-04*scale,0*scale,lc1};
-Point(3892) = {1.335131e-02*scale,-1.047983e-03*scale,0*scale,lc1};
-Point(3891) = {1.314739e-02*scale,-1.270371e-03*scale,0*scale,lc1};
-Point(3943) = {1.209204e-02*scale,-2.421274e-03*scale,0*scale,lc1};
-Point(4063) = {4.498368e-02*scale,-9.287729e-03*scale,0*scale,lc1};
-Point(4062) = {4.610574e-02*scale,-6.541147e-03*scale,0*scale,lc1};
-Point(4061) = {4.755089e-02*scale,-3.794565e-03*scale,0*scale,lc1};
-Point(4114) = {4.934166e-02*scale,-1.047983e-03*scale,0*scale,lc1};
-Point(4153) = {5.143154e-02*scale,1.698599e-03*scale,0*scale,lc1};
-Point(4178) = {5.390637e-02*scale,4.445181e-03*scale,0*scale,lc1};
-Point(4179) = {5.571941e-02*scale,6.252892e-03*scale,0*scale,lc1};
-Point(4191) = {5.846599e-02*scale,8.699713e-03*scale,0*scale,lc1};
-Point(4203) = {6.121257e-02*scale,1.103796e-02*scale,0*scale,lc1};
-Point(4109) = {6.350284e-02*scale,1.268493e-02*scale,0*scale,lc1};
-Point(4202) = {6.670574e-02*scale,1.498818e-02*scale,0*scale,lc1};
-Point(4199) = {7.170787e-02*scale,1.817809e-02*scale,0*scale,lc1};
-Point(4201) = {7.219890e-02*scale,1.846566e-02*scale,0*scale,lc1};
-Point(4200) = {7.769207e-02*scale,2.168274e-02*scale,0*scale,lc1};
-Point(4100) = {8.318523e-02*scale,2.447113e-02*scale,0*scale,lc1};
-Point(4099) = {9.417156e-02*scale,2.953992e-02*scale,0*scale,lc1};
-Point(4045) = {1.051579e-01*scale,3.374477e-02*scale,0*scale,lc1};
-Point(4044) = {1.161442e-01*scale,3.745387e-02*scale,0*scale,lc1};
-Point(4043) = {1.271305e-01*scale,4.084705e-02*scale,0*scale,lc1};
-Point(4147) = {1.381169e-01*scale,4.362166e-02*scale,0*scale,lc1};
-Point(4146) = {1.491032e-01*scale,4.590535e-02*scale,0*scale,lc1};
-Point(4180) = {1.600895e-01*scale,4.775547e-02*scale,0*scale,lc1};
-Point(4167) = {1.710759e-01*scale,4.909090e-02*scale,0*scale,lc1};
-Point(4166) = {1.820622e-01*scale,5.028654e-02*scale,0*scale,lc1};
-Point(4134) = {1.930485e-01*scale,5.118303e-02*scale,0*scale,lc1};
-Point(4133) = {2.040348e-01*scale,5.209637e-02*scale,0*scale,lc1};
-Point(4098) = {2.150212e-01*scale,5.304431e-02*scale,0*scale,lc1};
-Point(4097) = {2.260075e-01*scale,5.389186e-02*scale,0*scale,lc1};
-Point(4042) = {2.369938e-01*scale,5.466596e-02*scale,0*scale,lc1};
-Point(4041) = {2.479802e-01*scale,5.535583e-02*scale,0*scale,lc1};
-Point(4040) = {2.589665e-01*scale,5.602171e-02*scale,0*scale,lc1};
-Point(4095) = {2.699528e-01*scale,5.660820e-02*scale,0*scale,lc1};
-Point(4096) = {2.809391e-01*scale,5.717080e-02*scale,0*scale,lc1};
-Point(4132) = {2.919255e-01*scale,5.768210e-02*scale,0*scale,lc1};
-Point(4131) = {3.029118e-01*scale,5.816077e-02*scale,0*scale,lc1};
-Point(4165) = {3.138981e-01*scale,5.861410e-02*scale,0*scale,lc1};
-Point(4164) = {3.248844e-01*scale,5.902748e-02*scale,0*scale,lc1};
-Point(4163) = {3.358708e-01*scale,5.942876e-02*scale,0*scale,lc1};
-Point(4130) = {3.468571e-01*scale,5.978313e-02*scale,0*scale,lc1};
-Point(4129) = {3.578434e-01*scale,6.012088e-02*scale,0*scale,lc1};
-Point(4094) = {3.688298e-01*scale,6.041918e-02*scale,0*scale,lc1};
-Point(4093) = {3.798161e-01*scale,6.068571e-02*scale,0*scale,lc1};
-Point(4039) = {3.908024e-01*scale,6.092523e-02*scale,0*scale,lc1};
-Point(4038) = {4.017887e-01*scale,6.111444e-02*scale,0*scale,lc1};
-Point(4037) = {4.127751e-01*scale,6.128792e-02*scale,0*scale,lc1};
-Point(4092) = {4.237614e-01*scale,6.139510e-02*scale,0*scale,lc1};
-Point(4091) = {4.347477e-01*scale,6.148330e-02*scale,0*scale,lc1};
-Point(4128) = {4.457341e-01*scale,6.152051e-02*scale,0*scale,lc1};
-Point(4127) = {4.567204e-01*scale,6.152534e-02*scale,0*scale,lc1};
-Point(4162) = {4.677067e-01*scale,6.149964e-02*scale,0*scale,lc1};
-Point(4161) = {4.786930e-01*scale,6.143130e-02*scale,0*scale,lc1};
-Point(4183) = {4.896794e-01*scale,6.134928e-02*scale,0*scale,lc1};
-Point(4160) = {5.006657e-01*scale,6.120560e-02*scale,0*scale,lc1};
-Point(4159) = {5.116520e-01*scale,6.104561e-02*scale,0*scale,lc1};
-Point(4126) = {5.226384e-01*scale,6.083535e-02*scale,0*scale,lc1};
-Point(4125) = {5.336247e-01*scale,6.058889e-02*scale,0*scale,lc1};
-Point(4088) = {5.446110e-01*scale,6.030455e-02*scale,0*scale,lc1};
-Point(4087) = {5.555973e-01*scale,5.996460e-02*scale,0*scale,lc1};
-Point(4033) = {5.665837e-01*scale,5.960434e-02*scale,0*scale,lc1};
-Point(4032) = {5.775700e-01*scale,5.915575e-02*scale,0*scale,lc1};
-Point(4031) = {5.885563e-01*scale,5.867545e-02*scale,0*scale,lc1};
-Point(4086) = {5.995427e-01*scale,5.809113e-02*scale,0*scale,lc1};
-Point(4085) = {6.105290e-01*scale,5.746759e-02*scale,0*scale,lc1};
-Point(4124) = {6.215153e-01*scale,5.679937e-02*scale,0*scale,lc1};
-Point(4123) = {6.325016e-01*scale,5.616104e-02*scale,0*scale,lc1};
-Point(4158) = {6.434880e-01*scale,5.553466e-02*scale,0*scale,lc1};
-Point(4157) = {6.544743e-01*scale,5.490460e-02*scale,0*scale,lc1};
-Point(4156) = {6.654606e-01*scale,5.425221e-02*scale,0*scale,lc1};
-Point(4122) = {6.764469e-01*scale,5.351456e-02*scale,0*scale,lc1};
-Point(4121) = {6.874333e-01*scale,5.273401e-02*scale,0*scale,lc1};
-Point(4081) = {6.984196e-01*scale,5.190181e-02*scale,0*scale,lc1};
-Point(4080) = {7.094059e-01*scale,5.101347e-02*scale,0*scale,lc1};
-Point(4020) = {7.203923e-01*scale,5.010133e-02*scale,0*scale,lc1};
-Point(4019) = {7.313786e-01*scale,4.909498e-02*scale,0*scale,lc1};
-Point(4018) = {7.423649e-01*scale,4.806316e-02*scale,0*scale,lc1};
-Point(4143) = {7.533512e-01*scale,4.694984e-02*scale,0*scale,lc1};
-Point(4118) = {7.643376e-01*scale,4.579371e-02*scale,0*scale,lc1};
-Point(4022) = {7.753239e-01*scale,4.458624e-02*scale,0*scale,lc1};
-Point(4016) = {7.863102e-01*scale,4.330843e-02*scale,0*scale,lc1};
-Point(4015) = {7.972966e-01*scale,4.200167e-02*scale,0*scale,lc1};
-Point(4011) = {8.082829e-01*scale,4.058146e-02*scale,0*scale,lc1};
-Point(4010) = {8.192692e-01*scale,3.912968e-02*scale,0*scale,lc1};
-Point(4009) = {8.302555e-01*scale,3.758209e-02*scale,0*scale,lc1};
-Point(4219) = {8.357487e-01*scale,3.680830e-02*scale,0*scale,lc1};
-Point(4177) = {8.412419e-01*scale,3.598390e-02*scale,0*scale,lc1};
-Point(4176) = {8.467350e-01*scale,3.515767e-02*scale,0*scale,lc1};
-Point(4149) = {8.494816e-01*scale,3.474456e-02*scale,0*scale,lc1};
-Point(4059) = {8.522282e-01*scale,3.433145e-02*scale,0*scale,lc1};
-Point(4058) = {8.549748e-01*scale,3.391833e-02*scale,0*scale,lc1};
-Point(4055) = {8.577214e-01*scale,3.349214e-02*scale,0*scale,lc1};
-Point(4113) = {8.604679e-01*scale,3.306571e-02*scale,0*scale,lc1};
-Point(4110) = {8.632145e-01*scale,3.263928e-02*scale,0*scale,lc1};
-Point(4213) = {8.659611e-01*scale,3.221285e-02*scale,0*scale,lc1};
-Point(4210) = {8.687077e-01*scale,3.178643e-02*scale,0*scale,lc1};
-Point(4217) = {8.714543e-01*scale,3.136000e-02*scale,0*scale,lc1};
-Point(4006) = {8.740950e-01*scale,3.095000e-02*scale,0*scale,lc1};
-Point(4218) = {8.714543e-01*scale,3.095677e-02*scale,0*scale,lc1};
-Point(4211) = {8.687077e-01*scale,3.096380e-02*scale,0*scale,lc1};
-Point(4212) = {8.659611e-01*scale,3.097084e-02*scale,0*scale,lc1};
-Point(4111) = {8.632145e-01*scale,3.097787e-02*scale,0*scale,lc1};
-Point(4112) = {8.604679e-01*scale,3.098491e-02*scale,0*scale,lc1};
-Point(4056) = {8.577214e-01*scale,3.099195e-02*scale,0*scale,lc1};
-Point(4057) = {8.549748e-01*scale,3.099898e-02*scale,0*scale,lc1};
-Point(4060) = {8.522282e-01*scale,3.100602e-02*scale,0*scale,lc1};
-Point(4148) = {8.494816e-01*scale,3.101305e-02*scale,0*scale,lc1};
-Point(4150) = {8.467350e-01*scale,3.102009e-02*scale,0*scale,lc1};
-Point(4208) = {8.439885e-01*scale,3.102712e-02*scale,0*scale,lc1};
-Point(4209) = {8.412419e-01*scale,3.103416e-02*scale,0*scale,lc1};
-Point(4215) = {8.357487e-01*scale,3.104823e-02*scale,0*scale,lc1};
-Point(4216) = {8.302555e-01*scale,3.106230e-02*scale,0*scale,lc1};
-Point(4220) = {8.247624e-01*scale,3.107638e-02*scale,0*scale,lc1};
-Point(4012) = {8.192692e-01*scale,3.109045e-02*scale,0*scale,lc1};
-Point(4013) = {8.082829e-01*scale,3.111859e-02*scale,0*scale,lc1};
-Point(4014) = {7.972966e-01*scale,3.114674e-02*scale,0*scale,lc1};
-Point(4017) = {7.863102e-01*scale,3.117488e-02*scale,0*scale,lc1};
-Point(4021) = {7.753239e-01*scale,3.120302e-02*scale,0*scale,lc1};
-Point(4023) = {7.643376e-01*scale,3.123117e-02*scale,0*scale,lc1};
-Point(4117) = {7.533512e-01*scale,3.125931e-02*scale,0*scale,lc1};
-Point(4082) = {7.423649e-01*scale,3.128745e-02*scale,0*scale,lc1};
-Point(4083) = {7.313786e-01*scale,3.131560e-02*scale,0*scale,lc1};
-Point(4024) = {7.203923e-01*scale,3.134374e-02*scale,0*scale,lc1};
-Point(4025) = {7.094059e-01*scale,3.137188e-02*scale,0*scale,lc1};
-Point(4007) = {6.999910e-01*scale,3.139600e-02*scale,0*scale,lc1};
-Point(4026) = {6.999910e-01*scale,2.367126e-02*scale,0*scale,lc1};
-Point(4027) = {6.999910e-01*scale,1.268493e-02*scale,0*scale,lc1};
-Point(4028) = {6.999910e-01*scale,1.698599e-03*scale,0*scale,lc1};
-Point(4029) = {6.999910e-01*scale,-9.287729e-03*scale,0*scale,lc1};
-Point(4008) = {6.999910e-01*scale,-1.722400e-02*scale,0*scale,lc1};
-Point(4030) = {6.984196e-01*scale,-1.751626e-02*scale,0*scale,lc1};
-Point(4084) = {6.874333e-01*scale,-1.955960e-02*scale,0*scale,lc1};
-Point(4194) = {6.764469e-01*scale,-2.159776e-02*scale,0*scale,lc1};
-Point(4195) = {6.654606e-01*scale,-2.362865e-02*scale,0*scale,lc1};
-Point(4154) = {6.544743e-01*scale,-2.588904e-02*scale,0*scale,lc1};
-Point(4155) = {6.434880e-01*scale,-2.825320e-02*scale,0*scale,lc1};
-Point(4119) = {6.325016e-01*scale,-3.016078e-02*scale,0*scale,lc1};
-Point(4120) = {6.215153e-01*scale,-3.200586e-02*scale,0*scale,lc1};
-Point(4089) = {6.105290e-01*scale,-3.369569e-02*scale,0*scale,lc1};
-Point(4090) = {5.995427e-01*scale,-3.534073e-02*scale,0*scale,lc1};
-Point(4034) = {5.885563e-01*scale,-3.694183e-02*scale,0*scale,lc1};
-Point(4035) = {5.775700e-01*scale,-3.852074e-02*scale,0*scale,lc1};
-Point(4036) = {5.665837e-01*scale,-4.009157e-02*scale,0*scale,lc1};
-Point(4144) = {5.555973e-01*scale,-4.161619e-02*scale,0*scale,lc1};
-Point(4192) = {5.446110e-01*scale,-4.311363e-02*scale,0*scale,lc1};
-Point(4193) = {5.336247e-01*scale,-4.454372e-02*scale,0*scale,lc1};
-Point(4184) = {5.226384e-01*scale,-4.589904e-02*scale,0*scale,lc1};
-Point(4185) = {5.116520e-01*scale,-4.719211e-02*scale,0*scale,lc1};
-Point(4168) = {5.006657e-01*scale,-4.834107e-02*scale,0*scale,lc1};
-Point(4169) = {4.896794e-01*scale,-4.944199e-02*scale,0*scale,lc1};
-Point(4135) = {4.786930e-01*scale,-5.032590e-02*scale,0*scale,lc1};
-Point(4136) = {4.677067e-01*scale,-5.113121e-02*scale,0*scale,lc1};
-Point(4101) = {4.567204e-01*scale,-5.175527e-02*scale,0*scale,lc1};
-Point(4102) = {4.457341e-01*scale,-5.227269e-02*scale,0*scale,lc1};
-Point(4049) = {4.347477e-01*scale,-5.270239e-02*scale,0*scale,lc1};
-Point(4050) = {4.237614e-01*scale,-5.305741e-02*scale,0*scale,lc1};
-Point(4051) = {4.127751e-01*scale,-5.339040e-02*scale,0*scale,lc1};
-Point(4103) = {4.017887e-01*scale,-5.365720e-02*scale,0*scale,lc1};
-Point(4104) = {3.908024e-01*scale,-5.390137e-02*scale,0*scale,lc1};
-Point(4137) = {3.798161e-01*scale,-5.408775e-02*scale,0*scale,lc1};
-Point(4138) = {3.688298e-01*scale,-5.423035e-02*scale,0*scale,lc1};
-Point(4170) = {3.578434e-01*scale,-5.433335e-02*scale,0*scale,lc1};
-Point(4171) = {3.468571e-01*scale,-5.436941e-02*scale,0*scale,lc1};
-Point(4186) = {3.358708e-01*scale,-5.438425e-02*scale,0*scale,lc1};
-Point(4172) = {3.248844e-01*scale,-5.431051e-02*scale,0*scale,lc1};
-Point(4173) = {3.138981e-01*scale,-5.421116e-02*scale,0*scale,lc1};
-Point(4139) = {3.029118e-01*scale,-5.403703e-02*scale,0*scale,lc1};
-Point(4140) = {2.919255e-01*scale,-5.379680e-02*scale,0*scale,lc1};
-Point(4105) = {2.809391e-01*scale,-5.349015e-02*scale,0*scale,lc1};
-Point(4106) = {2.699528e-01*scale,-5.307623e-02*scale,0*scale,lc1};
-Point(4052) = {2.589665e-01*scale,-5.262516e-02*scale,0*scale,lc1};
-Point(4053) = {2.479802e-01*scale,-5.205332e-02*scale,0*scale,lc1};
-Point(4054) = {2.369938e-01*scale,-5.145659e-02*scale,0*scale,lc1};
-Point(4107) = {2.260075e-01*scale,-5.078306e-02*scale,0*scale,lc1};
-Point(4108) = {2.150212e-01*scale,-5.007146e-02*scale,0*scale,lc1};
-Point(4141) = {2.040348e-01*scale,-4.931867e-02*scale,0*scale,lc1};
-Point(4142) = {1.930485e-01*scale,-4.849150e-02*scale,0*scale,lc1};
-Point(4174) = {1.820622e-01*scale,-4.763665e-02*scale,0*scale,lc1};
-Point(4175) = {1.710759e-01*scale,-4.665625e-02*scale,0*scale,lc1};
-Point(4187) = {1.600895e-01*scale,-4.564614e-02*scale,0*scale,lc1};
-Point(4188) = {1.491032e-01*scale,-4.455428e-02*scale,0*scale,lc1};
-Point(4145) = {1.381169e-01*scale,-4.339482e-02*scale,0*scale,lc1};
-Point(4046) = {1.271305e-01*scale,-4.218155e-02*scale,0*scale,lc1};
-Point(4047) = {1.161442e-01*scale,-4.082776e-02*scale,0*scale,lc1};
-Point(4048) = {1.051579e-01*scale,-3.939290e-02*scale,0*scale,lc1};
-Point(4196) = {9.966472e-02*scale,-3.862964e-02*scale,0*scale,lc1};
-Point(4197) = {9.417156e-02*scale,-3.788513e-02*scale,0*scale,lc1};
-Point(4198) = {8.867839e-02*scale,-3.720163e-02*scale,0*scale,lc1};
-Point(4189) = {8.318523e-02*scale,-3.651554e-02*scale,0*scale,lc1};
-Point(4190) = {7.769207e-02*scale,-3.569174e-02*scale,0*scale,lc1};
-Point(4214) = {7.494548e-02*scale,-3.527985e-02*scale,0*scale,lc1};
-Point(4181) = {7.219890e-02*scale,-3.481687e-02*scale,0*scale,lc1};
-Point(4182) = {6.945232e-02*scale,-3.430639e-02*scale,0*scale,lc1};
-Point(4151) = {6.670574e-02*scale,-3.379591e-02*scale,0*scale,lc1};
-Point(4152) = {6.395916e-02*scale,-3.322033e-02*scale,0*scale,lc1};
-Point(4064) = {6.121257e-02*scale,-3.263264e-02*scale,0*scale,lc1};
-Point(4065) = {5.846599e-02*scale,-3.189105e-02*scale,0*scale,lc1};
-Point(4066) = {5.635416e-02*scale,-3.126039e-02*scale,0*scale,lc1};
-Point(4205) = {5.434612e-02*scale,-3.049426e-02*scale,0*scale,lc1};
-Point(4206) = {5.297283e-02*scale,-2.986940e-02*scale,0*scale,lc1};
-Point(4207) = {5.159954e-02*scale,-2.914883e-02*scale,0*scale,lc1};
-Point(4072) = {5.022625e-02*scale,-2.824438e-02*scale,0*scale,lc1};
-Point(4074) = {4.885296e-02*scale,-2.716087e-02*scale,0*scale,lc1};
-Point(4073) = {4.883074e-02*scale,-2.714051e-02*scale,0*scale,lc1};
-Point(4076) = {4.747966e-02*scale,-2.578824e-02*scale,0*scale,lc1};
-Point(4075) = {4.746129e-02*scale,-2.576722e-02*scale,0*scale,lc1};
-Point(4079) = {4.639274e-02*scale,-2.439393e-02*scale,0*scale,lc1};
-Point(4078) = {4.561283e-02*scale,-2.302064e-02*scale,0*scale,lc1};
-Point(4077) = {4.500573e-02*scale,-2.164735e-02*scale,0*scale,lc1};
-Point(4068) = {4.450243e-02*scale,-2.027406e-02*scale,0*scale,lc1};
-Point(4067) = {4.415104e-02*scale,-1.890077e-02*scale,0*scale,lc1};
-Point(4069) = {4.402927e-02*scale,-1.752748e-02*scale,0*scale,lc1};
-Point(4070) = {4.404617e-02*scale,-1.615418e-02*scale,0*scale,lc1};
-Point(4071) = {4.411753e-02*scale,-1.478089e-02*scale,0*scale,lc1};
-Point(4115) = {4.421802e-02*scale,-1.340760e-02*scale,0*scale,lc1};
-Point(4116) = {4.435615e-02*scale,-1.203431e-02*scale,0*scale,lc1};
-Point(4204) = {4.461695e-02*scale,-1.066102e-02*scale,0*scale,lc1};
-
-/* la boite */
-
-Point(11) = {4.552264e+01*scale,-2.254225e+01*scale,0*scale,lc3};
-Point(2233) = {4.552264e+01*scale,-1.129225e+01*scale,0*scale,lc3};
-Point(5) = {4.552264e+01*scale,-4.224671e-02*scale,0*scale,lc3};
-Point(2236) = {4.552264e+01*scale,1.120775e+01*scale,0*scale,lc3};
-Point(14) = {4.552264e+01*scale,2.245775e+01*scale,0*scale,lc3};
-Point(2) = {4.552264e+01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(15) = {2.302264e+01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(2301) = {1.177264e+01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(6) = {5.226384e-01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(2304) = {-1.072736e+01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(18) = {-2.197736e+01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(3) = {-4.447736e+01*scale,4.495775e+01*scale,0*scale,lc3};
-Point(19) = {-4.447736e+01*scale,2.245775e+01*scale,0*scale,lc3};
-Point(2240) = {-4.447736e+01*scale,1.120775e+01*scale,0*scale,lc3};
-Point(7) = {-4.447736e+01*scale,-4.224671e-02*scale,0*scale,lc3};
-Point(2243) = {-4.447736e+01*scale,-1.129225e+01*scale,0*scale,lc3};
-Point(22) = {-4.447736e+01*scale,-2.254225e+01*scale,0*scale,lc3};
-Point(4) = {-4.447736e+01*scale,-4.504225e+01*scale,0*scale,lc3};
-Point(23) = {-2.197736e+01*scale,-4.504225e+01*scale,0*scale,lc3};
-Point(2317) = {-1.072736e+01*scale,-4.504225e+01*scale,0*scale,lc3};
-Point(8) = {5.226384e-01*scale,-4.504225e+01*scale,0*scale,lc3};
-Point(2297) = {1.177264e+01*scale,-4.504225e+01*scale,0*scale,lc3};
-Point(10) = {2.302264e+01*scale,-4.504225e+01*scale,0*scale,lc3};
-Point(1) = {4.552264e+01*scale,-4.504225e+01*scale,0*scale,lc3};
-
-/* le flap */
-
-Point(4298) = {1.125732e+00*scale,-1.356305e-01*scale,0*scale,lc2};
-Point(4297) = {1.128473e+00*scale,-1.383771e-01*scale,0*scale,lc2};
-Point(4222) = {1.130511e+00*scale,-1.404190e-01*scale,0*scale,lc2};
-Point(4250) = {1.130200e+00*scale,-1.411237e-01*scale,0*scale,lc2};
-Point(4252) = {1.128987e+00*scale,-1.438702e-01*scale,0*scale,lc2};
-Point(4221) = {1.128033e+00*scale,-1.460320e-01*scale,0*scale,lc2};
-Point(4251) = {1.126886e+00*scale,-1.450775e-01*scale,0*scale,lc2};
-Point(4299) = {1.124140e+00*scale,-1.427912e-01*scale,0*scale,lc2};
-Point(4335) = {1.121393e+00*scale,-1.405048e-01*scale,0*scale,lc2};
-Point(4337) = {1.118647e+00*scale,-1.382318e-01*scale,0*scale,lc2};
-Point(4267) = {1.115900e+00*scale,-1.359746e-01*scale,0*scale,lc2};
-Point(4294) = {1.115481e+00*scale,-1.356305e-01*scale,0*scale,lc2};
-Point(4269) = {1.110407e+00*scale,-1.315213e-01*scale,0*scale,lc2};
-Point(4233) = {1.104914e+00*scale,-1.272651e-01*scale,0*scale,lc2};
-Point(4234) = {1.099421e+00*scale,-1.231333e-01*scale,0*scale,lc2};
-Point(4273) = {1.093927e+00*scale,-1.190696e-01*scale,0*scale,lc2};
-Point(4293) = {1.088434e+00*scale,-1.150965e-01*scale,0*scale,lc2};
-Point(4314) = {1.082941e+00*scale,-1.112096e-01*scale,0*scale,lc2};
-Point(4317) = {1.077448e+00*scale,-1.073829e-01*scale,0*scale,lc2};
-Point(4318) = {1.071955e+00*scale,-1.037168e-01*scale,0*scale,lc2};
-Point(4274) = {1.066462e+00*scale,-1.001266e-01*scale,0*scale,lc2};
-Point(4235) = {1.060968e+00*scale,-9.664561e-02*scale,0*scale,lc2};
-Point(4236) = {1.055475e+00*scale,-9.329373e-02*scale,0*scale,lc2};
-Point(4237) = {1.049982e+00*scale,-8.999964e-02*scale,0*scale,lc2};
-Point(4301) = {1.044489e+00*scale,-8.685139e-02*scale,0*scale,lc2};
-Point(4319) = {1.038996e+00*scale,-8.375978e-02*scale,0*scale,lc2};
-Point(4321) = {1.033503e+00*scale,-8.073620e-02*scale,0*scale,lc2};
-Point(4320) = {1.033435e+00*scale,-8.069886e-02*scale,0*scale,lc2};
-Point(4322) = {1.028009e+00*scale,-7.778268e-02*scale,0*scale,lc2};
-Point(4347) = {1.022516e+00*scale,-7.485902e-02*scale,0*scale,lc2};
-Point(4323) = {1.017023e+00*scale,-7.206071e-02*scale,0*scale,lc2};
-Point(4324) = {1.011530e+00*scale,-6.928798e-02*scale,0*scale,lc2};
-Point(4325) = {1.006037e+00*scale,-6.656447e-02*scale,0*scale,lc2};
-Point(4276) = {1.000544e+00*scale,-6.390345e-02*scale,0*scale,lc2};
-
-Point(4238) = {9.950505e-01*scale,-6.128188e-02*scale,0*scale,lc2};
-Point(4240) = {9.895573e-01*scale,-5.875476e-02*scale,0*scale,lc2};
-Point(4239) = {9.894949e-01*scale,-5.872621e-02*scale,0*scale,lc2};
-Point(4241) = {9.840641e-01*scale,-5.625125e-02*scale,0*scale,lc2};
-Point(4277) = {9.785710e-01*scale,-5.382099e-02*scale,0*scale,lc2};
-Point(4326) = {9.730778e-01*scale,-5.141086e-02*scale,0*scale,lc2};
-Point(4327) = {9.675846e-01*scale,-4.903782e-02*scale,0*scale,lc2};
-Point(4328) = {9.620915e-01*scale,-4.670806e-02*scale,0*scale,lc2};
-Point(4350) = {9.565983e-01*scale,-4.440955e-02*scale,0*scale,lc2};
-Point(4348) = {9.511052e-01*scale,-4.217563e-02*scale,0*scale,lc2};
-Point(4349) = {9.456120e-01*scale,-3.995849e-02*scale,0*scale,lc2};
-Point(4332) = {9.401188e-01*scale,-3.778658e-02*scale,0*scale,lc2};
-Point(4333) = {9.346257e-01*scale,-3.563417e-02*scale,0*scale,lc2};
-Point(4334) = {9.291325e-01*scale,-3.354304e-02*scale,0*scale,lc2};
-Point(4278) = {9.236393e-01*scale,-3.147155e-02*scale,0*scale,lc2};
-Point(4247) = {9.181462e-01*scale,-2.942051e-02*scale,0*scale,lc2};
-Point(4248) = {9.126530e-01*scale,-2.741688e-02*scale,0*scale,lc2};
-Point(4249) = {9.071598e-01*scale,-2.541811e-02*scale,0*scale,lc2};
-Point(4282) = {9.016667e-01*scale,-2.339436e-02*scale,0*scale,lc2};
-Point(4283) = {8.961735e-01*scale,-2.121581e-02*scale,0*scale,lc2};
-Point(4341) = {8.934269e-01*scale,-2.008894e-02*scale,0*scale,lc2};
-Point(4342) = {8.906803e-01*scale,-1.868991e-02*scale,0*scale,lc2};
-Point(4343) = {8.879338e-01*scale,-1.729088e-02*scale,0*scale,lc2};
-Point(4289) = {8.851872e-01*scale,-1.539587e-02*scale,0*scale,lc2};
-Point(4290) = {8.824406e-01*scale,-1.328983e-02*scale,0*scale,lc2};
-Point(4286) = {8.796940e-01*scale,-1.068337e-02*scale,0*scale,lc2};
-Point(4255) = {8.785175e-01*scale,-9.287729e-03*scale,0*scale,lc2};
-Point(4257) = {8.763537e-01*scale,-6.541147e-03*scale,0*scale,lc2};
-Point(4256) = {8.745583e-01*scale,-3.794565e-03*scale,0*scale,lc2};
-Point(4346) = {8.737982e-01*scale,-2.421274e-03*scale,0*scale,lc2};
-Point(4288) = {8.731375e-01*scale,-1.047983e-03*scale,0*scale,lc2};
-Point(4287) = {8.725645e-01*scale,3.253082e-04*scale,0*scale,lc2};
-Point(4260) = {8.721474e-01*scale,1.698599e-03*scale,0*scale,lc2};
-Point(4259) = {8.718264e-01*scale,3.071890e-03*scale,0*scale,lc2};
-Point(4258) = {8.716296e-01*scale,4.445181e-03*scale,0*scale,lc2};
-Point(4262) = {8.715751e-01*scale,5.818472e-03*scale,0*scale,lc2};
-Point(4261) = {8.716587e-01*scale,7.191763e-03*scale,0*scale,lc2};
-Point(4264) = {8.718582e-01*scale,8.565054e-03*scale,0*scale,lc2};
-Point(4263) = {8.721688e-01*scale,9.938345e-03*scale,0*scale,lc2};
-Point(4265) = {8.726207e-01*scale,1.131164e-02*scale,0*scale,lc2};
-Point(4266) = {8.732553e-01*scale,1.268493e-02*scale,0*scale,lc2};
-Point(4303) = {8.741084e-01*scale,1.405822e-02*scale,0*scale,lc2};
-Point(4302) = {8.742009e-01*scale,1.417564e-02*scale,0*scale,lc2};
-Point(4304) = {8.752094e-01*scale,1.543151e-02*scale,0*scale,lc2};
-Point(4305) = {8.755741e-01*scale,1.580615e-02*scale,0*scale,lc2};
-Point(4306) = {8.765464e-01*scale,1.680480e-02*scale,0*scale,lc2};
-Point(4307) = {8.769474e-01*scale,1.712646e-02*scale,0*scale,lc2};
-Point(4308) = {8.783004e-01*scale,1.817809e-02*scale,0*scale,lc2};
-Point(4309) = {8.783207e-01*scale,1.819390e-02*scale,0*scale,lc2};
-Point(4345) = {8.796940e-01*scale,1.898483e-02*scale,0*scale,lc2};
-Point(4344) = {8.810673e-01*scale,1.969096e-02*scale,0*scale,lc2};
-Point(4254) = {8.824406e-01*scale,2.018966e-02*scale,0*scale,lc2};
-Point(4253) = {8.851872e-01*scale,2.092940e-02*scale,0*scale,lc2};
-Point(4285) = {8.879338e-01*scale,2.136484e-02*scale,0*scale,lc2};
-Point(4284) = {8.906803e-01*scale,2.153023e-02*scale,0*scale,lc2};
-Point(4340) = {8.934269e-01*scale,2.149455e-02*scale,0*scale,lc2};
-Point(4339) = {8.961735e-01*scale,2.136105e-02*scale,0*scale,lc2};
-Point(4338) = {8.989201e-01*scale,2.104930e-02*scale,0*scale,lc2};
-Point(4246) = {9.016667e-01*scale,2.064514e-02*scale,0*scale,lc2};
-Point(4245) = {9.071598e-01*scale,1.954695e-02*scale,0*scale,lc2};
-Point(4281) = {9.126530e-01*scale,1.818666e-02*scale,0*scale,lc2};
-Point(4280) = {9.181462e-01*scale,1.648801e-02*scale,0*scale,lc2};
-Point(4279) = {9.236393e-01*scale,1.459116e-02*scale,0*scale,lc2};
-Point(4244) = {9.291325e-01*scale,1.255534e-02*scale,0*scale,lc2};
-Point(4243) = {9.346257e-01*scale,1.024686e-02*scale,0*scale,lc2};
-Point(4242) = {9.401188e-01*scale,7.859173e-03*scale,0*scale,lc2};
-Point(4296) = {9.456120e-01*scale,5.245962e-03*scale,0*scale,lc2};
-Point(4295) = {9.511052e-01*scale,2.515401e-03*scale,0*scale,lc2};
-Point(4300) = {9.565983e-01*scale,-3.522322e-04*scale,0*scale,lc2};
-Point(4330) = {9.620915e-01*scale,-3.368852e-03*scale,0*scale,lc2};
-Point(4331) = {9.628545e-01*scale,-3.794565e-03*scale,0*scale,lc2};
-Point(4329) = {9.675846e-01*scale,-6.447130e-03*scale,0*scale,lc2};
-Point(4232) = {9.730778e-01*scale,-9.700323e-03*scale,0*scale,lc2};
-Point(4231) = {9.840641e-01*scale,-1.646639e-02*scale,0*scale,lc2};
-Point(4230) = {9.950505e-01*scale,-2.366260e-02*scale,0*scale,lc2};
-
-Point(4229) = {1.006037e+00*scale,-3.132299e-02*scale,0*scale,lc2};
-Point(4228) = {1.017023e+00*scale,-3.943289e-02*scale,0*scale,lc2};
-Point(4227) = {1.028009e+00*scale,-4.793142e-02*scale,0*scale,lc2};
-Point(4225) = {1.038996e+00*scale,-5.669110e-02*scale,0*scale,lc2};
-Point(4226) = {1.048275e+00*scale,-6.421937e-02*scale,0*scale,lc2};
-Point(4312) = {1.054944e+00*scale,-6.971253e-02*scale,0*scale,lc2};
-Point(4223) = {1.060968e+00*scale,-7.473580e-02*scale,0*scale,lc2};
-Point(4224) = {1.061523e+00*scale,-7.520570e-02*scale,0*scale,lc2};
-Point(4311) = {1.066462e+00*scale,-7.943817e-02*scale,0*scale,lc2};
-Point(4310) = {1.067933e+00*scale,-8.069886e-02*scale,0*scale,lc2};
-Point(4275) = {1.071955e+00*scale,-8.420612e-02*scale,0*scale,lc2};
-Point(4316) = {1.077448e+00*scale,-8.903994e-02*scale,0*scale,lc2};
-Point(4315) = {1.082941e+00*scale,-9.395896e-02*scale,0*scale,lc2};
-Point(4313) = {1.088434e+00*scale,-9.897945e-02*scale,0*scale,lc2};
-Point(4292) = {1.093927e+00*scale,-1.041032e-01*scale,0*scale,lc2};
-Point(4272) = {1.099421e+00*scale,-1.093858e-01*scale,0*scale,lc2};
-Point(4271) = {1.104914e+00*scale,-1.148004e-01*scale,0*scale,lc2};
-Point(4270) = {1.110407e+00*scale,-1.202740e-01*scale,0*scale,lc2};
-Point(4268) = {1.114765e+00*scale,-1.246442e-01*scale,0*scale,lc2};
-Point(4291) = {1.120249e+00*scale,-1.301373e-01*scale,0*scale,lc2};
-Point(4336) = {1.122990e+00*scale,-1.328839e-01*scale,0*scale,lc2};
-
-Line(1) = {3895,3897};
-Line(2) = {3897,3896};
-Line(3) = {3896,3968};
-Line(4) = {3968,3995};
-Line(5) = {3995,4003};
-Line(6) = {4003,3857};
-Line(7) = {3857,3856};
-Line(8) = {3856,3860};
-Line(9) = {3860,3861};
-Line(10) = {3861,3863};
-Line(11) = {3863,3864};
-Line(12) = {3864,3865};
-Line(13) = {3865,3866};
-Line(14) = {3866,3867};
-Line(15) = {3867,3868};
-Line(16) = {3868,3869};
-Line(17) = {3869,3870};
-Line(18) = {3870,3871};
-Line(19) = {3871,3872};
-Line(20) = {3872,3977};
-Line(21) = {3977,3877};
-Line(22) = {3877,3876};
-Line(23) = {3876,3878};
-Line(24) = {3878,3934};
-Line(25) = {3934,3873};
-Line(26) = {3873,3874};
-Line(27) = {3874,3875};
-Line(28) = {3875,3935};
-Line(29) = {3935,3880};
-Line(30) = {3880,3879};
-Line(31) = {3879,3881};
-Line(32) = {3881,3936};
-Line(33) = {3936,3882};
-Line(34) = {3882,3883};
-Line(35) = {3883,3885};
-Line(36) = {3885,3884};
-Line(37) = {3884,1218};
-Line(38) = {1218,3933};
-Line(39) = {3933,3996};
-Line(40) = {3996,3989};
-Line(41) = {3989,3990};
-Line(42) = {3990,3978};
-Line(43) = {3978,3979};
-Line(44) = {3979,3974};
-Line(45) = {3974,3973};
-Line(46) = {3973,3963};
-Line(47) = {3963,3947};
-Line(48) = {3947,3948};
-Line(49) = {3948,3904};
-Line(50) = {3904,3903};
-Line(51) = {3903,3946};
-Line(52) = {3946,3902};
-Line(53) = {3902,3901};
-Line(54) = {3901,3900};
-Line(55) = {3900,3908};
-Line(56) = {3908,3907};
-Line(57) = {3907,3951};
-Line(58) = {3951,3950};
-Line(59) = {3950,3847};
-Line(60) = {3847,3949};
-Line(61) = {3949,3952};
-Line(62) = {3952,3905};
-Line(63) = {3905,3906};
-Line(64) = {3906,3909};
-Line(65) = {3909,3969};
-Line(66) = {3969,3970};
-Line(67) = {3970,3997};
-Line(68) = {3997,3998};
-Line(69) = {3998,4004};
-Line(70) = {4004,3959};
-Line(71) = {3959,3960};
-Line(72) = {3960,3972};
-Line(73) = {3972,3984};
-Line(74) = {3984,3988};
-Line(75) = {3988,3961};
-Line(76) = {3961,3962};
-Line(77) = {3962,3937};
-Line(78) = {3937,3938};
-Line(79) = {3938,3886};
-Line(80) = {3886,3887};
-Line(81) = {3887,3888};
-Line(82) = {3888,3993};
-Line(83) = {3993,3994};
-Line(84) = {3994,3971};
-Line(85) = {3971,3918};
-Line(86) = {3918,3919};
-Line(87) = {3919,3920};
-Line(88) = {3920,3956};
-Line(89) = {3956,3955};
-Line(90) = {3955,3965};
-Line(91) = {3965,3966};
-Line(92) = {3966,3910};
-Line(93) = {3910,3913};
-Line(94) = {3913,3912};
-Line(95) = {3912,3911};
-Line(96) = {3911,3914};
-Line(97) = {3914,3915};
-Line(98) = {3915,3916};
-Line(99) = {3916,3917};
-Line(100) = {3917,3953};
-Line(101) = {3953,3954};
-Line(102) = {3954,3964};
-Line(103) = {3964,3975};
-Line(104) = {3975,3992};
-Line(105) = {3992,3991};
-Line(106) = {3991,3999};
-Line(107) = {3999,3939};
-Line(108) = {3939,3967};
-Line(109) = {3967,3987};
-Line(110) = {3987,3985};
-Line(111) = {3985,3986};
-Line(112) = {3986,4002};
-Line(113) = {4002,3922};
-Line(114) = {3922,4005};
-Line(115) = {4005,3851};
-Line(116) = {3851,3850};
-Line(117) = {3850,3853};
-Line(118) = {3853,3852};
-Line(119) = {3852,3849};
-Line(120) = {3849,3848};
-Line(121) = {3848,3921};
-Line(122) = {3921,3983};
-Line(123) = {3983,3982};
-Line(124) = {3982,3976};
-Line(125) = {3976,3929};
-Line(126) = {3929,3958};
-Line(127) = {3958,3928};
-Line(128) = {3928,3957};
-Line(129) = {3957,3927};
-Line(130) = {3927,3926};
-Line(131) = {3926,3925};
-Line(132) = {3925,3924};
-Line(133) = {3924,3932};
-Line(134) = {3932,3931};
-Line(135) = {3931,3930};
-Line(136) = {3930,3923};
-Line(137) = {3923,3862};
-Line(138) = {3862,3859};
-Line(139) = {3859,3858};
-Line(140) = {3858,3855};
-Line(141) = {3855,3854};
-Line(142) = {3854,3945};
-Line(143) = {3945,3944};
-Line(144) = {3944,3899};
-Line(145) = {3899,3898};
-Line(146) = {3898,3894};
-Line(147) = {3894,3890};
-Line(148) = {3890,3893};
-Line(149) = {3893,3941};
-Line(150) = {3941,4000};
-Line(151) = {4000,3980};
-Line(152) = {3980,3846};
-Line(153) = {3846,3981};
-Line(154) = {3981,4001};
-Line(155) = {4001,3942};
-Line(156) = {3942,3940};
-Line(157) = {3940,3889};
-Line(158) = {3889,3892};
-Line(159) = {3892,3891};
-Line(160) = {3891,3943};
-Line(161) = {3943,3895};
-Line(162) = {4063,4062};
-Line(163) = {4062,4061};
-Line(164) = {4061,4114};
-Line(165) = {4114,4153};
-Line(166) = {4153,4178};
-Line(167) = {4178,4179};
-Line(168) = {4179,4191};
-Line(169) = {4191,4203};
-Line(170) = {4203,4109};
-Line(171) = {4109,4202};
-Line(172) = {4202,4199};
-Line(173) = {4199,4201};
-Line(174) = {4201,4200};
-Line(175) = {4200,4100};
-Line(176) = {4100,4099};
-Line(177) = {4099,4045};
-Line(178) = {4045,4044};
-Line(179) = {4044,4043};
-Line(180) = {4043,4147};
-Line(181) = {4147,4146};
-Line(182) = {4146,4180};
-Line(183) = {4180,4167};
-Line(184) = {4167,4166};
-Line(185) = {4166,4134};
-Line(186) = {4134,4133};
-Line(187) = {4133,4098};
-Line(188) = {4098,4097};
-Line(189) = {4097,4042};
-Line(190) = {4042,4041};
-Line(191) = {4041,4040};
-Line(192) = {4040,4095};
-Line(193) = {4095,4096};
-Line(194) = {4096,4132};
-Line(195) = {4132,4131};
-Line(196) = {4131,4165};
-Line(197) = {4165,4164};
-Line(198) = {4164,4163};
-Line(199) = {4163,4130};
-Line(200) = {4130,4129};
-Line(201) = {4129,4094};
-Line(202) = {4094,4093};
-Line(203) = {4093,4039};
-Line(204) = {4039,4038};
-Line(205) = {4038,4037};
-Line(206) = {4037,4092};
-Line(207) = {4092,4091};
-Line(208) = {4091,4128};
-Line(209) = {4128,4127};
-Line(210) = {4127,4162};
-Line(211) = {4162,4161};
-Line(212) = {4161,4183};
-Line(213) = {4183,4160};
-Line(214) = {4160,4159};
-Line(215) = {4159,4126};
-Line(216) = {4126,4125};
-Line(217) = {4125,4088};
-Line(218) = {4088,4087};
-Line(219) = {4087,4033};
-Line(220) = {4033,4032};
-Line(221) = {4032,4031};
-Line(222) = {4031,4086};
-Line(223) = {4086,4085};
-Line(224) = {4085,4124};
-Line(225) = {4124,4123};
-Line(226) = {4123,4158};
-Line(227) = {4158,4157};
-Line(228) = {4157,4156};
-Line(229) = {4156,4122};
-Line(230) = {4122,4121};
-Line(231) = {4121,4081};
-Line(232) = {4081,4080};
-Line(233) = {4080,4020};
-Line(234) = {4020,4019};
-Line(235) = {4019,4018};
-Line(236) = {4018,4143};
-Line(237) = {4143,4118};
-Line(238) = {4118,4022};
-Line(239) = {4022,4016};
-Line(240) = {4016,4015};
-Line(241) = {4015,4011};
-Line(242) = {4011,4010};
-Line(243) = {4010,4009};
-Line(244) = {4009,4219};
-Line(245) = {4219,4177};
-Line(246) = {4177,4176};
-Line(247) = {4176,4149};
-Line(248) = {4149,4059};
-Line(249) = {4059,4058};
-Line(250) = {4058,4055};
-Line(251) = {4055,4113};
-Line(252) = {4113,4110};
-Line(253) = {4110,4213};
-Line(254) = {4213,4210};
-Line(255) = {4210,4217};
-Line(256) = {4217,4006};
-Line(257) = {4006,4218};
-Line(258) = {4218,4211};
-Line(259) = {4211,4212};
-Line(260) = {4212,4111};
-Line(261) = {4111,4112};
-Line(262) = {4112,4056};
-Line(263) = {4056,4057};
-Line(264) = {4057,4060};
-Line(265) = {4060,4148};
-Line(266) = {4148,4150};
-Line(267) = {4150,4208};
-Line(268) = {4208,4209};
-Line(269) = {4209,4215};
-Line(270) = {4215,4216};
-Line(271) = {4216,4220};
-Line(272) = {4220,4012};
-Line(273) = {4012,4013};
-Line(274) = {4013,4014};
-Line(275) = {4014,4017};
-Line(276) = {4017,4021};
-Line(277) = {4021,4023};
-Line(278) = {4023,4117};
-Line(279) = {4117,4082};
-Line(280) = {4082,4083};
-Line(281) = {4083,4024};
-Line(282) = {4024,4025};
-Line(283) = {4025,4007};
-Line(284) = {4007,4026};
-Line(285) = {4026,4027};
-Line(286) = {4027,4028};
-Line(287) = {4028,4029};
-Line(288) = {4029,4008};
-Line(289) = {4008,4030};
-Line(290) = {4030,4084};
-Line(291) = {4084,4194};
-Line(292) = {4194,4195};
-Line(293) = {4195,4154};
-Line(294) = {4154,4155};
-Line(295) = {4155,4119};
-Line(296) = {4119,4120};
-Line(297) = {4120,4089};
-Line(298) = {4089,4090};
-Line(299) = {4090,4034};
-Line(300) = {4034,4035};
-Line(301) = {4035,4036};
-Line(302) = {4036,4144};
-Line(303) = {4144,4192};
-Line(304) = {4192,4193};
-Line(305) = {4193,4184};
-Line(306) = {4184,4185};
-Line(307) = {4185,4168};
-Line(308) = {4168,4169};
-Line(309) = {4169,4135};
-Line(310) = {4135,4136};
-Line(311) = {4136,4101};
-Line(312) = {4101,4102};
-Line(313) = {4102,4049};
-Line(314) = {4049,4050};
-Line(315) = {4050,4051};
-Line(316) = {4051,4103};
-Line(317) = {4103,4104};
-Line(318) = {4104,4137};
-Line(319) = {4137,4138};
-Line(320) = {4138,4170};
-Line(321) = {4170,4171};
-Line(322) = {4171,4186};
-Line(323) = {4186,4172};
-Line(324) = {4172,4173};
-Line(325) = {4173,4139};
-Line(326) = {4139,4140};
-Line(327) = {4140,4105};
-Line(328) = {4105,4106};
-Line(329) = {4106,4052};
-Line(330) = {4052,4053};
-Line(331) = {4053,4054};
-Line(332) = {4054,4107};
-Line(333) = {4107,4108};
-Line(334) = {4108,4141};
-Line(335) = {4141,4142};
-Line(336) = {4142,4174};
-Line(337) = {4174,4175};
-Line(338) = {4175,4187};
-Line(339) = {4187,4188};
-Line(340) = {4188,4145};
-Line(341) = {4145,4046};
-Line(342) = {4046,4047};
-Line(343) = {4047,4048};
-Line(344) = {4048,4196};
-Line(345) = {4196,4197};
-Line(346) = {4197,4198};
-Line(347) = {4198,4189};
-Line(348) = {4189,4190};
-Line(349) = {4190,4214};
-Line(350) = {4214,4181};
-Line(351) = {4181,4182};
-Line(352) = {4182,4151};
-Line(353) = {4151,4152};
-Line(354) = {4152,4064};
-Line(355) = {4064,4065};
-Line(356) = {4065,4066};
-Line(357) = {4066,4205};
-Line(358) = {4205,4206};
-Line(359) = {4206,4207};
-Line(360) = {4207,4072};
-Line(361) = {4072,4074};
-Line(362) = {4074,4073};
-Line(363) = {4073,4076};
-Line(364) = {4076,4075};
-Line(365) = {4075,4079};
-Line(366) = {4079,4078};
-Line(367) = {4078,4077};
-Line(368) = {4077,4068};
-Line(369) = {4068,4067};
-Line(370) = {4067,4069};
-Line(371) = {4069,4070};
-Line(372) = {4070,4071};
-Line(373) = {4071,4115};
-Line(374) = {4115,4116};
-Line(375) = {4116,4204};
-Line(376) = {4204,4063};
-Line(377) = {11,2233};
-Line(378) = {2233,5};
-Line(379) = {5,2236};
-Line(380) = {2236,14};
-Line(381) = {14,2};
-Line(382) = {2,15};
-Line(383) = {15,2301};
-Line(384) = {2301,6};
-Line(385) = {6,2304};
-Line(386) = {2304,18};
-Line(387) = {18,3};
-Line(388) = {3,19};
-Line(389) = {19,2240};
-Line(390) = {2240,7};
-Line(391) = {7,2243};
-Line(392) = {2243,22};
-Line(393) = {22,4};
-Line(394) = {4,23};
-Line(395) = {23,2317};
-Line(396) = {2317,8};
-Line(397) = {8,2297};
-Line(398) = {2297,10};
-Line(399) = {10,1};
-Line(400) = {1,11};
-Line(401) = {4298,4297};
-Line(402) = {4297,4222};
-Line(403) = {4222,4250};
-Line(404) = {4250,4252};
-Line(405) = {4252,4221};
-Line(406) = {4221,4251};
-Line(407) = {4251,4299};
-Line(408) = {4299,4335};
-Line(409) = {4335,4337};
-Line(410) = {4337,4267};
-Line(411) = {4267,4294};
-Line(412) = {4294,4269};
-Line(413) = {4269,4233};
-Line(414) = {4233,4234};
-Line(415) = {4234,4273};
-Line(416) = {4273,4293};
-Line(417) = {4293,4314};
-Line(418) = {4314,4317};
-Line(419) = {4317,4318};
-Line(420) = {4318,4274};
-Line(421) = {4274,4235};
-Line(422) = {4235,4236};
-Line(423) = {4236,4237};
-Line(424) = {4237,4301};
-Line(425) = {4301,4319};
-Line(426) = {4319,4321};
-Line(427) = {4321,4320};
-Line(428) = {4320,4322};
-Line(429) = {4322,4347};
-Line(430) = {4347,4323};
-Line(431) = {4323,4324};
-Line(432) = {4324,4325};
-Line(433) = {4325,4276};
-Line(434) = {4276,4238};
-Line(435) = {4238,4240};
-Line(436) = {4240,4239};
-Line(437) = {4239,4241};
-Line(438) = {4241,4277};
-Line(439) = {4277,4326};
-Line(440) = {4326,4327};
-Line(441) = {4327,4328};
-Line(442) = {4328,4350};
-Line(443) = {4350,4348};
-Line(444) = {4348,4349};
-Line(445) = {4349,4332};
-Line(446) = {4332,4333};
-Line(447) = {4333,4334};
-Line(448) = {4334,4278};
-Line(449) = {4278,4247};
-Line(450) = {4247,4248};
-Line(451) = {4248,4249};
-Line(452) = {4249,4282};
-Line(453) = {4282,4283};
-Line(454) = {4283,4341};
-Line(455) = {4341,4342};
-Line(456) = {4342,4343};
-Line(457) = {4343,4289};
-Line(458) = {4289,4290};
-Line(459) = {4290,4286};
-Line(460) = {4286,4255};
-Line(461) = {4255,4257};
-Line(462) = {4257,4256};
-Line(463) = {4256,4346};
-Line(464) = {4346,4288};
-Line(465) = {4288,4287};
-Line(466) = {4287,4260};
-Line(467) = {4260,4259};
-Line(468) = {4259,4258};
-Line(469) = {4258,4262};
-Line(470) = {4262,4261};
-Line(471) = {4261,4264};
-Line(472) = {4264,4263};
-Line(473) = {4263,4265};
-Line(474) = {4265,4266};
-Line(475) = {4266,4303};
-Line(476) = {4303,4302};
-Line(477) = {4302,4304};
-Line(478) = {4304,4305};
-Line(479) = {4305,4306};
-Line(480) = {4306,4307};
-Line(481) = {4307,4308};
-Line(482) = {4308,4309};
-Line(483) = {4309,4345};
-Line(484) = {4345,4344};
-Line(485) = {4344,4254};
-Line(486) = {4254,4253};
-Line(487) = {4253,4285};
-Line(488) = {4285,4284};
-Line(489) = {4284,4340};
-Line(490) = {4340,4339};
-Line(491) = {4339,4338};
-Line(492) = {4338,4246};
-Line(493) = {4246,4245};
-Line(494) = {4245,4281};
-Line(495) = {4281,4280};
-Line(496) = {4280,4279};
-Line(497) = {4279,4244};
-Line(498) = {4244,4243};
-Line(499) = {4243,4242};
-Line(500) = {4242,4296};
-Line(501) = {4296,4295};
-Line(502) = {4295,4300};
-Line(503) = {4300,4330};
-Line(504) = {4330,4331};
-Line(505) = {4331,4329};
-Line(506) = {4329,4232};
-Line(507) = {4232,4231};
-Line(508) = {4231,4230};
-Line(509) = {4230,4229};
-Line(510) = {4229,4228};
-Line(511) = {4228,4227};
-Line(512) = {4227,4225};
-Line(513) = {4225,4226};
-Line(514) = {4226,4312};
-Line(515) = {4312,4223};
-Line(516) = {4223,4224};
-Line(517) = {4224,4311};
-Line(518) = {4311,4310};
-Line(519) = {4310,4275};
-Line(520) = {4275,4316};
-Line(521) = {4316,4315};
-Line(522) = {4315,4313};
-Line(523) = {4313,4292};
-Line(524) = {4292,4272};
-Line(525) = {4272,4271};
-Line(526) = {4271,4270};
-Line(527) = {4270,4268};
-Line(528) = {4268,4291};
-Line(529) = {4291,4336};
-Line(530) = {4336,4298};
-Line Loop(531) = {384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,377,378,379,380,381,382,383};
-Line Loop(532) = {316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315};
-Line Loop(533) = {446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445};
-Line Loop(534) = {41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
-Plane Surface(535) = {531,532,534,533};
diff --git a/benchmarks/3d/BOX.geo b/benchmarks/3d/BOX.geo
deleted file mode 100644
index 972cf2aad39da9ebb7310b3f1d4fa21b320bd6ef..0000000000000000000000000000000000000000
--- a/benchmarks/3d/BOX.geo
+++ /dev/null
@@ -1,81 +0,0 @@
-/// Function Box: 
-// create a box - of width wBox, length lBox and height hBox
-//              - of lower corner xBox, yBox, zBox
-//              - rotated from thetaBox degrees from the x axis
-//              - characteristic length lcBox
-//Function Box
-
-  p1 = newp; Point(p1) = {xBox,      yBox,      zBox,  lcBox} ;
-  p2 = newp; Point(p2) = {xBox+wBox, yBox,      zBox,  lcBox} ;
-  p3 = newp; Point(p3) = {xBox+wBox, yBox+lBox, zBox,  lcBox} ;
-  p4 = newp; Point(p4) = {xBox,      yBox+lBox, zBox,  lcBox} ;
-
-  p5 = newp; Point(p5) = {xBox,      yBox,      zBox+hBox,  lcBox} ;
-  p6 = newp; Point(p6) = {xBox+wBox, yBox,      zBox+hBox,  lcBox} ;
-  p7 = newp; Point(p7) = {xBox+wBox, yBox+lBox, zBox+hBox,  lcBox} ;
-  p8 = newp; Point(p8) = {xBox,      yBox+lBox, zBox+hBox,  lcBox} ;
-  
-  Boxes_Point1[iBox] = p1 ;
-  Boxes_Point2[iBox] = p2 ;
-  Boxes_Point3[iBox] = p3 ;
-  Boxes_Point4[iBox] = p4 ;
-  Boxes_Point5[iBox] = p5 ;
-
-  c1 = newreg; Line(c1) = {p1,p2};
-  c2 = newreg; Line(c2) = {p2,p3};
-  c3 = newreg; Line(c3) = {p3,p4};
-  c4 = newreg; Line(c4) = {p4,p1};
-
-  c5 = newreg; Line(c5) = {p5,p6};
-  c6 = newreg; Line(c6) = {p6,p7};
-  c7 = newreg; Line(c7) = {p7,p8};
-  c8 = newreg; Line(c8) = {p8,p5};
-
-  c9 = newreg; Line(c9) = {p1,p5};
-  c10 = newreg; Line(c10) = {p2,p6};
-  c11 = newreg; Line(c11) = {p3,p7};
-  c12 = newreg; Line(c12) = {p4,p8};
-
-  Boxes_Linep1p2[iBox] = c1 ;
-  Boxes_Linep2p1[iBox] = -c1 ;
-  Boxes_Linep2p3[iBox] = -c2 ;
-  Boxes_Linep3p4[iBox] = -c3 ;
-  Boxes_Linep4p1[iBox] = -c4 ;
-  Boxes_Linep5p6[iBox] = c5 ;
-  Boxes_Linep8p5[iBox] = -c8 ;
-  Boxes_Linep1p5[iBox] = c9 ;
-  Boxes_Linep2p6[iBox] = -c10 ;
-  Boxes_Linep4p8[iBox] = -c12 ;
-
-
-  l1 = newreg; Line Loop(l1) = {c1,c2,c3,c4}; Plane Surface(l1+1) = {l1};
-  l2 = newreg; Line Loop(l2) = {c5,c6,c7,c8}; Plane Surface(l2+1) = {l2};
-
-  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Surface{l1+1}; }
-  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Surface{l2+1}; }
- 
-  l3 = newreg; Line Loop(l3) = {c9,-c8,-c12,c4}; Plane Surface(l3+1) = {l3};
-  l4 = newreg; Line Loop(l4) = {c10,-c5,-c9,c1}; Plane Surface(l4+1) = {l4};
-  l5 = newreg; Line Loop(l5) = {c6,-c11,-c2,c10}; Plane Surface(l5+1) = {l5};
-  l6 = newreg; Line Loop(l6) = {c12,-c7,-c11,c3}; Plane Surface(l6+1) = {l6};
-
-  Boxes_LineLoop1[iBox] = l1 ;
-  Boxes_LineLoop2[iBox] = l2 ;
-  Boxes_LineLoop3[iBox] = l3 ;
-  Boxes_LineLoop4[iBox] = l4 ;
-  Boxes_LineLoop5[iBox] = l5 ;
-  Boxes_LineLoop6[iBox] = l6 ;
-
-  Boxes_PlanSurf1[iBox] = l1+1;
-  Boxes_PlanSurf2[iBox] = l2+1;
-  Boxes_PlanSurf3[iBox] = l3+1;
-  Boxes_PlanSurf4[iBox] = l4+1;
-  Boxes_PlanSurf5[iBox] = l5+1;
-  Boxes_PlanSurf6[iBox] = l6+1;
-
-  s = newreg; Surface Loop(s) = {l2+1,l4+1,l5+1,l6+1,l3+1,l1+1}; Volume(s+1) = s ;
-
-  Boxes_SurfaceLoop[iBox] = s ;
-  Boxes_Volume[iBox] = s+1 ;
-
-//Return
diff --git a/benchmarks/3d/Cube-02.geo b/benchmarks/3d/Cube-02.geo
deleted file mode 100644
index 9d838badf41850dfc13ee50cfa376c71377048f4..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-02.geo
+++ /dev/null
@@ -1,18 +0,0 @@
-/*****************************  
-cube meshed  
-non uniformly  
-*****************************/  
-Point(1) = {0.0,0.0,0.0,.04};          
-Point(2) = {1,0.0,0.0,.2};          
-Point(3) = {1,1,0.0,.1};          
-Point(4) = {0,1,0.0,.2};          
-Line(1) = {4,3};          
-Line(2) = {3,2};          
-Line(3) = {2,1};          
-Line(4) = {1,4};          
-Line Loop(5) = {2,3,4,1};          
-Plane Surface(6) = {5};          
-Extrude Surface {6, {0,0.0,1}};          
-     
-Surface Loop(29) = {23,6,15,19,28,27};    
-Complex Volume(30) = {29};    
diff --git a/benchmarks/3d/Cube-03.geo b/benchmarks/3d/Cube-03.geo
deleted file mode 100644
index c6d350a14de57bab12a760d5cee55597881a99e5..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-03.geo
+++ /dev/null
@@ -1,10 +0,0 @@
-/*****************************  
-Another Way to generate
-a cube  
-*****************************/  
-Point(1) = {0.0,0.0,0.0,.2};          
-Extrude Point {1, {1,0.0,0} };               
-Extrude Line {1, {0.0,0.0,1} };
-Extrude Surface {5, {0,1,0} };
-Surface Loop(28) = {26,5,14,18,22,27};
-Complex Volume(29) = {28};
diff --git a/benchmarks/3d/Cube-04.geo b/benchmarks/3d/Cube-04.geo
deleted file mode 100644
index cbfe75ad9e39f10350a9af8bebf9cb3628b51488..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-04.geo
+++ /dev/null
@@ -1,20 +0,0 @@
-/*****************************      
-A cube with a hole   
-*****************************/      
-  
-Point(1) = {0.0,0.0,0.0,.1};              
-Extrude Point {1, {1,0.0,0} };                   
-Extrude Line {1, {0.0,0.0,1} };    
-Extrude Surface {5, {0,1,0} };    
-  
-Point(100) = {0.3,0.3,0.3,.02};              
-Extrude Point {100, {.4,0.0,0} };                   
-Extrude Line {28, {0,0.4,0} };   
-Coherence;   
-Extrude Surface {32, {0,0.,0.4} };   
-Coherence;   
- 
-Surface Loop(55) = {26,5,14,18,22,27};   
-Surface Loop(56) = {41,32,45,49,53,54};   
-Complex Volume(57) = {55,56};   
-  
diff --git a/benchmarks/3d/Cube-05.geo b/benchmarks/3d/Cube-05.geo
deleted file mode 100644
index 74061352e6825cfec453356716d29c3640e2200e..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-05.geo
+++ /dev/null
@@ -1,30 +0,0 @@
-/*****************************       
-cube with a hole     
-*****************************/    
-lv = .1;    
-lc = .04;       
-Point(1) = {0.0,0.0,0.0,lv};               
-Point(2) = {1,0.0,0.0,lv};               
-Point(3) = {1,1,0.0,lv};               
-Point(4) = {0,1,0.0,lv};               
-Line(1) = {4,3};               
-Line(2) = {3,2};               
-Line(3) = {2,1};               
-Line(4) = {1,4};               
-Point(11) = {0.5,0.5,0.0,lc};               
-Point(12) = {0.5,0.7,0.0,lc};               
-Point(13) = {0.5,0.3,0.0,lc};               
-Point(14) = {0.3,0.5,0.0,lc};               
-Point(15) = {0.7,0.5,0.0,lc};               
-Circle(5) = {15,11,12};     
-Circle(6) = {12,11,14};     
-Circle(7) = {14,11,13};     
-Circle(8) = {13,11,15};     
-Line Loop(9) = {1,2,3,4};     
-Line Loop(10) = {7,8,5,6};     
-Plane Surface(11) = {9,10};     
-   
-Extrude Surface{11, {0.0,1,0}, {-.5,0.0,0.0}, 3.14159/4 } ;   
-Coherence;   
-Surface Loop(54) = {36,11,24,28,32,53,40,44,48,52};
-Complex Volume(55) = {54};
diff --git a/benchmarks/3d/Cube-06.geo b/benchmarks/3d/Cube-06.geo
deleted file mode 100644
index f73f583533b88f556761aa6c698c9e8b88b370cb..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-06.geo
+++ /dev/null
@@ -1,29 +0,0 @@
-/*****************************    
-cube with a hole  
-*****************************/ 
-lv = .1; 
-lc = .04;    
-Point(1) = {0.0,0.0,0.0,lv};            
-Point(2) = {1,0.0,0.0,lv};            
-Point(3) = {1,1,0.0,lv};            
-Point(4) = {0,1,0.0,lv};            
-Line(1) = {4,3};            
-Line(2) = {3,2};            
-Line(3) = {2,1};            
-Line(4) = {1,4};            
-Point(11) = {0.5,0.5,0.0,lc};            
-Point(12) = {0.5,0.7,0.0,lc};            
-Point(13) = {0.5,0.3,0.0,lc};            
-Point(14) = {0.3,0.5,0.0,lc};            
-Point(15) = {0.7,0.5,0.0,lc};            
-Circle(5) = {15,11,12};  
-Circle(6) = {12,11,14};  
-Circle(7) = {14,11,13};  
-Circle(8) = {13,11,15};  
-Line Loop(9) = {1,2,3,4};  
-Line Loop(10) = {7,8,5,6};  
-Plane Surface(11) = {9,10};  
-Extrude Surface {11, {.0,0.0,.5} };  
-Coherence;  
-Surface Loop(54) = {24,11,28,32,36,53,40,44,48,52};  
-Complex Volume(55) = {54};  
diff --git a/benchmarks/3d/Cube-07.geo b/benchmarks/3d/Cube-07.geo
deleted file mode 100644
index 81ccdebf548703e55acb5d97e93488f824f839fb..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-07.geo
+++ /dev/null
@@ -1,12 +0,0 @@
-Point(1) = {0.0,0.0,0.0,.1}; 
-Point(2) = {0.0,0.0,1,.1}; 
-Point(3) = {0.0,1,1,.1}; 
-Point(4) = {0.0,1,0,.1}; 
-Line(1) = {1,2}; 
-Line(2) = {2,3}; 
-Line(3) = {3,4}; 
-Line(4) = {4,1}; 
-Line Loop(5) = {1,2,3,4}; 
-Plane Surface(6) = {5}; 
-Extrude Surface {6, {1.0,0.0,0.0} }; 
-Coherence; 
diff --git a/benchmarks/3d/Cube-Attr-01.geo b/benchmarks/3d/Cube-Attr-01.geo
deleted file mode 100644
index 71f98e23c571c71f6316c1cc597653a8f690f64b..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-Attr-01.geo
+++ /dev/null
@@ -1,30 +0,0 @@
-
-Mesh.Algorithm = 2 ;
-
-
-Point(1) = {0.0,0.0,0.0,.2};
-Point(2) = {1,0.0,0.0,.2};
-Point(3) = {1,1,0.0,.2};
-Point(4) = {0,1,0.0,.2};
-Line(1) = {4,3};
-Line(2) = {3,2};
-Line(3) = {2,1};
-Line(4) = {1,4};
-Line Loop(5) = {2,3,4,1};
-Plane Surface(6) = {5};
-Extrude Surface {6, {0,0.0,1}};
-                     
-Surface Loop(29) = {23,6,15,19,28,27};
-Complex Volume(30) = {29};
-                
-Attractor Point{1,4,5,6,10,14} = {0.05,0.05,2} ;
-
-Point(16) = {-.5,.5,.5,1.0};
-Point(17) = {1.5,.5,.8,1.0};
-Line(30) = {16,17};
-Attractor Line{30} = {0.1,0.1,2};
-
-Point(18) = {-.2,.7,1.3,1.0};
-Point(19) = {1.22,.1,-.8,1.0};
-Line(31) = {18,19};
-Attractor Line{31} = {0.01,0.01,2};
diff --git a/benchmarks/3d/Cube-Attr-02.geo b/benchmarks/3d/Cube-Attr-02.geo
deleted file mode 100644
index 17f2b0b8ad20885271cd612be549ff33c36ebb03..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Cube-Attr-02.geo
+++ /dev/null
@@ -1,22 +0,0 @@
-/*****************************                      
-cube meshed uniformly                      
-*****************************/                      
-
-Mesh.Algorithm = 2;
-
-Point(1) = {0.0,0.0,0.0,.3};                              
-Point(2) = {1,0.0,0.0,.3};                              
-Point(3) = {1,1,0.0,.3};                              
-Point(4) = {0,1,0.0,.3};                              
-Line(1) = {4,3};                              
-Line(2) = {3,2};                              
-Line(3) = {2,1};                              
-Line(4) = {1,4};                              
-Line Loop(5) = {2,3,4,1};                              
-Plane Surface(6) = {5};                              
-Extrude Surface{6, {0,0.0,1}};
-                         
-Surface Loop(29) = {23,6,15,19,28,27};                        
-Complex Volume(30) = {29};                        
-                    
-Attractor Point{1} = {0.1,0.1,2};                                                                                   
diff --git a/benchmarks/3d/Revolve.geo b/benchmarks/3d/Revolve.geo
deleted file mode 100644
index 2a4627ce43eb80857d0ee3a08f75d2372c4cfa60..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Revolve.geo
+++ /dev/null
@@ -1,17 +0,0 @@
-lc = .1;          
-Point(1) = {2.0,0.0,0.0,lc};          
-Point(2) = {2.0,1,0.0,lc};          
-Point(3) = {1,0,0.0,lc};          
-Point(4) = {3,0,0.0,lc};          
-Point(5) = {2,-1,0.0,lc};          
-Line(1) = {4,2};          
-         
-Line(2) = {2,3};         
-Line(3) = {3,5};         
-Line(4) = {5,4};         
-Line Loop(5) = {4,1,2,3};         
-Plane Surface(6) = {5};         
-       
-Extrude Surface{6, {0.0,1,0}, {0,0.0,0.0},  3.14159/4};         
-       
-Coherence;         
diff --git a/benchmarks/3d/Revolve2-Attr.geo b/benchmarks/3d/Revolve2-Attr.geo
deleted file mode 100644
index ed583cb757b3e1dfcc5f37b0d5a078e0eea1cfbb..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Revolve2-Attr.geo
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Mesh.Algorithm = 2;
-
-lc = .3;                
-Point(2) = {3.0,-1.0,0.0,lc};                
-Point(3) = {1,-1,0.0,lc};                
-Point(4) = {3,1,0.0,lc};                
-Point(5) = {1,1,0.0,lc};                
-Line(1) = {4,2};                           
-Line(2) = {2,3};               
-Line(3) = {3,5};               
-Line(4) = {5,4};               
-Line Loop(5) = {4,1,2,3};               
-Plane Surface(6) = {5};               
-             
-Extrude Surface{6, {0.0,1,0}, {0,0.0,0.0},  3.14159/2 };               
-             
-Coherence;               
-  
-Attractor Line{14} = {.1,.1,1.0} ;  
-Surface Loop(29) = {15,6,19,23,27,28};
-Complex Volume(30) = {29};
diff --git a/benchmarks/3d/Revolve2.geo b/benchmarks/3d/Revolve2.geo
deleted file mode 100644
index 685b78a6289e5ae14ec4c9cadc1766de85abc1e8..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Revolve2.geo
+++ /dev/null
@@ -1,30 +0,0 @@
-lc = .3;             
-Point(2) = {3.0,-1.0,0.0,lc};             
-Point(3) = {1,-1,0.0,lc};             
-Point(4) = {3,1,0.0,lc};             
-Point(5) = {1,1,0.0,lc};             
-Line(1) = {4,2};                        
-Line(2) = {2,3};            
-Line(3) = {3,5};            
-Line(4) = {5,4};            
-Line Loop(5) = {4,1,2,3};            
-Plane Surface(6) = {5};            
-          
-Extrude Surface{6, {0.0,1,0}, {0,0.0,0.0},  3.14159/2};            
-          
-Coherence;            
-Delete { 
- Surface{6}; 
-} 
-Delete { 
- Surface{15}; 
-} 
-Delete { 
- Surface{28}; 
-} 
-Delete { 
- Surface{23}; 
-} 
-Delete { 
- Surface{27}; 
-} 
diff --git a/benchmarks/3d/Revolve3.geo b/benchmarks/3d/Revolve3.geo
deleted file mode 100644
index fcf25a64064d9db7585a163e7cdec163188db615..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Revolve3.geo
+++ /dev/null
@@ -1,8 +0,0 @@
-Point(1) = {0.0,0.0,0.0,.2};   
-Point(2) = {1,1,0.0,.2};   
-Point(3) = {2,1.2,0.0,.2};   
-Point(4) = {3,0,0.0,.2};   
-Point(5) = {4,1,0.0,.2};   
-CatmullRom(1) = {1,2,3,4,5};   
-Extrude Line{ 1, {0.0,1,0}, {-1,0.0,0.0}, 3.14159/2 };   
-Coherence;   
diff --git a/benchmarks/3d/Sphere.geo b/benchmarks/3d/Sphere.geo
deleted file mode 100644
index 2efe1e02c31f30607d108abf75c176a3ebd2bbd2..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Sphere.geo
+++ /dev/null
@@ -1,42 +0,0 @@
-lc = .1;
-Point(1) = {0.0,0.0,0.0,lc};
-Point(2) = {1,0.0,0.0,lc};
-Point(3) = {0,1,0.0,lc};
-Circle(1) = {2,1,3};
-Point(4) = {-1,0,0.0,lc};
-Point(5) = {0,-1,0.0,lc};
-Circle(2) = {3,1,4};
-Circle(3) = {4,1,5};
-Circle(4) = {5,1,2};
-Point(6) = {0,0,-1,lc};
-Point(7) = {0,0,1,lc};
-Circle(5) = {3,1,6};
-Circle(6) = {6,1,5};
-Circle(7) = {5,1,7};
-Circle(8) = {7,1,3};
-Circle(9) = {2,1,7};
-Circle(10) = {7,1,4};
-Circle(11) = {4,1,6};
-Circle(12) = {6,1,2};
-Line Loop(13) = {-2,-8,10};
-Ruled Surface(14) = {13};
-Line Loop(15) = {10,3,7};
-Ruled Surface(16) = {15};
-Line Loop(17) = {-8,-9,1};
-Ruled Surface(18) = {17};
-Line Loop(19) = {-11,-2,5};
-Ruled Surface(20) = {19};
-Line Loop(21) = {5,12,1};
-Ruled Surface(22) = {21};
-Line Loop(23) = {-3,11,6};
-Ruled Surface(24) = {23};
-Line Loop(25) = {-7,4,9};
-Ruled Surface(26) = {25};
-Line Loop(27) = {4,-12,6};
-Ruled Surface(28) = {27};
-
-Surface Loop(29) = {28,26,16,14,20,24,22,18};
-Complex Volume(30) = {29};
-
-Physical Volume(1) = 30;
-Physical Surface(2) = {14:28:2};
diff --git a/benchmarks/3d/Torus-Attr.geo b/benchmarks/3d/Torus-Attr.geo
deleted file mode 100644
index 574164451773a5bed5efe115f1ec7b472f70e83b..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Torus-Attr.geo
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Mesh.Algorithm = 2;
-
-lc = .2;              
-Point(1) = {2.0,0.0,0.0,lc};              
-Point(2) = {2.0,1,0.0,lc};              
-Point(3) = {1,0,0.0,lc};              
-Point(4) = {3,0,0.0,lc};              
-Point(5) = {2,-1,0.0,lc};              
-Circle(1) = {4,1,2};              
-             
-Circle(2) = {2,1,3};             
-Circle(3) = {3,1,5};             
-Circle(4) = {5,1,4};             
-Line Loop(5) = {4,1,2,3};             
-Plane Surface(6) = {5};             
-           
-Extrude Surface{ 6, {0.0,1,0}, {0,0.0,0.0}, 1.5*3.14159/2 };             
-           
-Coherence;             
-Attractor Line {22} = {1,.1,2.0};   
diff --git a/benchmarks/3d/Torus.geo b/benchmarks/3d/Torus.geo
deleted file mode 100644
index 5848a1f2f2aea0ea4032fcf0ebaec444949c7141..0000000000000000000000000000000000000000
--- a/benchmarks/3d/Torus.geo
+++ /dev/null
@@ -1,17 +0,0 @@
-lc = .2;          
-Point(1) = {2.0,0.0,0.0,lc};          
-Point(2) = {2.0,1,0.0,lc};          
-Point(3) = {1,0,0.0,lc};          
-Point(4) = {3,0,0.0,lc};          
-Point(5) = {2,-1,0.0,lc};          
-Circle(1) = {4,1,2};          
-         
-Circle(2) = {2,1,3};         
-Circle(3) = {3,1,5};         
-Circle(4) = {5,1,4};         
-Line Loop(5) = {4,1,2,3};         
-Plane Surface(6) = {5};         
-       
-Extrude Surface{6, {0.0,1,0}, {0,0.0,0.0}, 1*3.14159/2};         
-       
-Coherence;         
diff --git a/benchmarks/3d/avetole.geo b/benchmarks/3d/avetole.geo
deleted file mode 100644
index c8a2b7880f0db99e76cc7e3f33fedf009251c89d..0000000000000000000000000000000000000000
--- a/benchmarks/3d/avetole.geo
+++ /dev/null
@@ -1,322 +0,0 @@
-// (c)patrick lefevre
-
-mm = 0.001 ; // 1 milimetre = 0.001 metre
-lc = 7.3*mm ; // unite de base min pour la taille caracteristique du maillage
-
-lcpba2  =  2*lc ;        // lc dessous plaque base 
-lcpba1  =  lc ;          // lc dessus  plaque base
-lcrint1 =  3*lc ;        // lc coquille spherique superieure
-lcrint2 =  3*lc ;        // lc coquille spherique inferieure
-lcrext1 =  3*lcrint1 ;   // lc coquille spherique infini superieure
-lcrext2 =  3*lcrint2 ;   // lc coquille spherique infini inferieure
-
-// definition de longueur de la plaque base
-
-eppba    = 28. *mm ;        // epaisseur plaque base 
-longpba  = 640./2 *mm ;     // longueur plaque base 
-largpba  = 550./2 *mm ;     // largeur plaque base  
-rint     = 500. *mm ;       // rayon interne coquille spherique
-rext     = 1.5 * rint ;     // rayon externe coquille spherique
-// Definition de la plaque base
-
-Point(1)   = {    0.0   ,    0.0   ,    0.0      ,  lcpba2  };  
-Point(2)   = {  largpba ,    0.0   ,    0.0      ,  lcpba2  };
-Point(3)   = {  largpba ,  longpba ,    0.0      ,  lcpba2  };
-Point(4)   = {    0.0   ,  longpba ,    0.0      ,  lcpba2  };
-
-Point(5)   = {    0.0   ,    0.0   ,    eppba      ,  lcpba1  };  
-Point(6)   = {  largpba ,    0.0   ,    eppba      ,  lcpba1  };
-Point(7)   = {  largpba ,  longpba ,    eppba      ,  lcpba1  };
-Point(8)   = {    0.0   ,  longpba ,    eppba      ,  lcpba1  };
-
-Line(9) = {1,2};
-Line(10) = {2,3};
-Line(11) = {3,4};
-Line(12) = {4,1};
-
-Line(14) = {6,7};
-Line(15) = {7,8};
-
-Line(17) = {1,5};
-Line(18) = {2,6};
-Line(19) = {3,7};
-Line(20) = {4,8};
-
-//la surface sur laquelle repose les aimants va etre definie plus tard,et donc aussi le volume
-Line Loop(21) = {9,10,11,12};
-Plane Surface(22) = {21};
-Line Loop(25) = {-14,-18,10,19};
-Plane Surface(26) = {25};
-Line Loop(27) = {20,-15,-19,11};
-Plane Surface(28) = {27};
-
-// Air au dessus des aimants pour le degre 2
-epair =  eppba +20*mm +60*mm ;
-tranZ = 60*mm ;  
-Point(32)   = {    0.0   ,    0.0   ,    epair      ,  lcpba2  };  
-Point(33)   = {  largpba ,    0.0   ,    epair      ,  lcpba2  };
-Point(34)   = {  largpba ,  longpba ,    epair      ,  lcpba2  };
-Point(35)   = {    0.0   ,  longpba ,    epair      ,  lcpba2  };
-
-centre=newreg;
-Point(centre) = {  0.0     ,    0.0   ,   tranZ      ,  lcpba2  };
-
-Line(37) = {32,33};
-Line(38) = {33,34};
-Line(39) = {34,35};
-Line(40) = {35,32};
-Line Loop(41) = {40,37,38,39};
-Plane Surface(42) = {41};
-
-// tole sur laquelle on veut calculer la force
-
-hautole = 53*mm; 
-
-Point(50) = {  0.0     ,  0.0   ,  hautole  ,  lc/3 };
-Point(51) = { largpba  ,  0.0   ,  hautole  ,  lc/3 };
-Point(52) = { largpba  , 215*mm ,  hautole  ,  lc/3 };
-Point(53) = {  0.0     , 215*mm  , hautole  ,  lc/3 };
-Point(54) = { largpba  , longpba , hautole  ,  lc };
-Point(55) = {  0.0     , longpba , hautole  ,  lc };
-
-Line(43) = {6,51};
-Line(44) = {7,54};
-Line(45) = {8,55};
-Line(56) = {50,51};
-Line(57) = {51,52};
-Line(58) = {52,53};
-Line(59) = {53,50};
-Line(60) = {52,54};
-Line(61) = {53,55};
-Line(62) = {54,55};
-Line(63) = {50,32};
-Line(64) = {51,33};
-Line(65) = {54,34};
-Line(66) = {55,35};
-
-
-Line Loop(67) = {56,57,58,59};
-Plane Surface(68) = {67};
-Line Loop(69) = {-58,60,62,-61};
-Plane Surface(70) = {69};Line Loop(71) = {64,-37,-63,56};
-Plane Surface(72) = {71};
-Line Loop(73) = {-65,-60,-57,64,38};
-Plane Surface(74) = {73};
-Line Loop(75) = {66,-39,-65,62};
-Plane Surface(76) = {75};
-Line Loop(77) = {66,40,-63,-59,61};
-Plane Surface(78) = {77};
-Surface Loop(79) = {42,78,76,74,70,68,72};
-Volume(80) = {79};
-
-Line Loop(80) = {44,-60,-57,-43,14};
-Plane Surface(81) = {80};
-Line Loop(82) = {-45,-15,44,62};
-Plane Surface(83) = {82};
-
-
-
-//
-//Spheres_infini 
-//
-Point(100) = {  rint  ,  0.0   ,  tranZ      , lcrint1 };
-Point(101) = {  rext  ,  0.0   ,  tranZ     , lcrext1 };
-Point(102) = {  0.0   ,  rint  ,  tranZ   , lcrint1 };
-Point(103) = {  0.0   ,  rext  ,  tranZ   , lcrext1 };
-Point(104) = {  0.0   ,  0.0   ,  rext+tranZ    , lcrext1 };
-Point(105) = {  0.0   ,  0.0   ,  rint+tranZ     , lcrint1 };
-Point(106) = {  0.0   ,  0.0   ,  -rint+tranZ    , lcrint2 };
-Point(107) = {  0.0   ,  0.0   ,  -rext+tranZ    , lcrext2 };
-
-Line(108)={1,106};
-Line(109)={106,107};
-Line(110)={32,105};
-Line(111)={105,104};
-
-Circle(112) = {100, centre,105};
-Circle(113) = {101, centre,104};
-Circle(114) = {102, centre,105};
-Circle(115) = {103, centre,104};
-Circle(116) = {100, centre,106};
-Circle(117) = {101, centre,107};
-Circle(118) = {102, centre,106};
-Circle(119) = {103, centre,107};
-Circle(120) = {100, centre,102};
-Circle(121) = {101, centre,103};
-
-Line Loop(122) = {-112,120,114};
-Ruled Surface(123) = {122};
-Line Loop(124) = {-113,121,115};
-Ruled Surface(125) = {124};
-Line Loop(126) = {118,-116,120};
-Ruled Surface(127) = {126};
-Line Loop(128) = {-119,-121,117};
-Ruled Surface(129) = {128};
-
-Line Loop(130) = {-112,116,-108,9,18,43,64,-37,110};
-Plane Surface(131) = {130};
-Line Loop(132) = {109,-117,113,-111,-112,116};
-Plane Surface(133) = {132};
-Line Loop(134) = {-114,118,-108,-12,20,45,66,40,110};
-Plane Surface(135) = {134};
-Line Loop(136) = {109,-119,115,-111,-114,118};
-Plane Surface(137) = {136};
-
-Surface Loop(138) = {74,76,135,123,131,127,22,26,81,83,28,42};
-Volume(139) = {138};
-Surface Loop(139) = {123,133,137,129,125,127};
-Volume(140) = {139};
-
-
-// la partie suivante definit les caracteristiques des differents aimants (longueur, largeur, hauteur, espacement, ancrage, angle de rotation)
-
-nbx = 5;                  //nbre d'aimant sur l' axe x
-nby = 5;                  //nbre d'aimant sur l' axe y
-totsym = nbx+nby;
-nbc = 32;                 //nbre d'aimant centraux
-totaim = totsym+nbc;
-
-
-longaim[]= {20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,40*mm,40*mm,40*mm,40*mm,10*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,10*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,10*mm,40*mm,40*mm,40*mm,40*mm,40*mm,40*mm,190*mm,190*mm,190*mm,190*mm,190*mm};     // liste des longueurs des aimants
-largaim[]= {7.5*mm,15*mm,15*mm,15*mm,15*mm,15*mm,7.5*mm,7.5*mm,7.5*mm,7.5*mm,7.5*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,15*mm,10*mm,10*mm,10*mm,10*mm,10*mm}; // liste des largeurs des aimants
-hautaim[]= {20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm,20*mm};     // liste des hauteurs des aimants
-xancaim[]= {0*mm,37.5*mm,82.5*mm,127.5*mm,172.5*mm,217.5*mm,0*mm,0*mm,0*mm,0*mm,0*mm,37.5*mm,37.5*mm,37.5*mm,37.5*mm,38*mm,82.5*mm,82.5*mm,82.5*mm,82.5*mm,82.5*mm,127.5*mm,127.5*mm,127.5*mm,127.5*mm,128*mm,46.3*mm,172.5*mm,172.5*mm,172.5*mm,172.5*mm,172.5*mm,217.5*mm,217.5*mm,217.5*mm,217.5*mm,218*mm,136.3*mm,197.5*mm,152.5*mm,107.5*mm,62.5*mm,17.5*mm}; // liste des xBox des aimants
-espaaim[]= {0*mm,0*mm,0*mm,0*mm,0*mm,0*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,2.5*mm,0*mm,0*mm,0*mm,0*mm,0*mm}; // liste des espaces entre aimants
-
-For i In {0:totaim}  //boucle pour creer la coord y du point d'ancrage des aimants
-  If (i>=0 && i<=nbx)
-  yancaim[i]= 0*mm;EndIf
-  If (i==nbx+1)
-  yancaim[i]= espaaim[i]+longaim[0];EndIf
-  If (i>nbx+1 && i<=totsym)
-  yancaim[i]= espaaim[i]+yancaim[i-1]+longaim[i-1];EndIf
-  If (i==totsym+1)
-  yancaim[i]=espaaim[i]+longaim[1];EndIf
-  If (i>totsym+1 && i<=15)
-  yancaim[i]= espaaim[i]+yancaim[i-1]+longaim[i-1];EndIf
-  If (i==16)
-  yancaim[i]=espaaim[i]+longaim[2];EndIf
-  If (i>16 && i<=20)
-  yancaim[i]= espaaim[i]+yancaim[i-1]+longaim[i-1];EndIf
-  If (i==21)
-  yancaim[i]=espaaim[i]+longaim[3];EndIf
-  If (i>21 && i<=25)
-  yancaim[i]= espaaim[i]+yancaim[i-1]+longaim[i-1];EndIf
-  If (i==26)
-  yancaim[i]= 206.36*mm;EndIf
-  If (i==27)
-  yancaim[i]=espaaim[i]+longaim[4];EndIf
-  If (i>27 && i<=31)
-  yancaim[i]= espaaim[i]+yancaim[i-1]+longaim[i-1];EndIf
-  If (i==32)
-  yancaim[i]=espaaim[i]+longaim[5];EndIf
-  If (i>32 && i<=36)
-  yancaim[i]= espaaim[i]+yancaim[i-1]+longaim[i-1];EndIf
-  If (i==37)
-  yancaim[i]= 206.36*mm;EndIf
-  If (i==38)
-  yancaim[i]= 5*mm;EndIf
-  If (i==39)
-  yancaim[i]= 5*mm;EndIf
-  If (i==40)
-  yancaim[i]= 5*mm;EndIf
-  If (i==41)
-  yancaim[i]= 5*mm;EndIf
-  If (i==42)
-  yancaim[i]= 5*mm;EndIf
-EndFor  
-anglerot[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,63,-63,0,0,0,0,0,0,0,0,0,63,-63,0,0,0,0,0};//liste des angles de rotation des aimants
-
-// Introduction des aimants
-For i In {0:totaim}
-  iBox=i; wBox=largaim[i]; lBox=longaim[i]; hBox=hautaim[i]; 
-  xBox=xancaim[i]; 
-  yBox=yancaim[i]; zBox= eppba ; lcBox=lc; thetaBox= anglerot[i];
-  Include "BOX.geo"; 
-EndFor
-
-For tx In {1:nbx} // creation des lignes manquantes sur l'axe x
-  divline = newreg;
-  Line(divline) = {Boxes_Point2[tx-1],Boxes_Point1[tx]};
-  Boxes_divx[tx-1]=divline;
-EndFor
-
-divline = newreg;// creation des lignes manquantes sur l'axe y
-Line(divline) = {Boxes_Point4[0],Boxes_Point1[nbx+1]};
-Boxes_divy[0]=divline;
-Boxes_divyN[0]=-divline;
-
-For i In {1:(nby-1)}
-  divline = newreg;
-  Line(divline) = {Boxes_Point4[i+nbx],Boxes_Point1[i+nbx+1]};
-  Boxes_divy[i]=divline;
-  Boxes_divyN[i]=-divline;
-EndFor
-
-derx = newreg;
-Line(derx)= {Boxes_Point2[nbx],6};
-axex[]={Boxes_divx[],derx};
-
-maille = newreg;
-Point(maille)={    0.0   ,  250*mm ,    eppba      ,  lcpba1  };
-dery1= newreg;
-Line(dery1)={maille,8};
-
-dery = newreg;
-Line(dery)= {Boxes_Point4[totsym],maille};
-axey[]={Boxes_divy[],dery,dery1};
-axeyN[]={Boxes_divyN[],-dery,-dery1};
-axez = newreg;
-Line(axez)={Boxes_Point5[0],50};
-
-//il manque 5 surface
-
-surfxpb = newreg;
-Line Loop(surfxpb)= {Boxes_Linep1p2[{0:nbx}],axex[],-18,-9,17};
-Plane Surface(surfxpb+1)= {surfxpb};
-
-surfypb = newreg;
-Line Loop(surfypb)= {Boxes_Linep4p1[0],Boxes_Linep4p1[{(nbx+1):(totsym)}],axey[],-20,12,17};
-Plane Surface(surfypb+1)= {surfypb};
-
-surfxair = newreg;
-Line Loop(surfxair)= {Boxes_Linep5p6[{0:nbx}],Boxes_Linep2p6[{0:nbx}],Boxes_Linep1p5[{1:nbx}],axex[],43,-56,-axez};
-Plane Surface(surfxair+1)= {surfxair};
-
-surfyair = newreg;
-Line Loop(surfyair)= {Boxes_Linep8p5[0],Boxes_Linep4p8[0],Boxes_Linep4p8[{(nbx+1):(totsym)}],Boxes_Linep8p5[{(nbx+1):(totsym)}],axey[],Boxes_Linep1p5[{(nbx+1):(totsym)}],45,-61,59,-axez};
-Plane Surface(surfyair+1)= {surfyair};
-
-
-surfbase = newreg;
-Line Loop(surfbase)= {axex[],Boxes_Linep3p4[{0:totsym}],Boxes_Linep2p3[{0:totsym}],Boxes_Linep4p1[{1:nbx}],Boxes_Linep2p1[{(nbx+1):(totsym)}],14,15,axeyN[]};
-Plane Surface(surfbase+1)= {surfbase,Boxes_LineLoop1[{totsym+1:totaim}]};
-
-// il manque 2 volume
-
-volpb = newreg;
-Surface Loop(volpb)={surfxpb+1,26,28,22,surfypb+1,surfbase+1,Boxes_PlanSurf1[]};
-Volume(volpb+1)= {volpb};
-
-volair = newreg;
-Surface Loop(volair)={surfxair+1,surfyair+1,surfbase+1,68,70,81,83,Boxes_PlanSurf2[],Boxes_PlanSurf6[],Boxes_PlanSurf5[],Boxes_PlanSurf3[{1:nbx}],Boxes_PlanSurf3[{(totsym+1):totaim}],Boxes_PlanSurf4[{(nbx+1):(totaim)}]};
-Volume(volair+1)={volair};
-
-// definition des entites physiques
-
-Physical Volume(9999)={volpb+1,Boxes_Volume[10],Boxes_Volume[20],Boxes_Volume[31],Boxes_Volume[{totaim-4:totaim}]};
-Physical Volume(9998)={volair+1,80};
-Physical Volume(9997)={139};
-Physical Volume(9996)={140};
-
-//config2Physical Volume(8888)={Boxes_Volume[0],Boxes_Volume[2],Boxes_Volume[{nbx+1:totsym}],Boxes_Volume[{14:16}]};
-//config2Physical Volume(8887)={Boxes_Volume[1],Boxes_Volume[3],Boxes_Volume[{9:13}],Boxes_Volume[{17:22}]};
-Physical Volume(8888)={Boxes_Volume[0],Boxes_Volume[2],Boxes_Volume[4],Boxes_Volume[{nbx+1:totsym-1}],Boxes_Volume[{16:19}],Boxes_Volume[{27:30}]};
-Physical Volume(8887)={Boxes_Volume[1],Boxes_Volume[3],Boxes_Volume[5],Boxes_Volume[{11:15}],Boxes_Volume[{21:26}],Boxes_Volume[{32:37}]};
-
-Physical Surface(7776)={125,129};
-Physical Surface(7777)={Boxes_PlanSurf4[{0:nbx}],surfxpb+1,surfxair+1,72,131,133,Boxes_PlanSurf3[0],Boxes_PlanSurf3[{nbx+1:totsym}],surfypb+1,surfyair+1,135,137,78};
-
-
-Physical Surface(6666)={68};
-
diff --git a/benchmarks/3d/brain.geo b/benchmarks/3d/brain.geo
deleted file mode 100644
index e42ba7b2511f172392a135c9524abc292481dc83..0000000000000000000000000000000000000000
--- a/benchmarks/3d/brain.geo
+++ /dev/null
@@ -1,35 +0,0 @@
-Point(newp) = {0,0,0,0.1};  /* Point 1 */
-Point(newp) = {1,0,0,0.1};  /* Point 2 */
-Point(newp) = {-1,0,0,0.1};  /* Point 3 */
-
-Point(newp) = {0,.8,0,0.1};  /* Point 4 */
-Point(newp) = {0,0,.8,0.1};  /* Point 5 */
-Point(newp) = {0,0,-.8,0.1};  /* Point 6 */
-
-Point(newp) = {.1,0,-.79,.1};  /* Point 7 */
-Point(newp) = {.3,0,-.73,.1};  /* Point 8 */
-Point(newp) = {.65,0,-.55,.1};  /* Point 9 */
-Point(newp) = {.9,0,-.38,.1};  /* Point 10 */
-
-Point(newp) = {.1,0,.79,.1};  /* Point 11 */
-Point(newp) = {.3,0,.73,.1};  /* Point 12 */
-Point(newp) = {.65,0,.55,.1};  /* Point 13 */
-Point(newp) = {.9,0,.38,.1};  /* Point 14 */
-
-Spline(1) = {6,7,8,9,10,2};
-Circle(2) = {6,1,4};
-Circle(3) = {2,1,1,4};
-Line Loop(4) = {3,-2,1};
-Ruled Surface(5) = {4};
-
-Spline(6) = {5,11,12,13,14,2};
-Circle(7) = {5,1,4};
-Line Loop(8) = {3,-7,6};
-Ruled Surface(9) = {8};
-Line(10) = {6,5};
-Line Loop(11) = {7,-2,10};
-Plane Surface(12) = {11};
-Line Loop(13) = {-1,10,6};
-Plane Surface(14) = {13};
-Surface Loop(15) = {12,9,-5,-14};
-Complex Volume(16) = {15};
diff --git a/benchmarks/3d/bug_prot.geo b/benchmarks/3d/bug_prot.geo
deleted file mode 100644
index 03c89fbcfa162a84409ebfa3bd83b36a6e8e9f7b..0000000000000000000000000000000000000000
--- a/benchmarks/3d/bug_prot.geo
+++ /dev/null
@@ -1,6 +0,0 @@
-c45 = 0.5 * (2^0.5); 
-Point(1) = {0.0,0.0,0.0,1.0};  
-Point(2) = {-c45,c45,0.0,1.0};  
-Line(1) = {1,2}; 
-Extrude Line{1, {-c45,c45,0}, {1,0.0,0}, 3.14159/2 }; 
-Coherence; 
diff --git a/benchmarks/3d/calbute.geo b/benchmarks/3d/calbute.geo
deleted file mode 100644
index 8ffdc2d93f2f151fb9208ee272f2b6222598ffcf..0000000000000000000000000000000000000000
--- a/benchmarks/3d/calbute.geo
+++ /dev/null
@@ -1,27 +0,0 @@
-lc = 1;
-Point(2) = {-1.96039E+00,-1.28719E+00, 2.12132E+00,lc}; 
-Point(3) = {-5.60111E-01,-1.08916E+00, 7.07107E-01,lc}; 
-Point(4) = {-2.24045E+00, 6.93103E-01, 2.12132E+00,lc}; 
-Point(5) = {-8.40168E-01, 8.91133E-01, 7.07107E-01,lc}; 
-Point(6) = { 5.60111E-01, 1.08916E+00, 7.07107E-01,lc}; 
-Point(7) = { 1.96039E+00, 1.28719E+00, 2.12132E+00,lc}; 
-Point(11) = { 2.24045E+00,-6.93103E-01, 2.12132E+00,lc}; 
-Point(15) = { 8.40168E-01,-8.91133E-01, 7.07107E-01,lc}; 
-Point(27) = {-1.40028E-01, 9.90148E-01, 1.20739E-15,lc}; 
-Point(37) = { 1.40028E-01,-9.90148E-01,-1.20739E-15,lc}; 
-Line (1) = {4,2}; 
-Line (2) = {2,3}; 
-Line (3) = {3,5}; 
-Line (4) = {5,4}; 
-Line (8) = {6,7}; 
-Line (9) = {7,11}; 
-Line (10) = {11,15}; 
-Line (11) = {15,6}; 
-Circle (13) = {5,27,6} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00}; 
-Circle (14) = {4,27,7} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00}; 
-Circle (18) = {2,37,11} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00}; 
-Circle (22) = {3,37,15} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00}; 
-Line Loop (1000019) = {  1, 18, -9,-14}; 
-Ruled Surface (19) = {1000019}; 
-Extrude Line{1, {-0.,1,0}, {0.0,0.0,0.0}, -3.14159/2 };
-Coherence;
diff --git a/benchmarks/3d/cas_pb.geo b/benchmarks/3d/cas_pb.geo
deleted file mode 100644
index 5bfd74607873b37d9b545a25b54aaa5876b277af..0000000000000000000000000000000000000000
--- a/benchmarks/3d/cas_pb.geo
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Point(1) = {0,0,0,10};
-Point(2) = {10,10,0,1};
-Point(3) = {10,0,0,1};
-Point(4) = {0,10,0,1};
-Line(1) = {1,4};
-Line(2) = {4,2};
-Line(3) = {2,3};
-Line(4) = {3,1};
-Line Loop(5) = {4,1,2,3};
-Plane Surface(6) = {5};
-Extrude Surface { 6, {0,0,1} };
-Coherence;
-
-Point(111) = {5,5,-.1,.2};
-Point(15) = {4,4,-.1,.2};
-Point(16) = {4,6,-.1,.2};
-Point(17) = {6,4,-.1,.2};
-Point(18) = {6,6,-.1,.2};
-Circle(29) = {15,111,16};
-Circle(30) = {16,111,18};
-Circle(31) = {18,111,17};
-Circle(32) = {17,111,15};
-Line Loop(33) = {30,31,32,29};
-Plane Surface(34) = {33};
-Extrude Surface { 34, {0,0,-1} };
-Coherence;
-Surface Loop(57) = {56,43,34,47,51,55};
-Complex Volume(58) = {57};
-
-Surface Loop(58) = {28,15,6,19,23,27};
-Complex Volume(59) = {58};
-
diff --git a/benchmarks/3d/coin.geo b/benchmarks/3d/coin.geo
deleted file mode 100644
index 75db8b37cb7b441864c0139095dd11a663c62fec..0000000000000000000000000000000000000000
--- a/benchmarks/3d/coin.geo
+++ /dev/null
@@ -1,58 +0,0 @@
-lcar1 = .2;
-
-Point(newp) = {0.5,0.5,0.5,lcar1}; /* Point      1 */
-Point(newp) = {0.5,0.5,0,lcar1}; /* Point      2 */
-Point(newp) = {0,0.5,0.5,lcar1}; /* Point      3 */
-Point(newp) = {0,0,0.5,lcar1}; /* Point      4 */
-Point(newp) = {0.5,0,0.5,lcar1}; /* Point      5 */
-Point(newp) = {0.5,0,0,lcar1}; /* Point      6 */
-Point(newp) = {0,0.5,0,lcar1}; /* Point      7 */
-Point(newp) = {0,1,0,lcar1}; /* Point      8 */
-Point(newp) = {1,1,0,lcar1}; /* Point     9 */
-Point(newp) = {0,0,1,lcar1}; /* Point     10 */
-Point(newp) = {0,1,1,lcar1}; /* Point     11 */
-Point(newp) = {1,1,1,lcar1}; /* Point     12 */
-Point(newp) = {1,0,1,lcar1}; /* Point     13 */
-Point(newp) = {1,0,0,lcar1};
-
-Line(1) = {8,9};
-Line(2) = {9,12};
-Line(3) = {12,11};
-Line(4) = {11,8};
-Line(5) = {9,14};
-Line(6) = {14,13};
-Line(7) = {13,12};
-Line(8) = {11,10};
-Line(9) = {10,13};
-Line(10) = {10,4};
-Line(11) = {4,5};
-Line(12) = {5,6};
-Line(13) = {6,2};
-Line(14) = {2,1};
-Line(15) = {1,3};
-Line(16) = {3,7};
-Line(17) = {7,2};
-Line(18) = {3,4};
-Line(19) = {5,1};
-Line(20) = {7,8};
-Line(21) = {6,14};
-Line Loop(22) = {11,19,15,18};
-Plane Surface(23) = {22};
-Line Loop(24) = {16,17,14,15};
-Plane Surface(25) = {24};
-Line Loop(26) = {-17,20,1,5,-21,13};
-Plane Surface(27) = {26};
-Line Loop(28) = {4,1,2,3};
-Plane Surface(29) = {28};
-Line Loop(30) = {7,-2,5,6};
-Plane Surface(31) = {30};
-Line Loop(32) = {6,-9,10,11,12,21};
-Plane Surface(33) = {32};
-Line Loop(34) = {7,3,8,9};
-Plane Surface(35) = {34};
-Line Loop(36) = {10,-18,16,20,-4,8};
-Plane Surface(37) = {36};
-Line Loop(38) = {-14,-13,-12,19};
-Plane Surface(39) = {38};
-Surface Loop(40) = {35,31,29,37,33,23,39,25,27};
-Complex Volume(41) = {40};
diff --git a/benchmarks/3d/cube.geo b/benchmarks/3d/cube.geo
deleted file mode 100644
index 77a067c3d9be6ca7fdfdffe0f111db7294fd1bc7..0000000000000000000000000000000000000000
--- a/benchmarks/3d/cube.geo
+++ /dev/null
@@ -1,17 +0,0 @@
-/****************************  
-cube meshed uniformly  
-****************************/  
-Point(1) = {0.0,0.0,0.0,.025};         
-Point(2) = {1,0.0,0.0,.025};         
-Point(3) = {1,1,0.0,.4};         
-Point(4) = {0,1,0.0,.4};         
-Line(1) = {4,3};         
-Line(2) = {3,2};         
-Line(3) = {2,1};         
-Line(4) = {1,4};         
-Line Loop(5) = {2,3,4,1};         
-Plane Surface(6) = {5};         
-Extrude Surface { 6, {0,0.0,1} };         
-    
-Surface Loop(29) = {23,6,15,19,28,27};   
-Complex Volume(30) = {29};   
diff --git a/benchmarks/3d/ellipsis.geo b/benchmarks/3d/ellipsis.geo
deleted file mode 100644
index eb0fb3910227eebf32d6b63973e04250ab07fd68..0000000000000000000000000000000000000000
--- a/benchmarks/3d/ellipsis.geo
+++ /dev/null
@@ -1,37 +0,0 @@
-Point(newp) = { 0,  0,0,.1};  
-Point(newp) = {-1,  0,0,.1};  
-Point(newp) = { 1,  0,0,.1};  
-Point(newp) = { 0, .5,0,.1};  
-Point(newp) = { 0,-.5,0,.1};  
-Point(newp) = { 0,  0,.8,.1};  
-Point(newp) = { 0,  0,-1,.1};  
-
-Ellipsis(1) = {3,1,3,4};
-Ellipsis(2) = {4,1,2,2};
-Ellipsis(3) = {2,1,2,5};
-Ellipsis(4) = {5,1,3,3};
-Ellipsis(5) = {7,1,7,4};
-Ellipsis(6) = {4,1,6,6};
-Ellipsis(7) = {6,1,6,5};
-Ellipsis(8) = {5,1,7,7};
-Ellipsis(9) = {6,1,3,3};
-Ellipsis(10) = {2,1,2,6};
-Ellipsis(11) = {7,1,2,2};
-Ellipsis(12) = {3,1,3,7};
-
-Line Loop(13) = {1,6,9};
-Ruled Surface(14) = {13};
-Line Loop(15) = {4,-9,7};
-Ruled Surface(16) = {15};
-Line Loop(17) = {-7,-10,3};
-Ruled Surface(18) = {17};
-Line Loop(19) = {3,8,11};
-Ruled Surface(20) = {19};
-Line Loop(21) = {2,-11,5};
-Ruled Surface(22) = {21};
-Line Loop(23) = {-5,-12,1};
-Ruled Surface(24) = {23};
-Line Loop(25) = {-12,-4,8};
-Ruled Surface(26) = {25};
-Line Loop(27) = {-6,2,10};
-Ruled Surface(28) = {27};
diff --git a/benchmarks/3d/francois.geo b/benchmarks/3d/francois.geo
deleted file mode 100644
index a27017c8910d7b81740bb70e8d949bfa283ba73f..0000000000000000000000000000000000000000
--- a/benchmarks/3d/francois.geo
+++ /dev/null
@@ -1,33 +0,0 @@
-r = 2.24; 
-Point(1) = {0.0,0.0,0.0,.2};   
-Point(2) = {r,.0,0.0,.2};   
-Point(3) = {-r,0.0,0.0,.2};   
-Point(4) = {0,r,0.0,.2};   
-Point(5) = {0,-r,0.0,.2};   
-Circle(1) = {2,1,4};   
-Circle(2) = {4,1,3};   
-Circle(3) = {3,1,5};   
-Circle(4) = {5,1,2};   
-Point(6) = {10,10,0.0,1};   
-Point(7) = {-10,10,0.0,1};   
-Point(8) = {-10,-10,0.0,1};   
-Point(9) = {10,-10,0.0,1};   
-Line(5) = {8,7};   
-Line(6) = {7,6};   
-Line(7) = {6,9};   
-Line(8) = {9,8};   
-Line Loop(9) = {6,7,8,5};   
-Line Loop(10) = {4,1,2,3};   
-Plane Surface(11) = {9,10};   
-Extrude Surface {11, {0,0.0,2.0}}
-{
-   Layers { {2,1,2} , {100,200,100} , {.05,.95,1.} } ;
-};
-Coherence; 
-Physical Surface(54) = {53};
-Physical Surface(55) = {11};
-Physical Surface(56) = {40,44,48,52};
-Physical Surface(57) = {53};
-
-//Surface Loop(58) = {53,24,11,28,32,36,40,44,48,52};
-//Complex Volume(59) = {58};
diff --git a/benchmarks/3d/naca12.geo b/benchmarks/3d/naca12.geo
deleted file mode 100644
index bd34464a5e03ecf1c4a510c765727831d47bf911..0000000000000000000000000000000000000000
--- a/benchmarks/3d/naca12.geo
+++ /dev/null
@@ -1,481 +0,0 @@
-// Alpha 666 (the number of the beast) MHz
-// gmsh naca12.geo -clscale 1.0  -3  -> Elm=5567, 1.3 s
-// gmsh naca12.geo -clscale 0.3  -3  -> Elm=152411, 66 s
-// gmsh naca12.geo -clscale 0.15 -3  -> Elm=1057132, 968 s
-// gmsh naca12.geo -clscale 0.11 -3  -> Elm=2541338, 3658 s (1.6 Gb = bcp trop)
-// gmsh naca12.geo -clscale 0.09 -3  -> Elm=4770776, 19821.1 s (!)...
-lc = 0.1; 
-Point(1) = {1.000000e+00,0.000000e+00,0.000000e+00,lc}; 
-Point(2) = {9.997533e-01,0.000000e+00,-3.498543e-05,lc}; 
-Point(3) = {9.990134e-01,0.000000e+00,-1.398841e-04,1.003943e-01}; 
-Point(4) = {9.977810e-01,0.000000e+00,-3.143904e-04,1.008856e-01}; 
-Point(5) = {9.960575e-01,0.000000e+00,-5.579769e-04,1.015708e-01}; 
-Point(6) = {9.938442e-01,0.000000e+00,-8.699747e-04,1.024472e-01}; 
-Point(7) = {9.911436e-01,0.000000e+00,-1.249551e-03,1.035112e-01}; 
-Point(8) = {9.879584e-01,0.000000e+00,-1.695579e-03,1.047586e-01}; 
-Point(9) = {9.842916e-01,0.000000e+00,-2.206860e-03,1.061847e-01}; 
-Point(10) = {9.801469e-01,0.000000e+00,-2.781989e-03,1.077836e-01}; 
-Point(11) = {9.755284e-01,0.000000e+00,-3.419365e-03,1.095491e-01}; 
-Point(12) = {9.704404e-01,0.000000e+00,-4.117359e-03,1.114743e-01}; 
-Point(13) = {9.648883e-01,0.000000e+00,-4.874101e-03,1.135515e-01}; 
-Point(14) = {9.588774e-01,0.000000e+00,-5.687566e-03,1.157726e-01}; 
-Point(15) = {9.524136e-01,0.000000e+00,-6.555737e-03,1.181288e-01}; 
-Point(16) = {9.455034e-01,0.000000e+00,-7.476377e-03,1.206107e-01}; 
-Point(17) = {9.381535e-01,0.000000e+00,-8.447210e-03,1.232086e-01}; 
-Point(18) = {9.303712e-01,0.000000e+00,-9.465891e-03,1.259123e-01}; 
-Point(19) = {9.221641e-01,0.000000e+00,-1.052998e-02,1.287110e-01}; 
-Point(20) = {9.135405e-01,0.000000e+00,-1.163695e-02,1.315937e-01}; 
-Point(21) = {9.045087e-01,0.000000e+00,-1.278429e-02,1.345491e-01}; 
-Point(22) = {8.950777e-01,0.000000e+00,-1.396934e-02,1.375654e-01}; 
-Point(23) = {8.852569e-01,0.000000e+00,-1.518951e-02,1.406308e-01}; 
-Point(24) = {8.750558e-01,0.000000e+00,-1.644214e-02,1.437333e-01}; 
-Point(25) = {8.644845e-01,0.000000e+00,-1.772453e-02,1.468604e-01}; 
-Point(26) = {8.535537e-01,0.000000e+00,-1.903398e-02,1.499999e-01}; 
-Point(27) = {8.422739e-01,0.000000e+00,-2.036772e-02,1.531394e-01}; 
-Point(28) = {8.306563e-01,0.000000e+00,-2.172309e-02,1.562666e-01}; 
-Point(29) = {8.187124e-01,0.000000e+00,-2.309725e-02,1.593690e-01}; 
-Point(30) = {8.064539e-01,0.000000e+00,-2.448751e-02,1.624344e-01}; 
-Point(31) = {7.938930e-01,0.000000e+00,-2.589105e-02,1.654508e-01}; 
-Point(32) = {7.810421e-01,0.000000e+00,-2.730503e-02,1.684061e-01}; 
-Point(33) = {7.679139e-01,0.000000e+00,-2.872668e-02,1.712889e-01}; 
-Point(34) = {7.545212e-01,0.000000e+00,-3.015313e-02,1.740876e-01}; 
-Point(35) = {7.408773e-01,0.000000e+00,-3.158154e-02,1.767913e-01}; 
-Point(36) = {7.269957e-01,0.000000e+00,-3.300894e-02,1.793892e-01}; 
-Point(37) = {7.128901e-01,0.000000e+00,-3.443245e-02,1.818711e-01}; 
-Point(38) = {6.985745e-01,0.000000e+00,-3.584905e-02,1.842273e-01}; 
-Point(39) = {6.840628e-01,0.000000e+00,-3.725576e-02,1.864484e-01}; 
-Point(40) = {6.693696e-01,0.000000e+00,-3.864942e-02,1.885256e-01}; 
-Point(41) = {6.545091e-01,0.000000e+00,-4.002701e-02,1.904508e-01}; 
-Point(42) = {6.394961e-01,0.000000e+00,-4.138529e-02,1.922163e-01}; 
-Point(43) = {6.243456e-01,0.000000e+00,-4.272101e-02,1.938153e-01}; 
-Point(44) = {6.090723e-01,0.000000e+00,-4.403092e-02,1.952413e-01}; 
-Point(45) = {5.936913e-01,0.000000e+00,-4.531165e-02,1.964888e-01}; 
-Point(46) = {5.782179e-01,0.000000e+00,-4.655984e-02,1.975528e-01}; 
-Point(47) = {5.626673e-01,0.000000e+00,-4.777199e-02,1.984291e-01}; 
-Point(48) = {5.470549e-01,0.000000e+00,-4.894463e-02,1.991143e-01}; 
-Point(49) = {5.313960e-01,0.000000e+00,-5.007425e-02,lc}; 
-Point(50) = {5.157061e-01,0.000000e+00,-5.115728e-02,1.999013e-01}; 
-Point(51) = {5.000008e-01,0.000000e+00,-5.219014e-02,2.000000e-01}; 
-Point(52) = {4.842954e-01,0.000000e+00,-5.316926e-02,1.999013e-01}; 
-Point(53) = {4.686055e-01,0.000000e+00,-5.409108e-02,1.996058e-01}; 
-Point(54) = {4.529467e-01,0.000000e+00,-5.495201e-02,1.991144e-01}; 
-Point(55) = {4.373342e-01,0.000000e+00,-5.574857e-02,1.984292e-01}; 
-Point(56) = {4.217836e-01,0.000000e+00,-5.647729e-02,1.975529e-01}; 
-Point(57) = {4.063102e-01,0.000000e+00,-5.713477e-02,1.964889e-01}; 
-Point(58) = {3.909292e-01,0.000000e+00,-5.771770e-02,1.952414e-01}; 
-Point(59) = {3.756559e-01,0.000000e+00,-5.822293e-02,1.938154e-01}; 
-Point(60) = {3.605053e-01,0.000000e+00,-5.864737e-02,1.922165e-01}; 
-Point(61) = {3.454924e-01,0.000000e+00,-5.898812e-02,1.904510e-01}; 
-Point(62) = {3.306319e-01,0.000000e+00,-5.924247e-02,1.885258e-01}; 
-Point(63) = {3.159386e-01,0.000000e+00,-5.940786e-02,1.864486e-01}; 
-Point(64) = {3.014269e-01,0.000000e+00,-5.948193e-02,1.842275e-01}; 
-Point(65) = {2.871112e-01,0.000000e+00,-5.946260e-02,1.818713e-01}; 
-Point(66) = {2.730056e-01,0.000000e+00,-5.934800e-02,1.793894e-01}; 
-Point(67) = {2.591240e-01,0.000000e+00,-5.913650e-02,1.767915e-01}; 
-Point(68) = {2.454802e-01,0.000000e+00,-5.882679e-02,1.740879e-01}; 
-Point(69) = {2.320875e-01,0.000000e+00,-5.841779e-02,1.712892e-01}; 
-Point(70) = {2.189592e-01,0.000000e+00,-5.790876e-02,1.684064e-01}; 
-Point(71) = {2.061082e-01,0.000000e+00,-5.729925e-02,1.654510e-01}; 
-Point(72) = {1.935473e-01,0.000000e+00,-5.658907e-02,1.624347e-01}; 
-Point(73) = {1.812888e-01,0.000000e+00,-5.577839e-02,1.593693e-01}; 
-Point(74) = {1.693449e-01,0.000000e+00,-5.486767e-02,1.562669e-01}; 
-Point(75) = {1.577273e-01,0.000000e+00,-5.385765e-02,1.531398e-01}; 
-Point(76) = {1.464474e-01,0.000000e+00,-5.274938e-02,1.500002e-01}; 
-Point(77) = {1.355165e-01,0.000000e+00,-5.154420e-02,1.468607e-01}; 
-Point(78) = {1.249452e-01,0.000000e+00,-5.024372e-02,1.437336e-01}; 
-Point(79) = {1.147441e-01,0.000000e+00,-4.884978e-02,1.406312e-01}; 
-Point(80) = {1.049232e-01,0.000000e+00,-4.736451e-02,1.375657e-01}; 
-Point(81) = {9.549212e-02,0.000000e+00,-4.579021e-02,1.345494e-01}; 
-Point(82) = {8.646032e-02,0.000000e+00,-4.412942e-02,1.315940e-01}; 
-Point(83) = {7.783660e-02,0.000000e+00,-4.238483e-02,1.287112e-01}; 
-Point(84) = {6.962952e-02,0.000000e+00,-4.055926e-02,1.259125e-01}; 
-Point(85) = {6.184718e-02,0.000000e+00,-3.865567e-02,1.232088e-01}; 
-Point(86) = {5.449721e-02,0.000000e+00,-3.667711e-02,1.206109e-01}; 
-Point(87) = {4.758692e-02,0.000000e+00,-3.462668e-02,1.181290e-01}; 
-Point(88) = {4.112309e-02,0.000000e+00,-3.250752e-02,1.157728e-01}; 
-Point(89) = {3.511214e-02,0.000000e+00,-3.032277e-02,1.135517e-01}; 
-Point(90) = {2.955997e-02,0.000000e+00,-2.807550e-02,1.114745e-01}; 
-Point(91) = {2.447206e-02,0.000000e+00,-2.576878e-02,1.095493e-01}; 
-Point(92) = {1.985344e-02,0.000000e+00,-2.340553e-02,1.077837e-01}; 
-Point(93) = {1.570869e-02,0.000000e+00,-2.098859e-02,1.061848e-01}; 
-Point(94) = {1.204184e-02,0.000000e+00,-1.852062e-02,1.047587e-01}; 
-Point(95) = {8.856565e-03,0.000000e+00,-1.600414e-02,1.035113e-01}; 
-Point(96) = {6.155997e-03,0.000000e+00,-1.344148e-02,1.024472e-01}; 
-Point(97) = {3.942788e-03,0.000000e+00,-1.083471e-02,1.015709e-01}; 
-Point(98) = {2.219111e-03,0.000000e+00,-8.185687e-03,1.008857e-01}; 
-Point(99) = {9.866953e-04,0.000000e+00,-5.496060e-03,1.003943e-01}; 
-Point(100) = {2.467632e-04,0.000000e+00,-2.767267e-03,lc}; 
-Point(101) = {0.000000e+00,0.000000e+00,1.911503e-39,1.000000e-01}; 
-Point(102) = {2.467632e-04,0.000000e+00,2.767267e-03,1.000987e-01}; 
-Point(103) = {9.866953e-04,0.000000e+00,5.496060e-03,1.003943e-01}; 
-Point(104) = {2.219111e-03,0.000000e+00,8.185687e-03,1.008857e-01}; 
-Point(105) = {3.942788e-03,0.000000e+00,1.083471e-02,1.015709e-01}; 
-Point(106) = {6.155997e-03,0.000000e+00,1.344148e-02,1.024472e-01}; 
-Point(107) = {8.856565e-03,0.000000e+00,1.600414e-02,1.035113e-01}; 
-Point(108) = {1.204184e-02,0.000000e+00,1.852062e-02,1.047587e-01}; 
-Point(109) = {1.570869e-02,0.000000e+00,2.098859e-02,1.061848e-01}; 
-Point(110) = {1.985344e-02,0.000000e+00,2.340553e-02,1.077837e-01}; 
-Point(111) = {2.447206e-02,0.000000e+00,2.576878e-02,1.095493e-01}; 
-Point(112) = {2.955997e-02,0.000000e+00,2.807550e-02,1.114745e-01}; 
-Point(113) = {3.511214e-02,0.000000e+00,3.032277e-02,1.135517e-01}; 
-Point(114) = {4.112309e-02,0.000000e+00,3.250752e-02,1.157728e-01}; 
-Point(115) = {4.758692e-02,0.000000e+00,3.462668e-02,1.181290e-01}; 
-Point(116) = {5.449721e-02,0.000000e+00,3.667711e-02,1.206109e-01}; 
-Point(117) = {6.184718e-02,0.000000e+00,3.865567e-02,1.232088e-01}; 
-Point(118) = {6.962952e-02,0.000000e+00,4.055926e-02,1.259125e-01}; 
-Point(119) = {7.783660e-02,0.000000e+00,4.238483e-02,1.287112e-01}; 
-Point(120) = {8.646032e-02,0.000000e+00,4.412942e-02,1.315940e-01}; 
-Point(121) = {9.549212e-02,0.000000e+00,4.579021e-02,1.345494e-01}; 
-Point(122) = {1.049232e-01,0.000000e+00,4.736451e-02,1.375657e-01}; 
-Point(123) = {1.147441e-01,0.000000e+00,4.884978e-02,1.406312e-01}; 
-Point(124) = {1.249452e-01,0.000000e+00,5.024372e-02,1.437336e-01}; 
-Point(125) = {1.355165e-01,0.000000e+00,5.154420e-02,1.468607e-01}; 
-Point(126) = {1.464474e-01,0.000000e+00,5.274938e-02,1.500002e-01}; 
-Point(127) = {1.577273e-01,0.000000e+00,5.385765e-02,1.531398e-01}; 
-Point(128) = {1.693449e-01,0.000000e+00,5.486767e-02,1.562669e-01}; 
-Point(129) = {1.812888e-01,0.000000e+00,5.577839e-02,1.593693e-01}; 
-Point(130) = {1.935473e-01,0.000000e+00,5.658907e-02,1.624347e-01}; 
-Point(131) = {2.061082e-01,0.000000e+00,5.729925e-02,1.654510e-01}; 
-Point(132) = {2.189592e-01,0.000000e+00,5.790876e-02,1.684064e-01}; 
-Point(133) = {2.320875e-01,0.000000e+00,5.841779e-02,1.712892e-01}; 
-Point(134) = {2.454802e-01,0.000000e+00,5.882679e-02,1.740879e-01}; 
-Point(135) = {2.591240e-01,0.000000e+00,5.913650e-02,1.767915e-01}; 
-Point(136) = {2.730056e-01,0.000000e+00,5.934800e-02,1.793894e-01}; 
-Point(137) = {2.871112e-01,0.000000e+00,5.946260e-02,1.818713e-01}; 
-Point(138) = {3.014269e-01,0.000000e+00,5.948193e-02,1.842275e-01}; 
-Point(139) = {3.159386e-01,0.000000e+00,5.940786e-02,1.864486e-01}; 
-Point(140) = {3.306319e-01,0.000000e+00,5.924247e-02,1.885258e-01}; 
-Point(141) = {3.454924e-01,0.000000e+00,5.898812e-02,1.904510e-01}; 
-Point(142) = {3.605053e-01,0.000000e+00,5.864737e-02,1.922165e-01}; 
-Point(143) = {3.756559e-01,0.000000e+00,5.822293e-02,1.938154e-01}; 
-Point(144) = {3.909292e-01,0.000000e+00,5.771770e-02,1.952414e-01}; 
-Point(145) = {4.063102e-01,0.000000e+00,5.713477e-02,1.964889e-01}; 
-Point(146) = {4.217836e-01,0.000000e+00,5.647729e-02,1.975529e-01}; 
-Point(147) = {4.373342e-01,0.000000e+00,5.574857e-02,1.984292e-01}; 
-Point(148) = {4.529467e-01,0.000000e+00,5.495201e-02,1.991144e-01}; 
-Point(149) = {4.686055e-01,0.000000e+00,5.409108e-02,1.996058e-01}; 
-Point(150) = {4.842954e-01,0.000000e+00,5.316926e-02,lc}; 
-Point(151) = {5.000008e-01,0.000000e+00,5.219014e-02,2.000000e-01}; 
-Point(152) = {5.157061e-01,0.000000e+00,5.115728e-02,1.999013e-01}; 
-Point(153) = {5.313960e-01,0.000000e+00,5.007425e-02,1.996057e-01}; 
-Point(154) = {5.470549e-01,0.000000e+00,4.894463e-02,1.991143e-01}; 
-Point(155) = {5.626673e-01,0.000000e+00,4.777199e-02,1.984291e-01}; 
-Point(156) = {5.782179e-01,0.000000e+00,4.655984e-02,1.975528e-01}; 
-Point(157) = {5.936913e-01,0.000000e+00,4.531165e-02,1.964888e-01}; 
-Point(158) = {6.090723e-01,0.000000e+00,4.403092e-02,1.952413e-01}; 
-Point(159) = {6.243456e-01,0.000000e+00,4.272101e-02,1.938153e-01}; 
-Point(160) = {6.394961e-01,0.000000e+00,4.138529e-02,1.922163e-01}; 
-Point(161) = {6.545091e-01,0.000000e+00,4.002701e-02,1.904508e-01}; 
-Point(162) = {6.693696e-01,0.000000e+00,3.864942e-02,1.885256e-01}; 
-Point(163) = {6.840628e-01,0.000000e+00,3.725576e-02,1.864484e-01}; 
-Point(164) = {6.985745e-01,0.000000e+00,3.584905e-02,1.842273e-01}; 
-Point(165) = {7.128901e-01,0.000000e+00,3.443245e-02,1.818711e-01}; 
-Point(166) = {7.269957e-01,0.000000e+00,3.300894e-02,1.793892e-01}; 
-Point(167) = {7.408773e-01,0.000000e+00,3.158154e-02,1.767913e-01}; 
-Point(168) = {7.545212e-01,0.000000e+00,3.015313e-02,1.740876e-01}; 
-Point(169) = {7.679139e-01,0.000000e+00,2.872668e-02,1.712889e-01}; 
-Point(170) = {7.810421e-01,0.000000e+00,2.730503e-02,1.684061e-01}; 
-Point(171) = {7.938930e-01,0.000000e+00,2.589105e-02,1.654508e-01}; 
-Point(172) = {8.064539e-01,0.000000e+00,2.448751e-02,1.624344e-01}; 
-Point(173) = {8.187124e-01,0.000000e+00,2.309725e-02,1.593690e-01}; 
-Point(174) = {8.306563e-01,0.000000e+00,2.172309e-02,1.562666e-01}; 
-Point(175) = {8.422739e-01,0.000000e+00,2.036772e-02,1.531394e-01}; 
-Point(176) = {8.535537e-01,0.000000e+00,1.903398e-02,1.499999e-01}; 
-Point(177) = {8.644845e-01,0.000000e+00,1.772453e-02,1.468604e-01}; 
-Point(178) = {8.750558e-01,0.000000e+00,1.644214e-02,1.437333e-01}; 
-Point(179) = {8.852569e-01,0.000000e+00,1.518951e-02,1.406308e-01}; 
-Point(180) = {8.950777e-01,0.000000e+00,1.396934e-02,1.375654e-01}; 
-Point(181) = {9.045087e-01,0.000000e+00,1.278429e-02,1.345491e-01}; 
-Point(182) = {9.135405e-01,0.000000e+00,1.163695e-02,1.315937e-01}; 
-Point(183) = {9.221641e-01,0.000000e+00,1.052998e-02,1.287110e-01}; 
-Point(184) = {9.303712e-01,0.000000e+00,9.465891e-03,1.259123e-01}; 
-Point(185) = {9.381535e-01,0.000000e+00,8.447210e-03,1.232086e-01}; 
-Point(186) = {9.455034e-01,0.000000e+00,7.476377e-03,1.206107e-01}; 
-Point(187) = {9.524136e-01,0.000000e+00,6.555737e-03,1.181288e-01}; 
-Point(188) = {9.588774e-01,0.000000e+00,5.687566e-03,1.157726e-01}; 
-Point(189) = {9.648883e-01,0.000000e+00,4.874101e-03,1.135515e-01}; 
-Point(190) = {9.704404e-01,0.000000e+00,4.117359e-03,1.114743e-01}; 
-Point(191) = {9.755284e-01,0.000000e+00,3.419365e-03,1.095491e-01}; 
-Point(192) = {9.801469e-01,0.000000e+00,2.781989e-03,1.077836e-01}; 
-Point(193) = {9.842916e-01,0.000000e+00,2.206860e-03,1.061847e-01}; 
-Point(194) = {9.879584e-01,0.000000e+00,1.695579e-03,1.047586e-01}; 
-Point(195) = {9.911436e-01,0.000000e+00,1.249551e-03,1.035112e-01}; 
-Point(196) = {9.938442e-01,0.000000e+00,8.699747e-04,1.024472e-01}; 
-Point(197) = {9.960575e-01,0.000000e+00,5.579769e-04,1.015708e-01}; 
-Point(198) = {9.977810e-01,0.000000e+00,3.143904e-04,1.008856e-01}; 
-Point(199) = {9.990134e-01,0.000000e+00,1.398841e-04,1.003943e-01}; 
-Point(200) = {9.997533e-01,0.000000e+00,3.498543e-05,lc}; 
-Point(201) = {1.000000e+00,1.000000e+00,0.000000e+00,lc}; 
-Point(202) = {9.997533e-01,1.000000e+00,-3.498543e-05,1.000987e-01}; 
-Point(203) = {9.990134e-01,1.000000e+00,-1.398841e-04,1.003943e-01}; 
-Point(204) = {9.977810e-01,1.000000e+00,-3.143904e-04,1.008856e-01}; 
-Point(205) = {9.960575e-01,1.000000e+00,-5.579769e-04,1.015708e-01}; 
-Point(206) = {9.938442e-01,1.000000e+00,-8.699747e-04,1.024472e-01}; 
-Point(207) = {9.911436e-01,1.000000e+00,-1.249551e-03,1.035112e-01}; 
-Point(208) = {9.879584e-01,1.000000e+00,-1.695579e-03,1.047586e-01}; 
-Point(209) = {9.842916e-01,1.000000e+00,-2.206860e-03,1.061847e-01}; 
-Point(210) = {9.801469e-01,1.000000e+00,-2.781989e-03,1.077836e-01}; 
-Point(211) = {9.755284e-01,1.000000e+00,-3.419365e-03,1.095491e-01}; 
-Point(212) = {9.704404e-01,1.000000e+00,-4.117359e-03,1.114743e-01}; 
-Point(213) = {9.648883e-01,1.000000e+00,-4.874101e-03,1.135515e-01}; 
-Point(214) = {9.588774e-01,1.000000e+00,-5.687566e-03,1.157726e-01}; 
-Point(215) = {9.524136e-01,1.000000e+00,-6.555737e-03,1.181288e-01}; 
-Point(216) = {9.455034e-01,1.000000e+00,-7.476377e-03,1.206107e-01}; 
-Point(217) = {9.381535e-01,1.000000e+00,-8.447210e-03,1.232086e-01}; 
-Point(218) = {9.303712e-01,1.000000e+00,-9.465891e-03,1.259123e-01}; 
-Point(219) = {9.221641e-01,1.000000e+00,-1.052998e-02,1.287110e-01}; 
-Point(220) = {9.135405e-01,1.000000e+00,-1.163695e-02,1.315937e-01}; 
-Point(221) = {9.045087e-01,1.000000e+00,-1.278429e-02,1.345491e-01}; 
-Point(222) = {8.950777e-01,1.000000e+00,-1.396934e-02,1.375654e-01}; 
-Point(223) = {8.852569e-01,1.000000e+00,-1.518951e-02,1.406308e-01}; 
-Point(224) = {8.750558e-01,1.000000e+00,-1.644214e-02,1.437333e-01}; 
-Point(225) = {8.644845e-01,1.000000e+00,-1.772453e-02,1.468604e-01}; 
-Point(226) = {8.535537e-01,1.000000e+00,-1.903398e-02,1.499999e-01}; 
-Point(227) = {8.422739e-01,1.000000e+00,-2.036772e-02,1.531394e-01}; 
-Point(228) = {8.306563e-01,1.000000e+00,-2.172309e-02,1.562666e-01}; 
-Point(229) = {8.187124e-01,1.000000e+00,-2.309725e-02,1.593690e-01}; 
-Point(230) = {8.064539e-01,1.000000e+00,-2.448751e-02,1.624344e-01}; 
-Point(231) = {7.938930e-01,1.000000e+00,-2.589105e-02,1.654508e-01}; 
-Point(232) = {7.810421e-01,1.000000e+00,-2.730503e-02,1.684061e-01}; 
-Point(233) = {7.679139e-01,1.000000e+00,-2.872668e-02,1.712889e-01}; 
-Point(234) = {7.545212e-01,1.000000e+00,-3.015313e-02,1.740876e-01}; 
-Point(235) = {7.408773e-01,1.000000e+00,-3.158154e-02,1.767913e-01}; 
-Point(236) = {7.269957e-01,1.000000e+00,-3.300894e-02,1.793892e-01}; 
-Point(237) = {7.128901e-01,1.000000e+00,-3.443245e-02,1.818711e-01}; 
-Point(238) = {6.985745e-01,1.000000e+00,-3.584905e-02,1.842273e-01}; 
-Point(239) = {6.840628e-01,1.000000e+00,-3.725576e-02,1.864484e-01}; 
-Point(240) = {6.693696e-01,1.000000e+00,-3.864942e-02,1.885256e-01}; 
-Point(241) = {6.545091e-01,1.000000e+00,-4.002701e-02,1.904508e-01}; 
-Point(242) = {6.394961e-01,1.000000e+00,-4.138529e-02,1.922163e-01}; 
-Point(243) = {6.243456e-01,1.000000e+00,-4.272101e-02,1.938153e-01}; 
-Point(244) = {6.090723e-01,1.000000e+00,-4.403092e-02,1.952413e-01}; 
-Point(245) = {5.936913e-01,1.000000e+00,-4.531165e-02,1.964888e-01}; 
-Point(246) = {5.782179e-01,1.000000e+00,-4.655984e-02,1.975528e-01}; 
-Point(247) = {5.626673e-01,1.000000e+00,-4.777199e-02,1.984291e-01}; 
-Point(248) = {5.470549e-01,1.000000e+00,-4.894463e-02,1.991143e-01}; 
-Point(249) = {5.313960e-01,1.000000e+00,-5.007425e-02,1.996057e-01}; 
-Point(250) = {5.157061e-01,1.000000e+00,-5.115728e-02,lc}; 
-Point(251) = {5.000008e-01,1.000000e+00,-5.219014e-02,2.000000e-01}; 
-Point(252) = {4.842954e-01,1.000000e+00,-5.316926e-02,1.999013e-01}; 
-Point(253) = {4.686055e-01,1.000000e+00,-5.409108e-02,1.996058e-01}; 
-Point(254) = {4.529467e-01,1.000000e+00,-5.495201e-02,1.991144e-01}; 
-Point(255) = {4.373342e-01,1.000000e+00,-5.574857e-02,1.984292e-01}; 
-Point(256) = {4.217836e-01,1.000000e+00,-5.647729e-02,1.975529e-01}; 
-Point(257) = {4.063102e-01,1.000000e+00,-5.713477e-02,1.964889e-01}; 
-Point(258) = {3.909292e-01,1.000000e+00,-5.771770e-02,1.952414e-01}; 
-Point(259) = {3.756559e-01,1.000000e+00,-5.822293e-02,1.938154e-01}; 
-Point(260) = {3.605053e-01,1.000000e+00,-5.864737e-02,1.922165e-01}; 
-Point(261) = {3.454924e-01,1.000000e+00,-5.898812e-02,1.904510e-01}; 
-Point(262) = {3.306319e-01,1.000000e+00,-5.924247e-02,1.885258e-01}; 
-Point(263) = {3.159386e-01,1.000000e+00,-5.940786e-02,1.864486e-01}; 
-Point(264) = {3.014269e-01,1.000000e+00,-5.948193e-02,1.842275e-01}; 
-Point(265) = {2.871112e-01,1.000000e+00,-5.946260e-02,1.818713e-01}; 
-Point(266) = {2.730056e-01,1.000000e+00,-5.934800e-02,1.793894e-01}; 
-Point(267) = {2.591240e-01,1.000000e+00,-5.913650e-02,1.767915e-01}; 
-Point(268) = {2.454802e-01,1.000000e+00,-5.882679e-02,1.740879e-01}; 
-Point(269) = {2.320875e-01,1.000000e+00,-5.841779e-02,1.712892e-01}; 
-Point(270) = {2.189592e-01,1.000000e+00,-5.790876e-02,1.684064e-01}; 
-Point(271) = {2.061082e-01,1.000000e+00,-5.729925e-02,1.654510e-01}; 
-Point(272) = {1.935473e-01,1.000000e+00,-5.658907e-02,1.624347e-01}; 
-Point(273) = {1.812888e-01,1.000000e+00,-5.577839e-02,1.593693e-01}; 
-Point(274) = {1.693449e-01,1.000000e+00,-5.486767e-02,1.562669e-01}; 
-Point(275) = {1.577273e-01,1.000000e+00,-5.385765e-02,1.531398e-01}; 
-Point(276) = {1.464474e-01,1.000000e+00,-5.274938e-02,1.500002e-01}; 
-Point(277) = {1.355165e-01,1.000000e+00,-5.154420e-02,1.468607e-01}; 
-Point(278) = {1.249452e-01,1.000000e+00,-5.024372e-02,1.437336e-01}; 
-Point(279) = {1.147441e-01,1.000000e+00,-4.884978e-02,1.406312e-01}; 
-Point(280) = {1.049232e-01,1.000000e+00,-4.736451e-02,1.375657e-01}; 
-Point(281) = {9.549212e-02,1.000000e+00,-4.579021e-02,1.345494e-01}; 
-Point(282) = {8.646032e-02,1.000000e+00,-4.412942e-02,1.315940e-01}; 
-Point(283) = {7.783660e-02,1.000000e+00,-4.238483e-02,1.287112e-01}; 
-Point(284) = {6.962952e-02,1.000000e+00,-4.055926e-02,1.259125e-01}; 
-Point(285) = {6.184718e-02,1.000000e+00,-3.865567e-02,1.232088e-01}; 
-Point(286) = {5.449721e-02,1.000000e+00,-3.667711e-02,1.206109e-01}; 
-Point(287) = {4.758692e-02,1.000000e+00,-3.462668e-02,1.181290e-01}; 
-Point(288) = {4.112309e-02,1.000000e+00,-3.250752e-02,1.157728e-01}; 
-Point(289) = {3.511214e-02,1.000000e+00,-3.032277e-02,1.135517e-01}; 
-Point(290) = {2.955997e-02,1.000000e+00,-2.807550e-02,1.114745e-01}; 
-Point(291) = {2.447206e-02,1.000000e+00,-2.576878e-02,1.095493e-01}; 
-Point(292) = {1.985344e-02,1.000000e+00,-2.340553e-02,1.077837e-01}; 
-Point(293) = {1.570869e-02,1.000000e+00,-2.098859e-02,1.061848e-01}; 
-Point(294) = {1.204184e-02,1.000000e+00,-1.852062e-02,1.047587e-01}; 
-Point(295) = {8.856565e-03,1.000000e+00,-1.600414e-02,1.035113e-01}; 
-Point(296) = {6.155997e-03,1.000000e+00,-1.344148e-02,1.024472e-01}; 
-Point(297) = {3.942788e-03,1.000000e+00,-1.083471e-02,1.015709e-01}; 
-Point(298) = {2.219111e-03,1.000000e+00,-8.185687e-03,1.008857e-01}; 
-Point(299) = {9.866953e-04,1.000000e+00,-5.496060e-03,1.003943e-01}; 
-Point(300) = {2.467632e-04,1.000000e+00,-2.767267e-03,lc}; 
-Point(301) = {0.000000e+00,1.000000e+00,1.911503e-39,lc}; 
-Point(302) = {2.467632e-04,1.000000e+00,2.767267e-03,1.000987e-01}; 
-Point(303) = {9.866953e-04,1.000000e+00,5.496060e-03,1.003943e-01}; 
-Point(304) = {2.219111e-03,1.000000e+00,8.185687e-03,1.008857e-01}; 
-Point(305) = {3.942788e-03,1.000000e+00,1.083471e-02,1.015709e-01}; 
-Point(306) = {6.155997e-03,1.000000e+00,1.344148e-02,1.024472e-01}; 
-Point(307) = {8.856565e-03,1.000000e+00,1.600414e-02,1.035113e-01}; 
-Point(308) = {1.204184e-02,1.000000e+00,1.852062e-02,1.047587e-01}; 
-Point(309) = {1.570869e-02,1.000000e+00,2.098859e-02,1.061848e-01}; 
-Point(310) = {1.985344e-02,1.000000e+00,2.340553e-02,1.077837e-01}; 
-Point(311) = {2.447206e-02,1.000000e+00,2.576878e-02,1.095493e-01}; 
-Point(312) = {2.955997e-02,1.000000e+00,2.807550e-02,1.114745e-01}; 
-Point(313) = {3.511214e-02,1.000000e+00,3.032277e-02,1.135517e-01}; 
-Point(314) = {4.112309e-02,1.000000e+00,3.250752e-02,1.157728e-01}; 
-Point(315) = {4.758692e-02,1.000000e+00,3.462668e-02,1.181290e-01}; 
-Point(316) = {5.449721e-02,1.000000e+00,3.667711e-02,1.206109e-01}; 
-Point(317) = {6.184718e-02,1.000000e+00,3.865567e-02,1.232088e-01}; 
-Point(318) = {6.962952e-02,1.000000e+00,4.055926e-02,1.259125e-01}; 
-Point(319) = {7.783660e-02,1.000000e+00,4.238483e-02,1.287112e-01}; 
-Point(320) = {8.646032e-02,1.000000e+00,4.412942e-02,1.315940e-01}; 
-Point(321) = {9.549212e-02,1.000000e+00,4.579021e-02,1.345494e-01}; 
-Point(322) = {1.049232e-01,1.000000e+00,4.736451e-02,1.375657e-01}; 
-Point(323) = {1.147441e-01,1.000000e+00,4.884978e-02,1.406312e-01}; 
-Point(324) = {1.249452e-01,1.000000e+00,5.024372e-02,1.437336e-01}; 
-Point(325) = {1.355165e-01,1.000000e+00,5.154420e-02,1.468607e-01}; 
-Point(326) = {1.464474e-01,1.000000e+00,5.274938e-02,1.500002e-01}; 
-Point(327) = {1.577273e-01,1.000000e+00,5.385765e-02,1.531398e-01}; 
-Point(328) = {1.693449e-01,1.000000e+00,5.486767e-02,1.562669e-01}; 
-Point(329) = {1.812888e-01,1.000000e+00,5.577839e-02,1.593693e-01}; 
-Point(330) = {1.935473e-01,1.000000e+00,5.658907e-02,1.624347e-01}; 
-Point(331) = {2.061082e-01,1.000000e+00,5.729925e-02,1.654510e-01}; 
-Point(332) = {2.189592e-01,1.000000e+00,5.790876e-02,1.684064e-01}; 
-Point(333) = {2.320875e-01,1.000000e+00,5.841779e-02,1.712892e-01}; 
-Point(334) = {2.454802e-01,1.000000e+00,5.882679e-02,1.740879e-01}; 
-Point(335) = {2.591240e-01,1.000000e+00,5.913650e-02,1.767915e-01}; 
-Point(336) = {2.730056e-01,1.000000e+00,5.934800e-02,1.793894e-01}; 
-Point(337) = {2.871112e-01,1.000000e+00,5.946260e-02,1.818713e-01}; 
-Point(338) = {3.014269e-01,1.000000e+00,5.948193e-02,1.842275e-01}; 
-Point(339) = {3.159386e-01,1.000000e+00,5.940786e-02,1.864486e-01}; 
-Point(340) = {3.306319e-01,1.000000e+00,5.924247e-02,1.885258e-01}; 
-Point(341) = {3.454924e-01,1.000000e+00,5.898812e-02,1.904510e-01}; 
-Point(342) = {3.605053e-01,1.000000e+00,5.864737e-02,1.922165e-01}; 
-Point(343) = {3.756559e-01,1.000000e+00,5.822293e-02,1.938154e-01}; 
-Point(344) = {3.909292e-01,1.000000e+00,5.771770e-02,1.952414e-01}; 
-Point(345) = {4.063102e-01,1.000000e+00,5.713477e-02,1.964889e-01}; 
-Point(346) = {4.217836e-01,1.000000e+00,5.647729e-02,1.975529e-01}; 
-Point(347) = {4.373342e-01,1.000000e+00,5.574857e-02,1.984292e-01}; 
-Point(348) = {4.529467e-01,1.000000e+00,5.495201e-02,1.991144e-01}; 
-Point(349) = {4.686055e-01,1.000000e+00,5.409108e-02,1.996058e-01}; 
-Point(350) = {4.842954e-01,1.000000e+00,5.316926e-02,lc}; 
-Point(351) = {5.000008e-01,1.000000e+00,5.219014e-02,2.000000e-01}; 
-Point(352) = {5.157061e-01,1.000000e+00,5.115728e-02,1.999013e-01}; 
-Point(353) = {5.313960e-01,1.000000e+00,5.007425e-02,1.996057e-01}; 
-Point(354) = {5.470549e-01,1.000000e+00,4.894463e-02,1.991143e-01}; 
-Point(355) = {5.626673e-01,1.000000e+00,4.777199e-02,1.984291e-01}; 
-Point(356) = {5.782179e-01,1.000000e+00,4.655984e-02,1.975528e-01}; 
-Point(357) = {5.936913e-01,1.000000e+00,4.531165e-02,1.964888e-01}; 
-Point(358) = {6.090723e-01,1.000000e+00,4.403092e-02,1.952413e-01}; 
-Point(359) = {6.243456e-01,1.000000e+00,4.272101e-02,1.938153e-01}; 
-Point(360) = {6.394961e-01,1.000000e+00,4.138529e-02,1.922163e-01}; 
-Point(361) = {6.545091e-01,1.000000e+00,4.002701e-02,1.904508e-01}; 
-Point(362) = {6.693696e-01,1.000000e+00,3.864942e-02,1.885256e-01}; 
-Point(363) = {6.840628e-01,1.000000e+00,3.725576e-02,1.864484e-01}; 
-Point(364) = {6.985745e-01,1.000000e+00,3.584905e-02,1.842273e-01}; 
-Point(365) = {7.128901e-01,1.000000e+00,3.443245e-02,1.818711e-01}; 
-Point(366) = {7.269957e-01,1.000000e+00,3.300894e-02,1.793892e-01}; 
-Point(367) = {7.408773e-01,1.000000e+00,3.158154e-02,1.767913e-01}; 
-Point(368) = {7.545212e-01,1.000000e+00,3.015313e-02,1.740876e-01}; 
-Point(369) = {7.679139e-01,1.000000e+00,2.872668e-02,1.712889e-01}; 
-Point(370) = {7.810421e-01,1.000000e+00,2.730503e-02,1.684061e-01}; 
-Point(371) = {7.938930e-01,1.000000e+00,2.589105e-02,1.654508e-01}; 
-Point(372) = {8.064539e-01,1.000000e+00,2.448751e-02,1.624344e-01}; 
-Point(373) = {8.187124e-01,1.000000e+00,2.309725e-02,1.593690e-01}; 
-Point(374) = {8.306563e-01,1.000000e+00,2.172309e-02,1.562666e-01}; 
-Point(375) = {8.422739e-01,1.000000e+00,2.036772e-02,1.531394e-01}; 
-Point(376) = {8.535537e-01,1.000000e+00,1.903398e-02,1.499999e-01}; 
-Point(377) = {8.644845e-01,1.000000e+00,1.772453e-02,1.468604e-01}; 
-Point(378) = {8.750558e-01,1.000000e+00,1.644214e-02,1.437333e-01}; 
-Point(379) = {8.852569e-01,1.000000e+00,1.518951e-02,1.406308e-01}; 
-Point(380) = {8.950777e-01,1.000000e+00,1.396934e-02,1.375654e-01}; 
-Point(381) = {9.045087e-01,1.000000e+00,1.278429e-02,1.345491e-01}; 
-Point(382) = {9.135405e-01,1.000000e+00,1.163695e-02,1.315937e-01}; 
-Point(383) = {9.221641e-01,1.000000e+00,1.052998e-02,1.287110e-01}; 
-Point(384) = {9.303712e-01,1.000000e+00,9.465891e-03,1.259123e-01}; 
-Point(385) = {9.381535e-01,1.000000e+00,8.447210e-03,1.232086e-01}; 
-Point(386) = {9.455034e-01,1.000000e+00,7.476377e-03,1.206107e-01}; 
-Point(387) = {9.524136e-01,1.000000e+00,6.555737e-03,1.181288e-01}; 
-Point(388) = {9.588774e-01,1.000000e+00,5.687566e-03,1.157726e-01}; 
-Point(389) = {9.648883e-01,1.000000e+00,4.874101e-03,1.135515e-01}; 
-Point(390) = {9.704404e-01,1.000000e+00,4.117359e-03,1.114743e-01}; 
-Point(391) = {9.755284e-01,1.000000e+00,3.419365e-03,1.095491e-01}; 
-Point(392) = {9.801469e-01,1.000000e+00,2.781989e-03,1.077836e-01}; 
-Point(393) = {9.842916e-01,1.000000e+00,2.206860e-03,1.061847e-01}; 
-Point(394) = {9.879584e-01,1.000000e+00,1.695579e-03,1.047586e-01}; 
-Point(395) = {9.911436e-01,1.000000e+00,1.249551e-03,1.035112e-01}; 
-Point(396) = {9.938442e-01,1.000000e+00,8.699747e-04,1.024472e-01}; 
-Point(397) = {9.960575e-01,1.000000e+00,5.579769e-04,1.015708e-01}; 
-Point(398) = {9.977810e-01,1.000000e+00,3.143904e-04,1.008856e-01}; 
-Point(399) = {9.990134e-01,1.000000e+00,1.398841e-04,1.003943e-01}; 
-Point(400) = {9.997533e-01,1.000000e+00,3.498543e-05,lc}; 
-Line(1) = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
-50}; 
-Line(2) = { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
-96, 97, 98, 99, 100}; 
-Line(3) = { 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
-134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150}; 
-Line(4) = { 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
-184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 1}; 
-Line(5) = { 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 
-235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250}; 
-Line(6) = { 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 
-284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300}; 
-Line(7) = { 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 
-334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350}; 
-Line(8) = { 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 
-384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 201}; 
-Line(9)  = { 1, 201}; 
-Line(10) = { 100, 300}; 
-Line Loop(13) = {5,6,7,8}; 
-Plane Surface(14) = {13}; 
-Line(15)  = { 50, 250}; 
-Line(16)  = { 150, 350}; 
-Line Loop(17) = {1,15,-5,-9}; 
-Ruled Surface(18) = {17}; 
-Line Loop(19) = {2,10,-6,-15}; 
-Ruled Surface(20) = {19}; 
-Line Loop(21) = {-3,10,7,-16}; 
-Ruled Surface(22) = {21}; 
-Line Loop(23) = {8,-9,-4,16}; 
-Ruled Surface(24) = {23}; 
-Point (1001) = {-10.,0., 10.,3.}; 
-Point (1002) = { 10.,0., 10.,3.}; 
-Point (1003) = { 10.,0., -10.,3.}; 
-Point (1004) = {-10.,0., -10.,3.}; 
-Point (1010) = { 10.,0., 0.,3.}; 
-Point (1011) = {-10.,0., 0.,3.}; 
-Point (1005) = {-10., 10., 10.,3.}; 
-Point (1006) = { 10., 10., 10.,3.}; 
-Point (1007) = { 10., 10.,-10.,3.}; 
-Point (1008) = {-10., 10.,-10.,3.}; 
-Line(1001) = {1001,1002}; 
-Line(1003) = {1004,1003}; 
-Line(1005) = {1005,1006}; 
-Line(1006) = {1006,1007}; 
-Line(1007) = {1008,1007}; 
-Line(1008) = {1005,1008}; 
-Line(1009) = {1001,1005}; 
-Line(1010) = {1002,1006}; 
-Line(1011) = {1003,1007}; 
-Line(1012) = {1004,1008}; 
-Line(1013) = {1010,1}; 
-Line(1014) = {1011,100}; 
-Line(1015) = {1002,1010}; 
-Line(1016) = {1001,1011}; 
-Line(1017) = {1011,1004}; 
-Line(1018) = {1010,1003}; 
-Line Loop(1000)= {1001,1015,1013,-4,-3,-1014,-1016}; 
-Plane Surface(1100) = {1000}; 
-Line Loop(1001)= {1014,-2,-1,-1013,1018,-1003,-1017}; 
-Plane Surface(1101) = {1001}; 
-Line Loop(1002)= {1005,1006,-1007,-1008}; 
-Plane Surface(1102 ) = {1002}; 
-Line Loop(1003)= {1009,1008,-1012,-1017,-1016}; 
-Plane Surface(1103 ) = {1003}; 
-Line Loop(1004)= {1006,-1011,-1018,-1015,1010}; 
-Plane Surface(1104 ) = {1004}; 
-Line Loop(1005)= {1009, 1005,-1010,-1001}; 
-Plane Surface(1105 ) = {1005}; 
-Line Loop(1006)= {1012,1007,-1011,-1003}; 
-Plane Surface(1106 ) = {1006}; 
-Surface Loop(1107) = {1101,1100,1105,-1103,-1102,1104,-1106,-24,14,18,20,-22}; 
-Complex Volume(1108) = {1107}; 
- 
-Physical Volume(1110) = {1108}; 
diff --git a/benchmarks/3d/old_extrude.geo b/benchmarks/3d/old_extrude.geo
deleted file mode 100644
index a0bcc6b4fc6bff91139eee1ecfd79230e18ee552..0000000000000000000000000000000000000000
--- a/benchmarks/3d/old_extrude.geo
+++ /dev/null
@@ -1,454 +0,0 @@
-// Mudanca de algumas coordenadas 22/05/2001 - Li�ge.
-
-/* Desenho do servo motor em 3D  -   20/07/2000 */
-
-/* Analise de um servomotor de imas permanentes - GRUCAD - julho de 2000 */
-
-rR1 = 10.5e-03;
-rR2 = 23.243e-03;
-rR3 = 23.862e-03;
-rR4 = 23.9e-03;
-rR5 = 25.6e-03;
-
-rS1 = 26.02e-03;
-rS2 = 26.62e-03;
-rS3 = 26.96e-03;
-rS4 = 38.16e-03;
-rS5 = 38.27e-03;
-rS6 = 40.02e-03;
-rS7 = 46.0e-03;
-
-Gap = rS1-rR5;
-
-rB1=rR5+Gap/3; rB1b=rB1;
-//rB1=rR5+Gap/3.7; rB1b=rR5+Gap/2.3; //To see both different surfaces
-rB2=rR5+Gap*2/3;
-
-
-NbrDiv = 16;
-
-A0 = 45.0;
-/* Rotor position(deg):use 0 for the mesh and other angles for drawing*/
-//A1 = 4.0001*45.0/NbrDiv;
-A1 = 90. ;
-
-deg2rad = Pi/180;
-
-/* Mesh parameters */
-
-s = 1.;
-
-pR1 =(rR2-rR1)/10.*s;
-pR2 =(rR2-rR1)/12.*s;
-
-pS1 =(rS7-rS1)/7.*s;
-pS2 =(rS7-rS1)/12.*s;
-pS3 =(rS6-rS3)/10.*s;
-
-
-// Uma das faces do servo motor
-
-/* Rotor */
-
-Point(1)={0,0,0,pR1};
-
-A = 0.+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(2)={rR1*cosA,rR1*sinA,0,pR1};
-Point(3)={rR4*cosA,rR4*sinA,0,pR1};
-Point(4)={rR5*cosA,rR5*sinA,0,pR1};
-
-Point(5)={rB1*cosA,rB1*sinA,0,pR2};
-
-A = 4.455+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(6)={rR2*cosA,rR2*sinA,0,pR1};
-
-A = 4.938+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(7)={rR3*cosA,rR3*sinA,0,pR1};
-
-A = 6.165+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(8)={rR5*cosA,rR5*sinA,0,pR1};
-
-A = 38.835+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(9)={rR5*cosA,rR5*sinA,0,pR1};
-
-A = 40.062+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(10)={rR3*cosA,rR3*sinA,0,pR1};
-
-A = 40.545+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(11)={rR2*cosA,rR2*sinA,0,pR1};
-
-A = 45.0+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(12)={rR1*cosA,rR1*sinA,0,pR1};
-Point(13)={rR4*cosA,rR4*sinA,0,pR1};
-Point(14)={rR5*cosA,rR5*sinA,0,pR1};
-
-Point(15)={rB1*cosA,rB1*sinA,0,pR2};
-
-/* Gap */
-
-Point(16)={rB1b,0,0,pS1};
-Point(17)={rB2,0,0,pS1};
-
-A = 45.0; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(18)={rB1b*cosA,rB1b*sinA,0,pS1};
-Point(19)={rB2*cosA,rB2*sinA,0,pS1};
-
-
-/* Stator */
-
-Point(20)={rS1,0,0,pS1};
-Point(21)={rS7,0,0,pS2};
-
-A = 5.71+0; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(61)={rS7*cosA,rS7*sinA,0,pS3};
-A = 5.71+15; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(62)={rS7*cosA,rS7*sinA,0,pS3};
-A = 5.71+30; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(63)={rS7*cosA,rS7*sinA,0,pS3};
-
-//A = 22.5; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-//Point(22)={rS7*cosA,rS7*sinA,0,pS2};
-
-A = 45.0; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(23)={rS1*cosA,rS1*sinA,0,pS1};
-Point(24)={rS7*cosA,rS7*sinA,0,pS2};
-
-/* Pontos da ranhura 01 */
-
-A2 = 0.0;
-
-A = 2.77+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(25)={rS5*cosA,rS5*sinA,0,pS3};
-
-A = 4.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(26)={rS3*cosA,rS3*sinA,0,pS3};
-
-A = 5.52+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(27)={rS1*cosA,rS1*sinA,0,pS3};
-
-A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(28)={rS2*cosA,rS2*sinA,0,pS3};
-
-A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(29)={rS4*cosA,rS4*sinA,0,pS3};
-
-A = 5.65+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(30)={rS6*cosA,rS6*sinA,0,pS3};
-
-A = 9.35+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(31)={rS6*cosA,rS6*sinA,0,pS3};
-
-A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(32)={rS4*cosA,rS4*sinA,0,pS3};
-
-A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(33)={rS2*cosA,rS2*sinA,0,pS3};
-
-A = 9.48+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(34)={rS1*cosA,rS1*sinA,0,pS3};
-
-A = 11.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(35)={rS3*cosA,rS3*sinA,0,pS3};
-
-A = 12.23+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(36)={rS5*cosA,rS5*sinA,0,pS3};
-
-/* Pontos da ranhura 02 */
-
-A2 = 15.0;
-
-A = 2.77+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(37)={rS5*cosA,rS5*sinA,0,pS3};
-
-A = 4.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(38)={rS3*cosA,rS3*sinA,0,pS3};
-
-A = 5.52+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(39)={rS1*cosA,rS1*sinA,0,pS3};
-
-A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(40)={rS2*cosA,rS2*sinA,0,pS3};
-
-A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(41)={rS4*cosA,rS4*sinA,0,pS3};
-
-A = 5.65+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(42)={rS6*cosA,rS6*sinA,0,pS3};
-
-A = 9.35+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(43)={rS6*cosA,rS6*sinA,0,pS3};
-
-A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(44)={rS4*cosA,rS4*sinA,0,pS3};
-
-A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(45)={rS2*cosA,rS2*sinA,0,pS3};
-
-A = 9.48+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(46)={rS1*cosA,rS1*sinA,0,pS3};
-
-A = 11.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(47)={rS3*cosA,rS3*sinA,0,pS3};
-
-A = 12.23+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(48)={rS5*cosA,rS5*sinA,0,pS3};
-
-/* Pontos da ranhura 03 */
-
-A2 = 30.0;
-
-A = 2.77+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(49)={rS5*cosA,rS5*sinA,0,pS3};
-
-A = 4.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(50)={rS3*cosA,rS3*sinA,0,pS3};
-
-A = 5.52+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(51)={rS1*cosA,rS1*sinA,0,pS3};
-
-A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(52)={rS2*cosA,rS2*sinA,0,pS3};
-
-A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(53)={rS4*cosA,rS4*sinA,0,pS3};
-
-A = 5.65+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(54)={rS6*cosA,rS6*sinA,0,pS3};
-
-A = 9.35+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(55)={rS6*cosA,rS6*sinA,0,pS3};
-
-A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(56)={rS4*cosA,rS4*sinA,0,pS3};
-
-A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(57)={rS2*cosA,rS2*sinA,0,pS3};
-
-A = 9.48+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(58)={rS1*cosA,rS1*sinA,0,pS3};
-
-A = 11.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(59)={rS3*cosA,rS3*sinA,0,pS3};
-
-A = 12.23+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
-Point(60)={rS5*cosA,rS5*sinA,0,pS3};
-
-
-// linhas e circulos do rotor
-
-Line(1)={1,2};
-Line(2)={2,3};
-Line(3)={3,4};
-Line(4)={4,5};
-Line(5)={3,7};
-Line(6)={6,7};
-Line(7)={7,8};
-Line(8)={6,11};
-Line(9)={11,10};
-Line(10)={10,9};
-Line(11)={1,12};
-Line(12)={12,13};
-Line(13)={13,14};
-Line(14)={14,15};
-Line(15)={13,10};
-Circle(16)={2,1,12};
-Circle(17)={4,1,8};
-Circle(18)={8,1,9};
-Circle(19)={9,1,14};
-Circle(20)={5,1,15};
-
-/* linhas e circulos do entreferro */
-
-Line(21)={16,17};
-Line(22)={17,20};
-Line(23)={18,19};
-Line(24)={19,23};
-Circle(25)={16,1,18};
-Circle(26)={17,1,19};
-
-/* linhas e circulos do estator */
-Line(27)={20,21};
-Line(28)={23,24};
-Circle(29)={20,1,27};
-Circle(30)={34,1,39};
-Circle(31)={46,1,51};
-Circle(32)={58,1,23};
-Circle(33)={21,1,61};
-Circle(34)={61,1,62};
-Circle(89)={62,1,63};
-Circle(90)={63,1,24};
-
-Line(91)={30,61};
-Line(92)={42,62};
-Line(93)={54,63};
-
-/* linhas e circulos da ranhura 01 */
-Line(35)={27,28};
-Line(36)={28,26};
-Line(37)={26,25};
-Circle(38)={25,29,30};
-Line(39)={30,31};
-Circle(40)={31,32,36};
-Line(41)={36,35};
-Line(42)={35,33};
-Line(43)={33,34};
-Line(44)={26,35};
-
-/* linhas e circulos da ranhura 02 */
-Line(45)={39,40};
-Line(46)={40,38};
-Line(47)={38,37};
-Circle(48)={37,41,42};
-Line(49)={42,43};
-Circle(50)={43,44,48};
-Line(51)={48,47};
-Line(52)={47,45};
-Line(53)={45,46};
-Line(54)={38,47};
-
-/* linhas e circulos da ranhura 03 */
-Line(55)={51,52};
-Line(56)={52,50};
-Line(57)={50,49};
-Circle(58)={49,53,54};
-Line(59)={54,55};
-Circle(60)={55,56,60};
-Line(61)={60,59};
-Line(62)={59,57};
-Line(63)={57,58};
-Line(64)={50,59};
-
-/* superficies do rotor */
-
-Line Loop(65) = {-11,1,16};
-Plane Surface(66) = {65};
-Line Loop(67) = {12,15,-9,-8,6,-5,-2,16};
-Plane Surface(68) = {67};
-Line Loop(69) = {7,-17,-3,5};
-Plane Surface(70) = {69};
-Line Loop(71) = {-18,-7,-6,8,9,10};
-Plane Surface(72) = {71};
-Line Loop(73) = {-19,-10,-15,13};
-Plane Surface(74) = {73};
-Line Loop(75) = {18,19,14,-20,-4,17};
-Plane Surface(76) = {75};
-
-/* superficies do entreferro (banda de movimento) */
-
-Transfinite Line{20,25,26}=NbrDiv+1 Using Power 1.;
-Transfinite Line{21,23}=2;
-Line Loop(77) = {-23,-25,21,26};
-Plane Surface(78) = {77};
-Transfinite Surface{78}={16,17,19,18};
-Recombine Surface{78};  // For Hexahedra in the Moving Band
-
-/* superficies do estator */
-
-Line Loop(79) = {24,-32,-63,-62,-64,-56,-55,-31,-53,-52,-54,-46,-45,-30,-43,-42,-44,-36,-35,-29,-22,26};
-Plane Surface(80) = {79};
-
-
-Line Loop(94) = {37,38,91,-33,-27,29,35,36};
-Plane Surface(95) = {94};
-Line Loop(96) = {42,43,30,45,46,47,48,92,-34,-91,39,40,41};
-Plane Surface(97) = {96};
-Line Loop(98) = {52,53,31,55,56,57,58,93,-89,-92,49,50,51};
-Plane Surface(99) = {98};
-Line Loop(100) = {62,63,32,28,-90,-93,59,60,61};
-Plane Surface(101) = {100};
-/*
-Line Loop(81) = {37,38,39,40,41,42,43,30,45,46,47,48,49,50,51,52,53,31,55,56,57,58,59,60,61,62,63,32,28,-90,-89,-34,-33,-27,29,35,36};
-Plane Surface(82) = {81};
-*/
-/* superficie da ranhura 01 */
-
-Line Loop(83) = {-41,-40,-39,-38,-37,44};
-Plane Surface(84) = {83};
-
-/* superficie da ranhura 02 */
-
-Line Loop(85) = {-51,-50,-49,-48,-47,54};
-Plane Surface(86) = {85};
-
-/* superficie da ranhura 03 */
-Line Loop(87) = {-61,-60,-59,-58,-57,64};
-Plane Surface(88) = {87};
-
-// Continue with 101 ...
-
-// ----------------------------------------------------
-// ----------------------------------------------------
-
-L_ = 100e6 ;
-S_ = 200e6 ;
-V_ = 300e6 ;
-P_ = 400e6 ;
-N_ = 1e6 ;
-
-
-Physical Volume(1301) = {V_+N_+68}; // Rotor
-
-//Physical Volume(1302) = {V_+N_+95, V_+N_+97, V_+N_+99, V_+N_+101}; // Stator
-
-Physical Volume(1320) = {V_+N_+95}; // StatorSup0
-Physical Volume(1321) = {V_+N_+97}; // StatorSup1
-Physical Volume(1322) = {V_+N_+99}; // StatorSup2
-Physical Volume(1323) = {V_+N_+101}; // StatorSup3
-
-Physical Volume(1300) = {V_+N_+66}; // AirInt
-Physical Volume(1303) = {V_+N_+76}; // AirRotor
-Physical Volume(1304) = {V_+N_+80}; // AirStator
-Physical Volume(1305) = {V_+N_+78}; // AirBM
-
-Physical Volume(1310) = {V_+N_+72}; // Magnet
-
-Physical Volume(1311) = {V_+N_+70}; // Cale1
-Physical Volume(1312) = {V_+N_+74}; // Cale2
-
-Physical Volume(1401) = {V_+N_+84}; // Ind1
-Physical Volume(1402) = {V_+N_+86}; // Ind2
-Physical Volume(1403) = {V_+N_+88}; // Ind3
-
-
-Physical Surface(2001) = {L_+N_+16}; // SurfInt
-Physical Surface(2002) = {L_+N_+33,L_+N_+34,L_+N_+89,L_+N_+90}; // SurfExt
-
-Physical Surface(1011) = {L_+N_+ 1, L_+N_+2, L_+N_+3, L_+N_+4, L_+N_+21,L_+N_+22, L_+N_+27}; // SurfA
-Physical Surface(1012) = {L_+N_+11,L_+N_+12,L_+N_+13,L_+N_+14, L_+N_+23,L_+N_+24, L_+N_+28}; // SurfB
-
-
-Physical Surface(1501) = {L_+N_+20}; // SurfR
-Physical Surface(1502) = {L_+N_+25}; // SurfBM
-
-Physical Line(2021) = {P_+N_+15}; // PointR
-Physical Line(2022) = {P_+N_+18}; // PointBM
-
-// SurfR (PointR) & SurfBM (PointBM) are lines (points) located at the same
-// position, but with distinct nodes
-
-
-// For h-formulation (cut ...)
-Physical Surface(2210) = {L_+N_+37,L_+N_+38,/*L_+N_+39,*/L_+N_+40,L_+N_+41,L_+N_+44}; // SkinInd1
-Physical Surface(2211) = {L_+N_+91}; // CutInd1
-Physical Surface(2212) = {L_+N_+39}; // SkinInd1_2
-
-Physical Surface(2220) = {L_+N_+47,L_+N_+48,/*L_+N_+49,*/L_+N_+50,L_+N_+51,L_+N_+54}; // SkinInd2
-Physical Surface(2221) = {L_+N_+92}; // CutInd2
-Physical Surface(2222) = {L_+N_+49}; // SkinInd2_2
-
-Physical Surface(2230) = {L_+N_+57,L_+N_+58,/*L_+N_+59,*/L_+N_+60,L_+N_+61,L_+N_+64}; // SkinInd3
-Physical Surface(2231) = {L_+N_+93}; // CutInd3
-Physical Surface(2232) = {L_+N_+59}; // SkinInd3_2
-
-
-Physical Point(2015) = {2}; // PointRef
-
-
-i = 0*S_+0*N_ ;
-Physical Surface(2300) =
-{ i+68, i+95,i+97,i+99,i+101, i+66,i+76,i+80,i+78, i+72, i+70,i+74, i+84,i+86,i+88 }; // SurfZ0
-
-i = S_+1*N_ ;
-Physical Surface(2301) =
-{ i+68, i+95,i+97,i+99,i+101, i+66,i+76,i+80,i+78, i+72, i+70,i+74, i+84,i+86,i+88 }; // SurfZ1
-
diff --git a/benchmarks/3d/old_extrude.par b/benchmarks/3d/old_extrude.par
deleted file mode 100644
index 25e95e2dd07a08b34ad7230e8dcb6581198fff6d..0000000000000000000000000000000000000000
--- a/benchmarks/3d/old_extrude.par
+++ /dev/null
@@ -1,3 +0,0 @@
-1
-1
-0.04
diff --git a/benchmarks/3d/p19.geo b/benchmarks/3d/p19.geo
deleted file mode 100644
index 344119dd0d9ac309e0a4001088adb7ffcf3baa8f..0000000000000000000000000000000000000000
--- a/benchmarks/3d/p19.geo
+++ /dev/null
@@ -1,119 +0,0 @@
-fact     = 0.4 ;
-rondelle = fact * 0.01;
-iris     = fact * 0.004;
-size     = fact * 0.01;
-
-larg = 86.36e-3 / 2.0 ;
-long = 45.0e-3 ;
-l    = 16.e-3 / 2.0 ;
-re   = 90.e-3 / 2.0 ;
-re2  = re + 3.e-3 ;
-ri   = 8.e-3 / 2.0 ;
-ll   = 60.0e-3 / 2.0;
-a    = larg - ll;
-c45  = 0.5^0.5  ;
-
-hg   = 21.59e-3 ;
-hcav = 42.5e-3 ;
-
-x2   = long;
-y1   = ri * c45;
-y2   = ri ;
-y3   = l ;
-ss1  = l / re ;
-xtemp = re * ( ( 1.0 - ss1 * ss1 ) ^ 0.5 ) ;
-ss2  = ( 1.0 - ( xtemp / re2 ) * ( xtemp / re2 ) ) ^ 0.5 ;
-y4   = ss2 * xtemp ;
-ss3  = ll / re2;
-xtemp2 = re2 *  ( ( 1.0 - ss3 * ss3 ) ^ 0.5 ) ;
-x1   = long - ( xtemp - xtemp2 ) ;
-x6   = x1 + xtemp ;
-x3   = x6 - re * c45 ;
-x4   = x6 - ri ;
-x5   = x6 - ri * c45 ;
-x7   = x6 + ri * c45 ;
-x8   = x6 + ri ;
-x9   = x6 + re * c45 ;
-x10  = x6 + re ;
-y5   = ll ;
-y6   = re * c45 ;
-y7   = re ;
-y8   = larg ;
-
-
-Point(1) = {0.0,0.0,0.0,size};
-Point(2) = {0.0,y8,0.0,size};
-Point(3) = {x2,y8,0.0,size};
-Point(4) = {x2,y5,0.0,size};
-Point(5) = {x1,y4,0.0,size};
-Point(6) = {x1,y3,0.0,iris};
-Point(7) = {x1,0.0,0.0,iris};
-Point(8) = {x3,y6,0.0,size};
-Point(9) = {x6,y7,0.0,size};
-Point(10) = {x9,y6,0.0,size};
-Point(11) = {x10,0.0,0.0,size};
-Point(12) = {x8,0.0,0.0,rondelle};
-Point(13) = {x6,0.0,0.0,rondelle};
-Point(14) = {x4,0.0,0.0,rondelle};
-Point(15) = {x7,y1,0.0,rondelle};
-Point(16) = {x6,y2,0.0,rondelle};
-Point(17) = {x5,y1,0.0,rondelle};
-
-Line(1) = {1,2};
-Line(2) = {2,3};
-Line(3) = {3,4};
-Line(4) = {5,6};
-Line(5) = {1,7};
-Line(6) = {7,14};
-Line(10) = {6,7};
-Line(11) = {14,13};
-Line(12) = {13,12};
-Circle(16) = {11,13,10};
-Circle(17) = {10,13,9};
-Circle(18) = {9,13,8};
-Circle(19) = {8,13,6};
-Circle(20) = {4,13,5};
-Line(21) = {11,12};
-Circle(22) = {17,13,14};
-Circle(23) = {16,13,17};
-Circle(24) = {15,13,16};
-Circle(25) = {12,13,15};
-
-Line Loop(26) = {-5,1,2,3,20,4,10};
-Plane Surface(27) = {26};
-
-Line Loop(28) = {-6,-10,-19,-18,-17,-16,21,25,24,23,22};
-Plane Surface(29) = {28};
-
-Line Loop(30) = {11,12,25,24,23,22};
-Plane Surface(31) = {30};
-
-Extrude Surface{27, {0,0,hg} };
-Coherence;
-
-Extrude Surface{29, {0,0,hg} };
-Coherence;
-
-Extrude Surface{31, {0,0,hg} };
-Coherence;
-
-Extrude Surface {105, {0,0,hcav-hg} };
-Coherence;
-
-Extrude Surface {126, {0,0,hcav-hg} };
-Coherence;
-
-//Characteristic Length {58,71} = 0.01; 
-
-Point(85) = {0.0,0.0,0.0,1.0};
-Surface Loop(158) = {67,27,43,47,51,55,59,63,68};
-Volume(159) = {158};
-Surface Loop(159) = {112,29,84,67,125,92,96,100,104,108,116,120,124};
-Volume(160) = {159};
-
-GO      = 1 ;
-CAV     = 2 ;
-DIS     = 3 ; 
-CLDSRC  = 4 ;
-CLD     = 5 ;
-
diff --git a/benchmarks/3d/p20.geo b/benchmarks/3d/p20.geo
deleted file mode 100644
index 59c000b7b1f67f8cfc4184560f3e1b8de94c8709..0000000000000000000000000000000000000000
--- a/benchmarks/3d/p20.geo
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-         c8
-         +---------------------+ c7
-         |                 c4  |
-         |   +-------------+   |
-         |   | c3          +---+
-         +---+             c5  c6   
-         c1  c2
-
-*/
-
-/* Base inferieure du fer */
-D1 = .05;
-/* Base inferieure du fer */
-D2 = .15;
-D3 = .01;
-D4 = .03;
-D5 = .05;
-D6 = .025;
-
-ax  = 3.2;
-ay  = 3.2;
-az  = 3.2;
-Dy = ax * D1;
-Dz = ay * D2;
-Dx = az * D5;
-
-e  = 2*.001;
-
-l = .008;
-lbox = 2.*ax*l;
-
-c1=newp;
-Point(c1) = {0,0,0,l};
-c2=newp;
-Point(c2) = {0,D1,0,l};
-c3=newp;
-Point(c3) = {0,D1,D2,l};
-c4=newp;
-Point(c4) = {0,D3,D2,l};
-c5=newp;
-Point(c5) = {0,D3,D2-D4,l};
-c6=newp;
-Point(c6) = {0,D1-D4,D2-D4,l};
-c7=newp;
-Point(c7) = {0,D1-D4,D4,l};
-c8=newp;
-Point(c8) = {0,0,D4,l};
-
-d1 = newreg;
-Line (d1) = {c1,c2};
-d2 = newreg;
-Line (d2) = {c2,c3};
-d3 = newreg;
-Line (d3) = {c3,c4};
-d4 = newreg;
-Line (d4) = {c4,c5};
-d5 = newreg;
-Line (d5) = {c5,c6};
-d6 = newreg;
-Line (d6) = {c6,c7};
-d7 = newreg;
-Line (d7) = {c7,c8};
-d8 = newreg;
-Line (d8) = {c8,c1};
-
-e1 = newreg;
-Line Loop (newreg) = {d1,d2,d3,d4,d5,d6,d7,d8};
-f1 = newreg;
-Plane Surface (f1) = {e1};
-Extrude Surface { f1, {D5,0.00000E+00, 0.00000E+00} };
-
-box1 = newp;
-Point(box1) = {Dx,Dy,Dz,lbox};
-box2 = newp;
-Point(box2) = {Dx,Dy,-Dz/6,lbox};
-box3 = newp;
-Point(box3) = {Dx,0,-Dz/6,lbox};
-box4 = newp;
-Point(box4) = {Dx,0,Dz,lbox};
-box5 = newp;
-Point(box5) = {0,Dy,-Dz/6,lbox};
-box6 = newp;
-Point(box6) = {0,Dy,Dz,lbox};
-box7 = newp;
-Point(box7) = {0,0,Dz,lbox};
-box8 = newp;
-Point(box8) = {0,0,-Dz/6,lbox};
-
-lbox1 = newreg;
-Line(lbox1) = {box7,box6};
-lbox2 = newreg;
-Line(lbox2) = {box6,box1};
-lbox3 = newreg;
-Line(lbox3) = {box1,box4};
-lbox4 = newreg;
-Line(lbox4) = {box4,box7};
-lbox5 = newreg;
-Line(lbox5) = {box8,box5};
-lbox6 = newreg;
-Line(lbox6) = {box5,box2};
-lbox7 = newreg;
-Line(lbox7) = {box2,box3};
-lbox8 = newreg;
-Line(lbox8) = {box3,box8};
-lbox9 = newreg;
-Line(lbox9) = {box5,box6};
-lbox10 = newreg;
-Line(lbox10) = {box2,box1};
-lbox11 = newreg;
-Line(lbox11) = {box3,box4};
-
-
-
-s1 = newp;
-Point(s1) = {0,0,D4+e,l};
-s2 = newp;
-Point(s2) = {0,0,D2-D4-e,l};
-s3 = newp;
-Point(s3) = {0,D3-e,D2-D4-e,l};
-s4 = newp;
-Point(s4) = {0,D3-e,D4+e,l};
-
-q1 = newreg;
-Line(q1) = {s1,s2};
-q2 = newreg;
-Line(q2) = {s2,s3};
-q3 = newreg;
-Line(q3) = {s3,s4};
-q4 = newreg;
-Line(q4) = {s4,s1};
-
-v1 = newreg;
-Line(v1) = {box8,c1};
-v2 = newreg;
-Line(v2) = {s2,box7};
-v3 = newreg;
-Line(v3) = {s1,c8};
-
-e2 = newreg;
-Line Loop (newreg) = {q1,q2,q3,q4};
-f2 = newreg;
-Ruled Surface (f2) = {e2};
-Extrude Surface { f2, {D6,0.00000E+00, 0.00000E+00} };
-
-DxInducteur = .005;
-DyInducteur = .01;
-DzInducteur = .06;
-Rinducteur  = .001;
-Xinducteur  = .028;
-Yinducteur  = .00;
-Zinducteur  = .04;
-LcInducteur = .006;
-
-r1 = newp;
-Point(r1) = {Xinducteur,Yinducteur,Zinducteur,LcInducteur};
-r2 = newp;
-Point(r2) = {Xinducteur+DxInducteur,Yinducteur,Zinducteur,LcInducteur};
-r3 = newp;
-Point(r3) = {Xinducteur+DxInducteur,Yinducteur+DyInducteur,Zinducteur,LcInducteur};
-r4 = newp;
-Point(r4) = {Xinducteur,Yinducteur+DyInducteur,Zinducteur,LcInducteur};
-cc = newp;
-Point(cc) = {Xinducteur-Rinducteur,Yinducteur+DyInducteur,Zinducteur,LcInducteur};
-r5 = newp;
-Point(r5) = {Xinducteur-Rinducteur,Yinducteur+DyInducteur+Rinducteur,Zinducteur,LcInducteur};
-r6 = newp;
-Point(r6) = {Xinducteur-Rinducteur,Yinducteur+DyInducteur+DxInducteur+Rinducteur,Zinducteur,LcInducteur};
-r7 = newp;
-Point(r7) = {0,Yinducteur+DxInducteur+DyInducteur+Rinducteur,Zinducteur,LcInducteur};
-r8 = newp;
-Point(r8) = {0,Yinducteur+DyInducteur+Rinducteur,Zinducteur,LcInducteur};
-
-ll1 = newreg;
-Line(ll1) = {r2,r1};
-ll2 = newreg;
-Line(ll2) = {r1,r4};
-ll3 = newreg;
-Circle (ll3) = {r4,cc,r5};
-ll4 = newreg;
-Line(ll4) = {r5,r8};
-ll5 = newreg;
-Line(ll5) = {r8,r7};
-ll6 = newreg;
-Line(ll6) = {r7,r6};
-ll7 = newreg;
-Circle(ll7) = {r3,cc,r6};
-ll8 = newreg;
-Line(ll8) = {r3,r2};
-
-BFondDeLInducteur = newreg;
-Line Loop(BFondDeLInducteur) = {ll1,ll2,ll3,ll4,ll5,ll6,-ll7,ll8};
-FondDeLInducteur = newreg;
-Plane Surface(FondDeLInducteur) = {BFondDeLInducteur};
-Extrude Surface { FondDeLInducteur, {0,0,DzInducteur} };
diff --git a/benchmarks/3d/p4a.geo b/benchmarks/3d/p4a.geo
deleted file mode 100644
index 4a2367a39702954582960f4f8f596b15f045fe16..0000000000000000000000000000000000000000
--- a/benchmarks/3d/p4a.geo
+++ /dev/null
@@ -1,166 +0,0 @@
-epecr  = 4.e-3 ;
-
-c      = 0.0 ; 
-lspire = 0.135 ;
-pspire = 0.4 ;
-lecr   = 0.3 ;
-pecr   = 0.5 ;
-hecr   = 0.2 - epecr/2. ;
-
-far   = 2. ;
-infty = 2.5 ;
-
-lc1 = 0.1; 
-lc2 = 0.1; 
-lc4 = 0.8;
-
-lc1 = 0.01; 
-lc2 = 0.05; 
-lc3 = 0.1; 
-lc4 = 0.5;
-
-
-
-Point(1) = {c,        c,        c, lc2};
-Point(2) = {c+lspire, c,        c, lc2};
-Point(3) = {c,        c+pspire, c, lc2};
-Point(4) = {c+lspire, c+pspire, c, lc2};
-
-Point(5) = {c+lecr,   c,        c, lc2};
-Point(6) = {c,        c+pecr,   c, lc2};
-Point(7) = {c+lecr,   c+pecr,   c, lc2};
-
-Point(8) = {c,        c,        c+hecr, lc2};
-Point(9) = {c+lecr,   c,        c+hecr, lc1};
-Point(10)= {c,        c+pecr,   c+hecr, lc1};
-Point(11)= {c+lecr,   c+pecr,   c+hecr, lc1};
-
-Point(12)= {c+far,    c,        c,     lc4};
-Point(13)= {c,        c+far,    c,     lc4};
-Point(14)= {c,        c,        c+far, lc3};
-Point(15)= {c,        c,        c-far, lc4};
-
-Point(16)= {c+infty,  c,        c,       lc4};
-Point(17)= {c,        c+infty,  c,       lc4};
-Point(18)= {c,        c,        c+infty, lc4};
-Point(19)= {c,        c,        c-infty, lc4};
-
-Line(1) = {2,4};
-Line(2) = {4,3};
-Line(3) = {1,2};
-Line(4) = {1,3};
-Line(5) = {2,5};
-Line(6) = {5,7};
-Line(7) = {7,6};
-Line(8) = {6,13};
-Line(9) = {5,12};
-Line(10) = {6,10};
-Line(11) = {10,11};
-Line(12) = {11,7};
-Line(13) = {10,8};
-Line(14) = {8,9};
-Line(15) = {9,11};
-Line(16) = {9,5};
-Line(17) = {1,8};
-Line(18) = {8,14};
-Line(19) = {14,18};
-Line(20) = {13,17};
-Line(21) = {12,16};
-Circle(22) = {12,1,13};
-Circle(23) = {16,1,17};
-Circle(24) = {12,1,14};
-Circle(25) = {16,1,18};
-Circle(26) = {13,1,14};
-Circle(27) = {17,1,18};
-Circle(28) = {15,1,13};
-Circle(29) = {19,1,17};
-Circle(30) = {12,1,15};
-Circle(31) = {16,1,19};
-Line(32) = {1,15};
-Line(33) = {15,19};
-Line(34) = {3,6};
-
-Line Loop(35) = {-2,-1,-3,4};
-Plane Surface(36) = {35};
-Line Loop(37) = {-7,-6,-5,1,2,34};
-Plane Surface(38) = {37};
-Line Loop(39) = {7,10,11,12};
-Plane Surface(40) = {39};
-Line Loop(41) = {12,-6,-16,15};
-Plane Surface(42) = {41};
-Line Loop(43) = {14,15,-11,13};
-Plane Surface(44) = {43};
-Line Loop(45) = {5,-16,-14,-17,3};
-Plane Surface(46) = {45};
-Line Loop(47) = {-17,4,34,10,13};
-Plane Surface(48) = {47};
-Line Loop(49) = {7,8,-22,-9,6};
-Plane Surface(50) = {49};
-Line Loop(51) = {20,-23,-21,22};
-Plane Surface(52) = {51};
-Line Loop(53) = {-8,-34,-4,32,28};
-Plane Surface(54) = {53};
-Line Loop(55) = {-20,-28,33,29};
-Plane Surface(56) = {55};
-Line Loop(57) = {5,9,30,-32,3};
-Plane Surface(58) = {57};
-Line Loop(59) = {19,-25,-21,24};
-Plane Surface(60) = {59};
-Line Loop(61) = {9,24,-18,14,16};
-Plane Surface(62) = {61};
-Line Loop(63) = {-18,-13,-10,8,26};
-Plane Surface(64) = {63};
-Line Loop(65) = {19,-27,-20,26};
-Plane Surface(66) = {65};
-Line Loop(67) = {33,-31,-21,30};
-Plane Surface(68) = {67};
-Line Loop(69) = {-28,-30,22};
-Ruled Surface(70) = {69};
-Line Loop(71) = {-29,-31,23};
-Ruled Surface(72) = {71};
-Line Loop(73) = {-24,22,26};
-Ruled Surface(74) = {73};
-Line Loop(75) = {-25,23,27};
-Ruled Surface(76) = {75};
-
-Surface Loop(77) = {48,-46,-38,-40,-44,42,-36};
-Complex Volume(78) = {77};
-Surface Loop(79) = {64,-62,-50,40,44,-42,-74};
-Complex Volume(80) = {79};
-Surface Loop(81) = {36,38,50,54,58,70};
-Complex Volume(82) = {81};
-Surface Loop(83) = {70,-56,-52,-72,68};
-Complex Volume(84) = {83};
-Surface Loop(85) = {52,66,-60,76,-74};
-Complex Volume(86) = {85};
-
-
-
-AirInterieur = 1111 ; 
-AirBas       = 1112 ; 
-AirHaut      = 1113 ; 
-AirInfini    = 1114 ;
-
-Spire  = 2222 ; 
-Ecran  = 3333 ; 
-dEcran = 3334 ;
-
-CLInf = 1100 ;
-
-
-
-Physical Line(dEcran) = {11,12,6, 14,16,13} ;
-
-Physical Surface(Spire) = 36 ;
-Physical Surface(Ecran) = {42,44} ;
-
-Physical Surface(CLInf) = {76,72} ;
-
-Physical Volume(AirInterieur) = 78;
-Physical Volume(AirBas) = 80;
-Physical Volume(AirHaut) = 82;
-
-Physical Volume(AirInfini) = {84,86};
-
-
-
diff --git a/benchmarks/3d/prism.geo b/benchmarks/3d/prism.geo
deleted file mode 100644
index d537e222cbbe26b62ec93d4e4b070023470fe985..0000000000000000000000000000000000000000
--- a/benchmarks/3d/prism.geo
+++ /dev/null
@@ -1,46 +0,0 @@
-Point(1) = {0.0,0.0,0.0,1.0};
-Point(2) = {1,0.0,0.0,1.0};
-Point(3) = {1,0.0,1,1.0};
-Point(4) = {1,2,1,1.0};
-Point(5) = {0,2,0,1.0};
-Point(6) = {1,2,0,1.0};
-
-Line(1) = {4,6};
-Line(2) = {6,5};
-Line(3) = {5,4};
-Line(4) = {2,1};
-Line(5) = {1,3};
-Line(6) = {3,2};
-Line(7) = {2,6};
-Line(8) = {5,1};
-Line(9) = {3,4};
-
-Line Loop(10) = {9,-3,8,5};
-Plane Surface(11) = {10};
-Line Loop(12) = {-7,-6,9,1};
-Plane Surface(13) = {12};
-Line Loop(14) = {-4,7,2,8};
-Plane Surface(15) = {14};
-Line Loop(16) = {6,4,5};
-Plane Surface(17) = {16};
-Line Loop(18) = {1,2,3};
-Plane Surface(19) = {18};
-
-Surface Loop(20) = {13,15,17,-11,-19};
-Complex Volume(21) = {20};
-
-Transfinite Line {1,2,3,4,5,6,7,8,9} = 3;
-
-Transfinite Surface {17} = {1,3,2};
-Transfinite Surface {15} = {1,2,6,5};
-Transfinite Surface {11} = {1,3,4,5};
-Transfinite Surface {13} = {3,2,6,4};
-Transfinite Surface {19} = {5,4,6};
-
-Transfinite Volume {21} = {1,3,2,5,4,6};
-
-/*
-Recombine Surface {17,19};
-*/
-Recombine Surface {11,13,15};
-
diff --git a/benchmarks/3d/runner_simple_3d.geo b/benchmarks/3d/runner_simple_3d.geo
deleted file mode 100644
index e08e33dda3eb1a879721540e363694618bdebc2f..0000000000000000000000000000000000000000
--- a/benchmarks/3d/runner_simple_3d.geo
+++ /dev/null
@@ -1,141 +0,0 @@
-/*simple runner for 3d-studies;  07.07.1999/hm*/  
-  
-  
-/*variables*/  
-r=0.004;  
-a=0.005;  
-b=0.005;  
-m=0.010;  
-mh=0.020;  
-  
-h1=0.005;  
-h2=0.005;  
-h3=0.005;  
-h4=0.005;  
-hl = 0.012;  
-f   =0.015;  
-l   =0.040;  
-  
-lc1 = 0.004;  
-  
-/*points*/  
-  
-Point(1) = {-r,0.0,0.0,lc1};  
-  
-Point(2) = {0,0.0,0.0,lc1};  
-  
-Point(3) = {+r,0.0,0.0,lc1};  
-Point(4) = {r+a,0.0,0.0,lc1};  
-Point(5) = {r+a+b,0.0,0.0,lc1};  
-Point(6) = {r+a+b,-h4,0.0,lc1};  
-  
-Point(11) = {-r,h1,0.0,lc1};  
-  
-Point(13) = {+r,h1,0.0,lc1};  
-Point(14) = {r+a,h2,0.0,lc1};  
-Point(15) = {r+a+b,h3,0.0,lc1};  
-  
-/*flange*/  
-  
-Point(25) = {r+a+b+f,0,0.0,lc1};  
-Point(26) = {r+a+b+f,h3,0.0,lc1};  
-Point(27) = {r+a+b+f,-h4,0.0,lc1};  
-Point(28) = {r+a+b+f,-hl,0.0,lc1};  
-  
-/*laminate*/  
-  
-Point(30) = {r+a+b+f+l,0.0,0.0,lc1};  
-Point(31) = {r+a+b+f+l,h3,0.0,lc1};  
-Point(32) = {r+a+b+f+l,-h4,0.0,lc1};  
-Point(33) = {r+a+b+f+l,-hl,0.0,lc1};  
-  
-/*lines*/  
-  
-Circle(100) = {1,2,3};  
-  
-Line(101) = {1,11};  
-Line(102) = {11,13};  
-Line(103) = {13,14};  
-Line(104) = {14,15};  
-Line(105) = {3,13};  
-Line(106) = {3,4};  
-Line(107) = {4,14};  
-Line(108) = {4,5};  
-Line(109) = {5,15};  
-  
-  
-  
-Line(110) = {15,26};  
-Line(111) = {5,25};  
-Line(112) = {6,27};  
-Line(113) = {5,6};  
-Line(114) = {26,25};  
-Line(115) = {25,27};  
-Line(116) = {26,31};  
-Line(117) = {25,30};  
-Line(118) = {27,32};  
-Line(119) = {31,30};  
-Line(120) = {30,32};  
-  
-Line(121) = {27,28};  
-Line(122) = {28,33};  
-Line(123) = {32,33};  
-  
-Line Loop(300) = {-102,-101,100,105};  
-Plane Surface(301) = {300};  
-Line Loop(400) = {107,-103,-105,106};  
-Plane Surface(401) = {400};  
-Line Loop(402) = {109,-104,-107,108};  
-Plane Surface(403) = {402};  
-  
-  
-Line Loop(404) = {-114,-110,-109,111};  
-Plane Surface(405) = {404};  
-Line Loop(406) = {-112,-113,111,115};  
-Plane Surface(407) = {406};  
-Line Loop(408) = {117,-119,-116,114};  
-Plane Surface(409) = {408};  
-Line Loop(410) = {118,-120,-117,115};  
-Plane Surface(411) = {410};  
-Line Loop(412) = {118,123,-122,-121};  
-Plane Surface(413) = {412};  
-  
-/*mould*/  
-  
-Point(511) = {-m,h1,0.0,lc1};  
-Point(512) = {-m,h1-mh,0.0,lc1};  
-Point(533) = {r+a+b+f+l,h1-mh,0.0,lc1};  
-  
-Line(614) = {511,512};  
-Line(615) = {511,11};  
-Line(616) = {512,533};  
-Line(617) = {533,33};  
-/*  
-Line Loop(618) = {-617,-616,-614,615,-101,100,106,108,113,112,121,122,-617,-616,-614,615,-
-101,100,106,108,113,112};*/  
-  
-Line Loop(618) = {-617,-616,-614,615,-101,100,106,108,113,112,121,122};  
-Plane Surface(619) = {618};  
-  
-ex = .05;
-
-Extrude Surface{619, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{301, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{401, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{403, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{405, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{407, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{409, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{411, {0.0,0.0,ex}};  
-Coherence;  
-Extrude Surface{413, {0.0,0.0,ex}};  
-Coherence;  
- 
- 
diff --git a/benchmarks/3d/sph.geo b/benchmarks/3d/sph.geo
deleted file mode 100644
index 0f4a835045cc612d756b27aeeb19196074eb500f..0000000000000000000000000000000000000000
--- a/benchmarks/3d/sph.geo
+++ /dev/null
@@ -1,56 +0,0 @@
-lc = 0.01;
-dext = .05;
-dint = .055;
-
-Point(1) = {0,0,0,lc};  
-Point(2) = {dint,0,0,lc};
-Point(3) = {0,dint,0,lc};
-Point(4) = {0,0,dint,lc};
-Point(5) = {dext,0,0,lc};
-Point(6) = {0,dext,0,lc};
-Point(7) = {0,0,dext,lc};
-
-Circle(1) = {7,1,5};
-Circle(2) = {4,1,2};
-Circle(3) = {5,1,6};
-Circle(4) = {2,1,3};
-Circle(5) = {7,1,6};
-Circle(6) = {4,1,3};
-Line(7) = {1,5};
-Line(8) = {5,2};
-Line(9) = {1,6};
-Line(10) = {6,3};
-Line(11) = {1,7};
-Line(12) = {7,4};
-
-Line Loop(17) = {2,-8,-1,12};
-Plane Surface(18) = {17};
-Line Loop(19) = {-4,-8,3,10};
-Plane Surface(20) = {19};
-Line Loop(21) = {-6,-12,5,10};
-Plane Surface(22) = {21};
-
-Line Loop(23) = {-6,2,4};
-Ruled Surface(24) = {23};
-Line Loop(25) = {-5,1,3};
-Ruled Surface(26) = {25};
-
-Surface Loop(27) = {24,-22,-18,20,-26};
-Complex Volume(28) = {27};
-
-Transfinite Line {1,2,3,4,5,6} = 10 ;
-Transfinite Line {-8,-10,-12} = 5 Using Power 1.6 ;
-
-Transfinite Surface {22} = {4,7,6,3};
-Transfinite Surface {20} = {3,2,5,6};
-Transfinite Surface {18} = {4,2,5,7};
-
-Transfinite Surface {24} = {3,4,2};
-Transfinite Surface {26} = {6,7,5};
-
-Recombine Surface {18,20,22};
-/*
-Recombine Surface {24,26};
-*/
-Transfinite Volume {28} = {3,4,2,6,7,5};
-
diff --git a/benchmarks/3d/surface3113.geo b/benchmarks/3d/surface3113.geo
deleted file mode 100644
index e57c0588d5a9c82407606530772053ee430a7476..0000000000000000000000000000000000000000
--- a/benchmarks/3d/surface3113.geo
+++ /dev/null
@@ -1,112 +0,0 @@
-lc =  5.00000E+01;
-Point(2) = {-2.70000E-02,-2.40000E-02, 1.00000E-02, 1.00000E-02};
-Point(4) = {-2.70000E-02,-4.00000E-03, 1.00000E-02, 3.33333E-03};
-Point(10) = { 1.79430E+00,-4.00000E-02, 1.00000E-02, 2.00000E-02};
-Point(12) = { 1.79430E+00,-2.00000E-02, 1.00000E-02, 2.00000E-02};
-Point(211) = { 1.18995E-02,-1.01059E-02, 1.00000E-02, 1.00000E-02};
-Point(212) = { 1.58995E-02,-1.01059E-02, 1.00000E-02, 1.00000E-02};
-Point(213) = { 1.18995E-02,-6.10592E-03, 1.00000E-02, 1.00000E-02};
-Point(214) = { 7.89953E-03,-1.01059E-02, 1.00000E-02, 1.00000E-02};
-Point(215) = { 1.18995E-02,-1.41059E-02, 1.00000E-02, 1.00000E-02};
-Point(411) = { 4.17983E-02,-1.03721E-02, 1.00000E-02, 1.00000E-02};
-Point(412) = { 4.57983E-02,-1.03721E-02, 1.00000E-02, 1.00000E-02};
-Point(413) = { 4.17983E-02,-6.37207E-03, 1.00000E-02, 1.00000E-02};
-Point(414) = { 3.77983E-02,-1.03721E-02, 1.00000E-02, 1.00000E-02};
-Point(415) = { 4.17983E-02,-1.43721E-02, 1.00000E-02, 1.00000E-02};
-Point(611) = { 8.24967E-02,-1.17343E-02, 1.00000E-02, 1.00000E-02};
-Point(612) = { 8.74967E-02,-1.17343E-02, 1.00000E-02, 1.00000E-02};
-Point(613) = { 8.24967E-02,-6.73435E-03, 1.00000E-02, 1.00000E-02};
-Point(614) = { 7.74967E-02,-1.17343E-02, 1.00000E-02, 1.00000E-02};
-Point(615) = { 8.24967E-02,-1.67343E-02, 1.00000E-02, 1.00000E-02};
-Point(811) = { 1.38495E-01,-1.32328E-02, 1.00000E-02, 1.00000E-02};
-Point(812) = { 1.44495E-01,-1.32328E-02, 1.00000E-02, 1.00000E-02};
-Point(813) = { 1.38495E-01,-7.23281E-03, 1.00000E-02, 1.00000E-02};
-Point(814) = { 1.32495E-01,-1.32328E-02, 1.00000E-02, 1.00000E-02};
-Point(815) = { 1.38495E-01,-1.92328E-02, 1.00000E-02, 1.00000E-02};
-Point(1011) = { 2.11992E-01,-1.38870E-02, 1.00000E-02, 1.00000E-02};
-Point(1012) = { 2.17992E-01,-1.38870E-02, 1.00000E-02, 1.00000E-02};
-Point(1013) = { 2.11992E-01,-7.88705E-03, 1.00000E-02, 1.00000E-02};
-Point(1014) = { 2.05992E-01,-1.38870E-02, 1.00000E-02, 1.00000E-02};
-Point(1015) = { 2.11992E-01,-1.98870E-02, 1.00000E-02, 1.00000E-02};
-Point(1211) = { 3.12488E-01,-1.47816E-02, 1.00000E-02, 1.00000E-02};
-Point(1212) = { 3.18488E-01,-1.47816E-02, 1.00000E-02, 1.00000E-02};
-Point(1213) = { 3.12488E-01,-8.78162E-03, 1.00000E-02, 1.00000E-02};
-Point(1214) = { 3.06488E-01,-1.47816E-02, 1.00000E-02, 1.00000E-02};
-Point(1215) = { 3.12488E-01,-2.07816E-02, 1.00000E-02, 1.00000E-02};
-Point(1411) = { 4.48482E-01,-1.59922E-02, 1.00000E-02, 1.00000E-02};
-Point(1412) = { 4.54482E-01,-1.59922E-02, 1.00000E-02, 1.00000E-02};
-Point(1413) = { 4.48482E-01,-9.99218E-03, 1.00000E-02, 1.00000E-02};
-Point(1414) = { 4.42482E-01,-1.59922E-02, 1.00000E-02, 1.00000E-02};
-Point(1415) = { 4.48482E-01,-2.19922E-02, 1.00000E-02, 1.00000E-02};
-Point(1611) = { 6.32475E-01,-1.76300E-02, 1.00000E-02, 1.10000E-02};
-Point(1612) = { 6.38475E-01,-1.76300E-02, 1.00000E-02, 1.10000E-02};
-Point(1613) = { 6.32475E-01,-1.16300E-02, 1.00000E-02, 1.10000E-02};
-Point(1614) = { 6.26475E-01,-1.76300E-02, 1.00000E-02, 1.10000E-02};
-Point(1615) = { 6.32475E-01,-2.36300E-02, 1.00000E-02, 1.10000E-02};
-Point(1811) = { 8.87965E-01,-1.99042E-02, 1.00000E-02, 1.60000E-02};
-Point(1812) = { 8.93965E-01,-1.99042E-02, 1.00000E-02, 1.60000E-02};
-Point(1813) = { 8.87965E-01,-1.39042E-02, 1.00000E-02, 1.60000E-02};
-Point(1814) = { 8.81965E-01,-1.99042E-02, 1.00000E-02, 1.60000E-02};
-Point(1815) = { 8.87965E-01,-2.59042E-02, 1.00000E-02, 1.60000E-02};
-Point(2011) = { 1.24165E+00,-2.30526E-02, 1.00000E-02, 2.00000E-02};
-Point(2012) = { 1.24765E+00,-2.30526E-02, 1.00000E-02, 2.00000E-02};
-Point(2013) = { 1.24165E+00,-1.70526E-02, 1.00000E-02, 2.00000E-02};
-Point(2014) = { 1.23565E+00,-2.30526E-02, 1.00000E-02, 2.00000E-02};
-Point(2015) = { 1.24165E+00,-2.90526E-02, 1.00000E-02, 2.00000E-02};
-Point(2211) = { 1.73423E+00,-2.74373E-02, 1.00000E-02, 2.40000E-02};
-Point(2212) = { 1.74023E+00,-2.74373E-02, 1.00000E-02, 2.40000E-02};
-Point(2213) = { 1.73423E+00,-2.14373E-02, 1.00000E-02, 2.40000E-02};
-Point(2214) = { 1.72823E+00,-2.74373E-02, 1.00000E-02, 2.40000E-02};
-Point(2215) = { 1.73423E+00,-3.34373E-02, 1.00000E-02, 2.40000E-02};
-Line (26) = {4,12};
-Line (6) = {2,4};
-Line (25) = {2,10};
-Line (16) = {10,12};
-Circle (216) = {215,211,212} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (213) = {212,211,213} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (214) = {213,211,214} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (215) = {214,211,215} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (416) = {415,411,412} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (413) = {412,411,413} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (414) = {413,411,414} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (415) = {414,411,415} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (616) = {615,611,612} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (613) = {612,611,613} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (614) = {613,611,614} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (615) = {614,611,615} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (816) = {815,811,812} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (813) = {812,811,813} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (814) = {813,811,814} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (815) = {814,811,815} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1016) = {1015,1011,1012} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1013) = {1012,1011,1013} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1014) = {1013,1011,1014} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1015) = {1014,1011,1015} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1216) = {1215,1211,1212} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1213) = {1212,1211,1213} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1214) = {1213,1211,1214} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1215) = {1214,1211,1215} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1416) = {1415,1411,1412} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1413) = {1412,1411,1413} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1414) = {1413,1411,1414} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1415) = {1414,1411,1415} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1616) = {1615,1611,1612} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1613) = {1612,1611,1613} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1614) = {1613,1611,1614} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1615) = {1614,1611,1615} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1816) = {1815,1811,1812} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1813) = {1812,1811,1813} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1814) = {1813,1811,1814} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (1815) = {1814,1811,1815} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2016) = {2015,2011,2012} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2013) = {2012,2011,2013} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2014) = {2013,2011,2014} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2015) = {2014,2011,2015} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2216) = {2215,2211,2212} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2213) = {2212,2211,2213} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2214) = {2213,2211,2214} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Circle (2215) = {2214,2211,2215} Plane{ 1.00000E+00, 0.00000E+00, 0.00000E+00};
-Line Loop (1003113) = {-26, -6, 25, 16,216,213,214,215,416,413,414,415,616,613,614,615,816,813,814,815,1016,1013,1014,1015,1216,1213,1214,1215,1416,1413,1414,1415,1616,1613,1614,1615,1816,1813,1814,1815,2016,2013,2014,2015,2216,2213,2214,2215};
-Plane Surface (3113) = {1003113};
-Line Loop (1003113) = {-26, -6, 25, 16,216,213,214,215,416,413,414,415,616,613,614,615,816,813,814,815,1016,1013,1014,1015,1216,1213,1214,1215,1416,1413,1414,1415,1616,1613,1614,1615,1816,1813,1814,1815,2016,2013,2014,2015,2216,2213,2214,2215};
-Plane Surface (3113) = {1003113};
diff --git a/benchmarks/3d/transfinite.geo b/benchmarks/3d/transfinite.geo
deleted file mode 100644
index c0c7314aba4f2fa8c96c6f3d6a02901e3c63dde4..0000000000000000000000000000000000000000
--- a/benchmarks/3d/transfinite.geo
+++ /dev/null
@@ -1,66 +0,0 @@
-Point(1) = {0.0,0.0,0.0,1.0};
-Point(2) = {1,0.0,0.0,1.0};
-Point(3) = {.5,.1,0.0,1.0};
-Point(4) = {.5,.2,0.0,1.0};
-Point(5) = {0,.5,0.0,1.0};
-Point(6) = {1,.55,0.0,1.0};
-Point(7) = {0,0,1,1.0};
-
-Line(1) = {2,6};
-Line(2) = {5,1};
-Spline(3) = {1,3,2};
-Spline(4) = {5,4,6};
-
-Line Loop(5) = {-1,-3,-2,4};
-Plane Surface(6) = {5};
-
-Point(8) = {0,.5,1,1.0};
-Point(9) = {1,.5,1,1.0};
-Point(10) = {1,0,1,1.0};
-
-Line(7) = {6,9};
-Line(8) = {9,10};
-Line(9) = {10,2};
-Line(10) = {10,7};
-Line(11) = {7,1};
-Line(12) = {5,8};
-Line(13) = {8,7};
-Line(14) = {8,9};
-
-Line Loop(15) = {14,-7,-4,12};
-Ruled Surface(16) = {15};
-Line Loop(17) = {7,8,9,1};
-Ruled Surface(18) = {17};
-Line Loop(19) = {-10,-8,-14,13};
-Ruled Surface(20) = {19};
-Line Loop(21) = {-11,-13,-12,2};
-Ruled Surface(22) = {21};
-Line Loop(23) = {-9,10,11,3};
-Ruled Surface(24) = {23};
-
-Surface Loop(25) = {16,20,24,18,6,22};
-Complex Volume(26) = {25};
-
-Transfinite Line {7,9,11,12} = 5;
-Transfinite Line {3,10,14} = 10;
-Transfinite Line {4} = 10 Using Bump 1.5;
-Transfinite Line {-1,2} = 20 Using Power 1.6;
-Transfinite Line {8,13} = 20 ;
-
-Transfinite Surface {6} = {1,2,6,5};
-Transfinite Surface {20} = {7,10,9,8};
-Transfinite Surface {18} = {10,2,6,9};
-Transfinite Surface {22} = {7,1,5,8};
-Transfinite Surface {16} = {8,9,6,5};
-Transfinite Surface {24} = {7,10,2,1};
-
-Transfinite Volume {26} = {7,10,2,1,8,9,6,5};
-
-Recombine Surface {6,20,18,22,16,24};
-
-
-
-
-
-
-
diff --git a/benchmarks/3d/trav33D.geo b/benchmarks/3d/trav33D.geo
deleted file mode 100644
index 4ca92796d88c79f7246c732d4b6bc2655d9790a0..0000000000000000000000000000000000000000
--- a/benchmarks/3d/trav33D.geo
+++ /dev/null
@@ -1,206 +0,0 @@
-// ce programme resoud le probleme de haut-parleur en 3d
-// en fixant une vitesse sur le tweeter constante U0
-// et en prennant comme  frequence de source (tweeter) 
-// Freq. 
-
-r = 0.175 ; x0 = 0.31 ; y1 = 0.16; 
-y0 = 0.16; x1 = 0.315 ; z0 = 0.12; 
-m = 2 ;
-Freq = m*100 ; 
-lambda = 342 / Freq ;
-dx = lambda;
-x = 1.04; 
-y = 1.0; 
-
-e = lambda ;
-p0 = e/8; 
-p1 = p0/4; 
-
-// p0=.0085 la frequence d'echontillonnage spatiale, on le	 
-// prend toujours au moins 2 fois plus grande que la frequence 
-// de la source.
-
-
-Point(1) = {r,0.0,0.0, p1};
-Point(2) = {r+x0,0.0,0.0, p0};
-Point(3) = {r+x0,0.0,y0, p0};
-Point(4) = {r+x0+x1,r+x0+x1,y0, p0};
-Point(6) = {0.0,0.0,0.0,p0};
-Point(8) = {r+x0+x1,0.0,y0,p0};
-Point(9) = {r+x0+x1,r+x0+x1,0.0, p0};
-Point(11) = {r+x0+x1,0.0,0.0,p0};
-Point(12) = {y,y,0.0,p0}; 
-Point(14) = {y,y,x,p0}; 
-Point(16) = {y+dx,y+dx,y+dx,p0}; 
-Point(17) = {y+dx,0.0,y+dx, p0};
-Point(18) = {0.0,r,0.0, p1};
-Point(20) = {0.0,0.0,-0.125, p0};
-Point(22) = {0.0,r+x0,y0, p0};
-Point(26) = {0.0,0.0,0.09, p1};
-Point(27) = {0.0,0.0,0.16,p0};
-Point(28) = {0.0,0.485,0.0,p0};
-Point(29) = {0.0,0.8,0.0,p0};
-Point(30) = {0.0,0.8,0.16,p0};
-Point(31) = {0.0,1.0,1.0,p0};
-Point(32) = {0.0,1.0,0.0,p0};
-Point(33) = {1.0,0.0,0.0,p0};
-Point(34) = {1.0,0.0,1.0,p0};
-Point(35) = {0.0,1.0+lambda,1.0,p0};
-Point(36) = {0.0,1.0+lambda,0.0,p0};
-Point(37) = {1.0+lambda,1.0+lambda,0.0,p0};
-Point(38) = {1.0+lambda,1.0+lambda,1.04,p0};
-Point(39) = {1+lambda,0.0,0.0,p0};
-Point(40) = {1+lambda,0.0,1.0,p0};
-Point(41) = {0.0,0.0,1.0,p0};
-Point(43) = {0.0,1+lambda,1+lambda,p0};
-Point(44) = {0.0,0.0,1+lambda,p0};
-Circle(19) = {1,6,18};
-Circle(20) = {1,20,26};
-Circle(21) = {18,20,26};
-Circle(23) = {3,27,22};
-
-
-Line(2) = {6,18};
-Line(6) = {3,1};
-Line(7) = {6,1};
-Line(8) = {1,2};
-Line(9) = {3,8};
-Line(10) = {8,11};
-Line(11) = {11,2};
-Line(12) = {9,11};
-Line(14) = {9,4};
-Line(15) = {8,4};
-Line(25) = {2,3};
-Line(26) = {22,18};
-Line(28) = {28,22};
-Line(31) = {18,28};
-Circle(32) = {28,6,2};
-Line(48) = {6,26};
-Line(55) = {30,22};
-Line(56) = {28,29};
-Line(57) = {30,29};
-Line(58) = {30,4};
-Line(59) = {29,9};
-Line(72) = {9,12};
-Line(73) = {14,12};
-Line(74) = {29,32};
-Line(75) = {31,32};
-Line(76) = {31,14};
-Line(77) = {32,12};
-Line(78) = {33,12};
-Line(79) = {34,33};
-Line(80) = {14,34};
-Line(81) = {33,11};
-Line(82) = {35,31};
-Line(83) = {32,36};
-Line(84) = {36,35};
-Line(85) = {35,38};
-Line(86) = {36,37};
-Line(87) = {38,37};
-Line(88) = {12,37};
-Line(89) = {14,38};
-Line(90) = {39,40};
-Line(91) = {39,37};
-Line(92) = {40,38};
-Line(93) = {33,39};
-Line(94) = {34,40};
-Line(125) = {44,17};
-Line(126) = {17,16};
-Line(127) = {43,16};
-Line(128) = {44,43};
-Line(129) = {44,41};
-Line(130) = {35,43};
-Line(131) = {17,40};
-Line(132) = {38,16};
-Line(133) = {34,41};
-Line(134) = {31,41};
-Line(153) = {27,41};
-Line(154) = {26,27};
-
-
-Line Loop(38) = {31,28,26};
-Plane Surface(39) = {38};
-Line Loop(42) = {21,-20,19};
-Ruled Surface(43) = {42};
-Line Loop(46) = {-26,-23,6,19};
-Ruled Surface(47) = {46};
-Line Loop(49) = {20,-48,7};
-Plane Surface(50) = {49};
-Line Loop(51) = {-48,2,21};
-Plane Surface(52) = {51};
-Line Loop(53) = {6,8,25};
-Plane Surface(54) = {53};
-Line Loop(60) = {-15,10,-12,14};
-Plane Surface(61) = {60};
-Line Loop(62) = {59,14,-58,57};
-Plane Surface(63) = {62};
-Line Loop(64) = {-55,57,-56,28};
-Plane Surface(65) = {64};
-Line Loop(66) = {-58,55,-23,9,15};
-Plane Surface(67) = {66};
-Line Loop(68) = {12,11,-32,56,59};
-Plane Surface(69) = {68};
-Line Loop(70) = {9,10,11,25};
-Plane Surface(71) = {70};
-Line Loop(95) = {-89,80,94,92};
-Plane Surface(96) = {95};
-Line Loop(97) = {92,87,-91,90};
-Plane Surface(98) = {97};
-Line Loop(99) = {85,87,-86,84};
-Plane Surface(100) = {99};
-Line Loop(101) = {84,82,75,83};
-Plane Surface(102) = {101};
-Line Loop(103) = {88,-86,-83,77};
-Plane Surface(104) = {103};
-Line Loop(105) = {88,-91,-93,78};
-Plane Surface(106) = {105};
-Line Loop(107) = {-88,-73,89,87};
-Plane Surface(108) = {107};
-Line Loop(109) = {93,90,-94,79};
-Plane Surface(110) = {109};
-Line Loop(111) = {-73,80,79,78};
-Plane Surface(112) = {111};
-Line Loop(113) = {-73,-76,75,77};
-Plane Surface(114) = {113};
-Line Loop(115) = {-85,82,76,89};
-Plane Surface(116) = {115};
-Line Loop(117) = {-81,78,-72,12};
-Plane Surface(118) = {117};
-Line Loop(119) = {77,-72,-59,74};
-Plane Surface(120) = {119};
-Line Loop(135) = {132,-126,131,92};
-Plane Surface(136) = {135};
-Line Loop(137) = {-94,133,-129,125,131};
-Plane Surface(138) = {137};
-Line Loop(139) = {133,-134,76,80};
-Plane Surface(140) = {139};
-Line Loop(141) = {-129,128,-130,82,134};
-Plane Surface(142) = {141};
-Line Loop(143) = {127,-132,-85,130};
-Plane Surface(144) = {143};
-Line Loop(145) = {127,-126,-125,128};
-Plane Surface(146) = {145};
-Line Loop(155) = {-153,-154,-20,-6,9,10,-81,-79,133};
-Plane Surface(156) = {155};
-Line Loop(157) = {-74,-57,55,26,21,154,153,-134,75};
-Plane Surface(158) = {157};
-
-
-Surface Loop(147) = {116,-144,146,-136,138,96,-140,-142};
-Complex Volume(148) = {147};
-Surface Loop(149) = {96,108,106,-98,110,-112};
-Complex Volume(150) = {149};
-Surface Loop(151) = {108,104,-100,-116,102,-114};
-Complex Volume(152) = {151} ;
-Surface Loop(159) = {112,-114,-140,156,158,120,-118,-61,-67,63,47,-43};
-Complex Volume(160) = {159};
-
-Physical Volume(1000) = {160}; // Air
-
-Physical Volume(1301) = {150}; // PML_X1
-Physical Volume(1302) = {152}; // PML_Y1
-Physical Volume(1303) = {148}; // PML_Z1
-
-Physical Surface(1200) = {43}; // tweeter
-// Physical Surface(1400) = {47,67}; // Pavillon
-
diff --git a/benchmarks/3d/vulp5.geo b/benchmarks/3d/vulp5.geo
deleted file mode 100644
index 98564699af185a8a800799b20637f4954df256bd..0000000000000000000000000000000000000000
--- a/benchmarks/3d/vulp5.geo
+++ /dev/null
@@ -1,1153 +0,0 @@
-/* Antenne VULP 9118-E */
-
-Frequence = 235.e6 ;
-Lambda = 2.99792458e8/Frequence ;
-LambdaDemi = Lambda/2 ;
-
-f1 = 10.e-3 ;
-
-si = 50.e-3 ;
-si1= 20.e-3 ;
-si2= 100.e-3 ;
-se = 300.e-3 ;
-
-/* 2 longerons */
-
-xmin =-27.e-3 ;
-LL   = 1821.3e-3 ; 
-ll   = 20.e-3 ; 
-hh   = 20.e-3 ;
-dc   = 8.e-3 ;
-em   = 8.e-3/2 ; 
-eM   = 40.e-3/2 ;
-t    = ArcTan(eM/2-em/2/LL) ;
-
-/* 22 barreaux */
-/* longueur           ; rayon          ; dist % barreau 1       ; dist%y=0  */                  
- l1 =   77.e-3/2-ll/2 ;  r1 =  8.e-3/2 ;  d1 =   0              ;  e1 = em+dc+d1*Sin(t)-2.e-3 ;
- l2 =   91.e-3/2-ll/2 ;  r2 =  8.e-3/2 ;  d2 =   11.9e-3*Cos(t) ;  e2 = em+dc+d2*Sin(t)-2.e-3 ;
- l3 =  105.e-3/2-ll/2 ;  r3 =  8.e-3/2 ;  d3 =   25.8e-3*Cos(t) ;  e3 = em+dc+d3*Sin(t)-2.e-3 ;
- l4 =  122.e-3/2-ll/2 ;  r4 =  8.e-3/2 ;  d4 =   41.8e-3*Cos(t) ;  e4 = em+dc+d4*Sin(t)-2.e-3 ;
- l5 =  142.e-3/2-ll/2 ;  r5 = 10.e-3/2 ;  d5 =   60.5e-3*Cos(t) ;  e5 = em+dc+d5*Sin(t)-1.e-3 ;
- l6 =  164.e-3/2-ll/2 ;  r6 = 10.e-3/2 ;  d6 =   82.5e-3*Cos(t) ;  e6 = em+dc+d6*Sin(t)-1.e-3 ;
- l7 =  192.e-3/2-ll/2 ;  r7 = 12.e-3/2 ;  d7 =  107.0e-3*Cos(t) ;  e7 = em+dc+d7*Sin(t)  ;      
- l8 =  224.e-3/2-ll/2 ;  r8 = 12.e-3/2 ;  d8 =  138.5e-3*Cos(t) ;  e8 = em+dc+d8*Sin(t)  ;      
- l9 =  260.e-3/2-ll/2 ;  r9 = 12.e-3/2 ;  d9 =  172.0e-3*Cos(t) ;  e9 = em+dc+d9*Sin(t)  ;      
-l10 =  303.e-3/2-ll/2 ; r10 = 12.e-3/2 ; d10 =  212.0e-3*Cos(t) ; e10 = em+dc+d10*Sin(t) ;      
-l11 =  353.e-3/2-ll/2 ; r11 = 12.e-3/2 ; d11 =  258.5e-3*Cos(t) ; e11 = em+dc+d11*Sin(t) ;      
-l12 =  410.e-3/2-ll/2 ; r12 = 12.e-3/2 ; d12 =  312.5e-3*Cos(t) ; e12 = em+dc+d12*Sin(t) ;      
-l13 =  477.e-3/2-ll/2 ; r13 = 12.e-3/2 ; d13 =  375.0e-3*Cos(t) ; e13 = em+dc+d13*Sin(t) ;      
-l14 =  554.e-3/2-ll/2 ; r14 = 12.e-3/2 ; d14 =  448.5e-3*Cos(t) ; e14 = em+dc+d14*Sin(t) ;      
-l15 =  645.e-3/2-ll/2 ; r15 = 12.e-3/2 ; d15 =  533.0e-3*Cos(t) ; e15 = em+dc+d15*Sin(t) ;      
-l16 =  749.e-3/2-ll/2 ; r16 = 12.e-3/2 ; d16 =  632.5e-3*Cos(t) ; e16 = em+dc+d16*Sin(t) ;      
-l17 =  877.e-3/2-ll/2 ; r17 = 12.e-3/2 ; d17 =  750.5e-3*Cos(t) ; e17 = em+dc+d17*Sin(t) ;      
-l18 = 1023.e-3/2-ll/2 ; r18 = 12.e-3/2 ; d18 =  888.0e-3*Cos(t) ; e18 = em+dc+d18*Sin(t) ;      
-l19 = 1196.e-3/2-ll/2 ; r19 = 12.e-3/2 ; d19 = 1050.3e-3*Cos(t) ; e19 = em+dc+d19*Sin(t) ;      
-l20 = 1404.e-3/2-ll/2 ; r20 = 12.e-3/2 ; d20 = 1241.7e-3*Cos(t) ; e20 = em+dc+d20*Sin(t) ;      
-l21 = 1648.e-3/2-ll/2 ; r21 = 12.e-3/2 ; d21 = 1467.7e-3*Cos(t) ; e21 = em+dc+d21*Sin(t) ;      
-l22 = 1934.e-3/2-ll/2 ; r22 = 12.e-3/2 ; d22 = 1734.3e-3*Cos(t) ; e22 = em+dc+d22*Sin(t) ;      
-
-/* long caract */          
- s1 = f1 ;      s1l = f1 ;       
- s2 = f1 ;      s2l = f1 ;       
- s3 = f1 ;      s3l = f1 ;       
- s4 = f1 ;      s4l = f1 ;       
- s5 = f1 ;      s5l = f1 ;       
- s6 = f1 ;      s6l = f1 ;       
- s7 = f1 ;      s7l = f1 ;       
- s8 = f1 ;      s8l = f1 ;       
- s9 = f1 ;      s9l = f1 ;       
-s10 = f1 ;     s10l = f1 ;       
-s11 = f1 ;     s11l = f1 ;       
-s12 = f1 ;     s12l = f1 ;       
-s13 = f1 ;     s13l = f1 ;       
-s14 = f1 ;     s14l = 1.3*f1 ;   
-s15 = f1 ;     s15l = 1.6*f1 ;   
-s16 = 1.1*f1 ; s16l = 2*f1 ;   
-s17 = 1.4*f1 ; s17l = 2.3*f1 ;     
-s18 = 1.6*f1 ; s18l = 2.6*f1 ; 
-s19 = 1.8*f1 ; s19l = 3*f1 ; 
-s20 = 2.0*f1 ; s20l = 3.3*f1 ;   
-s21 = 2.2*f1 ; s21l = 3.6*f1 ; 
-s22 = 2.4*f1 ; s22l = 4*f1 ;   
-
-Point(9998) = {d11, 0, -l15, 1} ;
-
-/* boite */
-
-abs = LambdaDemi ;
-bem = 2*si ;
-
-bxM =  -200.e-3 ; bxm = bxM+bem ; bxP = 2000.e-3 ; bxp = bxP-bem ;
-byM =  -150.e-3 ; bym = byM+bem ; byP =  150.e-3 ; byp = byP-bem ;
-bzM = -1200.e-3 ; bzm = bzM+bem ; bzP = 1200.e-3 ; bzp = bzP-bem ;
-
-bxM2 = bxM-abs ; bxP2 = bxP+abs ; 
-byM2 = byM-abs ; byP2 = byP+abs ; 
-bzM2 = bzM-abs ; bzP2 = bzP+abs ; 
-
-/* longerons */
-
-Point(1) = {xmin, -em-hh, -ll/2, f1} ; Point(5) = {xmin, em, -ll/2, f1/3} ; 
-Point(2) = {xmin, -em-hh,  ll/2, f1} ; Point(6) = {xmin, em,  ll/2, f1/3} ; 
-Point(3) = {xmin, -em,    -ll/2, f1/3} ; Point(7) = {xmin, em+hh, -ll/2, f1} ; 
-Point(4) = {xmin, -em,     ll/2, f1/3} ; Point(8) = {xmin, em+hh,  ll/2, f1} ; 
-
-f3 = s22/1.2 ;
-
-Point(9)  = {xmin+LL, -eM-hh, -ll/2, f3} ; Point(13) = {xmin+LL, eM, -ll/2, f3} ; 
-Point(10) = {xmin+LL, -eM-hh,  ll/2, f3} ; Point(14) = {xmin+LL, eM,  ll/2, f3} ; 
-Point(11) = {xmin+LL, -eM,    -ll/2, f3} ; Point(15) = {xmin+LL, eM+hh, -ll/2, f3} ; 
-Point(12) = {xmin+LL, -eM,     ll/2, f3} ; Point(16) = {xmin+LL, eM+hh,  ll/2, f3} ; 
-
-Line(1) = {5,6};  Line(11) = {13,14};
-Line(2) = {6,8};  Line(12) = {14,16};
-Line(3) = {8,7};  Line(13) = {16,15};
-Line(4) = {7,5};  Line(14) = {15,13};
-Line(5) = {1,2};  Line(15) = {9,10}; 
-Line(6) = {2,4};  Line(16) = {10,12};
-Line(7) = {4,3};  Line(17) = {12,11};
-Line(8) = {3,1};  Line(18) = {11,9}; 
-Line(9) = {4,6};  Line(19) = {12,14};
-Line(10) = {3,5}; Line(20) = {11,13};
-
-Line(21) = {8,16}; Line(25) = {2,10}; 
-Line(22) = {7,15}; Line(26) = {4,12}; 
-Line(23) = {6,14}; Line(27) = {3,11}; 
-Line(24) = {5,13}; Line(28) = {1,9};  
-
-/* boite */
-
-Point(51) = {bxm, bym, bzm, si1}; Point(61) = {bxM, byM, bzM, si2}; 
-Point(52) = {bxm, bym, bzp, si1}; Point(62) = {bxM, byM, bzP, si2}; 
-Point(53) = {bxm, byp, bzm, si1}; Point(63) = {bxM, byP, bzM, si2}; 
-Point(54) = {bxm, byp, bzp, si1}; Point(64) = {bxM, byP, bzP, si2}; 
-Point(55) = {bxp, bym, bzm, si}; Point(65) = {bxP, byM, bzM, si2}; 
-Point(56) = {bxp, bym, bzp, si}; Point(66) = {bxP, byM, bzP, si2}; 
-Point(57) = {bxp, byp, bzm, si}; Point(67) = {bxP, byP, bzM, si2}; 
-Point(58) = {bxp, byp, bzp, si}; Point(68) = {bxP, byP, bzP, si2}; 
-
-Line(51) = {51,52}; Line(59) = {52,54}; Line(67) = {54,53}; Line(75) = {53,51}; 
-Line(52) = {52,56}; Line(60) = {56,58}; Line(68) = {58,54}; Line(76) = {51,55}; 
-Line(53) = {55,57}; Line(61) = {57,53}; Line(69) = {55,56}; Line(77) = {58,57}; 
-Line(54) = {53,63}; Line(62) = {51,61}; Line(70) = {54,64}; Line(78) = {52,62}; 
-Line(55) = {62,61}; Line(63) = {61,63}; Line(71) = {63,64}; Line(79) = {64,62}; 
-Line(56) = {57,67}; Line(64) = {55,65}; Line(72) = {65,67}; Line(80) = {67,63}; 
-Line(57) = {61,65}; Line(65) = {58,68}; Line(73) = {56,66}; Line(81) = {66,65}; 
-Line(58) = {68,67}; Line(66) = {68,66}; Line(74) = {66,62}; Line(82) = {64,68}; 
-
-Point(70) = {bxM2, byM2, bzM2, se}; Point(71) = {bxM2, byM2, bzP2, se};
-Point(72) = {bxM2, byP2, bzM2, se}; Point(73) = {bxM2, byP2, bzP2, se};
-Point(74) = {bxP2, byM2, bzM2, se}; Point(75) = {bxP2, byM2, bzP2, se};
-Point(76) = {bxP2, byP2, bzM2, se}; Point(77) = {bxP2, byP2, bzP2, se};
-
-Line(7001) = {70,71}; Line(7002) = {71,73}; Line(7003) = {73,72}; Line(7004) = {72,70};
-Line(7005) = {71,75}; Line(7006) = {75,77}; Line(7007) = {77,73}; Line(7008) = {74,75};
-Line(7009) = {74,76}; Line(7010) = {76,77}; Line(7011) = {76,72}; Line(7012) = {74,70};
-Line(7013) = {63,72}; Line(7014) = {61,70}; Line(7015) = {62,71}; Line(7016) = {64,73};
-Line(7017) = {68,77}; Line(7018) = {66,75}; Line(7019) = {67,76}; Line(7020) = {65,74};
-
-/* barreau 1 et 1' (le + a gauche, i.e. en x==0) */
-
-Point(101) = {d1,    -e1,    -ll/2,    s1};  Point(111) = {d1,     e1,     ll/2,    s1}; 
-Point(102) = {d1+r1, -e1,    -ll/2,    s1};  Point(112) = {d1+r1,  e1,     ll/2,    s1}; 
-Point(103) = {d1,    -e1+r1, -ll/2,    s1};  Point(113) = {d1,     e1+r1,  ll/2,    s1}; 
-Point(104) = {d1-r1, -e1,    -ll/2,    s1};  Point(114) = {d1-r1,  e1,     ll/2,    s1}; 
-Point(105) = {d1,    -e1-r1, -ll/2,    s1};  Point(115) = {d1,     e1-r1,  ll/2,    s1}; 
-Point(106) = {d1,    -e1,    -ll/2-l1, s1l};  Point(116) = {d1,     e1,     ll/2+l1, s1l}; 
-Point(107) = {d1+r1, -e1,    -ll/2-l1, s1l};  Point(117) = {d1+r1,  e1,     ll/2+l1, s1l}; 
-Point(108) = {d1,    -e1+r1, -ll/2-l1, s1l};  Point(118) = {d1,     e1+r1,  ll/2+l1, s1l}; 
-Point(109) = {d1-r1, -e1,    -ll/2-l1, s1l};  Point(119) = {d1-r1,  e1,     ll/2+l1, s1l}; 
-Point(110) = {d1,    -e1-r1, -ll/2-l1, s1l};  Point(120) = {d1,     e1-r1,  ll/2+l1, s1l}; 
-
-Circle(101) = {102,101,103}; Circle(105) = {107,106,108}; Line(109) = {102,107};
-Circle(102) = {103,101,104}; Circle(106) = {108,106,109}; Line(110) = {103,108};
-Circle(103) = {104,101,105}; Circle(107) = {109,106,110}; Line(111) = {104,109};
-Circle(104) = {105,101,102}; Circle(108) = {110,106,107}; Line(112) = {105,110};
-
-Circle(113) = {112,111,113}; Circle(117) = {117,116,118}; Line(121) = {112,117};
-Circle(114) = {113,111,114}; Circle(118) = {118,116,119}; Line(122) = {113,118};
-Circle(115) = {114,111,115}; Circle(119) = {119,116,120}; Line(123) = {114,119};
-Circle(116) = {115,111,112}; Circle(120) = {120,116,117}; Line(124) = {115,120};
-
-Line Loop(101) = {102,103,104,101};   Plane Surface(121) = {101};
-Line Loop(102) = {107,108,105,106};   Plane Surface(122) = {102};
-Line Loop(103) = {116,113,114,115};   Plane Surface(123) = {103};
-Line Loop(104) = {120,117,118,119};   Plane Surface(124) = {104};
-Line Loop(105) = {108,-109,-104,112}; Ruled Surface(125) = {105};
-Line Loop(106) = {112,-107,-111,103}; Ruled Surface(126) = {106};
-Line Loop(107) = {-111,-102,110,106}; Ruled Surface(127) = {107};
-Line Loop(108) = {-110,-101,109,105}; Ruled Surface(128) = {108};
-Line Loop(109) = {121,-120,-124,116}; Ruled Surface(129) = {109};
-Line Loop(110) = {-124,-115,123,119}; Ruled Surface(130) = {110};
-Line Loop(111) = {123,-118,-122,114}; Ruled Surface(131) = {111};
-Line Loop(112) = {122,-117,-121,113}; Ruled Surface(132) = {112};
-
-/* barreau 2 et 2' */
-
-Point(201) = {d2,    e2,    -ll/2,    s2};  Point(211) = {d2,     -e2,     ll/2,    s2}; 
-Point(202) = {d2+r2, e2,    -ll/2,    s2};  Point(212) = {d2+r2,  -e2,     ll/2,    s2}; 
-Point(203) = {d2,    e2+r2, -ll/2,    s2};  Point(213) = {d2,     -e2+r2,  ll/2,    s2}; 
-Point(204) = {d2-r2, e2,    -ll/2,    s2};  Point(214) = {d2-r2,  -e2,     ll/2,    s2}; 
-Point(205) = {d2,    e2-r2, -ll/2,    s2};  Point(215) = {d2,     -e2-r2,  ll/2,    s2}; 
-Point(206) = {d2,    e2,    -ll/2-l2, s2l};  Point(216) = {d2,     -e2,     ll/2+l2, s2l}; 
-Point(207) = {d2+r2, e2,    -ll/2-l2, s2l};  Point(217) = {d2+r2,  -e2,     ll/2+l2, s2l}; 
-Point(208) = {d2,    e2+r2, -ll/2-l2, s2l};  Point(218) = {d2,     -e2+r2,  ll/2+l2, s2l}; 
-Point(209) = {d2-r2, e2,    -ll/2-l2, s2l};  Point(219) = {d2-r2,  -e2,     ll/2+l2, s2l}; 
-Point(210) = {d2,    e2-r2, -ll/2-l2, s2l};  Point(220) = {d2,     -e2-r2,  ll/2+l2, s2l}; 
-
-Circle(201) = {202,201,203}; Circle(205) = {207,206,208}; Line(209) = {202,207};
-Circle(202) = {203,201,204}; Circle(206) = {208,206,209}; Line(210) = {203,208};
-Circle(203) = {204,201,205}; Circle(207) = {209,206,210}; Line(211) = {204,209};
-Circle(204) = {205,201,202}; Circle(208) = {210,206,207}; Line(212) = {205,210};
-
-Circle(213) = {212,211,213}; Circle(217) = {217,216,218}; Line(221) = {212,217};
-Circle(214) = {213,211,214}; Circle(218) = {218,216,219}; Line(222) = {213,218};
-Circle(215) = {214,211,215}; Circle(219) = {219,216,220}; Line(223) = {214,219};
-Circle(216) = {215,211,212}; Circle(220) = {220,216,217}; Line(224) = {215,220};
-
-Line Loop(201) = {202,203,204,201};   Plane Surface(221) = {201};
-Line Loop(202) = {207,208,205,206};   Plane Surface(222) = {202};
-Line Loop(203) = {216,213,214,215};   Plane Surface(223) = {203};
-Line Loop(204) = {220,217,218,219};   Plane Surface(224) = {204};
-Line Loop(205) = {208,-209,-204,212}; Ruled Surface(225) = {205};
-Line Loop(206) = {212,-207,-211,203}; Ruled Surface(226) = {206};
-Line Loop(207) = {-211,-202,210,206}; Ruled Surface(227) = {207};
-Line Loop(208) = {-210,-201,209,205}; Ruled Surface(228) = {208};
-Line Loop(209) = {221,-220,-224,216}; Ruled Surface(229) = {209};
-Line Loop(210) = {-224,-215,223,219}; Ruled Surface(230) = {210};
-Line Loop(211) = {223,-218,-222,214}; Ruled Surface(231) = {211};
-Line Loop(212) = {222,-217,-221,213}; Ruled Surface(232) = {212};
-
-/* barreau 3 et 3' */
-
-Point(301) = {d3,    -e3,    -ll/2,    s3};  Point(311) = {d3,     e3,     ll/2,    s3}; 
-Point(302) = {d3+r3, -e3,    -ll/2,    s3};  Point(312) = {d3+r3,  e3,     ll/2,    s3}; 
-Point(303) = {d3,    -e3+r3, -ll/2,    s3};  Point(313) = {d3,     e3+r3,  ll/2,    s3}; 
-Point(304) = {d3-r3, -e3,    -ll/2,    s3};  Point(314) = {d3-r3,  e3,     ll/2,    s3}; 
-Point(305) = {d3,    -e3-r3, -ll/2,    s3};  Point(315) = {d3,     e3-r3,  ll/2,    s3}; 
-Point(306) = {d3,    -e3,    -ll/2-l3, s3l};  Point(316) = {d3,     e3,     ll/2+l3, s3l}; 
-Point(307) = {d3+r3, -e3,    -ll/2-l3, s3l};  Point(317) = {d3+r3,  e3,     ll/2+l3, s3l}; 
-Point(308) = {d3,    -e3+r3, -ll/2-l3, s3l};  Point(318) = {d3,     e3+r3,  ll/2+l3, s3l}; 
-Point(309) = {d3-r3, -e3,    -ll/2-l3, s3l};  Point(319) = {d3-r3,  e3,     ll/2+l3, s3l}; 
-Point(310) = {d3,    -e3-r3, -ll/2-l3, s3l};  Point(320) = {d3,     e3-r3,  ll/2+l3, s3l}; 
-
-Circle(301) = {302,301,303}; Circle(305) = {307,306,308}; Line(309) = {302,307};
-Circle(302) = {303,301,304}; Circle(306) = {308,306,309}; Line(310) = {303,308};
-Circle(303) = {304,301,305}; Circle(307) = {309,306,310}; Line(311) = {304,309};
-Circle(304) = {305,301,302}; Circle(308) = {310,306,307}; Line(312) = {305,310};
-
-Circle(313) = {312,311,313}; Circle(317) = {317,316,318}; Line(321) = {312,317};
-Circle(314) = {313,311,314}; Circle(318) = {318,316,319}; Line(322) = {313,318};
-Circle(315) = {314,311,315}; Circle(319) = {319,316,320}; Line(323) = {314,319};
-Circle(316) = {315,311,312}; Circle(320) = {320,316,317}; Line(324) = {315,320};
-
-Line Loop(301) = {302,303,304,301};   Plane Surface(321) = {301};
-Line Loop(302) = {307,308,305,306};   Plane Surface(322) = {302};
-Line Loop(303) = {316,313,314,315};   Plane Surface(323) = {303};
-Line Loop(304) = {320,317,318,319};   Plane Surface(324) = {304};
-Line Loop(305) = {308,-309,-304,312}; Ruled Surface(325) = {305};
-Line Loop(306) = {312,-307,-311,303}; Ruled Surface(326) = {306};
-Line Loop(307) = {-311,-302,310,306}; Ruled Surface(327) = {307};
-Line Loop(308) = {-310,-301,309,305}; Ruled Surface(328) = {308};
-Line Loop(309) = {321,-320,-324,316}; Ruled Surface(329) = {309};
-Line Loop(310) = {-324,-315,323,319}; Ruled Surface(330) = {310};
-Line Loop(311) = {323,-318,-322,314}; Ruled Surface(331) = {311};
-Line Loop(312) = {322,-317,-321,313}; Ruled Surface(332) = {312};
-
-/* barreau 4 et 4' */
-
-Point(401) = {d4,    e4,    -ll/2,    s4};  Point(411) = {d4,     -e4,     ll/2,    s4}; 
-Point(402) = {d4+r4, e4,    -ll/2,    s4};  Point(412) = {d4+r4,  -e4,     ll/2,    s4}; 
-Point(403) = {d4,    e4+r4, -ll/2,    s4};  Point(413) = {d4,     -e4+r4,  ll/2,    s4}; 
-Point(404) = {d4-r4, e4,    -ll/2,    s4};  Point(414) = {d4-r4,  -e4,     ll/2,    s4}; 
-Point(405) = {d4,    e4-r4, -ll/2,    s4};  Point(415) = {d4,     -e4-r4,  ll/2,    s4}; 
-Point(406) = {d4,    e4,    -ll/2-l4, s4l};  Point(416) = {d4,     -e4,     ll/2+l4, s4l}; 
-Point(407) = {d4+r4, e4,    -ll/2-l4, s4l};  Point(417) = {d4+r4,  -e4,     ll/2+l4, s4l}; 
-Point(408) = {d4,    e4+r4, -ll/2-l4, s4l};  Point(418) = {d4,     -e4+r4,  ll/2+l4, s4l}; 
-Point(409) = {d4-r4, e4,    -ll/2-l4, s4l};  Point(419) = {d4-r4,  -e4,     ll/2+l4, s4l}; 
-Point(410) = {d4,    e4-r4, -ll/2-l4, s4l};  Point(420) = {d4,     -e4-r4,  ll/2+l4, s4l}; 
-
-Circle(401) = {402,401,403}; Circle(405) = {407,406,408}; Line(409) = {402,407};
-Circle(402) = {403,401,404}; Circle(406) = {408,406,409}; Line(410) = {403,408};
-Circle(403) = {404,401,405}; Circle(407) = {409,406,410}; Line(411) = {404,409};
-Circle(404) = {405,401,402}; Circle(408) = {410,406,407}; Line(412) = {405,410};
-
-Circle(413) = {412,411,413}; Circle(417) = {417,416,418}; Line(421) = {412,417};
-Circle(414) = {413,411,414}; Circle(418) = {418,416,419}; Line(422) = {413,418};
-Circle(415) = {414,411,415}; Circle(419) = {419,416,420}; Line(423) = {414,419};
-Circle(416) = {415,411,412}; Circle(420) = {420,416,417}; Line(424) = {415,420};
-
-Line Loop(401) = {402,403,404,401};   Plane Surface(421) = {401};
-Line Loop(402) = {407,408,405,406};   Plane Surface(422) = {402};
-Line Loop(403) = {416,413,414,415};   Plane Surface(423) = {403};
-Line Loop(404) = {420,417,418,419};   Plane Surface(424) = {404};
-Line Loop(405) = {408,-409,-404,412}; Ruled Surface(425) = {405};
-Line Loop(406) = {412,-407,-411,403}; Ruled Surface(426) = {406};
-Line Loop(407) = {-411,-402,410,406}; Ruled Surface(427) = {407};
-Line Loop(408) = {-410,-401,409,405}; Ruled Surface(428) = {408};
-Line Loop(409) = {421,-420,-424,416}; Ruled Surface(429) = {409};
-Line Loop(410) = {-424,-415,423,419}; Ruled Surface(430) = {410};
-Line Loop(411) = {423,-418,-422,414}; Ruled Surface(431) = {411};
-Line Loop(412) = {422,-417,-421,413}; Ruled Surface(432) = {412};
-
-/* barreau 5 et 5' */
-
-Point(501) = {d5,    -e5,    -ll/2,    s5};  Point(511) = {d5,     e5,     ll/2,    s5}; 
-Point(502) = {d5+r5, -e5,    -ll/2,    s5};  Point(512) = {d5+r5,  e5,     ll/2,    s5}; 
-Point(503) = {d5,    -e5+r5, -ll/2,    s5};  Point(513) = {d5,     e5+r5,  ll/2,    s5}; 
-Point(504) = {d5-r5, -e5,    -ll/2,    s5};  Point(514) = {d5-r5,  e5,     ll/2,    s5}; 
-Point(505) = {d5,    -e5-r5, -ll/2,    s5};  Point(515) = {d5,     e5-r5,  ll/2,    s5}; 
-Point(506) = {d5,    -e5,    -ll/2-l5, s5l};  Point(516) = {d5,     e5,     ll/2+l5, s5l}; 
-Point(507) = {d5+r5, -e5,    -ll/2-l5, s5l};  Point(517) = {d5+r5,  e5,     ll/2+l5, s5l}; 
-Point(508) = {d5,    -e5+r5, -ll/2-l5, s5l};  Point(518) = {d5,     e5+r5,  ll/2+l5, s5l}; 
-Point(509) = {d5-r5, -e5,    -ll/2-l5, s5l};  Point(519) = {d5-r5,  e5,     ll/2+l5, s5l}; 
-Point(510) = {d5,    -e5-r5, -ll/2-l5, s5l};  Point(520) = {d5,     e5-r5,  ll/2+l5, s5l}; 
-
-Circle(501) = {502,501,503}; Circle(505) = {507,506,508}; Line(509) = {502,507};
-Circle(502) = {503,501,504}; Circle(506) = {508,506,509}; Line(510) = {503,508};
-Circle(503) = {504,501,505}; Circle(507) = {509,506,510}; Line(511) = {504,509};
-Circle(504) = {505,501,502}; Circle(508) = {510,506,507}; Line(512) = {505,510};
-
-Circle(513) = {512,511,513}; Circle(517) = {517,516,518}; Line(521) = {512,517};
-Circle(514) = {513,511,514}; Circle(518) = {518,516,519}; Line(522) = {513,518};
-Circle(515) = {514,511,515}; Circle(519) = {519,516,520}; Line(523) = {514,519};
-Circle(516) = {515,511,512}; Circle(520) = {520,516,517}; Line(524) = {515,520};
-
-Line Loop(501) = {502,503,504,501};   Plane Surface(521) = {501};
-Line Loop(502) = {507,508,505,506};   Plane Surface(522) = {502};
-Line Loop(503) = {516,513,514,515};   Plane Surface(523) = {503};
-Line Loop(504) = {520,517,518,519};   Plane Surface(524) = {504};
-Line Loop(505) = {508,-509,-504,512}; Ruled Surface(525) = {505};
-Line Loop(506) = {512,-507,-511,503}; Ruled Surface(526) = {506};
-Line Loop(507) = {-511,-502,510,506}; Ruled Surface(527) = {507};
-Line Loop(508) = {-510,-501,509,505}; Ruled Surface(528) = {508};
-Line Loop(509) = {521,-520,-524,516}; Ruled Surface(529) = {509};
-Line Loop(510) = {-524,-515,523,519}; Ruled Surface(530) = {510};
-Line Loop(511) = {523,-518,-522,514}; Ruled Surface(531) = {511};
-Line Loop(512) = {522,-517,-521,513}; Ruled Surface(532) = {512};
-
-/* barreau 6 et 6' */
-
-Point(601) = {d6,    e6,    -ll/2,    s6};  Point(611) = {d6,     -e6,     ll/2,    s6}; 
-Point(602) = {d6+r6, e6,    -ll/2,    s6};  Point(612) = {d6+r6,  -e6,     ll/2,    s6}; 
-Point(603) = {d6,    e6+r6, -ll/2,    s6};  Point(613) = {d6,     -e6+r6,  ll/2,    s6}; 
-Point(604) = {d6-r6, e6,    -ll/2,    s6};  Point(614) = {d6-r6,  -e6,     ll/2,    s6}; 
-Point(605) = {d6,    e6-r6, -ll/2,    s6};  Point(615) = {d6,     -e6-r6,  ll/2,    s6}; 
-Point(606) = {d6,    e6,    -ll/2-l6, s6l};  Point(616) = {d6,     -e6,     ll/2+l6, s6l}; 
-Point(607) = {d6+r6, e6,    -ll/2-l6, s6l};  Point(617) = {d6+r6,  -e6,     ll/2+l6, s6l}; 
-Point(608) = {d6,    e6+r6, -ll/2-l6, s6l};  Point(618) = {d6,     -e6+r6,  ll/2+l6, s6l}; 
-Point(609) = {d6-r6, e6,    -ll/2-l6, s6l};  Point(619) = {d6-r6,  -e6,     ll/2+l6, s6l}; 
-Point(610) = {d6,    e6-r6, -ll/2-l6, s6l};  Point(620) = {d6,     -e6-r6,  ll/2+l6, s6l}; 
-
-Circle(601) = {602,601,603}; Circle(605) = {607,606,608}; Line(609) = {602,607};
-Circle(602) = {603,601,604}; Circle(606) = {608,606,609}; Line(610) = {603,608};
-Circle(603) = {604,601,605}; Circle(607) = {609,606,610}; Line(611) = {604,609};
-Circle(604) = {605,601,602}; Circle(608) = {610,606,607}; Line(612) = {605,610};
-
-Circle(613) = {612,611,613}; Circle(617) = {617,616,618}; Line(621) = {612,617};
-Circle(614) = {613,611,614}; Circle(618) = {618,616,619}; Line(622) = {613,618};
-Circle(615) = {614,611,615}; Circle(619) = {619,616,620}; Line(623) = {614,619};
-Circle(616) = {615,611,612}; Circle(620) = {620,616,617}; Line(624) = {615,620};
-
-Line Loop(601) = {602,603,604,601};   Plane Surface(621) = {601};
-Line Loop(602) = {607,608,605,606};   Plane Surface(622) = {602};
-Line Loop(603) = {616,613,614,615};   Plane Surface(623) = {603};
-Line Loop(604) = {620,617,618,619};   Plane Surface(624) = {604};
-Line Loop(605) = {608,-609,-604,612}; Ruled Surface(625) = {605};
-Line Loop(606) = {612,-607,-611,603}; Ruled Surface(626) = {606};
-Line Loop(607) = {-611,-602,610,606}; Ruled Surface(627) = {607};
-Line Loop(608) = {-610,-601,609,605}; Ruled Surface(628) = {608};
-Line Loop(609) = {621,-620,-624,616}; Ruled Surface(629) = {609};
-Line Loop(610) = {-624,-615,623,619}; Ruled Surface(630) = {610};
-Line Loop(611) = {623,-618,-622,614}; Ruled Surface(631) = {611};
-Line Loop(612) = {622,-617,-621,613}; Ruled Surface(632) = {612};
-
-/* barreau 7 et 7' */
-
-Point(701) = {d7,    -e7,    -ll/2,    s7};  Point(711) = {d7,     e7,     ll/2,    s7}; 
-Point(702) = {d7+r7, -e7,    -ll/2,    s7};  Point(712) = {d7+r7,  e7,     ll/2,    s7}; 
-Point(703) = {d7,    -e7+r7, -ll/2,    s7};  Point(713) = {d7,     e7+r7,  ll/2,    s7}; 
-Point(704) = {d7-r7, -e7,    -ll/2,    s7};  Point(714) = {d7-r7,  e7,     ll/2,    s7}; 
-Point(705) = {d7,    -e7-r7, -ll/2,    s7};  Point(715) = {d7,     e7-r7,  ll/2,    s7}; 
-Point(706) = {d7,    -e7,    -ll/2-l7, s7l};  Point(716) = {d7,     e7,     ll/2+l7, s7l}; 
-Point(707) = {d7+r7, -e7,    -ll/2-l7, s7l};  Point(717) = {d7+r7,  e7,     ll/2+l7, s7l}; 
-Point(708) = {d7,    -e7+r7, -ll/2-l7, s7l};  Point(718) = {d7,     e7+r7,  ll/2+l7, s7l}; 
-Point(709) = {d7-r7, -e7,    -ll/2-l7, s7l};  Point(719) = {d7-r7,  e7,     ll/2+l7, s7l}; 
-Point(710) = {d7,    -e7-r7, -ll/2-l7, s7l};  Point(720) = {d7,     e7-r7,  ll/2+l7, s7l}; 
-
-Circle(701) = {702,701,703}; Circle(705) = {707,706,708}; Line(709) = {702,707};
-Circle(702) = {703,701,704}; Circle(706) = {708,706,709}; Line(710) = {703,708};
-Circle(703) = {704,701,705}; Circle(707) = {709,706,710}; Line(711) = {704,709};
-Circle(704) = {705,701,702}; Circle(708) = {710,706,707}; Line(712) = {705,710};
-
-Circle(713) = {712,711,713}; Circle(717) = {717,716,718}; Line(721) = {712,717};
-Circle(714) = {713,711,714}; Circle(718) = {718,716,719}; Line(722) = {713,718};
-Circle(715) = {714,711,715}; Circle(719) = {719,716,720}; Line(723) = {714,719};
-Circle(716) = {715,711,712}; Circle(720) = {720,716,717}; Line(724) = {715,720};
-
-Line Loop(701) = {702,703,704,701};   Plane Surface(721) = {701};
-Line Loop(702) = {707,708,705,706};   Plane Surface(722) = {702};
-Line Loop(703) = {716,713,714,715};   Plane Surface(723) = {703};
-Line Loop(704) = {720,717,718,719};   Plane Surface(724) = {704};
-Line Loop(705) = {708,-709,-704,712}; Ruled Surface(725) = {705};
-Line Loop(706) = {712,-707,-711,703}; Ruled Surface(726) = {706};
-Line Loop(707) = {-711,-702,710,706}; Ruled Surface(727) = {707};
-Line Loop(708) = {-710,-701,709,705}; Ruled Surface(728) = {708};
-Line Loop(709) = {721,-720,-724,716}; Ruled Surface(729) = {709};
-Line Loop(710) = {-724,-715,723,719}; Ruled Surface(730) = {710};
-Line Loop(711) = {723,-718,-722,714}; Ruled Surface(731) = {711};
-Line Loop(712) = {722,-717,-721,713}; Ruled Surface(732) = {712};
-
-/* barreau 8 et 8' */
-
-Point(801) = {d8,    e8,    -ll/2,    s8};  Point(811) = {d8,     -e8,     ll/2,    s8}; 
-Point(802) = {d8+r8, e8,    -ll/2,    s8};  Point(812) = {d8+r8,  -e8,     ll/2,    s8}; 
-Point(803) = {d8,    e8+r8, -ll/2,    s8};  Point(813) = {d8,     -e8+r8,  ll/2,    s8}; 
-Point(804) = {d8-r8, e8,    -ll/2,    s8};  Point(814) = {d8-r8,  -e8,     ll/2,    s8}; 
-Point(805) = {d8,    e8-r8, -ll/2,    s8};  Point(815) = {d8,     -e8-r8,  ll/2,    s8}; 
-Point(806) = {d8,    e8,    -ll/2-l8, s8l};  Point(816) = {d8,     -e8,     ll/2+l8, s8l}; 
-Point(807) = {d8+r8, e8,    -ll/2-l8, s8l};  Point(817) = {d8+r8,  -e8,     ll/2+l8, s8l}; 
-Point(808) = {d8,    e8+r8, -ll/2-l8, s8l};  Point(818) = {d8,     -e8+r8,  ll/2+l8, s8l}; 
-Point(809) = {d8-r8, e8,    -ll/2-l8, s8l};  Point(819) = {d8-r8,  -e8,     ll/2+l8, s8l}; 
-Point(810) = {d8,    e8-r8, -ll/2-l8, s8l};  Point(820) = {d8,     -e8-r8,  ll/2+l8, s8l}; 
-
-Circle(801) = {802,801,803}; Circle(805) = {807,806,808}; Line(809) = {802,807};
-Circle(802) = {803,801,804}; Circle(806) = {808,806,809}; Line(810) = {803,808};
-Circle(803) = {804,801,805}; Circle(807) = {809,806,810}; Line(811) = {804,809};
-Circle(804) = {805,801,802}; Circle(808) = {810,806,807}; Line(812) = {805,810};
-
-Circle(813) = {812,811,813}; Circle(817) = {817,816,818}; Line(821) = {812,817};
-Circle(814) = {813,811,814}; Circle(818) = {818,816,819}; Line(822) = {813,818};
-Circle(815) = {814,811,815}; Circle(819) = {819,816,820}; Line(823) = {814,819};
-Circle(816) = {815,811,812}; Circle(820) = {820,816,817}; Line(824) = {815,820};
-
-Line Loop(801) = {802,803,804,801};   Plane Surface(821) = {801};
-Line Loop(802) = {807,808,805,806};   Plane Surface(822) = {802};
-Line Loop(803) = {816,813,814,815};   Plane Surface(823) = {803};
-Line Loop(804) = {820,817,818,819};   Plane Surface(824) = {804};
-Line Loop(805) = {808,-809,-804,812}; Ruled Surface(825) = {805};
-Line Loop(806) = {812,-807,-811,803}; Ruled Surface(826) = {806};
-Line Loop(807) = {-811,-802,810,806}; Ruled Surface(827) = {807};
-Line Loop(808) = {-810,-801,809,805}; Ruled Surface(828) = {808};
-Line Loop(809) = {821,-820,-824,816}; Ruled Surface(829) = {809};
-Line Loop(810) = {-824,-815,823,819}; Ruled Surface(830) = {810};
-Line Loop(811) = {823,-818,-822,814}; Ruled Surface(831) = {811};
-Line Loop(812) = {822,-817,-821,813}; Ruled Surface(832) = {812};
-
-/* barreau 9 et 9' */
-
-Point(901) = {d9,    -e9,    -ll/2,    s9};  Point(911) = {d9,     e9,     ll/2,    s9}; 
-Point(902) = {d9+r9, -e9,    -ll/2,    s9};  Point(912) = {d9+r9,  e9,     ll/2,    s9}; 
-Point(903) = {d9,    -e9+r9, -ll/2,    s9};  Point(913) = {d9,     e9+r9,  ll/2,    s9}; 
-Point(904) = {d9-r9, -e9,    -ll/2,    s9};  Point(914) = {d9-r9,  e9,     ll/2,    s9}; 
-Point(905) = {d9,    -e9-r9, -ll/2,    s9};  Point(915) = {d9,     e9-r9,  ll/2,    s9}; 
-Point(906) = {d9,    -e9,    -ll/2-l9, s9l};  Point(916) = {d9,     e9,     ll/2+l9, s9l}; 
-Point(907) = {d9+r9, -e9,    -ll/2-l9, s9l};  Point(917) = {d9+r9,  e9,     ll/2+l9, s9l}; 
-Point(908) = {d9,    -e9+r9, -ll/2-l9, s9l};  Point(918) = {d9,     e9+r9,  ll/2+l9, s9l}; 
-Point(909) = {d9-r9, -e9,    -ll/2-l9, s9l};  Point(919) = {d9-r9,  e9,     ll/2+l9, s9l}; 
-Point(910) = {d9,    -e9-r9, -ll/2-l9, s9l};  Point(920) = {d9,     e9-r9,  ll/2+l9, s9l}; 
-
-Circle(901) = {902,901,903}; Circle(905) = {907,906,908}; Line(909) = {902,907};
-Circle(902) = {903,901,904}; Circle(906) = {908,906,909}; Line(910) = {903,908};
-Circle(903) = {904,901,905}; Circle(907) = {909,906,910}; Line(911) = {904,909};
-Circle(904) = {905,901,902}; Circle(908) = {910,906,907}; Line(912) = {905,910};
-
-Circle(913) = {912,911,913}; Circle(917) = {917,916,918}; Line(921) = {912,917};
-Circle(914) = {913,911,914}; Circle(918) = {918,916,919}; Line(922) = {913,918};
-Circle(915) = {914,911,915}; Circle(919) = {919,916,920}; Line(923) = {914,919};
-Circle(916) = {915,911,912}; Circle(920) = {920,916,917}; Line(924) = {915,920};
-
-Line Loop(901) = {902,903,904,901};   Plane Surface(921) = {901};
-Line Loop(902) = {907,908,905,906};   Plane Surface(922) = {902};
-Line Loop(903) = {916,913,914,915};   Plane Surface(923) = {903};
-Line Loop(904) = {920,917,918,919};   Plane Surface(924) = {904};
-Line Loop(905) = {908,-909,-904,912}; Ruled Surface(925) = {905};
-Line Loop(906) = {912,-907,-911,903}; Ruled Surface(926) = {906};
-Line Loop(907) = {-911,-902,910,906}; Ruled Surface(927) = {907};
-Line Loop(908) = {-910,-901,909,905}; Ruled Surface(928) = {908};
-Line Loop(909) = {921,-920,-924,916}; Ruled Surface(929) = {909};
-Line Loop(910) = {-924,-915,923,919}; Ruled Surface(930) = {910};
-Line Loop(911) = {923,-918,-922,914}; Ruled Surface(931) = {911};
-Line Loop(912) = {922,-917,-921,913}; Ruled Surface(932) = {912};
-
-/* barreau 10 et 10' */
-
-Point(1001) = {d10,    e10,    -ll/2,    s10};  Point(1011) = {d10,     -e10,     ll/2,    s10}; 
-Point(1002) = {d10+r10, e10,    -ll/2,    s10};  Point(1012) = {d10+r10,  -e10,     ll/2,    s10}; 
-Point(1003) = {d10,    e10+r10, -ll/2,    s10};  Point(1013) = {d10,     -e10+r10,  ll/2,    s10}; 
-Point(1004) = {d10-r10, e10,    -ll/2,    s10};  Point(1014) = {d10-r10,  -e10,     ll/2,    s10}; 
-Point(1005) = {d10,    e10-r10, -ll/2,    s10};  Point(1015) = {d10,     -e10-r10,  ll/2,    s10}; 
-Point(1006) = {d10,    e10,    -ll/2-l10, s10l};  Point(1016) = {d10,     -e10,     ll/2+l10, s10l}; 
-Point(1007) = {d10+r10, e10,    -ll/2-l10, s10l};  Point(1017) = {d10+r10,  -e10,     ll/2+l10, s10l}; 
-Point(1008) = {d10,    e10+r10, -ll/2-l10, s10l};  Point(1018) = {d10,     -e10+r10,  ll/2+l10, s10l}; 
-Point(1009) = {d10-r10, e10,    -ll/2-l10, s10l};  Point(1019) = {d10-r10,  -e10,     ll/2+l10, s10l}; 
-Point(1010) = {d10,    e10-r10, -ll/2-l10, s10l};  Point(1020) = {d10,     -e10-r10,  ll/2+l10, s10l}; 
-
-Circle(1001) = {1002,1001,1003}; Circle(1005) = {1007,1006,1008}; Line(1009) = {1002,1007};
-Circle(1002) = {1003,1001,1004}; Circle(1006) = {1008,1006,1009}; Line(1010) = {1003,1008};
-Circle(1003) = {1004,1001,1005}; Circle(1007) = {1009,1006,1010}; Line(1011) = {1004,1009};
-Circle(1004) = {1005,1001,1002}; Circle(1008) = {1010,1006,1007}; Line(1012) = {1005,1010};
-
-Circle(1013) = {1012,1011,1013}; Circle(1017) = {1017,1016,1018}; Line(1021) = {1012,1017};
-Circle(1014) = {1013,1011,1014}; Circle(1018) = {1018,1016,1019}; Line(1022) = {1013,1018};
-Circle(1015) = {1014,1011,1015}; Circle(1019) = {1019,1016,1020}; Line(1023) = {1014,1019};
-Circle(1016) = {1015,1011,1012}; Circle(1020) = {1020,1016,1017}; Line(1024) = {1015,1020};
-
-Line Loop(1001) = {1002,1003,1004,1001};   Plane Surface(1021) = {1001};
-Line Loop(1002) = {1007,1008,1005,1006};   Plane Surface(1022) = {1002};
-Line Loop(1003) = {1016,1013,1014,1015};   Plane Surface(1023) = {1003};
-Line Loop(1004) = {1020,1017,1018,1019};   Plane Surface(1024) = {1004};
-Line Loop(1005) = {1008,-1009,-1004,1012}; Ruled Surface(1025) = {1005};
-Line Loop(1006) = {1012,-1007,-1011,1003}; Ruled Surface(1026) = {1006};
-Line Loop(1007) = {-1011,-1002,1010,1006}; Ruled Surface(1027) = {1007};
-Line Loop(1008) = {-1010,-1001,1009,1005}; Ruled Surface(1028) = {1008};
-Line Loop(1009) = {1021,-1020,-1024,1016}; Ruled Surface(1029) = {1009};
-Line Loop(1010) = {-1024,-1015,1023,1019}; Ruled Surface(1030) = {1010};
-Line Loop(1011) = {1023,-1018,-1022,1014}; Ruled Surface(1031) = {1011};
-Line Loop(1012) = {1022,-1017,-1021,1013}; Ruled Surface(1032) = {1012};
-
-/* barreau 11 et 11' */
-
-Point(1101) = {d11,    -e11,    -ll/2,    s11};  Point(1111) = {d11,     e11,     ll/2,    s11}; 
-Point(1102) = {d11+r11, -e11,    -ll/2,    s11};  Point(1112) = {d11+r11,  e11,     ll/2,    s11}; 
-Point(1103) = {d11,    -e11+r11, -ll/2,    s11};  Point(1113) = {d11,     e11+r11,  ll/2,    s11}; 
-Point(1104) = {d11-r11, -e11,    -ll/2,    s11};  Point(1114) = {d11-r11,  e11,     ll/2,    s11}; 
-Point(1105) = {d11,    -e11-r11, -ll/2,    s11};  Point(1115) = {d11,     e11-r11,  ll/2,    s11}; 
-Point(1106) = {d11,    -e11,    -ll/2-l11, s11l};  Point(1116) = {d11,     e11,     ll/2+l11, s11l}; 
-Point(1107) = {d11+r11, -e11,    -ll/2-l11, s11l};  Point(1117) = {d11+r11,  e11,     ll/2+l11, s11l}; 
-Point(1108) = {d11,    -e11+r11, -ll/2-l11, s11l};  Point(1118) = {d11,     e11+r11,  ll/2+l11, s11l}; 
-Point(1109) = {d11-r11, -e11,    -ll/2-l11, s11l};  Point(1119) = {d11-r11,  e11,     ll/2+l11, s11l}; 
-Point(1110) = {d11,    -e11-r11, -ll/2-l11, s11l};  Point(1120) = {d11,     e11-r11,  ll/2+l11, s11l}; 
-
-Circle(1101) = {1102,1101,1103}; Circle(1105) = {1107,1106,1108}; Line(1109) = {1102,1107};
-Circle(1102) = {1103,1101,1104}; Circle(1106) = {1108,1106,1109}; Line(1110) = {1103,1108};
-Circle(1103) = {1104,1101,1105}; Circle(1107) = {1109,1106,1110}; Line(1111) = {1104,1109};
-Circle(1104) = {1105,1101,1102}; Circle(1108) = {1110,1106,1107}; Line(1112) = {1105,1110};
-
-Circle(1113) = {1112,1111,1113}; Circle(1117) = {1117,1116,1118}; Line(1121) = {1112,1117};
-Circle(1114) = {1113,1111,1114}; Circle(1118) = {1118,1116,1119}; Line(1122) = {1113,1118};
-Circle(1115) = {1114,1111,1115}; Circle(1119) = {1119,1116,1120}; Line(1123) = {1114,1119};
-Circle(1116) = {1115,1111,1112}; Circle(1120) = {1120,1116,1117}; Line(1124) = {1115,1120};
-
-Line Loop(1101) = {1102,1103,1104,1101};   Plane Surface(1121) = {1101};
-Line Loop(1102) = {1107,1108,1105,1106};   Plane Surface(1122) = {1102};
-Line Loop(1103) = {1116,1113,1114,1115};   Plane Surface(1123) = {1103};
-Line Loop(1104) = {1120,1117,1118,1119};   Plane Surface(1124) = {1104};
-Line Loop(1105) = {1108,-1109,-1104,1112}; Ruled Surface(1125) = {1105};
-Line Loop(1106) = {1112,-1107,-1111,1103}; Ruled Surface(1126) = {1106};
-Line Loop(1107) = {-1111,-1102,1110,1106}; Ruled Surface(1127) = {1107};
-Line Loop(1108) = {-1110,-1101,1109,1105}; Ruled Surface(1128) = {1108};
-Line Loop(1109) = {1121,-1120,-1124,1116}; Ruled Surface(1129) = {1109};
-Line Loop(1110) = {-1124,-1115,1123,1119}; Ruled Surface(1130) = {1110};
-Line Loop(1111) = {1123,-1118,-1122,1114}; Ruled Surface(1131) = {1111};
-Line Loop(1112) = {1122,-1117,-1121,1113}; Ruled Surface(1132) = {1112};
-
-/* barreau 12 et 12' */
-
-Point(1201) = {d12,    e12,    -ll/2,    s12};  Point(1211) = {d12,     -e12,     ll/2,    s12}; 
-Point(1202) = {d12+r12, e12,    -ll/2,    s12};  Point(1212) = {d12+r12,  -e12,     ll/2,    s12}; 
-Point(1203) = {d12,    e12+r12, -ll/2,    s12};  Point(1213) = {d12,     -e12+r12,  ll/2,    s12}; 
-Point(1204) = {d12-r12, e12,    -ll/2,    s12};  Point(1214) = {d12-r12,  -e12,     ll/2,    s12}; 
-Point(1205) = {d12,    e12-r12, -ll/2,    s12};  Point(1215) = {d12,     -e12-r12,  ll/2,    s12}; 
-Point(1206) = {d12,    e12,    -ll/2-l12, s12l};  Point(1216) = {d12,     -e12,     ll/2+l12, s12l}; 
-Point(1207) = {d12+r12, e12,    -ll/2-l12, s12l};  Point(1217) = {d12+r12,  -e12,     ll/2+l12, s12l}; 
-Point(1208) = {d12,    e12+r12, -ll/2-l12, s12l};  Point(1218) = {d12,     -e12+r12,  ll/2+l12, s12l}; 
-Point(1209) = {d12-r12, e12,    -ll/2-l12, s12l};  Point(1219) = {d12-r12,  -e12,     ll/2+l12, s12l}; 
-Point(1210) = {d12,    e12-r12, -ll/2-l12, s12l};  Point(1220) = {d12,     -e12-r12,  ll/2+l12, s12l}; 
-
-Circle(1201) = {1202,1201,1203}; Circle(1205) = {1207,1206,1208}; Line(1209) = {1202,1207};
-Circle(1202) = {1203,1201,1204}; Circle(1206) = {1208,1206,1209}; Line(1210) = {1203,1208};
-Circle(1203) = {1204,1201,1205}; Circle(1207) = {1209,1206,1210}; Line(1211) = {1204,1209};
-Circle(1204) = {1205,1201,1202}; Circle(1208) = {1210,1206,1207}; Line(1212) = {1205,1210};
-       	       	     		    	    	    	       	       	   
-Circle(1213) = {1212,1211,1213}; Circle(1217) = {1217,1216,1218}; Line(1221) = {1212,1217};
-Circle(1214) = {1213,1211,1214}; Circle(1218) = {1218,1216,1219}; Line(1222) = {1213,1218};
-Circle(1215) = {1214,1211,1215}; Circle(1219) = {1219,1216,1220}; Line(1223) = {1214,1219};
-Circle(1216) = {1215,1211,1212}; Circle(1220) = {1220,1216,1217}; Line(1224) = {1215,1220};
-
-Line Loop(1201) = {1202,1203,1204,1201};   Plane Surface(1221) = {1201};
-Line Loop(1202) = {1207,1208,1205,1206};   Plane Surface(1222) = {1202};
-Line Loop(1203) = {1216,1213,1214,1215};   Plane Surface(1223) = {1203};
-Line Loop(1204) = {1220,1217,1218,1219};   Plane Surface(1224) = {1204};
-Line Loop(1205) = {1208,-1209,-1204,1212}; Ruled Surface(1225) = {1205};
-Line Loop(1206) = {1212,-1207,-1211,1203}; Ruled Surface(1226) = {1206};
-Line Loop(1207) = {-1211,-1202,1210,1206}; Ruled Surface(1227) = {1207};
-Line Loop(1208) = {-1210,-1201,1209,1205}; Ruled Surface(1228) = {1208};
-Line Loop(1209) = {1221,-1220,-1224,1216}; Ruled Surface(1229) = {1209};
-Line Loop(1210) = {-1224,-1215,1223,1219}; Ruled Surface(1230) = {1210};
-Line Loop(1211) = {1223,-1218,-1222,1214}; Ruled Surface(1231) = {1211};
-Line Loop(1212) = {1222,-1217,-1221,1213}; Ruled Surface(1232) = {1212};
-
-/* barreau 13 et 13' */
-
-Point(1301) = {d13,    -e13,    -ll/2,    s13};  Point(1311) = {d13,     e13,     ll/2,    s13}; 
-Point(1302) = {d13+r13, -e13,    -ll/2,    s13};  Point(1312) = {d13+r13,  e13,     ll/2,    s13}; 
-Point(1303) = {d13,    -e13+r13, -ll/2,    s13};  Point(1313) = {d13,     e13+r13,  ll/2,    s13}; 
-Point(1304) = {d13-r13, -e13,    -ll/2,    s13};  Point(1314) = {d13-r13,  e13,     ll/2,    s13}; 
-Point(1305) = {d13,    -e13-r13, -ll/2,    s13};  Point(1315) = {d13,     e13-r13,  ll/2,    s13}; 
-Point(1306) = {d13,    -e13,    -ll/2-l13, s13l};  Point(1316) = {d13,     e13,     ll/2+l13, s13l}; 
-Point(1307) = {d13+r13, -e13,    -ll/2-l13, s13l};  Point(1317) = {d13+r13,  e13,     ll/2+l13, s13l}; 
-Point(1308) = {d13,    -e13+r13, -ll/2-l13, s13l};  Point(1318) = {d13,     e13+r13,  ll/2+l13, s13l}; 
-Point(1309) = {d13-r13, -e13,    -ll/2-l13, s13l};  Point(1319) = {d13-r13,  e13,     ll/2+l13, s13l}; 
-Point(1310) = {d13,    -e13-r13, -ll/2-l13, s13l};  Point(1320) = {d13,     e13-r13,  ll/2+l13, s13l}; 
-
-Circle(1301) = {1302,1301,1303}; Circle(1305) = {1307,1306,1308}; Line(1309) = {1302,1307};
-Circle(1302) = {1303,1301,1304}; Circle(1306) = {1308,1306,1309}; Line(1310) = {1303,1308};
-Circle(1303) = {1304,1301,1305}; Circle(1307) = {1309,1306,1310}; Line(1311) = {1304,1309};
-Circle(1304) = {1305,1301,1302}; Circle(1308) = {1310,1306,1307}; Line(1312) = {1305,1310};
-       	       	     		    	    	    	       	       	   
-Circle(1313) = {1312,1311,1313}; Circle(1317) = {1317,1316,1318}; Line(1321) = {1312,1317};
-Circle(1314) = {1313,1311,1314}; Circle(1318) = {1318,1316,1319}; Line(1322) = {1313,1318};
-Circle(1315) = {1314,1311,1315}; Circle(1319) = {1319,1316,1320}; Line(1323) = {1314,1319};
-Circle(1316) = {1315,1311,1312}; Circle(1320) = {1320,1316,1317}; Line(1324) = {1315,1320};
-
-Line Loop(1301) = {1302,1303,1304,1301};   Plane Surface(1321) = {1301};
-Line Loop(1302) = {1307,1308,1305,1306};   Plane Surface(1322) = {1302};
-Line Loop(1303) = {1316,1313,1314,1315};   Plane Surface(1323) = {1303};
-Line Loop(1304) = {1320,1317,1318,1319};   Plane Surface(1324) = {1304};
-Line Loop(1305) = {1308,-1309,-1304,1312}; Ruled Surface(1325) = {1305};
-Line Loop(1306) = {1312,-1307,-1311,1303}; Ruled Surface(1326) = {1306};
-Line Loop(1307) = {-1311,-1302,1310,1306}; Ruled Surface(1327) = {1307};
-Line Loop(1308) = {-1310,-1301,1309,1305}; Ruled Surface(1328) = {1308};
-Line Loop(1309) = {1321,-1320,-1324,1316}; Ruled Surface(1329) = {1309};
-Line Loop(1310) = {-1324,-1315,1323,1319}; Ruled Surface(1330) = {1310};
-Line Loop(1311) = {1323,-1318,-1322,1314}; Ruled Surface(1331) = {1311};
-Line Loop(1312) = {1322,-1317,-1321,1313}; Ruled Surface(1332) = {1312};
-
-/* barreau 14 et 14' */
-
-Point(1401) = {d14,    e14,    -ll/2,    s14};  Point(1411) = {d14,     -e14,     ll/2,    s14}; 
-Point(1402) = {d14+r14, e14,    -ll/2,    s14};  Point(1412) = {d14+r14,  -e14,     ll/2,    s14}; 
-Point(1403) = {d14,    e14+r14, -ll/2,    s14};  Point(1413) = {d14,     -e14+r14,  ll/2,    s14}; 
-Point(1404) = {d14-r14, e14,    -ll/2,    s14};  Point(1414) = {d14-r14,  -e14,     ll/2,    s14}; 
-Point(1405) = {d14,    e14-r14, -ll/2,    s14};  Point(1415) = {d14,     -e14-r14,  ll/2,    s14}; 
-Point(1406) = {d14,    e14,    -ll/2-l14, s14l};  Point(1416) = {d14,     -e14,     ll/2+l14, s14l}; 
-Point(1407) = {d14+r14, e14,    -ll/2-l14, s14l};  Point(1417) = {d14+r14,  -e14,     ll/2+l14, s14l}; 
-Point(1408) = {d14,    e14+r14, -ll/2-l14, s14l};  Point(1418) = {d14,     -e14+r14,  ll/2+l14, s14l}; 
-Point(1409) = {d14-r14, e14,    -ll/2-l14, s14l};  Point(1419) = {d14-r14,  -e14,     ll/2+l14, s14l}; 
-Point(1410) = {d14,    e14-r14, -ll/2-l14, s14l};  Point(1420) = {d14,     -e14-r14,  ll/2+l14, s14l}; 
-
-Circle(1401) = {1402,1401,1403}; Circle(1405) = {1407,1406,1408}; Line(1409) = {1402,1407};
-Circle(1402) = {1403,1401,1404}; Circle(1406) = {1408,1406,1409}; Line(1410) = {1403,1408};
-Circle(1403) = {1404,1401,1405}; Circle(1407) = {1409,1406,1410}; Line(1411) = {1404,1409};
-Circle(1404) = {1405,1401,1402}; Circle(1408) = {1410,1406,1407}; Line(1412) = {1405,1410};
-       	       	     		    	    	    	       	       	   
-Circle(1413) = {1412,1411,1413}; Circle(1417) = {1417,1416,1418}; Line(1421) = {1412,1417};
-Circle(1414) = {1413,1411,1414}; Circle(1418) = {1418,1416,1419}; Line(1422) = {1413,1418};
-Circle(1415) = {1414,1411,1415}; Circle(1419) = {1419,1416,1420}; Line(1423) = {1414,1419};
-Circle(1416) = {1415,1411,1412}; Circle(1420) = {1420,1416,1417}; Line(1424) = {1415,1420};
-
-Line Loop(1401) = {1402,1403,1404,1401};   Plane Surface(1421) = {1401};
-Line Loop(1402) = {1407,1408,1405,1406};   Plane Surface(1422) = {1402};
-Line Loop(1403) = {1416,1413,1414,1415};   Plane Surface(1423) = {1403};
-Line Loop(1404) = {1420,1417,1418,1419};   Plane Surface(1424) = {1404};
-Line Loop(1405) = {1408,-1409,-1404,1412}; Ruled Surface(1425) = {1405};
-Line Loop(1406) = {1412,-1407,-1411,1403}; Ruled Surface(1426) = {1406};
-Line Loop(1407) = {-1411,-1402,1410,1406}; Ruled Surface(1427) = {1407};
-Line Loop(1408) = {-1410,-1401,1409,1405}; Ruled Surface(1428) = {1408};
-Line Loop(1409) = {1421,-1420,-1424,1416}; Ruled Surface(1429) = {1409};
-Line Loop(1410) = {-1424,-1415,1423,1419}; Ruled Surface(1430) = {1410};
-Line Loop(1411) = {1423,-1418,-1422,1414}; Ruled Surface(1431) = {1411};
-Line Loop(1412) = {1422,-1417,-1421,1413}; Ruled Surface(1432) = {1412};
-
-/* barreau 15 et 15' */
-
-Point(1501) = {d15,    -e15,    -ll/2,    s15};  Point(1511) = {d15,     e15,     ll/2,    s15}; 
-Point(1502) = {d15+r15, -e15,    -ll/2,    s15};  Point(1512) = {d15+r15,  e15,     ll/2,    s15}; 
-Point(1503) = {d15,    -e15+r15, -ll/2,    s15};  Point(1513) = {d15,     e15+r15,  ll/2,    s15}; 
-Point(1504) = {d15-r15, -e15,    -ll/2,    s15};  Point(1514) = {d15-r15,  e15,     ll/2,    s15}; 
-Point(1505) = {d15,    -e15-r15, -ll/2,    s15};  Point(1515) = {d15,     e15-r15,  ll/2,    s15}; 
-Point(1506) = {d15,    -e15,    -ll/2-l15, s15l};  Point(1516) = {d15,     e15,     ll/2+l15, s15l}; 
-Point(1507) = {d15+r15, -e15,    -ll/2-l15, s15l};  Point(1517) = {d15+r15,  e15,     ll/2+l15, s15l}; 
-Point(1508) = {d15,    -e15+r15, -ll/2-l15, s15l};  Point(1518) = {d15,     e15+r15,  ll/2+l15, s15l}; 
-Point(1509) = {d15-r15, -e15,    -ll/2-l15, s15l};  Point(1519) = {d15-r15,  e15,     ll/2+l15, s15l}; 
-Point(1510) = {d15,    -e15-r15, -ll/2-l15, s15l};  Point(1520) = {d15,     e15-r15,  ll/2+l15, s15l}; 
-
-Circle(1501) = {1502,1501,1503}; Circle(1505) = {1507,1506,1508}; Line(1509) = {1502,1507};
-Circle(1502) = {1503,1501,1504}; Circle(1506) = {1508,1506,1509}; Line(1510) = {1503,1508};
-Circle(1503) = {1504,1501,1505}; Circle(1507) = {1509,1506,1510}; Line(1511) = {1504,1509};
-Circle(1504) = {1505,1501,1502}; Circle(1508) = {1510,1506,1507}; Line(1512) = {1505,1510};
-       	       	     		    	    	    	       	       	   
-Circle(1513) = {1512,1511,1513}; Circle(1517) = {1517,1516,1518}; Line(1521) = {1512,1517};
-Circle(1514) = {1513,1511,1514}; Circle(1518) = {1518,1516,1519}; Line(1522) = {1513,1518};
-Circle(1515) = {1514,1511,1515}; Circle(1519) = {1519,1516,1520}; Line(1523) = {1514,1519};
-Circle(1516) = {1515,1511,1512}; Circle(1520) = {1520,1516,1517}; Line(1524) = {1515,1520};
-
-Line Loop(1501) = {1502,1503,1504,1501};   Plane Surface(1521) = {1501};
-Line Loop(1502) = {1507,1508,1505,1506};   Plane Surface(1522) = {1502};
-Line Loop(1503) = {1516,1513,1514,1515};   Plane Surface(1523) = {1503};
-Line Loop(1504) = {1520,1517,1518,1519};   Plane Surface(1524) = {1504};
-Line Loop(1505) = {1508,-1509,-1504,1512}; Ruled Surface(1525) = {1505};
-Line Loop(1506) = {1512,-1507,-1511,1503}; Ruled Surface(1526) = {1506};
-Line Loop(1507) = {-1511,-1502,1510,1506}; Ruled Surface(1527) = {1507};
-Line Loop(1508) = {-1510,-1501,1509,1505}; Ruled Surface(1528) = {1508};
-Line Loop(1509) = {1521,-1520,-1524,1516}; Ruled Surface(1529) = {1509};
-Line Loop(1510) = {-1524,-1515,1523,1519}; Ruled Surface(1530) = {1510};
-Line Loop(1511) = {1523,-1518,-1522,1514}; Ruled Surface(1531) = {1511};
-Line Loop(1512) = {1522,-1517,-1521,1513}; Ruled Surface(1532) = {1512};
-
-/* barreau 16 et 16' */
-
-Point(1601) = {d16,    e16,    -ll/2,    s16};  Point(1611) = {d16,     -e16,     ll/2,    s16}; 
-Point(1602) = {d16+r16, e16,    -ll/2,    s16};  Point(1612) = {d16+r16,  -e16,     ll/2,    s16}; 
-Point(1603) = {d16,    e16+r16, -ll/2,    s16};  Point(1613) = {d16,     -e16+r16,  ll/2,    s16}; 
-Point(1604) = {d16-r16, e16,    -ll/2,    s16};  Point(1614) = {d16-r16,  -e16,     ll/2,    s16}; 
-Point(1605) = {d16,    e16-r16, -ll/2,    s16};  Point(1615) = {d16,     -e16-r16,  ll/2,    s16}; 
-Point(1606) = {d16,    e16,    -ll/2-l16, s16l};  Point(1616) = {d16,     -e16,     ll/2+l16, s16l}; 
-Point(1607) = {d16+r16, e16,    -ll/2-l16, s16l};  Point(1617) = {d16+r16,  -e16,     ll/2+l16, s16l}; 
-Point(1608) = {d16,    e16+r16, -ll/2-l16, s16l};  Point(1618) = {d16,     -e16+r16,  ll/2+l16, s16l}; 
-Point(1609) = {d16-r16, e16,    -ll/2-l16, s16l};  Point(1619) = {d16-r16,  -e16,     ll/2+l16, s16l}; 
-Point(1610) = {d16,    e16-r16, -ll/2-l16, s16l};  Point(1620) = {d16,     -e16-r16,  ll/2+l16, s16l}; 
-
-Circle(1601) = {1602,1601,1603}; Circle(1605) = {1607,1606,1608}; Line(1609) = {1602,1607};
-Circle(1602) = {1603,1601,1604}; Circle(1606) = {1608,1606,1609}; Line(1610) = {1603,1608};
-Circle(1603) = {1604,1601,1605}; Circle(1607) = {1609,1606,1610}; Line(1611) = {1604,1609};
-Circle(1604) = {1605,1601,1602}; Circle(1608) = {1610,1606,1607}; Line(1612) = {1605,1610};
-       	       	     		    	    	    	       	       	   
-Circle(1613) = {1612,1611,1613}; Circle(1617) = {1617,1616,1618}; Line(1621) = {1612,1617};
-Circle(1614) = {1613,1611,1614}; Circle(1618) = {1618,1616,1619}; Line(1622) = {1613,1618};
-Circle(1615) = {1614,1611,1615}; Circle(1619) = {1619,1616,1620}; Line(1623) = {1614,1619};
-Circle(1616) = {1615,1611,1612}; Circle(1620) = {1620,1616,1617}; Line(1624) = {1615,1620};
-
-Line Loop(1601) = {1602,1603,1604,1601};   Plane Surface(1621) = {1601};
-Line Loop(1602) = {1607,1608,1605,1606};   Plane Surface(1622) = {1602};
-Line Loop(1603) = {1616,1613,1614,1615};   Plane Surface(1623) = {1603};
-Line Loop(1604) = {1620,1617,1618,1619};   Plane Surface(1624) = {1604};
-Line Loop(1605) = {1608,-1609,-1604,1612}; Ruled Surface(1625) = {1605};
-Line Loop(1606) = {1612,-1607,-1611,1603}; Ruled Surface(1626) = {1606};
-Line Loop(1607) = {-1611,-1602,1610,1606}; Ruled Surface(1627) = {1607};
-Line Loop(1608) = {-1610,-1601,1609,1605}; Ruled Surface(1628) = {1608};
-Line Loop(1609) = {1621,-1620,-1624,1616}; Ruled Surface(1629) = {1609};
-Line Loop(1610) = {-1624,-1615,1623,1619}; Ruled Surface(1630) = {1610};
-Line Loop(1611) = {1623,-1618,-1622,1614}; Ruled Surface(1631) = {1611};
-Line Loop(1612) = {1622,-1617,-1621,1613}; Ruled Surface(1632) = {1612};
-
-/* barreau 17 et 17' */
-
-Point(1701) = {d17,    -e17,    -ll/2,    s17};  Point(1711) = {d17,     e17,     ll/2,    s17}; 
-Point(1702) = {d17+r17, -e17,    -ll/2,    s17};  Point(1712) = {d17+r17,  e17,     ll/2,    s17}; 
-Point(1703) = {d17,    -e17+r17, -ll/2,    s17};  Point(1713) = {d17,     e17+r17,  ll/2,    s17}; 
-Point(1704) = {d17-r17, -e17,    -ll/2,    s17};  Point(1714) = {d17-r17,  e17,     ll/2,    s17}; 
-Point(1705) = {d17,    -e17-r17, -ll/2,    s17};  Point(1715) = {d17,     e17-r17,  ll/2,    s17}; 
-Point(1706) = {d17,    -e17,    -ll/2-l17, s17l};  Point(1716) = {d17,     e17,     ll/2+l17, s17l}; 
-Point(1707) = {d17+r17, -e17,    -ll/2-l17, s17l};  Point(1717) = {d17+r17,  e17,     ll/2+l17, s17l}; 
-Point(1708) = {d17,    -e17+r17, -ll/2-l17, s17l};  Point(1718) = {d17,     e17+r17,  ll/2+l17, s17l}; 
-Point(1709) = {d17-r17, -e17,    -ll/2-l17, s17l};  Point(1719) = {d17-r17,  e17,     ll/2+l17, s17l}; 
-Point(1710) = {d17,    -e17-r17, -ll/2-l17, s17l};  Point(1720) = {d17,     e17-r17,  ll/2+l17, s17l}; 
-
-Circle(1701) = {1702,1701,1703}; Circle(1705) = {1707,1706,1708}; Line(1709) = {1702,1707};
-Circle(1702) = {1703,1701,1704}; Circle(1706) = {1708,1706,1709}; Line(1710) = {1703,1708};
-Circle(1703) = {1704,1701,1705}; Circle(1707) = {1709,1706,1710}; Line(1711) = {1704,1709};
-Circle(1704) = {1705,1701,1702}; Circle(1708) = {1710,1706,1707}; Line(1712) = {1705,1710};
-       	       	     		    	    	    	       	       	   
-Circle(1713) = {1712,1711,1713}; Circle(1717) = {1717,1716,1718}; Line(1721) = {1712,1717};
-Circle(1714) = {1713,1711,1714}; Circle(1718) = {1718,1716,1719}; Line(1722) = {1713,1718};
-Circle(1715) = {1714,1711,1715}; Circle(1719) = {1719,1716,1720}; Line(1723) = {1714,1719};
-Circle(1716) = {1715,1711,1712}; Circle(1720) = {1720,1716,1717}; Line(1724) = {1715,1720};
-
-Line Loop(1701) = {1702,1703,1704,1701};   Plane Surface(1721) = {1701};
-Line Loop(1702) = {1707,1708,1705,1706};   Plane Surface(1722) = {1702};
-Line Loop(1703) = {1716,1713,1714,1715};   Plane Surface(1723) = {1703};
-Line Loop(1704) = {1720,1717,1718,1719};   Plane Surface(1724) = {1704};
-Line Loop(1705) = {1708,-1709,-1704,1712}; Ruled Surface(1725) = {1705};
-Line Loop(1706) = {1712,-1707,-1711,1703}; Ruled Surface(1726) = {1706};
-Line Loop(1707) = {-1711,-1702,1710,1706}; Ruled Surface(1727) = {1707};
-Line Loop(1708) = {-1710,-1701,1709,1705}; Ruled Surface(1728) = {1708};
-Line Loop(1709) = {1721,-1720,-1724,1716}; Ruled Surface(1729) = {1709};
-Line Loop(1710) = {-1724,-1715,1723,1719}; Ruled Surface(1730) = {1710};
-Line Loop(1711) = {1723,-1718,-1722,1714}; Ruled Surface(1731) = {1711};
-Line Loop(1712) = {1722,-1717,-1721,1713}; Ruled Surface(1732) = {1712};
-
-/* barreau 18 et 18' */
-
-Point(1801) = {d18,    e18,    -ll/2,    s18};  Point(1811) = {d18,     -e18,     ll/2,    s18}; 
-Point(1802) = {d18+r18, e18,    -ll/2,    s18};  Point(1812) = {d18+r18,  -e18,     ll/2,    s18}; 
-Point(1803) = {d18,    e18+r18, -ll/2,    s18};  Point(1813) = {d18,     -e18+r18,  ll/2,    s18}; 
-Point(1804) = {d18-r18, e18,    -ll/2,    s18};  Point(1814) = {d18-r18,  -e18,     ll/2,    s18}; 
-Point(1805) = {d18,    e18-r18, -ll/2,    s18};  Point(1815) = {d18,     -e18-r18,  ll/2,    s18}; 
-Point(1806) = {d18,    e18,    -ll/2-l18, s18l};  Point(1816) = {d18,     -e18,     ll/2+l18, s18l}; 
-Point(1807) = {d18+r18, e18,    -ll/2-l18, s18l};  Point(1817) = {d18+r18,  -e18,     ll/2+l18, s18l}; 
-Point(1808) = {d18,    e18+r18, -ll/2-l18, s18l};  Point(1818) = {d18,     -e18+r18,  ll/2+l18, s18l}; 
-Point(1809) = {d18-r18, e18,    -ll/2-l18, s18l};  Point(1819) = {d18-r18,  -e18,     ll/2+l18, s18l}; 
-Point(1810) = {d18,    e18-r18, -ll/2-l18, s18l};  Point(1820) = {d18,     -e18-r18,  ll/2+l18, s18l}; 
-
-Circle(1801) = {1802,1801,1803}; Circle(1805) = {1807,1806,1808}; Line(1809) = {1802,1807};
-Circle(1802) = {1803,1801,1804}; Circle(1806) = {1808,1806,1809}; Line(1810) = {1803,1808};
-Circle(1803) = {1804,1801,1805}; Circle(1807) = {1809,1806,1810}; Line(1811) = {1804,1809};
-Circle(1804) = {1805,1801,1802}; Circle(1808) = {1810,1806,1807}; Line(1812) = {1805,1810};
-       	       	     		    	    	    	       	       	   
-Circle(1813) = {1812,1811,1813}; Circle(1817) = {1817,1816,1818}; Line(1821) = {1812,1817};
-Circle(1814) = {1813,1811,1814}; Circle(1818) = {1818,1816,1819}; Line(1822) = {1813,1818};
-Circle(1815) = {1814,1811,1815}; Circle(1819) = {1819,1816,1820}; Line(1823) = {1814,1819};
-Circle(1816) = {1815,1811,1812}; Circle(1820) = {1820,1816,1817}; Line(1824) = {1815,1820};
-
-Line Loop(1801) = {1802,1803,1804,1801};   Plane Surface(1821) = {1801};
-Line Loop(1802) = {1807,1808,1805,1806};   Plane Surface(1822) = {1802};
-Line Loop(1803) = {1816,1813,1814,1815};   Plane Surface(1823) = {1803};
-Line Loop(1804) = {1820,1817,1818,1819};   Plane Surface(1824) = {1804};
-Line Loop(1805) = {1808,-1809,-1804,1812}; Ruled Surface(1825) = {1805};
-Line Loop(1806) = {1812,-1807,-1811,1803}; Ruled Surface(1826) = {1806};
-Line Loop(1807) = {-1811,-1802,1810,1806}; Ruled Surface(1827) = {1807};
-Line Loop(1808) = {-1810,-1801,1809,1805}; Ruled Surface(1828) = {1808};
-Line Loop(1809) = {1821,-1820,-1824,1816}; Ruled Surface(1829) = {1809};
-Line Loop(1810) = {-1824,-1815,1823,1819}; Ruled Surface(1830) = {1810};
-Line Loop(1811) = {1823,-1818,-1822,1814}; Ruled Surface(1831) = {1811};
-Line Loop(1812) = {1822,-1817,-1821,1813}; Ruled Surface(1832) = {1812};
-
-/* barreau 19 et 19' */
-
-Point(1901) = {d19,    -e19,    -ll/2,    s19};  Point(1911) = {d19,     e19,     ll/2,    s19}; 
-Point(1902) = {d19+r19, -e19,    -ll/2,    s19};  Point(1912) = {d19+r19,  e19,     ll/2,    s19}; 
-Point(1903) = {d19,    -e19+r19, -ll/2,    s19};  Point(1913) = {d19,     e19+r19,  ll/2,    s19}; 
-Point(1904) = {d19-r19, -e19,    -ll/2,    s19};  Point(1914) = {d19-r19,  e19,     ll/2,    s19}; 
-Point(1905) = {d19,    -e19-r19, -ll/2,    s19};  Point(1915) = {d19,     e19-r19,  ll/2,    s19}; 
-Point(1906) = {d19,    -e19,    -ll/2-l19, s19l};  Point(1916) = {d19,     e19,     ll/2+l19, s19l}; 
-Point(1907) = {d19+r19, -e19,    -ll/2-l19, s19l};  Point(1917) = {d19+r19,  e19,     ll/2+l19, s19l}; 
-Point(1908) = {d19,    -e19+r19, -ll/2-l19, s19l};  Point(1918) = {d19,     e19+r19,  ll/2+l19, s19l}; 
-Point(1909) = {d19-r19, -e19,    -ll/2-l19, s19l};  Point(1919) = {d19-r19,  e19,     ll/2+l19, s19l}; 
-Point(1910) = {d19,    -e19-r19, -ll/2-l19, s19l};  Point(1920) = {d19,     e19-r19,  ll/2+l19, s19l}; 
-
-Circle(1901) = {1902,1901,1903}; Circle(1905) = {1907,1906,1908}; Line(1909) = {1902,1907};
-Circle(1902) = {1903,1901,1904}; Circle(1906) = {1908,1906,1909}; Line(1910) = {1903,1908};
-Circle(1903) = {1904,1901,1905}; Circle(1907) = {1909,1906,1910}; Line(1911) = {1904,1909};
-Circle(1904) = {1905,1901,1902}; Circle(1908) = {1910,1906,1907}; Line(1912) = {1905,1910};
-       	       	     		    	    	    	       	       	   
-Circle(1913) = {1912,1911,1913}; Circle(1917) = {1917,1916,1918}; Line(1921) = {1912,1917};
-Circle(1914) = {1913,1911,1914}; Circle(1918) = {1918,1916,1919}; Line(1922) = {1913,1918};
-Circle(1915) = {1914,1911,1915}; Circle(1919) = {1919,1916,1920}; Line(1923) = {1914,1919};
-Circle(1916) = {1915,1911,1912}; Circle(1920) = {1920,1916,1917}; Line(1924) = {1915,1920};
-
-Line Loop(1901) = {1902,1903,1904,1901};   Plane Surface(1921) = {1901};
-Line Loop(1902) = {1907,1908,1905,1906};   Plane Surface(1922) = {1902};
-Line Loop(1903) = {1916,1913,1914,1915};   Plane Surface(1923) = {1903};
-Line Loop(1904) = {1920,1917,1918,1919};   Plane Surface(1924) = {1904};
-Line Loop(1905) = {1908,-1909,-1904,1912}; Ruled Surface(1925) = {1905};
-Line Loop(1906) = {1912,-1907,-1911,1903}; Ruled Surface(1926) = {1906};
-Line Loop(1907) = {-1911,-1902,1910,1906}; Ruled Surface(1927) = {1907};
-Line Loop(1908) = {-1910,-1901,1909,1905}; Ruled Surface(1928) = {1908};
-Line Loop(1909) = {1921,-1920,-1924,1916}; Ruled Surface(1929) = {1909};
-Line Loop(1910) = {-1924,-1915,1923,1919}; Ruled Surface(1930) = {1910};
-Line Loop(1911) = {1923,-1918,-1922,1914}; Ruled Surface(1931) = {1911};
-Line Loop(1912) = {1922,-1917,-1921,1913}; Ruled Surface(1932) = {1912};
-
-/* barreau 20 et 20' */
-
-Point(2001) = {d20,    e20,    -ll/2,    s20};  Point(2011) = {d20,     -e20,     ll/2,    s20}; 
-Point(2002) = {d20+r20, e20,    -ll/2,    s20};  Point(2012) = {d20+r20,  -e20,     ll/2,    s20}; 
-Point(2003) = {d20,    e20+r20, -ll/2,    s20};  Point(2013) = {d20,     -e20+r20,  ll/2,    s20}; 
-Point(2004) = {d20-r20, e20,    -ll/2,    s20};  Point(2014) = {d20-r20,  -e20,     ll/2,    s20}; 
-Point(2005) = {d20,    e20-r20, -ll/2,    s20};  Point(2015) = {d20,     -e20-r20,  ll/2,    s20}; 
-Point(2006) = {d20,    e20,    -ll/2-l20, s20l};  Point(2016) = {d20,     -e20,     ll/2+l20, s20l}; 
-Point(2007) = {d20+r20, e20,    -ll/2-l20, s20l};  Point(2017) = {d20+r20,  -e20,     ll/2+l20, s20l}; 
-Point(2008) = {d20,    e20+r20, -ll/2-l20, s20l};  Point(2018) = {d20,     -e20+r20,  ll/2+l20, s20l}; 
-Point(2009) = {d20-r20, e20,    -ll/2-l20, s20l};  Point(2019) = {d20-r20,  -e20,     ll/2+l20, s20l}; 
-Point(2010) = {d20,    e20-r20, -ll/2-l20, s20l};  Point(2020) = {d20,     -e20-r20,  ll/2+l20, s20l}; 
-
-Circle(2001) = {2002,2001,2003}; Circle(2005) = {2007,2006,2008}; Line(2009) = {2002,2007};
-Circle(2002) = {2003,2001,2004}; Circle(2006) = {2008,2006,2009}; Line(2010) = {2003,2008};
-Circle(2003) = {2004,2001,2005}; Circle(2007) = {2009,2006,2010}; Line(2011) = {2004,2009};
-Circle(2004) = {2005,2001,2002}; Circle(2008) = {2010,2006,2007}; Line(2012) = {2005,2010};
-       	       	     		    	    	    	       	       	   
-Circle(2013) = {2012,2011,2013}; Circle(2017) = {2017,2016,2018}; Line(2021) = {2012,2017};
-Circle(2014) = {2013,2011,2014}; Circle(2018) = {2018,2016,2019}; Line(2022) = {2013,2018};
-Circle(2015) = {2014,2011,2015}; Circle(2019) = {2019,2016,2020}; Line(2023) = {2014,2019};
-Circle(2016) = {2015,2011,2012}; Circle(2020) = {2020,2016,2017}; Line(2024) = {2015,2020};
-
-Line Loop(2001) = {2002,2003,2004,2001};   Plane Surface(2021) = {2001};
-Line Loop(2002) = {2007,2008,2005,2006};   Plane Surface(2022) = {2002};
-Line Loop(2003) = {2016,2013,2014,2015};   Plane Surface(2023) = {2003};
-Line Loop(2004) = {2020,2017,2018,2019};   Plane Surface(2024) = {2004};
-Line Loop(2005) = {2008,-2009,-2004,2012}; Ruled Surface(2025) = {2005};
-Line Loop(2006) = {2012,-2007,-2011,2003}; Ruled Surface(2026) = {2006};
-Line Loop(2007) = {-2011,-2002,2010,2006}; Ruled Surface(2027) = {2007};
-Line Loop(2008) = {-2010,-2001,2009,2005}; Ruled Surface(2028) = {2008};
-Line Loop(2009) = {2021,-2020,-2024,2016}; Ruled Surface(2029) = {2009};
-Line Loop(2010) = {-2024,-2015,2023,2019}; Ruled Surface(2030) = {2010};
-Line Loop(2011) = {2023,-2018,-2022,2014}; Ruled Surface(2031) = {2011};
-Line Loop(2012) = {2022,-2017,-2021,2013}; Ruled Surface(2032) = {2012};
-
-/* barreau 21 et 21' */
-
-Point(2101) = {d21,    -e21,    -ll/2,    s21};  Point(2111) = {d21,     e21,     ll/2,    s21}; 
-Point(2102) = {d21+r21, -e21,    -ll/2,    s21};  Point(2112) = {d21+r21,  e21,     ll/2,    s21}; 
-Point(2103) = {d21,    -e21+r21, -ll/2,    s21};  Point(2113) = {d21,     e21+r21,  ll/2,    s21}; 
-Point(2104) = {d21-r21, -e21,    -ll/2,    s21};  Point(2114) = {d21-r21,  e21,     ll/2,    s21}; 
-Point(2105) = {d21,    -e21-r21, -ll/2,    s21};  Point(2115) = {d21,     e21-r21,  ll/2,    s21}; 
-Point(2106) = {d21,    -e21,    -ll/2-l21, s21l};  Point(2116) = {d21,     e21,     ll/2+l21, s21l}; 
-Point(2107) = {d21+r21, -e21,    -ll/2-l21, s21l};  Point(2117) = {d21+r21,  e21,     ll/2+l21, s21l}; 
-Point(2108) = {d21,    -e21+r21, -ll/2-l21, s21l};  Point(2118) = {d21,     e21+r21,  ll/2+l21, s21l}; 
-Point(2109) = {d21-r21, -e21,    -ll/2-l21, s21l};  Point(2119) = {d21-r21,  e21,     ll/2+l21, s21l}; 
-Point(2110) = {d21,    -e21-r21, -ll/2-l21, s21l};  Point(2120) = {d21,     e21-r21,  ll/2+l21, s21l}; 
-
-Circle(2101) = {2102,2101,2103}; Circle(2105) = {2107,2106,2108}; Line(2109) = {2102,2107};
-Circle(2102) = {2103,2101,2104}; Circle(2106) = {2108,2106,2109}; Line(2110) = {2103,2108};
-Circle(2103) = {2104,2101,2105}; Circle(2107) = {2109,2106,2110}; Line(2111) = {2104,2109};
-Circle(2104) = {2105,2101,2102}; Circle(2108) = {2110,2106,2107}; Line(2112) = {2105,2110};
-       	       	     		    	    	    	       	       	   
-Circle(2113) = {2112,2111,2113}; Circle(2117) = {2117,2116,2118}; Line(2121) = {2112,2117};
-Circle(2114) = {2113,2111,2114}; Circle(2118) = {2118,2116,2119}; Line(2122) = {2113,2118};
-Circle(2115) = {2114,2111,2115}; Circle(2119) = {2119,2116,2120}; Line(2123) = {2114,2119};
-Circle(2116) = {2115,2111,2112}; Circle(2120) = {2120,2116,2117}; Line(2124) = {2115,2120};
-
-Line Loop(2101) = {2102,2103,2104,2101};   Plane Surface(2121) = {2101};
-Line Loop(2102) = {2107,2108,2105,2106};   Plane Surface(2122) = {2102};
-Line Loop(2103) = {2116,2113,2114,2115};   Plane Surface(2123) = {2103};
-Line Loop(2104) = {2120,2117,2118,2119};   Plane Surface(2124) = {2104};
-Line Loop(2105) = {2108,-2109,-2104,2112}; Ruled Surface(2125) = {2105};
-Line Loop(2106) = {2112,-2107,-2111,2103}; Ruled Surface(2126) = {2106};
-Line Loop(2107) = {-2111,-2102,2110,2106}; Ruled Surface(2127) = {2107};
-Line Loop(2108) = {-2110,-2101,2109,2105}; Ruled Surface(2128) = {2108};
-Line Loop(2109) = {2121,-2120,-2124,2116}; Ruled Surface(2129) = {2109};
-Line Loop(2110) = {-2124,-2115,2123,2119}; Ruled Surface(2130) = {2110};
-Line Loop(2111) = {2123,-2118,-2122,2114}; Ruled Surface(2131) = {2111};
-Line Loop(2112) = {2122,-2117,-2121,2113}; Ruled Surface(2132) = {2112};
-
-/* barreau 22 et 22' */
-
-Point(2201) = {d22,    e22,    -ll/2,    s22};  Point(2211) = {d22,     -e22,     ll/2,    s22}; 
-Point(2202) = {d22+r22, e22,    -ll/2,    s22};  Point(2212) = {d22+r22,  -e22,     ll/2,    s22}; 
-Point(2203) = {d22,    e22+r22, -ll/2,    s22};  Point(2213) = {d22,     -e22+r22,  ll/2,    s22}; 
-Point(2204) = {d22-r22, e22,    -ll/2,    s22};  Point(2214) = {d22-r22,  -e22,     ll/2,    s22}; 
-Point(2205) = {d22,    e22-r22, -ll/2,    s22};  Point(2215) = {d22,     -e22-r22,  ll/2,    s22}; 
-Point(2206) = {d22,    e22,    -ll/2-l22, s22l};  Point(2216) = {d22,     -e22,     ll/2+l22, s22l}; 
-Point(2207) = {d22+r22, e22,    -ll/2-l22, s22l};  Point(2217) = {d22+r22,  -e22,     ll/2+l22, s22l}; 
-Point(2208) = {d22,    e22+r22, -ll/2-l22, s22l};  Point(2218) = {d22,     -e22+r22,  ll/2+l22, s22l}; 
-Point(2209) = {d22-r22, e22,    -ll/2-l22, s22l};  Point(2219) = {d22-r22,  -e22,     ll/2+l22, s22l}; 
-Point(2210) = {d22,    e22-r22, -ll/2-l22, s22l};  Point(2220) = {d22,     -e22-r22,  ll/2+l22, s22l}; 
-
-Circle(2201) = {2202,2201,2203}; Circle(2205) = {2207,2206,2208}; Line(2209) = {2202,2207};
-Circle(2202) = {2203,2201,2204}; Circle(2206) = {2208,2206,2209}; Line(2210) = {2203,2208};
-Circle(2203) = {2204,2201,2205}; Circle(2207) = {2209,2206,2210}; Line(2211) = {2204,2209};
-Circle(2204) = {2205,2201,2202}; Circle(2208) = {2210,2206,2207}; Line(2212) = {2205,2210};
-       	       	     		    	    	    	       	       	   
-Circle(2213) = {2212,2211,2213}; Circle(2217) = {2217,2216,2218}; Line(2221) = {2212,2217};
-Circle(2214) = {2213,2211,2214}; Circle(2218) = {2218,2216,2219}; Line(2222) = {2213,2218};
-Circle(2215) = {2214,2211,2215}; Circle(2219) = {2219,2216,2220}; Line(2223) = {2214,2219};
-Circle(2216) = {2215,2211,2212}; Circle(2220) = {2220,2216,2217}; Line(2224) = {2215,2220};
-
-Line Loop(2201) = {2202,2203,2204,2201};   Plane Surface(2221) = {2201};
-Line Loop(2202) = {2207,2208,2205,2206};   Plane Surface(2222) = {2202};
-Line Loop(2203) = {2216,2213,2214,2215};   Plane Surface(2223) = {2203};
-Line Loop(2204) = {2220,2217,2218,2219};   Plane Surface(2224) = {2204};
-Line Loop(2205) = {2208,-2209,-2204,2212}; Ruled Surface(2225) = {2205};
-Line Loop(2206) = {2212,-2207,-2211,2203}; Ruled Surface(2226) = {2206};
-Line Loop(2207) = {-2211,-2202,2210,2206}; Ruled Surface(2227) = {2207};
-Line Loop(2208) = {-2210,-2201,2209,2205}; Ruled Surface(2228) = {2208};
-Line Loop(2209) = {2221,-2220,-2224,2216}; Ruled Surface(2229) = {2209};
-Line Loop(2210) = {-2224,-2215,2223,2219}; Ruled Surface(2230) = {2210};
-Line Loop(2211) = {2223,-2218,-2222,2214}; Ruled Surface(2231) = {2211};
-Line Loop(2212) = {2222,-2217,-2221,2213}; Ruled Surface(2232) = {2212};
-
-/* barreau x et x' */
-/*
-Point(x01) = {dx,    -e,    -ll/2,    sx};  Point(x11) = {dx,     e,     ll/2,    sx}; 
-Point(x02) = {dx+rx, -e,    -ll/2,    sx};  Point(x12) = {dx+rx,  e,     ll/2,    sx}; 
-Point(x03) = {dx,    -e+rx, -ll/2,    sx};  Point(x13) = {dx,     e+rx,  ll/2,    sx}; 
-Point(x04) = {dx-rx, -e,    -ll/2,    sx};  Point(x14) = {dx-rx,  e,     ll/2,    sx}; 
-Point(x05) = {dx,    -e-rx, -ll/2,    sx};  Point(x15) = {dx,     e-rx,  ll/2,    sx}; 
-Point(x06) = {dx,    -e,    -ll/2-lx, sx};  Point(x16) = {dx,     e,     ll/2+lx, sx}; 
-Point(x07) = {dx+rx, -e,    -ll/2-lx, sx};  Point(x17) = {dx+rx,  e,     ll/2+lx, sx}; 
-Point(x08) = {dx,    -e+rx, -ll/2-lx, sx};  Point(x18) = {dx,     e+rx,  ll/2+lx, sx}; 
-Point(x09) = {dx-rx, -e,    -ll/2-lx, sx};  Point(x19) = {dx-rx,  e,     ll/2+lx, sx}; 
-Point(x10) = {dx,    -e-rx, -ll/2-lx, sx};  Point(x20) = {dx,     e-rx,  ll/2+lx, sx}; 
-
-Circle(x01) = {x02,x01,x03}; Circle(x05) = {x07,x06,x08}; Line(x09) = {x02,x07};
-Circle(x02) = {x03,x01,x04}; Circle(x06) = {x08,x06,x09}; Line(x10) = {x03,x08};
-Circle(x03) = {x04,x01,x05}; Circle(x07) = {x09,x06,x10}; Line(x11) = {x04,x09};
-Circle(x04) = {x05,x01,x02}; Circle(x08) = {x10,x06,x07}; Line(x12) = {x05,x10};
-       	       	     		    	    	    	       	       	   
-Circle(x13) = {x12,x11,x13}; Circle(x17) = {x17,x16,x18}; Line(x21) = {x12,x17};
-Circle(x14) = {x13,x11,x14}; Circle(x18) = {x18,x16,x19}; Line(x22) = {x13,x18};
-Circle(x15) = {x14,x11,x15}; Circle(x19) = {x19,x16,x20}; Line(x23) = {x14,x19};
-Circle(x16) = {x15,x11,x12}; Circle(x20) = {x20,x16,x17}; Line(x24) = {x15,x20};
-
-Line Loop(x01) = {x02,x03,x04,x01};   Plane Surface(x21) = {x01};
-Line Loop(x02) = {x07,x08,x05,x06};   Plane Surface(x22) = {x02};
-Line Loop(x03) = {x16,x13,x14,x15};   Plane Surface(x23) = {x03};
-Line Loop(x04) = {x20,x17,x18,x19};   Plane Surface(x24) = {x04};
-Line Loop(x05) = {x08,-x09,-x04,x12}; Ruled Surface(x25) = {x05};
-Line Loop(x06) = {x12,-x07,-x11,x03}; Ruled Surface(x26) = {x06};
-Line Loop(x07) = {-x11,-x02,x10,x06}; Ruled Surface(x27) = {x07};
-Line Loop(x08) = {-x10,-x01,x09,x05}; Ruled Surface(x28) = {x08};
-Line Loop(x09) = {x21,-x20,-x24,x16}; Ruled Surface(x29) = {x09};
-Line Loop(x10) = {-x24,-x15,x23,x19}; Ruled Surface(x30) = {x10};
-Line Loop(x11) = {x23,-x18,-x22,x14}; Ruled Surface(x31) = {x11};
-Line Loop(x12) = {x22,-x17,-x21,x13}; Ruled Surface(x32) = {x12};
-*/
-
-/* surface longerons */
-Line Loop(3001) = {-13,-21,3,22};  Plane Surface(3101) = {3001}; /* ymax */
-Line Loop(3002) = {23,-11,-24,1};  Plane Surface(3102) = {3002}; /* ymax - eps */
-Line Loop(3003) = {-27,-7,26,17};  Plane Surface(3103) = {3003}; /* ymin + eps*/
-Line Loop(3004) = {25,-15,-28,5};  Plane Surface(3104) = {3004}; /* ymin */
-Line Loop(3005) = {3,4,1,2};       Plane Surface(3105) = {3005}; /* gauche haut */
-Line Loop(3006) = {7,8,5,6};       Plane Surface(3106) = {3006}; /* gauche bas */
-Line Loop(3007) = {11,12,13,14};   Plane Surface(3107) = {3007}; /* droite haut */
-Line Loop(3008) = {18,15,16,17};   Plane Surface(3108) = {3008}; /* droite bas */
-	   					  	
-Line Loop(3009) = {-23,-9,26,19};  Plane Surface(3109) = {3009}; /* bouchon proche */
-Line Loop(3010) = {24,-20,-27,10}; Plane Surface(3110) = {3010}; /* bouchon loin */
-	   					  	
-Line Loop(3011) = {-9,7,10,1};     Plane Surface(3111) = {3011}; /* input */
-Line Loop(3012) = {-11,-20,-17,19};Plane Surface(3112) = {3012}; /* output */
-
-Line Loop(3013) = {-26,-6,25,16};
-Line Loop(3014) = {-28,-8,27,18};
-Line Loop(3015) = {-21,-2,23,12};
-Line Loop(3016) = {-24,-4,22,14};
-Plane Surface(3113) = {3013,203,403,603,803,1003,1203,1403,1603,1803,2003,2203} ;
-Plane Surface(3114) = {3014,101,301,501,701,901,1101,1301,1501,1701,1901,2101};
-Plane Surface(3115) = {3015,103,303,503,703,903,1103,1303,1503,1703,1903,2103};
-Plane Surface(3116) = {3016,201,401,601,801,1001,1201,1401,1601,1801,2001,2201};
-
-/* surface boite interne */
-Line Loop(4001) = {61,75,76,53};   Plane Surface(4101) = {4001};
-Line Loop(4002) = {-54,-61,56,80}; Plane Surface(4102) = {4002};
-Line Loop(4003) = {62,63,-54,75};  Plane Surface(4103) = {4003};
-Line Loop(4004) = {-57,-62,76,64}; Plane Surface(4104) = {4004};
-Line Loop(4005) = {-72,-64,53,56}; Plane Surface(4105) = {4005};
-Line Loop(4006) = {80,-63,57,72};  Plane Surface(4106) = {4006};
-Line Loop(4007) = {-52,-51,76,69}; Plane Surface(4107) = {4007};
-Line Loop(4008) = {55,-62,51,78};  Plane Surface(4108) = {4008};
-Line Loop(4009) = {74,-78,52,73};  Plane Surface(4109) = {4009};
-Line Loop(4010) = {-81,-73,-69,64};Plane Surface(4110) = {4010};
-Line Loop(4011) = {-57,-55,-74,81};Plane Surface(4111) = {4011};
-Line Loop(4012) = {67,75,51,59};   Plane Surface(4112) = {4012};
-Line Loop(4013) = {-71,-54,-67,70};Plane Surface(4113) = {4013};
-Line Loop(4014) = {70,79,-78,59};  Plane Surface(4114) = {4014};
-Line Loop(4015) = {55,63,71,79};   Plane Surface(4115) = {4015};
-Line Loop(4016) = {61,-67,-68,77}; Plane Surface(4116) = {4016};
-Line Loop(4017) = {70,82,-65,68};  Plane Surface(4117) = {4017};
-Line Loop(4018) = {-58,-65,77,56}; Plane Surface(4118) = {4018};
-Line Loop(4019) = {80,71,82,58};   Plane Surface(4119) = {4019};
-Line Loop(4020) = {68,-59,52,60};  Plane Surface(4120) = {4020};
-Line Loop(4021) = {66,-73,60,65};  Plane Surface(4121) = {4021};
-Line Loop(4022) = {74,-79,82,66};  Plane Surface(4122) = {4022};
-Line Loop(4023) = {-77,-60,-69,53};Plane Surface(4123) = {4023};
-Line Loop(4024) = {-72,-81,-66,58};Plane Surface(4124) = {4024};
-
-/* volume bouchon */
-
-Surface Loop(4125) = {3103,-3110,-3102,-3109,3111,3112};
-Complex Volume(4126) = {4125}; 
-
-/* volume air */
-
-Surface Loop(4127) = {4123,4116,-4101,4112,4107,4120};
-Surface Loop(4128) = {2229,2232,2231,-2230,-3113,-3109,-3115,3101,3107,3112,-3110,-3116,-3105,3111,-3106,-3114,3104,3108,-127,126,-125,122,-128,-327,326,-325,322,-328,-527,526,-525,522,-528,-727,726,-725,722,-728,-927,926,-925,922,-928,-1127,1126,-1125,1122,-1128,-1327,1326,-1325,1322,-1328,-1527,1526,-1525,1522,-1528,-1727,1726,-1725,1722,-1728,-1927,1926,-1925,1922,-1928,-2127,2126,-2125,2122,-2128,-227,226,-225,222,-228,-427,426,-425,422,-428,-627,626,-625,622,-628,-827,826,-825,822,-828,-1027,1026,-1025,1022,-1028,-1227,1226,-1225,1222,-1228,-1427,1426,-1425,1422,-1428,-1627,1626,-1625,1622,-1628,-1827,1826,-1825,1822,-1828,-2027,2026,-2025,2022,-2028,-2227,2226,-2225,2222,-2228,129,132,131,-130,124,329,332,331,-330,324,529,532,531,-530,524,729,732,731,-730,724,929,932,931,-930,924,1129,1132,1131,-1130,1124,1329,1332,1331,-1330,1324,1529,1532,1531,-1530,1524,1729,1732,1731,-1730,1724,1929,1932,1931,-1930,1924,2129,2132,2131,-2130,2124,229,232,231,-230,224,429,432,431,-430,424,629,632,631,-630,624,829,832,831,-830,824,1029,1032,1031,-1030,1024,1229,1232,1231,-1230,1224,1429,1432,1431,-1430,1424,1629,1632,1631,-1630,1624,1829,1832,1831,-1830,1824,2029,2032,2031,-2030,2024,2224};
-Complex Volume(4129) = {4127,4128};
-
-/* volumes boite */
-
-Surface Loop(4130) = {4101,4102,-4103,-4104,-4106,-4105}; Complex Volume(4131) = {4130}; /* Zm */
-Surface Loop(4132) = {4113,4115,-4108,-4103,4112,-4114}; Complex Volume(4133) = {4132}; /* Xm */
-Surface Loop(4134) = {4110,4111,-4104,4108,4107,4109}; Complex Volume(4135) = {4134}; /* Ym */
-Surface Loop(4136) = {4118,4119,-4102,4113,-4116,-4117}; Complex Volume(4137) = {4136}; /* Yp */
-Surface Loop(4138) = {4105,-4124,4110,-4121,-4123,-4118}; Complex Volume(4139) = {4138}; /* Xp */
-Surface Loop(4140) = {4121,-4122,4109,-4114,4117,-4120}; Complex Volume(4141) = {4140}; /* Zp */
-
-/* Surface et volume boite externe */
-
-Line Loop(7021) = {-7013,-80,7019,7011};Plane Surface(7022) = {7021};
-Line Loop(7023) = {-7014,63,7013,7004};Plane Surface(7024) = {7023};
-Line Loop(7025) = {7020,7012,-7014,57};Plane Surface(7026) = {7025};
-Line Loop(7027) = {-7009,-7020,72,7019};Plane Surface(7028) = {7027};
-Line Loop(7029) = {-7012,7009,7011,7004};Plane Surface(7030) = {7029};
-Line Loop(7031) = {-7015,55,7014,7001};Plane Surface(7032) = {7031};
-Line Loop(7033) = {-7016,79,7015,7002};Plane Surface(7034) = {7033};
-Line Loop(7035) = {-7013,71,7016,7003};Plane Surface(7036) = {7035};
-Line Loop(7037) = {7003,7004,7001,7002};Plane Surface(7038) = {7037};
-Line Loop(7039) = {-7018,81,7020,7008};Plane Surface(7040) = {7039};
-Line Loop(7041) = {-7017,66,7018,7006};Plane Surface(7042) = {7041};
-Line Loop(7043) = {-7017,58,7019,7010};Plane Surface(7044) = {7043};
-Line Loop(7045) = {-7010,-7009,7008,7006};Plane Surface(7046) = {7045};
-Line Loop(7047) = {7007,-7016,82,7017};Plane Surface(7048) = {7047};
-Line Loop(7049) = {-7011,7010,7007,7003};Plane Surface(7050) = {7049};
-Line Loop(7051) = {7015,7005,-7018,74};Plane Surface(7052) = {7051};
-Line Loop(7053) = {7005,-7008,7012,7001};Plane Surface(7054) = {7053};
-Line Loop(7055) = {7007,-7002,7005,7006};Plane Surface(7056) = {7055};
-
-Surface Loop(7057) = {7036,7024,7032,7034,-4115,-7038}; Complex Volume(7058) = {7057}; /* XM */
-Surface Loop(7059) = {7046,7044,-7042,-4124,-7028,-7040}; Complex Volume(7060) = {7059}; /* XP */
-Surface Loop(7061) = {7054,-7052,-7032,-4111,-7026,7040}; Complex Volume(7062) = {7061}; /* YM */
-Surface Loop(7063) = {7036,-7022,-4119,7048,-7050,7044}; Complex Volume(7064) = {7063}; /* YP */
-Surface Loop(7065) = {4106,7022,7024,-7026,-7028,-7030}; Complex Volume(7066) = {7065}; /* ZM */
-Surface Loop(7067) = {4122,-7052,7034,-7048,7056,-7042}; Complex Volume(7068) = {7067}; /* ZP */
-
-/* physical entities */
-
-AIR       = 8001 ;
-XM        = 8002 ;
-XP        = 8003 ;
-YM        = 8004 ;
-YP        = 8005 ;
-ZM        = 8006 ;
-ZP        = 8007 ;
-
-CLINPUT   = 9001 ;
-CLBOX     = 9002 ;
-CLLONG    = 9003 ;
-CLBARREAU = 9004 ;
-CLBEM     = 9005 ;
-
-Physical Volume (AIR) = {4126,4129,   4131,4133,4135,4137,4139,4141};
-Physical Volume (XM) = {7058};
-Physical Volume (XP) = {7060};
-Physical Volume (YM) = {7062};
-Physical Volume (YP) = {7064};
-Physical Volume (ZM) = {7066};
-Physical Volume (ZP) = {7068};
-
-Physical Surface(CLINPUT) = {3111};
-Physical Surface(CLBEM) = {4119,4106,4115,4111,4122,4124};
-Physical Surface(CLBOX) = {7050,7030,7038,7054,7056,7046};
-Physical Surface(CLLONG) = {3102,3115,3101,3116,3105,3107,3103,3114,3104,3113,3108,3106};
-Physical Surface(CLBARREAU) = 
-{ 
-  122,125,126,127,128,
-  124,129,130,131,132,
-  222,225,226,227,228,
-  224,229,230,231,232,
-  322,325,326,327,328,
-  324,329,330,331,332,
-  422,425,426,427,428,
-  424,429,430,431,432,
-  522,525,526,527,528,
-  524,529,530,531,532,
-  622,625,626,627,628,
-  624,629,630,631,632,
-  722,725,726,727,728,
-  724,729,730,731,732,
-  822,825,826,827,828,
-  824,829,830,831,832,
-  922,925,926,927,928,
-  924,929,930,931,932,
-  1022,1025,1026,1027,1028,
-  1024,1029,1030,1031,1032,
-  1122,1125,1126,1127,1128,
-  1124,1129,1130,1131,1132,
-  1222,1225,1226,1227,1228,
-  1224,1229,1230,1231,1232,
-  1322,1325,1326,1327,1328,
-  1324,1329,1330,1331,1332,
-  1422,1425,1426,1427,1428,
-  1424,1429,1430,1431,1432,
-  1522,1525,1526,1527,1528,
-  1524,1529,1530,1531,1532,
-  1622,1625,1626,1627,1628,
-  1624,1629,1630,1631,1632,
-  1722,1725,1726,1727,1728,
-  1724,1729,1730,1731,1732,
-  1822,1825,1826,1827,1828,
-  1824,1829,1830,1831,1832,
-  1922,1925,1926,1927,1928,
-  1924,1929,1930,1931,1932,
-  2022,2025,2026,2027,2028,
-  2024,2029,2030,2031,2032,
-  2122,2125,2126,2127,2128,
-  2124,2129,2130,2131,2132,
-  2222,2225,2226,2227,2228,
-  2224,2229,2230,2231,2232 
- };
-
diff --git a/benchmarks/bugs/bug_demi_cercles.geo b/benchmarks/bugs/bug_demi_cercles.geo
deleted file mode 100644
index a42a3fe8cb5a67f71075833a15c6677c0644b37a..0000000000000000000000000000000000000000
--- a/benchmarks/bugs/bug_demi_cercles.geo
+++ /dev/null
@@ -1,13 +0,0 @@
-Point(1) = {0.0,0.0,0.0,.08};
-Point(2) = {-.5,0.0,0.0,.08};
-Point(3) = {.5,0.0,0.0,.08};
-Point(4) = {.5,-.5,0.0,.08};
-Point(5) = {-.5,-.5,0.0,.08};
-Circle(1) = {3,1,2} Plane {0,0,1};
-Line(2) = {3,4};
-Line(3) = {4,5};
-Line(4) = {5,2};
-Line Loop(5) = {3,4,-1,2};
-Plane Surface(6) = {5};
-Extrude Surface {6, {0,0,.5}};
-Coherence;
diff --git a/benchmarks/bugs/bug_ruled.geo b/benchmarks/bugs/bug_ruled.geo
deleted file mode 100644
index 0f5cb1cf6ec0247d696b749fffa02a51be32808e..0000000000000000000000000000000000000000
--- a/benchmarks/bugs/bug_ruled.geo
+++ /dev/null
@@ -1,19 +0,0 @@
-
-// solved by setting the tolerance lower in sys3x3_with_tol (-> again,
-// this arised from a wrong mean plane computation)
-
-//lc = 0.00001;
-lc = 0.001;
-Point(61) = {0.058, -0.005, 0, lc};
-Point(62) = {0.058, -0.005, 0.000625, lc};
-Point(64) = {0.058625, -0.005, 0, lc};
-
-Point(85) = {0.058, -0.006, 0, lc};
-Point(86) = {0.058, -0.006, 0.000625, lc};
-Point(88) = {0.058625, -0.006, 0, lc};
-Line(1) = {86,62};
-Line(2) = {88,64};
-Circle(3) = {62,61,64};
-Circle(4) = {86,85,88};
-Line Loop(5) = {2,-3,-1,4};
-Ruled Surface(6) = {5};
diff --git a/benchmarks/bugs/bug_spline.geo b/benchmarks/bugs/bug_spline.geo
deleted file mode 100644
index 08ad7be9296f97f78bcdd5117722aca0acbf3361..0000000000000000000000000000000000000000
--- a/benchmarks/bugs/bug_spline.geo
+++ /dev/null
@@ -1,11 +0,0 @@
-Point(1) = {0.0,0.0,0.0,.1};
-Point(2) = {1,0.0,0.0,.1};
-Point(3) = {1,1,0.0,.1};
-Point(4) = {.5,.5,1,.1};
-Point(5) = {1.2,.3,-.2,.1};
-Point(6) = {.5,0,.2,.1};
-Spline(1) = {1,4,3};
-Spline(2) = {3,5,2};
-Spline(3) = {2,6,1};
-Line Loop(4) = {2,3,1};
-Ruled Surface(5) = {4};
diff --git a/benchmarks/misc/500views.geo b/benchmarks/misc/500views.geo
deleted file mode 100644
index 5da7a5873e86c834f2c0659bd54cf6fea6d8b038..0000000000000000000000000000000000000000
--- a/benchmarks/misc/500views.geo
+++ /dev/null
@@ -1,10 +0,0 @@
-
-// this tests that we can still load as many views as we want.
-// (even if only 200 are allowed in the GUI)
-
-For i In {0:250}
-
-Include "../../tutorial/view1.pos" ;
-Include "../../tutorial/view2.pos" ;
-
-EndFor
diff --git a/benchmarks/misc/animation.geo b/benchmarks/misc/animation.geo
deleted file mode 100644
index a97770746b88365401cb0724f2a1200761d59071..0000000000000000000000000000000000000000
--- a/benchmarks/misc/animation.geo
+++ /dev/null
@@ -1,24 +0,0 @@
-
-General.Trackball = 0;
-General.RotationX = 0 ;
-General.Color.Background = White ;
-General.Color.Foreground = Red ;
-
-View[0].IntervalsType = 2 ;
-View[0].RaiseZ = 0.1 ;
-
-For(1:300)
-
-  General.RotationX += 10 ;
-  General.RotationY =  General.RotationX / 3 ;
-
-  View[0].TimeStep += 
-    (View[0].TimeStep < View[0].NbTimeStep-1) ? 1 : 0 ;
-
-  View[0].RaiseZ -= .01 ;
-
-  Sleep 0.1;
-  Draw;
-
-EndFor
-
diff --git a/benchmarks/misc/discontinuous.pos b/benchmarks/misc/discontinuous.pos
deleted file mode 100644
index e14879d9eea204cb65f6e5983d04f9b175efd9c5..0000000000000000000000000000000000000000
--- a/benchmarks/misc/discontinuous.pos
+++ /dev/null
@@ -1,164 +0,0 @@
-View "h" {
-ST(0.33333333,1,0,0.11111111,1,0,0.21543771,0.73213875,0){1.8313023,1.8313023,1.8313023};
-ST(-1,-0.11111111,0,-1,-0.33333333,0,-0.73174678,-0.21478859,0){1.8328944,1.8328944,1.8328944};
-ST(-0.033284914,0.58770906,0,-0.31289368,0.69974287,0,-0.20381263,0.45499536,0){1.2467638,1.2467638,1.2467638};
-ST(-0.31289368,0.69974287,0,-0.41651431,0.41690828,0,-0.20381263,0.45499536,0){1.246735,1.246735,1.246735};
-ST(-0.31289368,0.69974287,0,-0.033284914,0.58770906,0,-0.18268367,0.83021756,0){1.4247917,1.4247917,1.4247917};
-ST(-0.78315651,-0.45008839,0,-0.67495489,-0.6652659,0,-0.50036547,-0.57239096,0){1.6709509,1.6709509,1.6709509};
-ST(-0.78315651,-0.45008839,0,-0.50036547,-0.57239096,0,-0.6528672,-0.35528873,0){1.5976438,1.5976438,1.5976438};
-ST(0.6657623,0.67544754,0,0.45062041,0.7833899,0,0.57309542,0.50075776,0){1.6720033,1.6720033,1.6720033};
-ST(0.57309542,0.50075776,0,0.45062041,0.7833899,0,0.3558391,0.65309297,0){1.5989111,1.5989111,1.5989111};
-ST(-0.31289368,0.69974287,0,-0.33333333,1,0,-0.50014045,0.79673357,0){1.8548935,1.8548935,1.8548935};
-ST(-1,0.33333333,0,-0.69937066,0.31351533,0,-0.79644003,0.50064951,0){1.8226088,1.8226088,1.8226088};
-ST(-0.41651431,0.41690828,0,-0.31289368,0.69974287,0,-0.4813337,0.60105459,0){1.3627269,1.3627269,1.3627269};
-ST(-0.73174678,-0.21478859,0,-1,-0.33333333,0,-0.78315651,-0.45008839,0){1.8085947,1.8085947,1.8085947};
-ST(0.33333333,1,0,0.21543771,0.73213875,0,0.45062041,0.7833899,0){1.8074496,1.8074496,1.8074496};
-ST(-0.17603462,0.24070348,0,-0.41651431,0.41690828,0,-0.40408872,0.18166381,0){0.860479,0.860479,0.860479};
-ST(-0.33333333,1,0,-0.31289368,0.69974287,0,-0.18268367,0.83021756,0){1.8123202,1.8123202,1.8123202};
-ST(-0.69937066,0.31351533,0,-1,0.33333333,0,-0.82994199,0.18319278,0){1.7959787,1.7959787,1.7959787};
-ST(0.25,0,0,0.5,0,0,0.37532516,0.23078833,0){0.76586185,0.76586185,0.76586185};
-ST(-0.41651431,0.41690828,0,-0.17603462,0.24070348,0,-0.20381263,0.45499536,0){0.88311527,0.88311527,0.88311527};
-ST(0,-0.5,0,0,-0.25,0,-0.23055166,-0.37480907,0){0.76369137,0.76369137,0.76369137};
-ST(-0.41651431,0.41690828,0,-0.61503712,0.4760032,0,-0.57195495,0.20229502,0){1.3257743,1.3257743,1.3257743};
-ST(-0.033284914,0.58770906,0,0.21543771,0.73213875,0,0.00024312215,0.80750011,0){1.4020328,1.4020328,1.4020328};
-ST(0.21543771,0.73213875,0,0.11111111,1,0,0.00024312215,0.80750011,0){1.7190227,1.7190227,1.7190227};
-ST(-1,-0.11111111,0,-0.73174678,-0.21478859,0,-0.80728146,0.00010990719,0){1.7213234,1.7213234,1.7213234};
-ST(-0.73174678,-0.21478859,0,-0.58754442,0.033885734,0,-0.80728146,0.00010990719,0){1.3869461,1.3869461,1.3869461};
-ST(0.21543771,0.73213875,0,-0.033284914,0.58770906,0,0.16368264,0.50834729,0){1.272058,1.272058,1.272058};
-ST(-0.58754442,0.033885734,0,-0.73174678,-0.21478859,0,-0.50815189,-0.16301678,0){1.2684127,1.2684127,1.2684127};
-ST(-0.82994199,0.18319278,0,-0.58754442,0.033885734,0,-0.57195495,0.20229502,0){1.420179,1.420179,1.420179};
-ST(-0.30131805,-0.11512588,0,-0.23055166,-0.37480907,0,-0.12484866,-0.12486094,0){0.61125261,0.61125261,0.61125261};
-ST(-0.61503712,0.4760032,0,-0.69937066,0.31351533,0,-0.57195495,0.20229502,0){1.3155254,1.3155254,1.3155254};
-ST(-0.033284914,0.58770906,0,0.00024312215,0.80750011,0,-0.18268367,0.83021756,0){1.4630244,1.4630244,1.4630244};
-ST(-0.80728146,0.00010990719,0,-0.58754442,0.033885734,0,-0.82994199,0.18319278,0){1.447258,1.447258,1.447258};
-ST(-0.23055166,-0.37480907,0,0,-0.25,0,-0.12484866,-0.12486094,0){0.57184012,0.57184012,0.57184012};
-ST(0,-0.5,0,-0.23055166,-0.37480907,0,-0.14376826,-0.62489354,0){1.0344464,1.0344464,1.0344464};
-ST(0.37532516,0.23078833,0,0.5,0,0,0.6251418,0.1440922,0){1.0276149,1.0276149,1.0276149};
-ST(-1,-1,0,-0.75,-1,0,-0.80632325,-0.81147186,0){2.5284279,2.5284279,2.5284279};
-ST(1,0.75,0,1,1,0,0.81205362,0.80656044,0){2.5291109,2.5291109,2.5291109};
-ST(-0.23055166,-0.37480907,0,-0.30131805,-0.11512588,0,-0.36172351,-0.27107089,0){0.69952818,0.69952818,0.69952818};
-ST(1,0,0,1,0.25,0,0.81149777,0.18885984,0){1.8795088,1.8795088,1.8795088};
-ST(-0.25,-1,0,0,-1,0,-0.18848435,-0.81110947,0){1.8790454,1.8790454,1.8790454};
-ST(0.75,0,0,1,0,0,0.81149777,0.18885984,0){1.7158747,1.7158747,1.7158747};
-ST(0,-1,0,0,-0.75,0,-0.18848435,-0.81110947,0){1.7176318,1.7176318,1.7176318};
-ST(0,0,0,0.25,0,0,0.21849817,0.16667219,0){0.28230937,0.28230937,0.28230937};
-ST(-1,1,0,-1,0.77777778,0,-0.80479144,0.80504612,0){2.5252509,2.5252509,2.5252509};
-ST(-0.77777778,1,0,-1,1,0,-0.80479144,0.80504612,0){2.5253427,2.5253427,2.5253427};
-ST(-0.010543702,0.17712261,0,0,0,0,0.21849817,0.16667219,0){0.28388128,0.28388128,0.28388128};
-ST(-1,-0.77777778,0,-1,-1,0,-0.80632325,-0.81147186,0){2.525268,2.525268,2.525268};
-ST(1,1,0,0.77777778,1,0,0.81205362,0.80656044,0){2.5257772,2.5257772,2.5257772};
-ST(-1,-0.33333333,0,-1,-0.55555556,0,-0.78315651,-0.45008839,0){2.0625544,2.0625544,2.0625544};
-ST(0.55555556,1,0,0.33333333,1,0,0.45062041,0.7833899,0){2.0632983,2.0632983,2.0632983};
-ST(-1,0.55555556,0,-1,0.33333333,0,-0.79644003,0.50064951,0){2.0612356,2.0612356,2.0612356};
-ST(-0.33333333,1,0,-0.55555556,1,0,-0.50014045,0.79673357,0){2.057698,2.057698,2.057698};
-ST(-0.14376826,-0.62489354,0,-0.23055166,-0.37480907,0,-0.3454447,-0.50093054,0){1.1512014,1.1512014,1.1512014};
-ST(0.37532516,0.23078833,0,0.6251418,0.1440922,0,0.50136923,0.34587735,0){1.1261277,1.1261277,1.1261277};
-ST(-0.40408872,0.18166381,0,-0.41651431,0.41690828,0,-0.57195495,0.20229502,0){1.1060132,1.1060132,1.1060132};
-ST(0.25,0,0,0.37532516,0.23078833,0,0.21849817,0.16667219,0){0.68222895,0.68222895,0.68222895};
-ST(-0.17603462,0.24070348,0,-0.40408872,0.18166381,0,-0.19007896,0.04567822,0){0.62137253,0.62137253,0.62137253};
-ST(0.37549445,0.49317282,0,0.57309542,0.50075776,0,0.3558391,0.65309297,0){1.4761854,1.4761854,1.4761854};
-ST(-0.50036547,-0.57239096,0,-0.49292178,-0.37477565,0,-0.6528672,-0.35528873,0){1.4773777,1.4773777,1.4773777};
-ST(-0.19007896,0.04567822,0,-0.40408872,0.18166381,0,-0.41767704,0.010770256,0){0.65374928,0.65374928,0.65374928};
-ST(-0.69937066,0.31351533,0,-0.82994199,0.18319278,0,-0.57195495,0.20229502,0){1.4501658,1.4501658,1.4501658};
-ST(-1,0.11111111,0,-1,-0.11111111,0,-0.80728146,0.00010990719,0){1.8675323,1.8675323,1.8675323};
-ST(0.11111111,1,0,-0.11111111,1,0,0.00024312215,0.80750011,0){1.8631253,1.8631253,1.8631253};
-ST(0.5,0,0,0.75,0,0,0.6251418,0.1440922,0){1.2740082,1.2740082,1.2740082};
-ST(0,-0.75,0,0,-0.5,0,-0.14376826,-0.62489354,0){1.2678382,1.2678382,1.2678382};
-ST(-0.5,-1,0,-0.25,-1,0,-0.35055989,-0.86268532,0){2.076819,2.076819,2.076819};
-ST(1,0.25,0,1,0.5,0,0.8630441,0.3509768,0){2.077962,2.077962,2.077962};
-ST(1,0.5,0,1,0.75,0,0.86780481,0.65024921,0){2.3134466,2.3134466,2.3134466};
-ST(-0.75,-1,0,-0.5,-1,0,-0.65003046,-0.86727585,0){2.3126243,2.3126243,2.3126243};
-ST(0.21543771,0.73213875,0,0.16368264,0.50834729,0,0.3558391,0.65309297,0){1.2912496,1.2912496,1.2912496};
-ST(-0.50815189,-0.16301678,0,-0.73174678,-0.21478859,0,-0.6528672,-0.35528873,0){1.2871156,1.2871156,1.2871156};
-ST(-0.11111111,1,0,-0.33333333,1,0,-0.18268367,0.83021756,0){1.9308042,1.9308042,1.9308042};
-ST(-1,0.33333333,0,-1,0.11111111,0,-0.82994199,0.18319278,0){1.9365169,1.9365169,1.9365169};
-ST(-0.029932551,0.40748663,0,-0.17603462,0.24070348,0,-0.010543702,0.17712261,0){0.59558032,0.59558032,0.59558032};
-ST(-0.78315651,-0.45008839,0,-1,-0.55555556,0,-0.84799337,-0.64190935,0){2.0731839,2.0731839,2.0731839};
-ST(-0.67495489,-0.6652659,0,-0.78315651,-0.45008839,0,-0.84799337,-0.64190935,0){1.9236857,1.9236857,1.9236857};
-ST(0.55555556,1,0,0.45062041,0.7833899,0,0.64252683,0.84854279,0){2.0743158,2.0743158,2.0743158};
-ST(0.45062041,0.7833899,0,0.6657623,0.67544754,0,0.64252683,0.84854279,0){1.9255181,1.9255181,1.9255181};
-ST(-0.49292178,-0.37477565,0,-0.50815189,-0.16301678,0,-0.6528672,-0.35528873,0){1.2518836,1.2518836,1.2518836};
-ST(0.16368264,0.50834729,0,0.37549445,0.49317282,0,0.3558391,0.65309297,0){1.2523606,1.2523606,1.2523606};
-ST(-0.73174678,-0.21478859,0,-0.78315651,-0.45008839,0,-0.6528672,-0.35528873,0){1.6287559,1.6287559,1.6287559};
-ST(0.45062041,0.7833899,0,0.21543771,0.73213875,0,0.3558391,0.65309297,0){1.6304464,1.6304464,1.6304464};
-ST(-0.50377808,-0.78884267,0,-0.32879066,-0.67072359,0,-0.50036547,-0.57239096,0){1.6411316,1.6411316,1.6411316};
-ST(-0.67495489,-0.6652659,0,-0.50377808,-0.78884267,0,-0.50036547,-0.57239096,0){1.7808541,1.7808541,1.7808541};
-ST(0.671223,0.32907594,0,0.78906409,0.5041626,0,0.57309542,0.50075776,0){1.6413945,1.6413945,1.6413945};
-ST(0.78906409,0.5041626,0,0.6657623,0.67544754,0,0.57309542,0.50075776,0){1.7821071,1.7821071,1.7821071};
-ST(-0.20381263,0.45499536,0,-0.17603462,0.24070348,0,-0.029932551,0.40748663,0){0.76607712,0.76607712,0.76607712};
-ST(0.6251418,0.1440922,0,0.671223,0.32907594,0,0.50136923,0.34587735,0){1.2739154,1.2739154,1.2739154};
-ST(-0.32879066,-0.67072359,0,-0.14376826,-0.62489354,0,-0.3454447,-0.50093054,0){1.2672515,1.2672515,1.2672515};
-ST(0.11583535,0.30145324,0,0.16368264,0.50834729,0,-0.029932551,0.40748663,0){0.83720618,0.83720618,0.83720618};
-ST(0.16368264,0.50834729,0,-0.033284914,0.58770906,0,-0.029932551,0.40748663,0){0.95602133,0.95602133,0.95602133};
-ST(-0.40408872,0.18166381,0,-0.58754442,0.033885734,0,-0.41767704,0.010770256,0){0.96625648,0.96625648,0.96625648};
-ST(-0.30131805,-0.11512588,0,-0.19007896,0.04567822,0,-0.41767704,0.010770256,0){0.61413965,0.61413965,0.61413965};
-ST(-0.58754442,0.033885734,0,-0.40408872,0.18166381,0,-0.57195495,0.20229502,0){1.0173008,1.0173008,1.0173008};
-ST(-0.49292178,-0.37477565,0,-0.3454447,-0.50093054,0,-0.36172351,-0.27107089,0){1.069825,1.069825,1.069825};
-ST(0.50136923,0.34587735,0,0.37549445,0.49317282,0,0.27170325,0.36204749,0){1.0744841,1.0744841,1.0744841};
-ST(-1,-0.55555556,0,-1,-0.77777778,0,-0.84799337,-0.64190935,0){2.3213805,2.3213805,2.3213805};
-ST(0.11583535,0.30145324,0,-0.029932551,0.40748663,0,-0.010543702,0.17712261,0){0.59631419,0.59631419,0.59631419};
-ST(0.77777778,1,0,0.55555556,1,0,0.64252683,0.84854279,0){2.3222499,2.3222499,2.3222499};
-ST(-0.19007896,0.04567822,0,0,0,0,-0.010543702,0.17712261,0){0.24507431,0.24507431,0.24507431};
-ST(-0.17603462,0.24070348,0,-0.19007896,0.04567822,0,-0.010543702,0.17712261,0){0.34098964,0.34098964,0.34098964};
-ST(-0.31289368,0.69974287,0,-0.50014045,0.79673357,0,-0.4813337,0.60105459,0){1.6538358,1.6538358,1.6538358};
-ST(-0.50014045,0.79673357,0,-0.66548665,0.66585508,0,-0.4813337,0.60105459,0){1.7451221,1.7451221,1.7451221};
-ST(-1,0.11111111,0,-0.80728146,0.00010990719,0,-0.82994199,0.18319278,0){1.8032441,1.8032441,1.8032441};
-ST(0.11583535,0.30145324,0,-0.010543702,0.17712261,0,0.21849817,0.16667219,0){0.4421974,0.4421974,0.4421974};
-ST(0.00024312215,0.80750011,0,-0.11111111,1,0,-0.18268367,0.83021756,0){1.7941061,1.7941061,1.7941061};
-ST(-0.3454447,-0.50093054,0,-0.23055166,-0.37480907,0,-0.36172351,-0.27107089,0){1.0906623,1.0906623,1.0906623};
-ST(0.37532516,0.23078833,0,0.50136923,0.34587735,0,0.27170325,0.36204749,0){1.0644457,1.0644457,1.0644457};
-ST(-0.66548665,0.66585508,0,-0.79644003,0.50064951,0,-0.61503712,0.4760032,0){1.7779659,1.7779659,1.7779659};
-ST(-0.50377808,-0.78884267,0,-0.5,-1,0,-0.35055989,-0.86268532,0){1.9852538,1.9852538,1.9852538};
-ST(1,0.5,0,0.78906409,0.5041626,0,0.8630441,0.3509768,0){1.9858966,1.9858966,1.9858966};
-ST(-0.55555556,1,0,-0.77777778,1,0,-0.65071255,0.86515077,0){2.3415147,2.3415147,2.3415147};
-ST(-1,0.77777778,0,-1,0.55555556,0,-0.86489107,0.65108436,0){2.341617,2.341617,2.341617};
-ST(-0.50377808,-0.78884267,0,-0.67495489,-0.6652659,0,-0.65003046,-0.86727585,0){1.9742304,1.9742304,1.9742304};
-ST(0.6657623,0.67544754,0,0.78906409,0.5041626,0,0.86780481,0.65024921,0){1.9755715,1.9755715,1.9755715};
-ST(-0.41651431,0.41690828,0,-0.4813337,0.60105459,0,-0.61503712,0.4760032,0){1.4582466,1.4582466,1.4582466};
-ST(-0.50815189,-0.16301678,0,-0.30131805,-0.11512588,0,-0.41767704,0.010770256,0){0.84776778,0.84776778,0.84776778};
-ST(-0.58754442,0.033885734,0,-0.50815189,-0.16301678,0,-0.41767704,0.010770256,0){0.9929078,0.9929078,0.9929078};
-ST(-0.033284914,0.58770906,0,-0.20381263,0.45499536,0,-0.029932551,0.40748663,0){0.96444138,0.96444138,0.96444138};
-ST(-0.5,-1,0,-0.50377808,-0.78884267,0,-0.65003046,-0.86727585,0){2.0924135,2.0924135,2.0924135};
-ST(0.78906409,0.5041626,0,1,0.5,0,0.86780481,0.65024921,0){2.0932413,2.0932413,2.0932413};
-ST(-0.66548665,0.66585508,0,-0.50014045,0.79673357,0,-0.65071255,0.86515077,0){1.9803852,1.9803852,1.9803852};
-ST(-0.79644003,0.50064951,0,-0.66548665,0.66585508,0,-0.86489107,0.65108436,0){1.9807017,1.9807017,1.9807017};
-ST(-0.79644003,0.50064951,0,-0.69937066,0.31351533,0,-0.61503712,0.4760032,0){1.6593956,1.6593956,1.6593956};
-ST(-0.32879066,-0.67072359,0,-0.50377808,-0.78884267,0,-0.35055989,-0.86268532,0){1.7163674,1.7163674,1.7163674};
-ST(0.75,0,0,0.81149777,0.18885984,0,0.6251418,0.1440922,0){1.486239,1.486239,1.486239};
-ST(0.81149777,0.18885984,0,0.671223,0.32907594,0,0.6251418,0.1440922,0){1.4851034,1.4851034,1.4851034};
-ST(-0.18848435,-0.81110947,0,0,-0.75,0,-0.14376826,-0.62489354,0){1.4824274,1.4824274,1.4824274};
-ST(-0.32879066,-0.67072359,0,-0.18848435,-0.81110947,0,-0.14376826,-0.62489354,0){1.4813626,1.4813626,1.4813626};
-ST(0.78906409,0.5041626,0,0.671223,0.32907594,0,0.8630441,0.3509768,0){1.7162358,1.7162358,1.7162358};
-ST(-1,-0.77777778,0,-0.80632325,-0.81147186,0,-0.84799337,-0.64190935,0){2.3072652,2.3072652,2.3072652};
-ST(0.81205362,0.80656044,0,0.77777778,1,0,0.64252683,0.84854279,0){2.3080751,2.3080751,2.3080751};
-ST(-0.4813337,0.60105459,0,-0.66548665,0.66585508,0,-0.61503712,0.4760032,0){1.6491063,1.6491063,1.6491063};
-ST(-0.30131805,-0.11512588,0,-0.50815189,-0.16301678,0,-0.36172351,-0.27107089,0){0.86513624,0.86513624,0.86513624};
-ST(-0.50815189,-0.16301678,0,-0.49292178,-0.37477565,0,-0.36172351,-0.27107089,0){1.0704865,1.0704865,1.0704865};
-ST(0.16368264,0.50834729,0,0.11583535,0.30145324,0,0.27170325,0.36204749,0){0.85284266,0.85284266,0.85284266};
-ST(0.37549445,0.49317282,0,0.16368264,0.50834729,0,0.27170325,0.36204749,0){1.0755674,1.0755674,1.0755674};
-ST(-0.67495489,-0.6652659,0,-0.80632325,-0.81147186,0,-0.65003046,-0.86727585,0){2.0917259,2.0917259,2.0917259};
-ST(0.81205362,0.80656044,0,0.6657623,0.67544754,0,0.86780481,0.65024921,0){2.0929865,2.0929865,2.0929865};
-ST(-0.66548665,0.66585508,0,-0.80479144,0.80504612,0,-0.86489107,0.65108436,0){2.0813257,2.0813257,2.0813257};
-ST(-0.80479144,0.80504612,0,-0.66548665,0.66585508,0,-0.65071255,0.86515077,0){2.0814938,2.0814938,2.0814938};
-ST(-0.49292178,-0.37477565,0,-0.50036547,-0.57239096,0,-0.3454447,-0.50093054,0){1.2701799,1.2701799,1.2701799};
-ST(0.57309542,0.50075776,0,0.37549445,0.49317282,0,0.50136923,0.34587735,0){1.2742436,1.2742436,1.2742436};
-ST(-0.18848435,-0.81110947,0,-0.32879066,-0.67072359,0,-0.35055989,-0.86268532,0){1.6604334,1.6604334,1.6604334};
-ST(0.671223,0.32907594,0,0.81149777,0.18885984,0,0.8630441,0.3509768,0){1.6605315,1.6605315,1.6605315};
-ST(-0.50014045,0.79673357,0,-0.55555556,1,0,-0.65071255,0.86515077,0){2.1108419,2.1108419,2.1108419};
-ST(-1,0.55555556,0,-0.79644003,0.50064951,0,-0.86489107,0.65108436,0){2.1128912,2.1128912,2.1128912};
-ST(0,0,0,-0.19007896,0.04567822,0,-0.12484866,-0.12486094,0){0.22854898,0.22854898,0.22854898};
-ST(-0.19007896,0.04567822,0,-0.30131805,-0.11512588,0,-0.12484866,-0.12486094,0){0.43242437,0.43242437,0.43242437};
-ST(-0.77777778,1,0,-0.80479144,0.80504612,0,-0.65071255,0.86515077,0){2.3203869,2.3203869,2.3203869};
-ST(-0.80479144,0.80504612,0,-1,0.77777778,0,-0.86489107,0.65108436,0){2.3205228,2.3205228,2.3205228};
-ST(-0.80632325,-0.81147186,0,-0.67495489,-0.6652659,0,-0.84799337,-0.64190935,0){2.1028015,2.1028015,2.1028015};
-ST(0.6657623,0.67544754,0,0.81205362,0.80656044,0,0.64252683,0.84854279,0){2.104332,2.104332,2.104332};
-ST(0.21849817,0.16667219,0,0.37532516,0.23078833,0,0.27170325,0.36204749,0){0.74577411,0.74577411,0.74577411};
-ST(0.11583535,0.30145324,0,0.21849817,0.16667219,0,0.27170325,0.36204749,0){0.70861502,0.70861502,0.70861502};
-ST(-0.25,-1,0,-0.18848435,-0.81110947,0,-0.35055989,-0.86268532,0){1.8551484,1.8551484,1.8551484};
-ST(0.671223,0.32907594,0,0.57309542,0.50075776,0,0.50136923,0.34587735,0){1.4067439,1.4067439,1.4067439};
-ST(0.81149777,0.18885984,0,1,0.25,0,0.8630441,0.3509768,0){1.855982,1.855982,1.855982};
-ST(-0.50036547,-0.57239096,0,-0.32879066,-0.67072359,0,-0.3454447,-0.50093054,0){1.4003681,1.4003681,1.4003681};
-ST(-0.80632325,-0.81147186,0,-0.75,-1,0,-0.65003046,-0.86727585,0){2.3091204,2.3091204,2.3091204};
-ST(1,0.75,0,0.81205362,0.80656044,0,0.86780481,0.65024921,0){2.3096666,2.3096666,2.3096666};
-ST(0,-0.25,0,0,0,0,-0.12484866,-0.12486094,0){0.24400114,0.24400114,0.24400114};
-};
diff --git a/benchmarks/misc/displacement.pos b/benchmarks/misc/displacement.pos
deleted file mode 100644
index 42641a3232f67961d613d3b7eac805a313c1159d..0000000000000000000000000000000000000000
--- a/benchmarks/misc/displacement.pos
+++ /dev/null
@@ -1,164 +0,0 @@
-View "phiz" {
-VT(0.12769368,0.48850822,0,0.093878652,0.21606276,0,0.30170882,0.31749481,0){0,0,0.23608739,0,0,0.039927481,0,0,0.18127988};
-VT(-0.5421228,-0.11260696,0,-0.76457788,-0.080568783,0,-0.7261901,-0.30622169,0){0,0,0.29334969,0,0,0.58004414,0,0,0.60510213};
-VT(0.30679003,0.71918631,0,0.043011361,0.73950988,0,0.12769368,0.48850822,0){0,0,0.59405992,0,0,0.53333204,0,0,0.23608739};
-VT(1,0.6,0,0.84832091,0.84974074,0,0.69212735,0.70317181,0){0,0,1.3402922,0,0,1.4269182,0,0,0.95455084};
-VT(-1,-0.6,0,-0.84971248,-0.848268,0,-0.70289226,-0.69159403,0){0,0,1.3413455,0,0,1.4267533,0,0,0.95344494};
-VT(-0.29614927,-0.68911075,0,-0.15018816,-0.84801006,0,0,-0.6,0){0,0,0.54324782,0,0,0.7271253,0,0,0.34037099};
-VT(-0.4,-1,0,-0.15018816,-0.84801006,0,-0.29614927,-0.68911075,0){0,0,1.1400056,0,0,0.7271253,0,0,0.54324782};
-VT(-0.70289226,-0.69159403,0,-0.84971248,-0.848268,0,-0.6,-1,0){0,0,0.95344494,0,0,1.4267533,0,0,1.3402345};
-VT(0.68845064,0.29742567,0,0.84793591,0.15031831,0,1,0.4,0){0,0,0.54289424,0,0,0.72705167,0,0,1.1400094};
-VT(0.6,0,0,0.84793591,0.15031831,0,0.68845064,0.29742567,0){0,0,0.34012917,0,0,0.72705167,0,0,0.54289424};
-VT(0.69212735,0.70317181,0,0.84832091,0.84974074,0,0.6,1,0){0,0,0.95455084,0,0,1.4269182,0,0,1.3413909};
-VT(0.12769368,0.48850822,0,0.37038152,0.50386299,0,0.30679003,0.71918631,0){0,0,0.23608739,0,0,0.38031894,0,0,0.59405992};
-VT(0.30170882,0.31749481,0,0.37038152,0.50386299,0,0.12769368,0.48850822,0){0,0,0.18127988,0,0,0.38031894,0,0,0.23608739};
-VT(-0.7261901,-0.30622169,0,-0.48993004,-0.34456746,0,-0.5421228,-0.11260696,0){0,0,0.60510213,0,0,0.34565331,0,0,0.29334969};
-VT(0.30679003,0.71918631,0,0.50076357,0.81140902,0,0.4,1,0){0,0,0.59405992,0,0,0.90095104,0,0,1.144558};
-VT(-1,-0.4,0,-0.81220583,-0.50021121,0,-0.7261901,-0.30622169,0){0,0,1.1449524,0,0,0.90166921,0,0,0.60510213};
-VT(0.4,1,0,0.19528035,0.88414987,0,0.30679003,0.71918631,0){0,0,1.144558,0,0,0.8102247,0,0,0.59405992};
-VT(-0.7261901,-0.30622169,0,-0.88909151,-0.20108716,0,-1,-0.4,0){0,0,0.60510213,0,0,0.82235965,0,0,1.1449524};
-VT(0.69212735,0.70317181,0,0.79278602,0.50016561,0,1,0.6,0){0,0,0.95455084,0,0,0.86850078,0,0,1.3402922};
-VT(1,0.4,0,0.79278602,0.50016561,0,0.68845064,0.29742567,0){0,0,1.1400094,0,0,0.86850078,0,0,0.54289424};
-VT(-0.29614927,-0.68911075,0,-0.49970002,-0.79249012,0,-0.4,-1,0){0,0,0.54324782,0,0,0.86750281,0,0,1.1400056};
-VT(-0.6,-1,0,-0.49970002,-0.79249012,0,-0.70289226,-0.69159403,0){0,0,1.3402345,0,0,0.86750281,0,0,0.95344494};
-VT(-0.097376676,0.37012027,0,0.093878652,0.21606276,0,0.12769368,0.48850822,0){0,0,0.13384161,0,0,0.039927481,0,0,0.23608739};
-VT(0.46505257,0.18920403,0,0.28472232,0.147503,0,0.4,0,0){0,0,0.24153004,0,0,0.095759319,0,0,0.15186115};
-VT(0.30170882,0.31749481,0,0.28472232,0.147503,0,0.46505257,0.18920403,0){0,0,0.18127988,0,0,0.095759319,0,0,0.24153004};
-VT(-0.5069458,0.52411158,0,-0.28048336,0.5090566,0,-0.41369197,0.73184535,0){0,0,0.52086505,0,0,0.32465226,0,0,0.69052686};
-VT(-0.41369197,0.73184535,0,-0.28048336,0.5090566,0,-0.18314711,0.69947345,0){0,0,0.69052686,0,0,0.32465226,0,0,0.51294111};
-VT(0,-0.6,0,-0.18237993,-0.47217714,0,-0.29614927,-0.68911075,0){0,0,0.34037099,0,0,0.24651427,0,0,0.54324782};
-VT(-0.70289226,-0.69159403,0,-0.81220583,-0.50021121,0,-1,-0.6,0){0,0,0.95344494,0,0,0.90166921,0,0,1.3413455};
-VT(0.68845064,0.29742567,0,0.46505257,0.18920403,0,0.6,0,0){0,0,0.54289424,0,0,0.24153004,0,0,0.34012917};
-VT(0.6,1,0,0.50076357,0.81140902,0,0.69212735,0.70317181,0){0,0,1.3413909,0,0,0.90095104,0,0,0.95455084};
-VT(-0.72720733,0.43583582,0,-0.5069458,0.52411158,0,-0.65294722,0.66226976,0){0,0,0.70414594,0,0,0.52086505,0,0,0.85297032};
-VT(-0.72720733,0.43583582,0,-0.5562586,0.36467285,0,-0.5069458,0.52411158,0){0,0,0.70414594,0,0,0.43706793,0,0,0.52086505};
-VT(1,0.8,0,0.84832091,0.84974074,0,1,0.6,0){0,0,1.6351217,0,0,1.4269182,0,0,1.3402922};
-VT(-1,-0.8,0,-0.84971248,-0.848268,0,-1,-0.6,0){0,0,1.6350425,0,0,1.4267533,0,0,1.3413455};
-VT(-0.6,-1,0,-0.84971248,-0.848268,0,-0.8,-1,0){0,0,1.3402345,0,0,1.4267533,0,0,1.6351469};
-VT(0,-0.6,0,-0.15018816,-0.84801006,0,0,-0.8,0){0,0,0.34037099,0,0,0.7271253,0,0,0.63521318};
-VT(-0.2,-1,0,-0.15018816,-0.84801006,0,-0.4,-1,0){0,0,1.0350883,0,0,0.7271253,0,0,1.1400056};
-VT(0.8,0,0,0.84793591,0.15031831,0,0.6,0,0){0,0,0.63526591,0,0,0.72705167,0,0,0.34012917};
-VT(1,0.4,0,0.84793591,0.15031831,0,1,0.2,0){0,0,1.1400094,0,0,0.72705167,0,0,1.0350863};
-VT(0.6,1,0,0.84832091,0.84974074,0,0.8,1,0){0,0,1.3413909,0,0,1.4269182,0,0,1.6350174};
-VT(0,0,0,-0.13062954,0.15354208,0,-0.20237428,-0.094234203,0){0,0,-0.011188789,0,0,0.028273334,0,0,0.035308585};
-VT(-0.20237428,-0.094234203,0,-0.13062954,0.15354208,0,-0.31649602,0.11487776,0){0,0,0.035308585,0,0,0.028273334,0,0,0.10378379};
-VT(0.58125547,0.50080114,0,0.79278602,0.50016561,0,0.69212735,0.70317181,0){0,0,0.5792341,0,0,0.86850078,0,0,0.95455084};
-VT(-0.49856645,-0.57864874,0,-0.49970002,-0.79249012,0,-0.29614927,-0.68911075,0){0,0,0.57334145,0,0,0.86750281,0,0,0.54324782};
-VT(0.68845064,0.29742567,0,0.79278602,0.50016561,0,0.58125547,0.50080114,0){0,0,0.54289424,0,0,0.86850078,0,0,0.5792341};
-VT(-0.70289226,-0.69159403,0,-0.49970002,-0.79249012,0,-0.49856645,-0.57864874,0){0,0,0.95344494,0,0,0.86750281,0,0,0.57334145};
-VT(-0.18314711,0.69947345,0,-0.078017137,0.55659901,0,0.043011361,0.73950988,0){0,0,0.51294111,0,0,0.30773002,0,0,0.53333204};
-VT(0.69212735,0.70317181,0,0.48833461,0.64651393,0,0.58125547,0.50080114,0){0,0,0.95455084,0,0,0.65057086,0,0,0.5792341};
-VT(0.58125547,0.50080114,0,0.48102844,0.36070204,0,0.68845064,0.29742567,0){0,0,0.5792341,0,0,0.35498666,0,0,0.54289424};
-VT(-0.29614927,-0.68911075,0,-0.35285213,-0.48044777,0,-0.49856645,-0.57864874,0){0,0,0.54324782,0,0,0.34856344,0,0,0.57334145};
-VT(-0.49856645,-0.57864874,0,-0.64504271,-0.48377429,0,-0.70289226,-0.69159403,0){0,0,0.57334145,0,0,0.64319256,0,0,0.95344494};
-VT(0.043011361,0.73950988,0,-0.11821516,0.85398875,0,-0.18314711,0.69947345,0){0,0,0.53333204,0,0,0.73703289,0,0,0.51294111};
-VT(0.2,0,0,0.093878652,0.21606276,0,0,0,0){0,0,0.029318307,0,0,0.039927481,0,0,-0.011188789};
-VT(-1,0,0,-0.88909151,-0.20108716,0,-0.76457788,-0.080568783,0){0,0,0.98567746,0,0,0.82235965,0,0,0.58004414};
-VT(0.043011361,0.73950988,0,0.19528035,0.88414987,0,0,1,0){0,0,0.53333204,0,0,0.8102247,0,0,0.98599093};
-VT(0.2,0,0,0.28472232,0.147503,0,0.093878652,0.21606276,0){0,0,0.029318307,0,0,0.095759319,0,0,0.039927481};
-VT(0.12769368,0.48850822,0,-0.078017137,0.55659901,0,-0.097376676,0.37012027,0){0,0,0.23608739,0,0,0.30773002,0,0,0.13384161};
-VT(-1,0.8,0,-0.81500321,0.8168568,0,-1,1,0){0,0,1.6296302,0,0,1.3205926,0,0,1.9856788};
-VT(-1,1,0,-0.81500321,0.8168568,0,-0.8,1,0){0,0,1.9856788,0,0,1.3205926,0,0,1.6295719};
-VT(-1,-0.2,0,-0.88909151,-0.20108716,0,-1,0,0){0,0,1.035932,0,0,0.82235965,0,0,0.98567746};
-VT(0,1,0,0.19528035,0.88414987,0,0.2,1,0){0,0,0.98599093,0,0,0.8102247,0,0,1.0361451};
-VT(0.043011361,0.73950988,0,-0.078017137,0.55659901,0,0.12769368,0.48850822,0){0,0,0.53333204,0,0,0.30773002,0,0,0.23608739};
-VT(-1,0.8,0,-0.86037128,0.61481672,0,-0.81500321,0.8168568,0){0,0,1.6296302,0,0,1.106042,0,0,1.3205926};
-VT(-0.81500321,0.8168568,0,-0.61026761,0.86248481,0,-0.8,1,0){0,0,1.3205926,0,0,1.1041067,0,0,1.6295719};
-VT(-1,0.6,0,-0.86037128,0.61481672,0,-1,0.8,0){0,0,1.3548322,0,0,1.106042,0,0,1.6296302};
-VT(-0.8,1,0,-0.61026761,0.86248481,0,-0.6,1,0){0,0,1.6295719,0,0,1.1041067,0,0,1.3548692};
-VT(-0.4,1,0,-0.61026761,0.86248481,0,-0.41369197,0.73184535,0){0,0,1.1445323,0,0,1.1041067,0,0,0.69052686};
-VT(-0.72720733,0.43583582,0,-0.86037128,0.61481672,0,-1,0.4,0){0,0,0.70414594,0,0,1.106042,0,0,1.1437749};
-VT(0,0,0,-0.20237428,-0.094234203,0,0,-0.2,0){0,0,-0.011188789,0,0,0.035308585,0,0,0.030108895};
-VT(0.50076357,0.81140902,0,0.48833461,0.64651393,0,0.69212735,0.70317181,0){0,0,0.90095104,0,0,0.65057086,0,0,0.95455084};
-VT(0.68845064,0.29742567,0,0.48102844,0.36070204,0,0.46505257,0.18920403,0){0,0,0.54289424,0,0,0.35498666,0,0,0.24153004};
-VT(-0.70289226,-0.69159403,0,-0.64504271,-0.48377429,0,-0.81220583,-0.50021121,0){0,0,0.95344494,0,0,0.64319256,0,0,0.90166921};
-VT(-0.18237993,-0.47217714,0,-0.35285213,-0.48044777,0,-0.29614927,-0.68911075,0){0,0,0.24651427,0,0,0.34856344,0,0,0.54324782};
-VT(-0.76457788,-0.080568783,0,-0.88909151,-0.20108716,0,-0.7261901,-0.30622169,0){0,0,0.58004414,0,0,0.82235965,0,0,0.60510213};
-VT(0.30679003,0.71918631,0,0.19528035,0.88414987,0,0.043011361,0.73950988,0){0,0,0.59405992,0,0,0.8102247,0,0,0.53333204};
-VT(-0.6,1,0,-0.61026761,0.86248481,0,-0.4,1,0){0,0,1.3548692,0,0,1.1041067,0,0,1.1445323};
-VT(-1,0.4,0,-0.86037128,0.61481672,0,-1,0.6,0){0,0,1.1437749,0,0,1.106042,0,0,1.3548322};
-VT(1,0.6,0,0.79278602,0.50016561,0,1,0.4,0){0,0,1.3402922,0,0,0.86850078,0,0,1.1400094};
-VT(-0.4,-1,0,-0.49970002,-0.79249012,0,-0.6,-1,0){0,0,1.1400056,0,0,0.86750281,0,0,1.3402345};
-VT(-0.76457788,-0.080568783,0,-0.81920417,0.10649619,0,-1,0,0){0,0,0.58004414,0,0,0.67320716,0,0,0.98567746};
-VT(0,1,0,-0.11821516,0.85398875,0,0.043011361,0.73950988,0){0,0,0.98599093,0,0,0.73703289,0,0,0.53333204};
-VT(-0.097376676,0.37012027,0,-0.13062954,0.15354208,0,0.093878652,0.21606276,0){0,0,0.13384161,0,0,0.028273334,0,0,0.039927481};
-VT(0.093878652,0.21606276,0,0.28472232,0.147503,0,0.30170882,0.31749481,0){0,0,0.039927481,0,0,0.095759319,0,0,0.18127988};
-VT(-0.5421228,-0.11260696,0,-0.65059508,0.041512801,0,-0.76457788,-0.080568783,0){0,0,0.29334969,0,0,0.41885836,0,0,0.58004414};
-VT(0.093878652,0.21606276,0,-0.13062954,0.15354208,0,0,0,0){0,0,0.039927481,0,0,0.028273334,0,0,-0.011188789};
-VT(0.37038152,0.50386299,0,0.48102844,0.36070204,0,0.58125547,0.50080114,0){0,0,0.38031894,0,0,0.35498666,0,0,0.5792341};
-VT(0.58125547,0.50080114,0,0.48833461,0.64651393,0,0.37038152,0.50386299,0){0,0,0.5792341,0,0,0.65057086,0,0,0.38031894};
-VT(-0.49856645,-0.57864874,0,-0.35285213,-0.48044777,0,-0.48993004,-0.34456746,0){0,0,0.57334145,0,0,0.34856344,0,0,0.34565331};
-VT(-0.48993004,-0.34456746,0,-0.64504271,-0.48377429,0,-0.49856645,-0.57864874,0){0,0,0.34565331,0,0,0.64319256,0,0,0.57334145};
-VT(0.6,0,0,0.46505257,0.18920403,0,0.4,0,0){0,0,0.34012917,0,0,0.24153004,0,0,0.15186115};
-VT(0.4,1,0,0.50076357,0.81140902,0,0.6,1,0){0,0,1.144558,0,0,0.90095104,0,0,1.3413909};
-VT(-1,-0.6,0,-0.81220583,-0.50021121,0,-1,-0.4,0){0,0,1.3413455,0,0,0.90166921,0,0,1.1449524};
-VT(0,-0.4,0,-0.18237993,-0.47217714,0,0,-0.6,0){0,0,0.15276498,0,0,0.24651427,0,0,0.34037099};
-VT(-1,0.4,0,-0.84092818,0.27169996,0,-0.72720733,0.43583582,0){0,0,1.1437749,0,0,0.77335554,0,0,0.70414594};
-VT(-0.41369197,0.73184535,0,-0.26434268,0.85422499,0,-0.4,1,0){0,0,0.69052686,0,0,0.79358086,0,0,1.1445323};
-VT(-0.72720733,0.43583582,0,-0.84092818,0.27169996,0,-0.65243693,0.21794688,0){0,0,0.70414594,0,0,0.77335554,0,0,0.46262006};
-VT(-0.18314711,0.69947345,0,-0.26434268,0.85422499,0,-0.41369197,0.73184535,0){0,0,0.51294111,0,0,0.79358086,0,0,0.69052686};
-VT(-0.65294722,0.66226976,0,-0.5069458,0.52411158,0,-0.41369197,0.73184535,0){0,0,0.85297032,0,0,0.52086505,0,0,0.69052686};
-VT(0,-0.4,0,-0.13561503,-0.2979777,0,-0.18237993,-0.47217714,0){0,0,0.15276498,0,0,0.099810723,0,0,0.24651427};
-VT(-0.65243693,0.21794688,0,-0.5562586,0.36467285,0,-0.72720733,0.43583582,0){0,0,0.46262006,0,0,0.43706793,0,0,0.70414594};
-VT(-0.65294722,0.66226976,0,-0.86037128,0.61481672,0,-0.72720733,0.43583582,0){0,0,0.85297032,0,0,1.106042,0,0,0.70414594};
-VT(-0.41369197,0.73184535,0,-0.61026761,0.86248481,0,-0.65294722,0.66226976,0){0,0,0.69052686,0,0,1.1041067,0,0,0.85297032};
-VT(-0.4165969,0.39543964,0,-0.28048336,0.5090566,0,-0.5069458,0.52411158,0){0,0,0.32534352,0,0,0.32465226,0,0,0.52086505};
-VT(-0.29182364,-0.31445753,0,-0.13561503,-0.2979777,0,-0.20237428,-0.094234203,0){0,0,0.17552505,0,0,0.099810723,0,0,0.035308585};
-VT(-0.20237428,-0.094234203,0,-0.13561503,-0.2979777,0,0,-0.2,0){0,0,0.035308585,0,0,0.099810723,0,0,0.030108895};
-VT(-0.5069458,0.52411158,0,-0.5562586,0.36467285,0,-0.4165969,0.39543964,0){0,0,0.52086505,0,0,0.43706793,0,0,0.32534352};
-VT(0.2,1,0,0.19528035,0.88414987,0,0.4,1,0){0,0,1.0361451,0,0,0.8102247,0,0,1.144558};
-VT(-1,-0.4,0,-0.88909151,-0.20108716,0,-1,-0.2,0){0,0,1.1449524,0,0,0.82235965,0,0,1.035932};
-VT(-0.18237993,-0.47217714,0,-0.13561503,-0.2979777,0,-0.29182364,-0.31445753,0){0,0,0.24651427,0,0,0.099810723,0,0,0.17552505};
-VT(-0.097376676,0.37012027,0,-0.28356559,0.29961254,0,-0.13062954,0.15354208,0){0,0,0.13384161,0,0,0.16152593,0,0,0.028273334};
-VT(0.4,0,0,0.28472232,0.147503,0,0.2,0,0){0,0,0.15186115,0,0,0.095759319,0,0,0.029318307};
-VT(-0.20237428,-0.094234203,0,-0.37726926,-0.17874311,0,-0.29182364,-0.31445753,0){0,0,0.035308585,0,0,0.16815028,0,0,0.17552505};
-VT(-0.31649602,0.11487776,0,-0.37982886,-0.033787755,0,-0.20237428,-0.094234203,0){0,0,0.10378379,0,0,0.14032754,0,0,0.035308585};
-VT(-0.13062954,0.15354208,0,-0.28356559,0.29961254,0,-0.31649602,0.11487776,0){0,0,0.028273334,0,0,0.16152593,0,0,0.10378379};
-VT(-0.48993004,-0.34456746,0,-0.35285213,-0.48044777,0,-0.29182364,-0.31445753,0){0,0,0.34565331,0,0,0.34856344,0,0,0.17552505};
-VT(0.30170882,0.31749481,0,0.48102844,0.36070204,0,0.37038152,0.50386299,0){0,0,0.18127988,0,0,0.35498666,0,0,0.38031894};
-VT(0.37038152,0.50386299,0,0.48833461,0.64651393,0,0.30679003,0.71918631,0){0,0,0.38031894,0,0,0.65057086,0,0,0.59405992};
-VT(-0.7261901,-0.30622169,0,-0.64504271,-0.48377429,0,-0.48993004,-0.34456746,0){0,0,0.60510213,0,0,0.64319256,0,0,0.34565331};
-VT(0,-1,0,-0.15018816,-0.84801006,0,-0.2,-1,0){0,0,0.99004705,0,0,0.7271253,0,0,1.0350883};
-VT(1,0.2,0,0.84793591,0.15031831,0,1,0,0){0,0,1.0350863,0,0,0.72705167,0,0,0.99001353};
-VT(0,-0.8,0,-0.15018816,-0.84801006,0,0,-1,0){0,0,0.63521318,0,0,0.7271253,0,0,0.99004705};
-VT(1,0,0,0.84793591,0.15031831,0,0.8,0,0){0,0,0.99001353,0,0,0.72705167,0,0,0.63526591};
-VT(1,1,0,0.84832091,0.84974074,0,1,0.8,0){0,0,1.9902232,0,0,1.4269182,0,0,1.6351217};
-VT(-0.8,-1,0,-0.84971248,-0.848268,0,-1,-1,0){0,0,1.6351469,0,0,1.4267533,0,0,1.9902184};
-VT(0.8,1,0,0.84832091,0.84974074,0,1,1,0){0,0,1.6350174,0,0,1.4269182,0,0,1.9902232};
-VT(-1,-1,0,-0.84971248,-0.848268,0,-1,-0.8,0){0,0,1.9902184,0,0,1.4267533,0,0,1.6350425};
-VT(-0.49398787,0.083343978,0,-0.45358265,0.24821429,0,-0.65243693,0.21794688,0){0,0,0.24306828,0,0,0.25954993,0,0,0.46262006};
-VT(-0.81500321,0.8168568,0,-0.86037128,0.61481672,0,-0.65294722,0.66226976,0){0,0,1.3205926,0,0,1.106042,0,0,0.85297032};
-VT(-0.65294722,0.66226976,0,-0.61026761,0.86248481,0,-0.81500321,0.8168568,0){0,0,0.85297032,0,0,1.1041067,0,0,1.3205926};
-VT(-0.31649602,0.11487776,0,-0.45358265,0.24821429,0,-0.49398787,0.083343978,0){0,0,0.10378379,0,0,0.25954993,0,0,0.24306828};
-VT(-1,0,0,-0.81920417,0.10649619,0,-1,0.2,0){0,0,0.98567746,0,0,0.67320716,0,0,1.0319964};
-VT(-0.2,1,0,-0.11821516,0.85398875,0,0,1,0){0,0,1.0333304,0,0,0.73703289,0,0,0.98599093};
-VT(-1,0.2,0,-0.84092818,0.27169996,0,-1,0.4,0){0,0,1.0319964,0,0,0.77335554,0,0,1.1437749};
-VT(-0.4,1,0,-0.26434268,0.85422499,0,-0.2,1,0){0,0,1.1445323,0,0,0.79358086,0,0,1.0333304};
-VT(-0.65243693,0.21794688,0,-0.45358265,0.24821429,0,-0.5562586,0.36467285,0){0,0,0.46262006,0,0,0.25954993,0,0,0.43706793};
-VT(-0.76457788,-0.080568783,0,-0.65059508,0.041512801,0,-0.81920417,0.10649619,0){0,0,0.58004414,0,0,0.41885836,0,0,0.67320716};
-VT(-0.81920417,0.10649619,0,-0.65059508,0.041512801,0,-0.65243693,0.21794688,0){0,0,0.67320716,0,0,0.41885836,0,0,0.46262006};
-VT(-0.11821516,0.85398875,0,-0.26434268,0.85422499,0,-0.18314711,0.69947345,0){0,0,0.73703289,0,0,0.79358086,0,0,0.51294111};
-VT(-0.65243693,0.21794688,0,-0.84092818,0.27169996,0,-0.81920417,0.10649619,0){0,0,0.46262006,0,0,0.77335554,0,0,0.67320716};
-VT(0.46505257,0.18920403,0,0.48102844,0.36070204,0,0.30170882,0.31749481,0){0,0,0.24153004,0,0,0.35498666,0,0,0.18127988};
-VT(0.30679003,0.71918631,0,0.48833461,0.64651393,0,0.50076357,0.81140902,0){0,0,0.59405992,0,0,0.65057086,0,0,0.90095104};
-VT(-0.81220583,-0.50021121,0,-0.64504271,-0.48377429,0,-0.7261901,-0.30622169,0){0,0,0.90166921,0,0,0.64319256,0,0,0.60510213};
-VT(-0.29182364,-0.31445753,0,-0.35285213,-0.48044777,0,-0.18237993,-0.47217714,0){0,0,0.17552505,0,0,0.34856344,0,0,0.24651427};
-VT(-0.28356559,0.29961254,0,-0.45358265,0.24821429,0,-0.31649602,0.11487776,0){0,0,0.16152593,0,0,0.25954993,0,0,0.10378379};
-VT(-0.48993004,-0.34456746,0,-0.37726926,-0.17874311,0,-0.5421228,-0.11260696,0){0,0,0.34565331,0,0,0.16815028,0,0,0.29334969};
-VT(-0.29182364,-0.31445753,0,-0.37726926,-0.17874311,0,-0.48993004,-0.34456746,0){0,0,0.17552505,0,0,0.16815028,0,0,0.34565331};
-VT(-0.4165969,0.39543964,0,-0.28356559,0.29961254,0,-0.28048336,0.5090566,0){0,0,0.32534352,0,0,0.16152593,0,0,0.32465226};
-VT(-0.28048336,0.5090566,0,-0.28356559,0.29961254,0,-0.097376676,0.37012027,0){0,0,0.32465226,0,0,0.16152593,0,0,0.13384161};
-VT(-0.49398787,0.083343978,0,-0.65059508,0.041512801,0,-0.5421228,-0.11260696,0){0,0,0.24306828,0,0,0.41885836,0,0,0.29334969};
-VT(-0.2,1,0,-0.26434268,0.85422499,0,-0.11821516,0.85398875,0){0,0,1.0333304,0,0,0.79358086,0,0,0.73703289};
-VT(-0.81920417,0.10649619,0,-0.84092818,0.27169996,0,-1,0.2,0){0,0,0.67320716,0,0,0.77335554,0,0,1.0319964};
-VT(-0.49398787,0.083343978,0,-0.37982886,-0.033787755,0,-0.31649602,0.11487776,0){0,0,0.24306828,0,0,0.14032754,0,0,0.10378379};
-VT(-0.5421228,-0.11260696,0,-0.37982886,-0.033787755,0,-0.49398787,0.083343978,0){0,0,0.29334969,0,0,0.14032754,0,0,0.24306828};
-VT(-0.28048336,0.5090566,0,-0.078017137,0.55659901,0,-0.18314711,0.69947345,0){0,0,0.32465226,0,0,0.30773002,0,0,0.51294111};
-VT(-0.097376676,0.37012027,0,-0.078017137,0.55659901,0,-0.28048336,0.5090566,0){0,0,0.13384161,0,0,0.30773002,0,0,0.32465226};
-VT(0,-0.2,0,-0.13561503,-0.2979777,0,0,-0.4,0){0,0,0.030108895,0,0,0.099810723,0,0,0.15276498};
-VT(-0.65243693,0.21794688,0,-0.65059508,0.041512801,0,-0.49398787,0.083343978,0){0,0,0.46262006,0,0,0.41885836,0,0,0.24306828};
-VT(-0.5562586,0.36467285,0,-0.45358265,0.24821429,0,-0.4165969,0.39543964,0){0,0,0.43706793,0,0,0.25954993,0,0,0.32534352};
-VT(-0.4165969,0.39543964,0,-0.45358265,0.24821429,0,-0.28356559,0.29961254,0){0,0,0.32534352,0,0,0.25954993,0,0,0.16152593};
-VT(-0.5421228,-0.11260696,0,-0.37726926,-0.17874311,0,-0.37982886,-0.033787755,0){0,0,0.29334969,0,0,0.16815028,0,0,0.14032754};
-VT(-0.37982886,-0.033787755,0,-0.37726926,-0.17874311,0,-0.20237428,-0.094234203,0){0,0,0.14032754,0,0,0.16815028,0,0,0.035308585};
-};
diff --git a/benchmarks/misc/lists.geo b/benchmarks/misc/lists.geo
deleted file mode 100644
index 00ec8b0bd746f9fcd6b5059e3a639f2bd5c354f7..0000000000000000000000000000000000000000
--- a/benchmarks/misc/lists.geo
+++ /dev/null
@@ -1,26 +0,0 @@
-
-a = 1;
-
-Printf("a = %g", a);
-
-b[] = {1,2,3};
-
-Printf("b = %g %g %g", b[{0:1}]);
-
-Printf("b[a] = %g", b[a]);
-
-Printf("b[b[0]] = %g", b[b[0]]);
-
-c[{1,2,3}] = {5,6,7} ;
-
-c[0] = 4 ;
-
-Printf("c = %g %g %g %g", c[]);
-
-c[{0:3}] = {-1,-2,-3,-4} ;
-
-Printf("c = %g %g %g %g", c[]);
-
-c[{b[]}] = {8,9,10} ;
-
-Printf("c = %g %g %g %g", c[]);
diff --git a/benchmarks/misc/loop.geo b/benchmarks/misc/loop.geo
deleted file mode 100644
index c6180d2cf1a804b69acdbdcae632e9a874326e86..0000000000000000000000000000000000000000
--- a/benchmarks/misc/loop.geo
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-This is a very simple control sequense
-with 2 imbricated loops
-*/
-
-For t In {0:1:0.1}
-  For x In {0:0.5:0.1}
-    Point(newp) = {t,x,0,.1};
-  EndFor
-EndFor
diff --git a/benchmarks/misc/strings.geo b/benchmarks/misc/strings.geo
deleted file mode 100644
index bb5dd362653002122ac028ed2620a71dabb9038e..0000000000000000000000000000000000000000
--- a/benchmarks/misc/strings.geo
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-Include "../../tutorial/view1.pos" ;
-
-View[0].Name = "gloups.prout" ;
-
-General.Trackball = 0 ;
-
-For num In {1:2}
-
-  General.RotationX += 10 ;
-
-  Print StrCat( StrPrefix(Sprintf(View[0].Name)) , Sprintf("-%g.jpg", num) ) ;
-
-  Draw ;
-
-EndFor
-
diff --git a/bin/Makefile b/bin/Makefile
deleted file mode 100644
index 50b1eb6c5d25cf026e46188da4b139e01fbaee63..0000000000000000000000000000000000000000
--- a/bin/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $Id: Makefile,v 1.1 2001-01-24 08:27:30 geuzaine Exp $
-
-RM        = rm
-RMFLAGS   = -f
-
diff --git a/demos/.gmsh-options b/demos/.gmsh-options
deleted file mode 100644
index 7e5388245b538cee4f299543a6b0937b99ab4d4c..0000000000000000000000000000000000000000
--- a/demos/.gmsh-options
+++ /dev/null
@@ -1,262 +0,0 @@
-// Gmsh Option File
-//
-// This file takes configuration options (preferences) that
-// should be loaded each time Gmsh is launched. You can create
-// this file by hand, or let Gmsh generate it for you (with
-// the 'Options->Save options' menu button). This file can
-// also be automatically regenerated every time you quit
-// Gmsh if the option 'General.SaveOptions' is set. If
-// this file isn't found, defaults are used.
-//
-//
-// General options
-//
-General.TextEditor = "emacs %s &"; // System command to launch a text editor
-General.InitialModule = 0; // Module launched on startup (0=automatic, 1=geometry, 2=mesh, 3=solver, 4=post-processing) 
-General.CenterWindows = 1; // Center new windows on the menu window
-General.Shininess = 0.4; // Material shininess (must be > 0)
-General.ColorScheme = 0; // Default color scheme (0, 1 or 2)
-General.Verbosity = 2; // Level of information printed during processing (0=no information)
-General.Terminal = 0; // Should information be printed on the terminal (if available)?
-General.Orthographic = 1; // Orthographic projection mode (0=perspective projection)
-General.FastRedraw = 1; // Fast redraw (no mesh or view display) when moving the model
-General.Axes = 0; // Display the axes linked to the model
-General.SmallAxes = 1; // Display the small axes
-General.DoubleBuffer = 1; // Use a double buffered graphic window (on Unix, should be set to 0 when working on a remote host without GLX)
-General.DisplayLists = 0; // Use OpenGL display lists (useful with real time manipulation of 'big' post-processing views)
-General.AlphaBlending = 0; // Enable alpha blending (transparency) in post-processing views
-General.Trackball = 1; // Use trackball rotation mode
-General.ZoomFactor = 1.1; // 'Speed' of the middle mouse button zoom
-General.DefaultPlugins = 0; // Load default plugins on startup
-General.MovingLight = 0; // Use a moving (i.e. which follows the model) light source
-General.Light0 = 1; // Enable light source 0
-General.Light0X = 0.5; // X position of light source 0
-General.Light0Y = 0.3; // Y position of light source 0
-General.Light0Z = 1; // Z position of light source 0
-General.Light1 = 0; // Enable light source 1
-General.Light1X = 0.5; // X position of light source 1
-General.Light1Y = 0.3; // Y position of light source 1
-General.Light1Z = 1; // Z position of light source 1
-General.Light2 = 0; // Enable light source 2
-General.Light2X = 0.5; // X position of light source 2
-General.Light2Y = 0.3; // Y position of light source 2
-General.Light2Z = 1; // Z position of light source 2
-General.Light3 = 0; // Enable light source 3
-General.Light3X = 0.5; // X position of light source 3
-General.Light3Y = 0.3; // Y position of light source 3
-General.Light3Z = 1; // Z position of light source 3
-General.Light4 = 0; // Enable light source 4
-General.Light4X = 0.5; // X position of light source 4
-General.Light4Y = 0.3; // Y position of light source 4
-General.Light4Z = 1; // Z position of light source 4
-General.Light5 = 0; // Enable light source 5
-General.Light5X = 0.5; // X position of light source 5
-General.Light5Y = 0.3; // Y position of light source 5
-General.Light5Z = 1; // Z position of light source 5
-General.Color.Background = {120,120,120}; // Background color
-General.Color.Foreground = {255,255,255}; // Foreground color
-General.Color.Text = {255,255,255}; // Text color
-General.Color.Axes = {255,255,0}; // Axes color
-General.Color.SmallAxes = {255,255,255}; // Small axes color
-//
-// Geometry options
-//
-Geometry.Normals = 0; // Size of the vectors normal to the surfaces
-Geometry.Tangents = 0; // Size of the vectors tangent to the curves
-Geometry.Points = 1; // Display geometry points?
-Geometry.Lines = 1; // Display geometry curves?
-Geometry.Surfaces = 0; // Display geometry surfaces?
-Geometry.Volumes = 0; // Display geometry volumes? (not implemented yet)
-Geometry.PointsNumbers = 1; // Display points numbers?
-Geometry.LinesNumbers = 0; // Display curve numbers?
-Geometry.SurfacesNumbers = 0; // Display surface numbers?
-Geometry.VolumesNumbers = 0; // Display volume numbers? (not implemented yet)
-Geometry.Aspect = 0; // Not used
-Geometry.Highlight = 0; // Not used
-Geometry.OldCircle = 0; // Use old circle description (compatibility option for old Gmsh geometries)
-Geometry.ScalingFactor = 1; // Global geometry scaling factor
-Geometry.ColorScheme = 0; // Default geometry color scheme (0, 1 or 2)
-Geometry.Color.Points = {255,119,0}; // Normal geometry point color
-Geometry.Color.Lines = {0,0,255}; // Normal geometry curve color
-Geometry.Color.Surfaces = {196,196,196}; // Normal geometry surface color
-Geometry.Color.Volumes = {128,128,128}; // Normal geometry volume color
-Geometry.Color.PointsSelect = {255,0,0}; // Selected geometry point color
-Geometry.Color.LinesSelect = {255,0,0}; // Selected geometry curve color
-Geometry.Color.SurfacesSelect = {255,0,0}; // Selected geometry surface color
-Geometry.Color.VolumesSelect = {255,0,0}; // Selected geometry volume color
-Geometry.Color.PointsHighlight = {0,255,0}; // Highlighted geometry point color
-Geometry.Color.LinesHighlight = {0,0,255}; // Highlighted geometry curve color
-Geometry.Color.SurfacesHighlight = {128,128,128}; // Highlighted geometry surface color
-Geometry.Color.VolumesHighlight = {128,128,128}; // Highlighted geometry volume color
-Geometry.Color.Tangents = {255,255,0}; // Tangent geometry vectors color
-Geometry.Color.Normals = {255,0,0}; // Normal geometry vectors color
-//
-// Mesh options
-//
-Mesh.Quality = 0; // Target quality for tetrahedral elements (not fully functional)
-Mesh.Normals = 0; // Size of the normal vectors
-Mesh.Tangents = 0; // Size of the tangent vectors
-Mesh.Explode = 1; // Display mesh with non adjacent elements (factor between 0 and 1)
-Mesh.ScalingFactor = 1; // Global scaling factor applied to the saved mesh
-Mesh.CharacteristicLengthFactor = 1; // Factor applied to all charcteristic lenghts (and background meshes)
-Mesh.RandomFactor = 0.0001; // Random factor used in 2D and 3D meshing algorithm (test other values when the algorithm fails)
-Mesh.GammaInf = 0; // Only display elements whose Gamma factor is greater than GammaInf
-Mesh.GammaSup = 0; // Only display elements whose Gamma factor is smaller than GammaSup
-Mesh.RadiusInf = 0; // Only display elements whose Radius is greater than RadiusInf
-Mesh.RadiusSup = 0; // Only display elements whose Radius is smaller than RadiusSup
-Mesh.Points = 1; // Display mesh vertices?
-Mesh.Lines = 1; // Display mesh vertices on curves?
-Mesh.Surfaces = 1; // Display surface mesh?
-Mesh.Volumes = 1; // Display volume mesh?
-Mesh.PointsNumbers = 0; // Display mesh vertices numbers?
-Mesh.LinesNumbers = 0; // Display mesh line numbers?
-Mesh.SurfacesNumbers = 0; // Display mesh surface numbers?
-Mesh.VolumesNumbers = 0; // Display mesh elements numbers?
-Mesh.Aspect = 0; // Mesh apsect (0=wireframe, 1=hidden lines, 2=solid)
-Mesh.Format = 1; // Mesh output format (1=MSH, 2=UNV)
-Mesh.Smoothing = 0; // Number of smoothing steps applied to the final mesh
-Mesh.Algorithm = 1; // 2D mesh algorithm (1=isotropic, 2=anisotropic)
-Mesh.PointInsertion = 1; // Point insertion method for isotropic 2D algorithm (1=center of circ. circle, 2=voronoi, 3=cog)
-Mesh.SpeedMax = 0; // Disable dubious point insertion tests
-Mesh.MinimumCirclePoints = 7; // Minimum number of points used to mesh a circle
-Mesh.ConstrainedBackgroundMesh = 0; // Should the background mesh be constrained by the characteristic lengths associated with the geometry?
-Mesh.Degree = 1; // Element order
-Mesh.Dual = 0; // Display the dual mesh obtained by barycentric subdivision
-Mesh.Interactive = 0; // Show the construction of the 2D mesh in real time (only with the anisotropic algorithm)
-Mesh.ColorScheme = 0; // Default mesh color scheme (0, 1 or 2)
-Mesh.ColorCarousel = 1; // Use a 'color by region number' scheme
-Mesh.Color.Points = {0,123,59}; // Mesh vertex color
-Mesh.Color.PointsSupp = {255,0,255}; // Mesh high order vertex color
-Mesh.Color.Lines = {0,255,0}; // Mesh line color
-Mesh.Color.Triangles = {160,150,255}; // Mesh triangle color (if ColorCarousel=0)
-Mesh.Color.Quadrangles = {130,120,225}; // Mesh quadrangle color (if ColorCarousel=0)
-Mesh.Color.Tetrahedra = {160,150,255}; // Mesh tetrahedron color (if ColorCarousel=0)
-Mesh.Color.Hexahedra = {130,120,225}; // Mesh hexahedron color (if ColorCarousel=0)
-Mesh.Color.Prisms = {232,210,23}; // Mesh prism color (if ColorCarousel=0)
-Mesh.Color.Pyramids = {217,113,38}; // Mesh pyramid color (if ColorCarousel=0)
-Mesh.Color.Normals = {128,128,128}; // Normal mesh vector color
-Mesh.Color.Tangents = {128,128,128}; // Tangent mesh vector color
-Mesh.Color.One = {232,210,23}; // First color in color carousel
-Mesh.Color.Two = {226,167,29}; // Second color in color carousel
-Mesh.Color.Three = {217,113,38}; // Third color in color carousel
-Mesh.Color.Four = {201,54,54}; // Fourth color in color carousel
-Mesh.Color.Five = {169,12,86}; // Fifth color in color carousel
-Mesh.Color.Six = {114,2,141}; // Sixth color in color carousel
-Mesh.Color.Seven = {67,30,188}; // Seventh color in color carousel
-Mesh.Color.Eight = {44,86,211}; // Eighth color in color carousel
-Mesh.Color.Nine = {32,145,223}; // Nitnth color in color carousel
-Mesh.Color.Ten = {25,193,230}; // tenth color in color carousel
-//
-// Solver options
-//
-Solver.GetDPCommand = "getdp"; // System command to launch the GetDP solver (should _not_ contain the '&' character)
-Solver.GetDPPopupMessages = 1; // Automatically display GetDP messages
-Solver.GetDPMergeViews = 1; // Automatically merge any post-processing view created by GetDP
-//
-// Post-processing options
-//
-PostProcessing.Scales = 1; // Show value scales
-PostProcessing.Link = 0; // Link post-processing views (0=no, 1=visible views, 2=all views)
-PostProcessing.Smoothing = 0; // Apply (non-reversible) smoothing to post-processing view when merged
-PostProcessing.AnimationDelay = 0.25; // Delay (in seconds) between to animation frames
-//
-// View options
-//
-View.Format = "%.3e"; // Number format (in standard C form)
-View.ArrowScale = 50; // Size of the vector (e.g. arrow size in pixels)
-View.IntervalsType = 2; // Type of interval display (1=iso, 2=discrete, 3=continuous, 4=numeric)
-View.NbIso = 15; // Number of intervals
-View.Light = 0; // Enable light sources?
-View.ShowElement = 0; // Show element boundaries?
-View.ShowTime = 1; // Show time value (or time step) if NbTimeStep > 1?
-View.ShowScale = 1; // Show value scale?
-View.DrawPoints = 1; // Display post-processing points?
-View.DrawLines = 1; // Display post-processing lines?
-View.DrawTriangles = 1; // Display post-processing triangles?
-View.DrawTetrahedra = 1; // Display post-processing tetrahedra?
-View.DrawScalars = 1; // Display scalar values?
-View.DrawVectors = 1; // Display vector values?
-View.DrawTensors = 1; // Display tensor values?
-View.TransparentScale = 1; // Display a 'transparent' value scale?
-View.ScaleType = 1; // Value scale type (1=linear, 2=logarithmic)
-View.RangeType = 1; // Value scale range type (1=default, 2=custom)
-View.ArrowType = 2; // Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)
-View.ArrowLocation = 1; // Arrow location (1=cog, 2=vertex)
-View.ColorTable = {
-{17, 246, 238, 255}, {17, 246, 238, 255}, {17, 245, 238, 255}, {17, 245, 238, 255}, 
-{17, 244, 238, 255}, {17, 244, 238, 255}, {18, 243, 237, 255}, {18, 243, 237, 255}, 
-{18, 242, 237, 255}, {18, 241, 237, 255}, {18, 241, 237, 255}, {18, 240, 237, 255}, 
-{18, 239, 237, 255}, {19, 238, 236, 255}, {19, 238, 236, 255}, {19, 237, 236, 255}, 
-{19, 236, 236, 255}, {19, 235, 236, 255}, {19, 234, 236, 255}, {19, 233, 236, 255}, 
-{20, 232, 235, 255}, {20, 231, 235, 255}, {20, 230, 235, 255}, {20, 229, 235, 255}, 
-{20, 228, 235, 255}, {21, 227, 234, 255}, {21, 225, 234, 255}, {21, 224, 234, 255}, 
-{21, 223, 234, 255}, {21, 222, 234, 255}, {22, 220, 233, 255}, {22, 219, 233, 255}, 
-{22, 217, 233, 255}, {22, 216, 233, 255}, {22, 214, 233, 255}, {23, 213, 232, 255}, 
-{23, 211, 232, 255}, {23, 209, 232, 255}, {23, 207, 232, 255}, {24, 206, 231, 255}, 
-{24, 204, 231, 255}, {24, 202, 231, 255}, {24, 200, 231, 255}, {25, 198, 230, 255}, 
-{25, 196, 230, 255}, {25, 194, 230, 255}, {25, 192, 230, 255}, {26, 189, 229, 255}, 
-{26, 187, 229, 255}, {26, 185, 229, 255}, {27, 183, 228, 255}, {27, 180, 228, 255}, 
-{27, 178, 228, 255}, {28, 175, 227, 255}, {28, 173, 227, 255}, {28, 170, 227, 255}, 
-{29, 168, 226, 255}, {29, 165, 226, 255}, {30, 162, 225, 255}, {30, 159, 225, 255}, 
-{30, 157, 225, 255}, {31, 154, 224, 255}, {31, 151, 224, 255}, {32, 148, 223, 255}, 
-{32, 145, 223, 255}, {32, 142, 223, 255}, {33, 139, 222, 255}, {33, 136, 222, 255}, 
-{34, 133, 221, 255}, {34, 130, 221, 255}, {35, 127, 220, 255}, {35, 124, 220, 255}, 
-{36, 121, 219, 255}, {37, 118, 218, 255}, {37, 115, 218, 255}, {38, 112, 217, 255}, 
-{38, 108, 217, 255}, {39, 105, 216, 255}, {40, 102, 215, 255}, {40, 99, 215, 255}, 
-{41, 96, 214, 255}, {42, 93, 213, 255}, {43, 89, 212, 255}, {43, 86, 212, 255}, 
-{44, 83, 211, 255}, {45, 80, 210, 255}, {46, 77, 209, 255}, {47, 74, 208, 255}, 
-{48, 71, 207, 255}, {49, 68, 206, 255}, {50, 65, 205, 255}, {51, 62, 204, 255}, 
-{52, 59, 203, 255}, {53, 56, 202, 255}, {54, 53, 201, 255}, {56, 50, 199, 255}, 
-{57, 47, 198, 255}, {58, 45, 197, 255}, {59, 42, 196, 255}, {61, 40, 194, 255}, 
-{62, 37, 193, 255}, {64, 35, 191, 255}, {65, 32, 190, 255}, {67, 30, 188, 255}, 
-{69, 28, 186, 255}, {71, 25, 184, 255}, {72, 23, 183, 255}, {74, 21, 181, 255}, 
-{76, 19, 179, 255}, {78, 17, 177, 255}, {81, 16, 174, 255}, {83, 14, 172, 255}, 
-{85, 12, 170, 255}, {87, 11, 168, 255}, {90, 9, 165, 255}, {92, 8, 163, 255}, 
-{95, 7, 160, 255}, {98, 6, 157, 255}, {100, 5, 155, 255}, {103, 4, 152, 255}, 
-{106, 3, 149, 255}, {109, 2, 146, 255}, {112, 2, 143, 255}, {115, 1, 140, 255}, 
-{118, 1, 137, 255}, {121, 1, 134, 255}, {124, 1, 131, 255}, {127, 0, 127, 255}, 
-{131, 1, 124, 255}, {134, 1, 121, 255}, {137, 1, 118, 255}, {140, 1, 115, 255}, 
-{143, 2, 112, 255}, {146, 2, 109, 255}, {149, 3, 106, 255}, {152, 4, 103, 255}, 
-{155, 5, 100, 255}, {157, 6, 98, 255}, {160, 7, 95, 255}, {163, 8, 92, 255}, 
-{165, 9, 90, 255}, {168, 11, 87, 255}, {170, 12, 85, 255}, {172, 14, 83, 255}, 
-{174, 16, 81, 255}, {177, 17, 78, 255}, {179, 19, 76, 255}, {181, 21, 74, 255}, 
-{183, 23, 72, 255}, {184, 25, 71, 255}, {186, 28, 69, 255}, {188, 30, 67, 255}, 
-{190, 32, 65, 255}, {191, 35, 64, 255}, {193, 37, 62, 255}, {194, 40, 61, 255}, 
-{196, 42, 59, 255}, {197, 45, 58, 255}, {198, 47, 57, 255}, {199, 50, 56, 255}, 
-{201, 53, 54, 255}, {202, 56, 53, 255}, {203, 59, 52, 255}, {204, 62, 51, 255}, 
-{205, 65, 50, 255}, {206, 68, 49, 255}, {207, 71, 48, 255}, {208, 74, 47, 255}, 
-{209, 77, 46, 255}, {210, 80, 45, 255}, {211, 83, 44, 255}, {212, 86, 43, 255}, 
-{212, 89, 43, 255}, {213, 93, 42, 255}, {214, 96, 41, 255}, {215, 99, 40, 255}, 
-{215, 102, 40, 255}, {216, 105, 39, 255}, {217, 108, 38, 255}, {217, 112, 38, 255}, 
-{218, 115, 37, 255}, {218, 118, 37, 255}, {219, 121, 36, 255}, {220, 124, 35, 255}, 
-{220, 127, 35, 255}, {221, 130, 34, 255}, {221, 133, 34, 255}, {222, 136, 33, 255}, 
-{222, 139, 33, 255}, {223, 142, 32, 255}, {223, 145, 32, 255}, {223, 148, 32, 255}, 
-{224, 151, 31, 255}, {224, 154, 31, 255}, {225, 157, 30, 255}, {225, 159, 30, 255}, 
-{225, 162, 30, 255}, {226, 165, 29, 255}, {226, 168, 29, 255}, {227, 170, 28, 255}, 
-{227, 173, 28, 255}, {227, 175, 28, 255}, {228, 178, 27, 255}, {228, 180, 27, 255}, 
-{228, 183, 27, 255}, {229, 185, 26, 255}, {229, 187, 26, 255}, {229, 189, 26, 255}, 
-{230, 192, 25, 255}, {230, 194, 25, 255}, {230, 196, 25, 255}, {230, 198, 25, 255}, 
-{231, 200, 24, 255}, {231, 202, 24, 255}, {231, 204, 24, 255}, {231, 206, 24, 255}, 
-{232, 207, 23, 255}, {232, 209, 23, 255}, {232, 211, 23, 255}, {232, 213, 23, 255}, 
-{233, 214, 22, 255}, {233, 216, 22, 255}, {233, 217, 22, 255}, {233, 219, 22, 255}, 
-{233, 220, 22, 255}, {234, 222, 21, 255}, {234, 223, 21, 255}, {234, 224, 21, 255}, 
-{234, 225, 21, 255}, {234, 227, 21, 255}, {235, 228, 20, 255}, {235, 229, 20, 255}, 
-{235, 230, 20, 255}, {235, 231, 20, 255}, {235, 232, 20, 255}, {236, 233, 19, 255}, 
-{236, 234, 19, 255}, {236, 235, 19, 255}, {236, 236, 19, 255}, {236, 237, 19, 255}, 
-{236, 238, 19, 255}, {236, 238, 19, 255}, {237, 239, 18, 255}, {237, 240, 18, 255}, 
-{237, 241, 18, 255}, {237, 241, 18, 255}, {237, 242, 18, 255}, {237, 243, 18, 255}, 
-{237, 243, 18, 255}, {238, 244, 17, 255}, {238, 244, 17, 255}, {238, 245, 17, 255}, 
-{238, 245, 17, 255}, {238, 246, 17, 255}, {238, 246, 17, 255}
-};
-//
-// Print options
-//
-Print.Font = "Courier"; // Font used for postscript printing
-Print.Format = 10; // Print format
-Print.EpsQuality = 2; // Postscript quality (1=simple sort, 2=recursive sort)
-Print.JpegQuality = 85; // JPEG quality (between 1 and 100)
-Print.GifDither = 0; // Apply dithering to GIF output
-Print.GifSort = 1; // Sort the colormap in GIF output
-Print.GifInterlace = 0; // Interlace GIF output
-Print.GifTransparent = 0; // Output transparent GIF image
-Print.FontSize = 12; // Font size used for postscript printing
diff --git a/demos/anim-all.script b/demos/anim-all.script
deleted file mode 100644
index ed8c417de65a0186f411ccf8a27bea316c0eddc6..0000000000000000000000000000000000000000
--- a/demos/anim-all.script
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// Animate all views (together) and save the animation as a 320x240
-// mpeg and a 320x240 animated gif
-// 
-// Requirements: mpeg_encode, whirlgif and a UNIX shell
-//
-// Output: anim.mpg and anim.gif
-//
-
-General.GraphicsWidth = 320 ; 
-General.GraphicsHeight = 240 ;
-
-For i In {1:View[0].NbTimeStep}
-
-  Draw;
-  If (i < 10)
-    Print Sprintf("anim-00%g.jpg", i);
-    Print Sprintf("anim-00%g.gif", i);
-  EndIf
-  If (i >= 10 && i < 100)
-    Print Sprintf("anim-0%g.jpg", i);
-    Print Sprintf("anim-0%g.gif", i);
-  EndIf
-  If (i >= 100)
-    Print Sprintf("anim-%g.jpg", i);
-    Print Sprintf("anim-%g.gif", i);
-  EndIf
-
-  For j In {1:PostProcessing.NbViews}
-    View[j-1].TimeStep++;
-  EndFor
-
-EndFor
-
-// create the parameter file for mpeg_encode
-
-System 'echo "PATTERN          I"               > anim.par' ;
-System 'echo "BASE_FILE_FORMAT JPEG"           >> anim.par' ;
-System 'echo "GOP_SIZE         30"             >> anim.par' ;
-System 'echo "SLICES_PER_FRAME 1"              >> anim.par' ;
-System 'echo "PIXEL            HALF"           >> anim.par' ;
-System 'echo "RANGE            10"             >> anim.par' ;
-System 'echo "PSEARCH_ALG      TWOLEVEL"       >> anim.par' ;
-System 'echo "BSEARCH_ALG      CROSS2"         >> anim.par' ;
-System 'echo "IQSCALE          8"              >> anim.par' ;
-System 'echo "PQSCALE          10"             >> anim.par' ;
-System 'echo "BQSCALE          25"             >> anim.par' ;
-System 'echo "REFERENCE_FRAME  ORIGINAL"       >> anim.par' ;
-System 'echo "OUTPUT           anim.mpg"       >> anim.par' ;
-System 'echo "INPUT_CONVERT    *"              >> anim.par' ;
-System 'echo "INPUT_DIR        ."              >> anim.par' ;
-System 'echo "INPUT"                           >> anim.par' ;
-If (View[0].NbTimeStep < 10)
-  System Sprintf('echo "anim-*.jpg [001-00%g]" >> anim.par', View[0].NbTimeStep) ;
-EndIf
-If (View[0].NbTimeStep >= 10 && View[0].NbTimeStep < 100)
-  System Sprintf('echo "anim-*.jpg [001-0%g]"  >> anim.par', View[0].NbTimeStep) ;
-EndIf
-If (View[0].NbTimeStep >= 100)
-  System Sprintf('echo "anim-*.jpg [001-%g]"   >> anim.par', View[0].NbTimeStep) ;
-EndIf
-System 'echo "END_INPUT"                       >> anim.par' ;
-
-// Call mpeg_encode
-
-System "mpeg_encode anim.par" ;
-
-// Call whirlgif
-
-System "whirlgif -loop -o anim.gif anim-*.gif" ;
-
-// Clean-up all temp files
-
-System "rm -f anim-*.gif" ;
-System "rm -f anim-*.jpg" ;
-System "rm -f anim.par" ;
-
-// One could also rename the output files with the view name
-
-// System StrCat( StrCat("mv anim.gif ", Sprintf(View[0].Name)), ".gif");
-// System StrCat( StrCat("mv anim.mpg ", Sprintf(View[0].Name)), ".mpg");
-
diff --git a/demos/anim-seq.script b/demos/anim-seq.script
deleted file mode 100644
index ffa53f3b6b969ce142549e058eb29914bde0d467..0000000000000000000000000000000000000000
--- a/demos/anim-seq.script
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// Animate all views (sequentially) and save the animation as a
-// 320x240 mpeg and a 320x240 animated gif
-// 
-// Requirements: mpeg_encode, whirlgif and a UNIX shell
-//
-// Output: anim.mpg and anim.gif
-//
-
-General.GraphicsWidth = 320 ; 
-General.GraphicsHeight = 240 ;
-
-// Hide all views
-
-For i In {1:PostProcessing.NbViews}
-  View[i-1].Visible = 0;
-EndFor
-
-// Loop on all views
-
-index = 0;
-
-For i In {1:PostProcessing.NbViews}
-
-  // Display view i-1
-
-  View[i-1].Visible = 1;
-
-  // Loop on all solutions in view i-1
-
-  For j In {1:View[i-1].NbTimeStep}
-
-    index++;
-    Draw;
-    If (index < 10)
-      Print Sprintf("anim-00%g.jpg", index);
-      Print Sprintf("anim-00%g.gif", index);
-    EndIf
-    If (index >= 10 && index < 100)
-      Print Sprintf("anim-0%g.jpg", index);
-      Print Sprintf("anim-0%g.gif", index);
-    EndIf
-    If (index >= 100)
-      Print Sprintf("anim-%g.jpg", index);
-      Print Sprintf("anim-%g.gif", index);
-    EndIf
-    View[i-1].TimeStep++;
-
-  EndFor
-
-  View[i-1].Visible = 0;
-
-EndFor
-
-// create the parameter file for mpeg_encode
-
-System 'echo "PATTERN          I"               > anim.par' ;
-System 'echo "BASE_FILE_FORMAT JPEG"           >> anim.par' ;
-System 'echo "GOP_SIZE         30"             >> anim.par' ;
-System 'echo "SLICES_PER_FRAME 1"              >> anim.par' ;
-System 'echo "PIXEL            HALF"           >> anim.par' ;
-System 'echo "RANGE            10"             >> anim.par' ;
-System 'echo "PSEARCH_ALG      TWOLEVEL"       >> anim.par' ;
-System 'echo "BSEARCH_ALG      CROSS2"         >> anim.par' ;
-System 'echo "IQSCALE          8"              >> anim.par' ;
-System 'echo "PQSCALE          10"             >> anim.par' ;
-System 'echo "BQSCALE          25"             >> anim.par' ;
-System 'echo "REFERENCE_FRAME  ORIGINAL"       >> anim.par' ;
-System 'echo "OUTPUT           anim.mpg"       >> anim.par' ;
-System 'echo "INPUT_CONVERT    *"              >> anim.par' ;
-System 'echo "INPUT_DIR        ."              >> anim.par' ;
-System 'echo "INPUT"                           >> anim.par' ;
-If (index < 10)
-  System Sprintf('echo "anim-*.jpg [001-00%g]" >> anim.par', index) ;
-EndIf
-If (index >= 10 && index < 100)
-  System Sprintf('echo "anim-*.jpg [001-0%g]"  >> anim.par', index) ;
-EndIf
-If (index >= 100)
-  System Sprintf('echo "anim-*.jpg [001-%g]"   >> anim.par', index) ;
-EndIf
-System 'echo "END_INPUT"                       >> anim.par' ;
-
-// Call mpeg_encode
-
-System "mpeg_encode anim.par" ;
-
-// Call whirlgif
-
-System "whirlgif -loop -o anim.gif anim-*.gif" ;
-
-// Clean-up all temp files
-
-System "rm -f anim-*.gif" ;
-System "rm -f anim-*.jpg" ;
-System "rm -f anim.par" ;
-
diff --git a/demos/antenna.geo b/demos/antenna.geo
deleted file mode 100644
index f1f6430bd6b26e57107cdbdd4c2420f0c5090cdc..0000000000000000000000000000000000000000
--- a/demos/antenna.geo
+++ /dev/null
@@ -1,194 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-/*
-  The two longitudinal bars
-*/
-
-f4 = 0.6 ; 
-f5 = 1.33 ; 
-
-xmin =-27.e-3 ;
-LL   = 1821.3e-3 ; 
-ll   = 20.e-3 ; 
-hh   = 20.e-3 ;
-dc   = 8.e-3 ;
-em   = 8.e-3/2 ; 
-eM   = 40.e-3/2 ;
-t    = ArcTan(eM/2-em/2/LL) ;
-
-Point(1) = {xmin, -em-hh, -ll/2, f4*ll/2} ; Point(5) = {xmin, em, -ll/2, f4*ll/2} ; 
-Point(2) = {xmin, -em-hh,  ll/2, f4*ll/2} ; Point(6) = {xmin, em,  ll/2, f4*ll/2} ; 
-Point(3) = {xmin, -em,    -ll/2, f4*ll/2} ; Point(7) = {xmin, em+hh, -ll/2, f4*ll/2} ; 
-Point(4) = {xmin, -em,     ll/2, f4*ll/2} ; Point(8) = {xmin, em+hh,  ll/2, f4*ll/2} ; 
-
-Point(9)  = {xmin+LL, -eM-hh, -ll/2, f5*ll/2} ; Point(13) = {xmin+LL, eM, -ll/2, f5*ll/2} ; 
-Point(10) = {xmin+LL, -eM-hh,  ll/2, f5*ll/2} ; Point(14) = {xmin+LL, eM,  ll/2, f5*ll/2} ; 
-Point(11) = {xmin+LL, -eM,    -ll/2, f5*ll/2} ; Point(15) = {xmin+LL, eM+hh, -ll/2, f5*ll/2} ; 
-Point(12) = {xmin+LL, -eM,     ll/2, f5*ll/2} ; Point(16) = {xmin+LL, eM+hh,  ll/2, f5*ll/2} ; 
-
-Line(1) = {5,6};  Line(11) = {13,14};
-Line(2) = {6,8};  Line(12) = {14,16};
-Line(3) = {8,7};  Line(13) = {16,15};
-Line(4) = {7,5};  Line(14) = {15,13};
-Line(5) = {1,2};  Line(15) = {9,10}; 
-Line(6) = {2,4};  Line(16) = {10,12};
-Line(7) = {4,3};  Line(17) = {12,11};
-Line(8) = {3,1};  Line(18) = {11,9}; 
-Line(9) = {4,6};  Line(19) = {12,14};
-Line(10) = {3,5}; Line(20) = {11,13};
-
-Line(21) = {8,16}; Line(25) = {2,10}; 
-Line(22) = {7,15}; Line(26) = {4,12}; 
-Line(23) = {6,14}; Line(27) = {3,11}; 
-Line(24) = {5,13}; Line(28) = {1,9};  
-
-/* 
-   The 22 resonators
-*/
-
-f1 = 2 ; f2 = 3.5 ; f3 = 5 ;
-
-// length             ;  radius        ; dist % 1st bar  ; dist % y=0                   ; charact. length
- l1 =   77.e-3/2-ll/2 ;  r1 =  8.e-3/2 ;  d1 =         0 ;  e1 = em+dc+d1*Sin(t)-2.e-3  ;  s1 = f1*r1 ;
- l2 =   91.e-3/2-ll/2 ;  r2 =  8.e-3/2 ;  d2 =   11.9e-3 ;  e2 = em+dc+d2*Sin(t)-2.e-3  ;  s2 = f1*r2 ;
- l3 =  105.e-3/2-ll/2 ;  r3 =  8.e-3/2 ;  d3 =   25.8e-3 ;  e3 = em+dc+d3*Sin(t)-2.e-3  ;  s3 = f1*r3 ;
- l4 =  122.e-3/2-ll/2 ;  r4 =  8.e-3/2 ;  d4 =   41.8e-3 ;  e4 = em+dc+d4*Sin(t)-2.e-3  ;  s4 = f1*r4 ;
- l5 =  142.e-3/2-ll/2 ;  r5 = 10.e-3/2 ;  d5 =   60.5e-3 ;  e5 = em+dc+d5*Sin(t)-1.e-3  ;  s5 = f1*r5 ;
- l6 =  164.e-3/2-ll/2 ;  r6 = 10.e-3/2 ;  d6 =   82.5e-3 ;  e6 = em+dc+d6*Sin(t)-1.e-3  ;  s6 = f1*r6 ;
- l7 =  192.e-3/2-ll/2 ;  r7 = 12.e-3/2 ;  d7 =  107.0e-3 ;  e7 = em+dc+d7*Sin(t)        ;  s7 = f1*r7 ;
- l8 =  224.e-3/2-ll/2 ;  r8 = 12.e-3/2 ;  d8 =  138.5e-3 ;  e8 = em+dc+d8*Sin(t)        ;  s8 = f1*r8 ;
- l9 =  260.e-3/2-ll/2 ;  r9 = 12.e-3/2 ;  d9 =  172.0e-3 ;  e9 = em+dc+d9*Sin(t)        ;  s9 = f1*r9 ;
-l10 =  303.e-3/2-ll/2 ; r10 = 12.e-3/2 ; d10 =  212.0e-3 ; e10 = em+dc+d10*Sin(t)       ; s10 = f1*r10 ;
-l11 =  353.e-3/2-ll/2 ; r11 = 12.e-3/2 ; d11 =  258.5e-3 ; e11 = em+dc+d11*Sin(t)       ; s11 = f1*r11 ;
-l12 =  410.e-3/2-ll/2 ; r12 = 12.e-3/2 ; d12 =  312.5e-3 ; e12 = em+dc+d12*Sin(t)       ; s12 = f1*r12 ;
-l13 =  477.e-3/2-ll/2 ; r13 = 12.e-3/2 ; d13 =  375.0e-3 ; e13 = em+dc+d13*Sin(t)       ; s13 = f1*r13 ;
-l14 =  554.e-3/2-ll/2 ; r14 = 12.e-3/2 ; d14 =  448.5e-3 ; e14 = em+dc+d14*Sin(t)       ; s14 = f1*r14 ;
-l15 =  645.e-3/2-ll/2 ; r15 = 12.e-3/2 ; d15 =  533.0e-3 ; e15 = em+dc+d15*Sin(t)       ; s15 = f1*r15 ;
-l16 =  749.e-3/2-ll/2 ; r16 = 12.e-3/2 ; d16 =  632.5e-3 ; e16 = em+dc+d16*Sin(t)       ; s16 = f1*r16 ;
-l17 =  877.e-3/2-ll/2 ; r17 = 12.e-3/2 ; d17 =  750.5e-3 ; e17 = em+dc+d17*Sin(t)       ; s17 = f2*r17 ;
-l18 = 1023.e-3/2-ll/2 ; r18 = 12.e-3/2 ; d18 =  888.0e-3 ; e18 = em+dc+d18*Sin(t)       ; s18 = f2*r18 ;
-l19 = 1196.e-3/2-ll/2 ; r19 = 12.e-3/2 ; d19 = 1050.3e-3 ; e19 = em+dc+d19*Sin(t)       ; s19 = f3*r19 ;
-l20 = 1404.e-3/2-ll/2 ; r20 = 12.e-3/2 ; d20 = 1241.7e-3 ; e20 = em+dc+d20*Sin(t)       ; s20 = f3*r20 ;
-l21 = 1648.e-3/2-ll/2 ; r21 = 12.e-3/2 ; d21 = 1467.7e-3 ; e21 = em+dc+d21*Sin(t)       ; s21 = f3*r21 ;
-l22 = 1934.e-3/2-ll/2 ; r22 = 12.e-3/2 ; d22 = 1734.3e-3 ; e22 = em+dc+d22*Sin(t)       ; s22 = f3*r22 ;
-
-dx = d1 ; rx = r1 ; sx = s1 ; lx = l1 ; e = e1 ; x = 100; Include "antenna.i1" ;
-dx = d2 ; rx = r2 ; sx = s2 ; lx = l2 ; e =-e2 ; x = 200; Include "antenna.i1" ;
-dx = d3 ; rx = r3 ; sx = s3 ; lx = l3 ; e = e3 ; x = 300; Include "antenna.i1" ;
-dx = d4 ; rx = r4 ; sx = s4 ; lx = l4 ; e =-e4 ; x = 400; Include "antenna.i1" ;
-dx = d5 ; rx = r5 ; sx = s5 ; lx = l5 ; e = e5 ; x = 500; Include "antenna.i1" ;
-dx = d6 ; rx = r6 ; sx = s6 ; lx = l6 ; e =-e6 ; x = 600; Include "antenna.i1" ;
-dx = d7 ; rx = r7 ; sx = s7 ; lx = l7 ; e = e7 ; x = 700; Include "antenna.i1" ;
-dx = d8 ; rx = r8 ; sx = s8 ; lx = l8 ; e =-e8 ; x = 800; Include "antenna.i1" ;
-dx = d9 ; rx = r9 ; sx = s9 ; lx = l9 ; e = e9 ; x = 900; Include "antenna.i1" ;
-dx = d10; rx = r10; sx = s10; lx = l10; e =-e10; x =1000; Include "antenna.i1" ;
-dx = d11; rx = r11; sx = s11; lx = l11; e = e11; x =1100; Include "antenna.i1" ;
-dx = d12; rx = r12; sx = s12; lx = l12; e =-e12; x =1200; Include "antenna.i1" ;
-dx = d13; rx = r13; sx = s13; lx = l13; e = e13; x =1300; Include "antenna.i1" ;
-dx = d14; rx = r14; sx = s14; lx = l14; e =-e14; x =1400; Include "antenna.i1" ;
-dx = d15; rx = r15; sx = s15; lx = l15; e = e15; x =1500; Include "antenna.i1" ;
-dx = d16; rx = r16; sx = s16; lx = l16; e =-e16; x =1600; Include "antenna.i1" ;
-dx = d17; rx = r17; sx = s17; lx = l17; e = e17; x =1700; Include "antenna.i1" ;
-dx = d18; rx = r18; sx = s18; lx = l18; e =-e18; x =1800; Include "antenna.i1" ;
-dx = d19; rx = r19; sx = s19; lx = l19; e = e19; x =1900; Include "antenna.i1" ;
-dx = d20; rx = r20; sx = s20; lx = l20; e =-e20; x =2000; Include "antenna.i1" ;
-dx = d21; rx = r21; sx = s21; lx = l21; e = e21; x =2100; Include "antenna.i1" ;
-dx = d22; rx = r22; sx = s22; lx = l22; e =-e22; x =2200; Include "antenna.i1" ;
-
-
-/* 
-   Surfaces for longitudinal bars  
-*/
-
-Line Loop(3001) = {-13,-21,3,22};  Plane Surface(3101) = {3001}; // ymax 
-Line Loop(3002) = {23,-11,-24,1};  Plane Surface(3102) = {3002}; // ymax - eps 
-Line Loop(3003) = {-27,-7,26,17};  Plane Surface(3103) = {3003}; // ymin + eps
-Line Loop(3004) = {25,-15,-28,5};  Plane Surface(3104) = {3004}; // ymin 
-Line Loop(3005) = {3,4,1,2};       Plane Surface(3105) = {3005}; // left top
-Line Loop(3006) = {7,8,5,6};       Plane Surface(3106) = {3006}; // left bottom
-Line Loop(3007) = {11,12,13,14};   Plane Surface(3107) = {3007}; // right top
-Line Loop(3008) = {18,15,16,17};   Plane Surface(3108) = {3008}; // right bottom
-	   					  	
-Line Loop(3011) = {-9,7,10,1};     Plane Surface(3111) = {3011}; // input
-Line Loop(3012) = {-11,-20,-17,19};Plane Surface(3112) = {3012}; // output
-
-Line Loop(3013) = {-26,-6,25,16};
-Line Loop(3014) = {-28,-8,27,18};
-Line Loop(3015) = {-21,-2,23,12};
-Line Loop(3016) = {-24,-4,22,14};
-Plane Surface(3113) = {3013,203,403,603,803,1003,1203,1403,1603,1803,2003,2203} ;
-Plane Surface(3114) = {3014,101,301,501,701,901,1101,1301,1501,1701,1901,2101};
-Plane Surface(3115) = {3015,103,303,503,703,903,1103,1303,1503,1703,1903,2103};
-Plane Surface(3116) = {3016,201,401,601,801,1001,1201,1401,1601,1801,2001,2201};
-
-/* 
-   The physical entities 
-*/
-
-AIR       = 8001 ;
-XM        = 8002 ;
-XP        = 8003 ;
-YM        = 8004 ;
-YP        = 8005 ;
-ZM        = 8006 ;
-ZP        = 8007 ;
-
-CLINPUT   = 9001 ;
-CLBOX     = 9002 ;
-CLLONG    = 9003 ;
-CLBAR     = 9004 ;
-CLBEM     = 9005 ;
-
-Physical Surface(CLINPUT) = {3111};
-Physical Surface(CLBEM) = {4119,4106,4115,4111,4122,4124};
-Physical Surface(CLLONG) = {3102,3115,3101,3116,3105,3107,3103,3114,3104,3113,3108,3106};
-Physical Surface(CLBAR) = 
-{ 
-  122,125,126,127,128,
-  124,129,130,131,132,
-  222,225,226,227,228,
-  224,229,230,231,232,
-  322,325,326,327,328,
-  324,329,330,331,332,
-  422,425,426,427,428,
-  424,429,430,431,432,
-  522,525,526,527,528,
-  524,529,530,531,532,
-  622,625,626,627,628,
-  624,629,630,631,632,
-  722,725,726,727,728,
-  724,729,730,731,732,
-  822,825,826,827,828,
-  824,829,830,831,832,
-  922,925,926,927,928,
-  924,929,930,931,932,
-  1022,1025,1026,1027,1028,
-  1024,1029,1030,1031,1032,
-  1122,1125,1126,1127,1128,
-  1124,1129,1130,1131,1132,
-  1222,1225,1226,1227,1228,
-  1224,1229,1230,1231,1232,
-  1322,1325,1326,1327,1328,
-  1324,1329,1330,1331,1332,
-  1422,1425,1426,1427,1428,
-  1424,1429,1430,1431,1432,
-  1522,1525,1526,1527,1528,
-  1524,1529,1530,1531,1532,
-  1622,1625,1626,1627,1628,
-  1624,1629,1630,1631,1632,
-  1722,1725,1726,1727,1728,
-  1724,1729,1730,1731,1732,
-  1822,1825,1826,1827,1828,
-  1824,1829,1830,1831,1832,
-  1922,1925,1926,1927,1928,
-  1924,1929,1930,1931,1932,
-  2022,2025,2026,2027,2028,
-  2024,2029,2030,2031,2032,
-  2122,2125,2126,2127,2128,
-  2124,2129,2130,2131,2132,
-  2222,2225,2226,2227,2228,
-  2224,2229,2230,2231,2232 
- };
-
diff --git a/demos/antenna.i1 b/demos/antenna.i1
deleted file mode 100644
index eff2c9ece2ea014fa0d76528905d2ebb7447c126..0000000000000000000000000000000000000000
--- a/demos/antenna.i1
+++ /dev/null
@@ -1,38 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-Point(x+01) = {dx,    -e,    -ll/2,    sx};  Point(x+11) = {dx,     e,     ll/2,    sx}; 
-Point(x+02) = {dx+rx, -e,    -ll/2,    sx};  Point(x+12) = {dx+rx,  e,     ll/2,    sx}; 
-Point(x+03) = {dx,    -e+rx, -ll/2,    sx};  Point(x+13) = {dx,     e+rx,  ll/2,    sx}; 
-Point(x+04) = {dx-rx, -e,    -ll/2,    sx};  Point(x+14) = {dx-rx,  e,     ll/2,    sx}; 
-Point(x+05) = {dx,    -e-rx, -ll/2,    sx};  Point(x+15) = {dx,     e-rx,  ll/2,    sx}; 
-Point(x+06) = {dx,    -e,    -ll/2-lx, sx};  Point(x+16) = {dx,     e,     ll/2+lx, sx}; 
-Point(x+07) = {dx+rx, -e,    -ll/2-lx, sx};  Point(x+17) = {dx+rx,  e,     ll/2+lx, sx}; 
-Point(x+08) = {dx,    -e+rx, -ll/2-lx, sx};  Point(x+18) = {dx,     e+rx,  ll/2+lx, sx}; 
-Point(x+09) = {dx-rx, -e,    -ll/2-lx, sx};  Point(x+19) = {dx-rx,  e,     ll/2+lx, sx}; 
-Point(x+10) = {dx,    -e-rx, -ll/2-lx, sx};  Point(x+20) = {dx,     e-rx,  ll/2+lx, sx}; 
-
-Circle(x+01) = {x+02,x+01,x+03}; Circle(x+05) = {x+07,x+06,x+08}; Line(x+09) = {x+02,x+07};
-Circle(x+02) = {x+03,x+01,x+04}; Circle(x+06) = {x+08,x+06,x+09}; Line(x+10) = {x+03,x+08};
-Circle(x+03) = {x+04,x+01,x+05}; Circle(x+07) = {x+09,x+06,x+10}; Line(x+11) = {x+04,x+09};
-Circle(x+04) = {x+05,x+01,x+02}; Circle(x+08) = {x+10,x+06,x+07}; Line(x+12) = {x+05,x+10};
-       	       	     		    	    	    	       	       	   
-Circle(x+13) = {x+12,x+11,x+13}; Circle(x+17) = {x+17,x+16,x+18}; Line(x+21) = {x+12,x+17};
-Circle(x+14) = {x+13,x+11,x+14}; Circle(x+18) = {x+18,x+16,x+19}; Line(x+22) = {x+13,x+18};
-Circle(x+15) = {x+14,x+11,x+15}; Circle(x+19) = {x+19,x+16,x+20}; Line(x+23) = {x+14,x+19};
-Circle(x+16) = {x+15,x+11,x+12}; Circle(x+20) = {x+20,x+16,x+17}; Line(x+24) = {x+15,x+20};
-
-Line Loop(x+01) = {x+02,x+03,x+04,x+01};       Plane Surface(x+21) = {x+01};
-Line Loop(x+02) = {x+07,x+08,x+05,x+06};       Plane Surface(x+22) = {x+02};
-Line Loop(x+03) = {x+16,x+13,x+14,x+15};       Plane Surface(x+23) = {x+03};
-Line Loop(x+04) = {x+20,x+17,x+18,x+19};       Plane Surface(x+24) = {x+04};
-Line Loop(x+05) = {x+08,-(x+09),-(x+04),x+12}; Ruled Surface(x+25) = {x+05};
-Line Loop(x+06) = {x+12,-(x+07),-(x+11),x+03}; Ruled Surface(x+26) = {x+06};
-Line Loop(x+07) = {-(x+11),-(x+02),x+10,x+06}; Ruled Surface(x+27) = {x+07};
-Line Loop(x+08) = {-(x+10),-(x+01),x+09,x+05}; Ruled Surface(x+28) = {x+08};
-Line Loop(x+09) = {x+21,-(x+20),-(x+24),x+16}; Ruled Surface(x+29) = {x+09};
-Line Loop(x+10) = {-(x+24),-(x+15),x+23,x+19}; Ruled Surface(x+30) = {x+10};
-Line Loop(x+11) = {x+23,-(x+18),-(x+22),x+14}; Ruled Surface(x+31) = {x+11};
-Line Loop(x+12) = {x+22,-(x+17),-(x+21),x+13}; Ruled Surface(x+32) = {x+12};
-
diff --git a/demos/filter.geo b/demos/filter.geo
deleted file mode 100644
index 3854840329a31c13978ebd939f506f12e3c67156..0000000000000000000000000000000000000000
--- a/demos/filter.geo
+++ /dev/null
@@ -1,485 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-ech = 0.001 ;
-a = 8.0 ;
-b = 20.45 ;
-c = 45.55 ;
-d = 58.0 ;
-e = 66.0 ;
-f = 23.0 ;
-g = 20.0 ;
-h = 2.8 ;
-i = 8.0 ;
-k = 5.0 ;
-in = 1.0 ;
-did = 4.0 ;
-ded = 11.7 ;
-dame = 1.25 ;
-dtef = 4.0 ;
-
-sizereson = 1.5 ;
-sizeresoni = 1. ;
-sizebig = 4.0 ;
-sizeame = 1.0 ;
-sizetef = 1.0 ;
-
-a = a* ech ;
-b = b* ech ;
-c = c* ech ;
-d = d* ech ;
-e = e* ech ;
-f = f* ech ;
-g = g* ech ;
-h = h* ech ;
-i = i* ech ;
-k = k* ech ;
-j = f/2 ;
-in = in * ech ;
-did = did* ech ;
-ded = ded* ech ;
-dame = dame* ech ;
-dtef = dtef* ech ;
-
-rid = did/2.0 ;
-red = ded/2.0 ;
-rame=dame/2 ;
-rtef=dtef/2 ;
-
-
-sizereson = sizereson * ech ;
-sizeresoni = sizeresoni * ech ;
-sizebig = sizebig * ech ;
-sizeame = sizeame * ech ;
-sizetef = sizetef * ech ;
-
-/* box */
-
-Point(1) = {0,0,0,sizebig} ;
-Point(2) = {e,0,0,sizebig} ;
-Point(3) = {e,f,0,sizebig} ;
-Point(4) = {0,f,0,sizebig} ;
-Point(5) = {0,0,i,sizebig} ;
-Point(6) = {e,0,i,sizebig} ;
-Point(7) = {e,f,i,sizebig} ;
-Point(8) = {0,f,i,sizebig} ;
-Point(81) = {e/2,0,0,sizebig};
-
-/* left reson */
-
-Point(9) = {b,j,0,sizeresoni} ;
-Point(10) = {b+rid,j,0,sizeresoni} ;
-Point(11) = {b,j+rid,0,sizeresoni} ;
-Point(12) = {b-rid,j,0,sizeresoni} ;
-Point(13) = {b,j-rid,0,sizeresoni} ;
-Point(14) = {b+red,j,0,sizereson} ;
-Point(15) = {b,j+red,0,sizereson} ;
-Point(16) = {b-red,j,0,sizereson} ;
-Point(17) = {b,j-red,0,sizereson} ;
-
-Point(18) = {b,j,h,sizeresoni} ;
-Point(19) = {b+rid,j,h,sizeresoni} ;
-Point(20) = {b,j+rid,h,sizeresoni} ;
-Point(21) = {b-rid,j,h,sizeresoni} ;
-Point(22) = {b,j-rid,h,sizeresoni} ;
-Point(23) = {b+red,j,h,sizereson} ;
-Point(24) = {b,j+red,h,sizereson} ;
-Point(25) = {b-red,j,h,sizereson} ;
-Point(26) = {b,j-red,h,sizereson} ;
-
-/* right reson */
-
-Point(27) = {c,j,0,sizeresoni} ;
-Point(28) = {c+rid,j,0,sizeresoni} ;
-Point(29) = {c,j+rid,0,sizeresoni} ;
-Point(30) = {c-rid,j,0,sizeresoni} ;
-Point(31) = {c,j-rid,0,sizeresoni} ;
-Point(32) = {c+red,j,0,sizereson} ;
-Point(33) = {c,j+red,0,sizereson} ;
-Point(34) = {c-red,j,0,sizereson} ;
-Point(35) = {c,j-red,0,sizereson} ;
-
-Point(36) = {c,j,h,sizeresoni} ;
-Point(37) = {c+rid,j,h,sizeresoni} ;
-Point(38) = {c,j+rid,h,sizeresoni} ;
-Point(39) = {c-rid,j,h,sizeresoni} ;
-Point(40) = {c,j-rid,h,sizeresoni} ;
-Point(41) = {c+red,j,h,sizereson} ;
-Point(42) = {c,j+red,h,sizereson} ;
-Point(43) = {c-red,j,h,sizereson} ;
-Point(44) = {c,j-red,h,sizereson} ;
-
-/* left cab */
-
-Point(45) = {a,0,0,sizeame} ;
-Point(46) = {a,0,rame,sizeame} ;
-Point(47) = {a-rame,0,0,sizeame} ;
-Point(48) = {a+rame,0,0,sizeame} ;
-
-Point(49) = {a,-k,0,sizeame} ;
-Point(50) = {a,-k,rame,sizeame} ;
-Point(51) = {a-rame,-k,0,sizeame} ;
-Point(52) = {a+rame,-k,0,sizeame} ;
-
-Point(53) = {a,g,0,sizeame} ;
-Point(54) = {a,g,rame,sizeame} ;
-Point(55) = {a-rame,g,0,sizeame} ;
-Point(56) = {a+rame,g,0,sizeame} ;
-
-/* right cab */
-
-Point(57) = {d,0,0,sizeame} ;
-Point(58) = {d,0,rame,sizeame} ;
-Point(59) = {d-rame,0,0,sizeame} ;
-Point(60) = {d+rame,0,0,sizeame} ;
-
-Point(61) = {d,-k,0,sizeame} ;
-Point(62) = {d,-k,rame,sizeame} ;
-Point(63) = {d-rame,-k,0,sizeame} ;
-Point(64) = {d+rame,-k,0,sizeame} ;
-
-Point(65) = {d,g,0,sizeame} ;
-Point(66) = {d,g,rame,sizeame} ;
-Point(67) = {d-rame,g,0,sizeame} ;
-Point(68) = {d+rame,g,0,sizeame} ;
-
-/* left teflon */
-
-Point(69) = {a,0,rtef,sizetef} ;
-Point(70) = {a-rtef,0,0,sizetef} ;
-Point(71) = {a+rtef,0,0,sizetef} ;
-
-Point(72) = {a,-k,rtef,sizetef} ;
-Point(73) = {a-rtef,-k,0,sizetef} ;
-Point(74) = {a+rtef,-k,0,sizetef} ;
-
-
-/* right teflon */
-
-Point(75) = {d,0,rtef,sizetef} ;
-Point(76) = {d-rtef,0,0,sizetef} ;
-Point(77) = {d+rtef,0,0,sizetef} ;
-
-Point(78) = {d,-k,rtef,sizetef} ;
-Point(79) = {d-rtef,-k,0,sizetef} ;
-Point(80) = {d+rtef,-k,0,sizetef} ;
-
-/* in */
-
-
-Point(82) = {d,-k-in,rtef,sizetef} ;
-Point(83) = {d-rtef,-k-in,0,sizetef} ;
-Point(84) = {d+rtef,-k-in,0,sizetef} ;
-
-
-Point(85) = {d,-k-in,0,sizeame} ;
-Point(86) = {d,-k-in,rame,sizeame} ;
-Point(87) = {d-rame,-k-in,0,sizeame} ;
-Point(88) = {d+rame,-k-in,0,sizeame} ;
-
-
-/* eps teflon = 2.03
-   eps res = 38 */
-
-Circle(1) = {20,18,21};
-Circle(2) = {21,18,22};
-Circle(3) = {22,18,19};
-Circle(4) = {19,18,20};
-Circle(5) = {11,9,12};
-Circle(6) = {12,9,13};
-Circle(7) = {13,9,10};
-Circle(8) = {10,9,11};
-Circle(9) = {24,18,25};
-Circle(10) = {25,18,26};
-Circle(11) = {26,18,23};
-Circle(12) = {23,18,24};
-Circle(13) = {15,9,16};
-Circle(14) = {16,9,17};
-Circle(15) = {17,9,14};
-Circle(16) = {14,9,15};
-Circle(17) = {38,36,39};
-Circle(18) = {39,36,40};
-Circle(19) = {40,36,37};
-Circle(20) = {37,36,38};
-Circle(21) = {42,36,43};
-Circle(22) = {43,36,44};
-Circle(23) = {44,36,41};
-Circle(24) = {41,36,42};
-Circle(25) = {29,27,30};
-Circle(26) = {30,27,31};
-Circle(27) = {31,27,28};
-Circle(28) = {28,27,29};
-Circle(29) = {33,27,34};
-Circle(30) = {34,27,35};
-Circle(31) = {35,27,32};
-Circle(32) = {32,27,33};
-Line(33) = {8,7};
-Line(34) = {7,3};
-Line(35) = {8,4};
-Line(36) = {5,1};
-Line(37) = {6,2};
-Line(38) = {6,7};
-Line(39) = {5,8};
-Line(40) = {2,3};
-Line(41) = {1,4};
-Line(42) = {3,4};
-Line(43) = {6,5};
-Circle(44) = {66,65,67};
-Circle(45) = {68,65,66};
-Circle(46) = {54,53,55};
-Circle(47) = {56,53,54};
-Circle(48) = {50,49,51};
-Circle(49) = {52,49,50};
-Circle(50) = {72,49,73};
-Circle(51) = {74,49,72};
-Circle(52) = {48,45,46};
-Circle(53) = {46,45,47};
-Circle(54) = {69,45,70};
-Circle(55) = {71,45,69};
-Circle(56) = {62,61,63};
-Circle(57) = {64,61,62};
-Circle(58) = {80,61,78};
-Circle(59) = {78,61,79};
-Circle(60) = {60,57,58};
-Circle(61) = {58,57,59};
-Circle(62) = {77,57,75};
-Circle(63) = {75,57,76};
-Line(64) = {2,77};
-Line(65) = {77,60};
-Line(66) = {60,57};
-Line(67) = {57,59};
-Line(68) = {59,76};
-Line(70) = {71,48};
-Line(71) = {48,45};
-Line(72) = {45,47};
-Line(73) = {47,70};
-Line(74) = {70,1};
-Line(75) = {70,73};
-Line(76) = {47,51};
-Line(77) = {48,52};
-Line(78) = {71,74};
-Line(79) = {74,52};
-Line(80) = {52,49};
-Line(81) = {49,51};
-Line(82) = {51,73};
-Line(83) = {76,79};
-Line(84) = {59,63};
-Line(85) = {60,64};
-Line(86) = {77,80};
-Line(87) = {79,63};
-Line(88) = {63,61};
-Line(89) = {61,64};
-Line(90) = {64,80};
-Line(91) = {59,67};
-Line(92) = {60,68};
-Line(93) = {67,65};
-Line(94) = {65,68};
-Line(95) = {48,56};
-Line(96) = {47,55};
-Line(97) = {55,53};
-Line(98) = {53,56};
-Line Loop(99) = {11,12,9,10};
-Line Loop(100) = {4,1,2,3};
-Plane Surface(101) = {99,100};
-Line Loop(102) = {15,16,13,14};
-Line Loop(103) = {7,8,5,6};
-Plane Surface(104) = {102,103};
-Plane Surface(105) = {103};
-Plane Surface(106) = {100};
-Line Loop(107) = {31,32,29,30};
-Line Loop(108) = {27,28,25,26};
-Plane Surface(109) = {107,108};
-Line Loop(110) = {23,24,21,22};
-Line Loop(111) = {19,20,17,18};
-Plane Surface(112) = {110,111};
-Plane Surface(113) = {111};
-Plane Surface(114) = {108};
-Line(115) = {16,25};
-Line(116) = {15,24};
-Line(117) = {14,23};
-Line(118) = {17,26};
-Line(119) = {12,21};
-Line(120) = {11,20};
-Line(121) = {19,10};
-Line(122) = {22,13};
-Line(123) = {44,35};
-Line(124) = {41,32};
-Line(125) = {43,34};
-Line(126) = {42,33};
-Line(127) = {40,31};
-Line(128) = {37,28};
-Line(129) = {38,29};
-Line(130) = {39,30};
-
-Line Loop(131) = {31,-124,-23,123};
-Ruled Surface(132) = {131};
-Line Loop(133) = {30,-123,-22,125};
-Ruled Surface(134) = {133};
-Line Loop(135) = {29,-125,-21,126};
-Ruled Surface(136) = {135};
-Line Loop(137) = {32,-126,-24,124};
-Ruled Surface(138) = {137};
-Line Loop(139) = {11,-117,-15,118};
-Ruled Surface(140) = {139};
-Line Loop(141) = {10,-118,-14,115};
-Ruled Surface(142) = {141};
-Line Loop(143) = {9,-115,-13,116};
-Ruled Surface(144) = {143};
-Line Loop(145) = {-116,-16,117,12};
-Ruled Surface(146) = {145};
-Line Loop(147) = {-1,-120,5,119};
-Ruled Surface(148) = {147};
-Line Loop(149) = {-6,119,2,122};
-Ruled Surface(150) = {149};
-Line Loop(151) = {-7,-122,3,121};
-Ruled Surface(152) = {151};
-Line Loop(153) = {120,-4,121,8};
-Ruled Surface(154) = {153};
-Line Loop(155) = {27,-128,-19,127};
-Ruled Surface(156) = {155};
-Line Loop(157) = {-127,-18,130,26};
-Ruled Surface(158) = {157};
-Line Loop(159) = {130,-25,-129,17};
-Ruled Surface(160) = {159};
-Line Loop(161) = {28,-129,-20,128};
-Ruled Surface(162) = {161};
-Line(167) = {78,75};
-Line(168) = {62,58};
-Line(169) = {75,66};
-Line(170) = {58,66};
-Line Loop(171) = {-167,-58,-86,62};
-Ruled Surface(172) = {171};
-Line Loop(173) = {63,83,-59,167};
-Ruled Surface(174) = {173};
-Line Loop(175) = {84,-56,168,61};
-Ruled Surface(176) = {175};
-Line Loop(177) = {-168,-57,-85,60};
-Ruled Surface(178) = {177};
-Line Loop(179) = {-91,-61,170,44};
-Ruled Surface(180) = {179};
-Line Loop(181) = {170,-45,-92,60};
-Ruled Surface(182) = {181};
-Line Loop(183) = {-87,-59,-58,-90,57,56};
-Plane Surface(184) = {183};
-Line Loop(185) = {68,-63,-62,65,60,61};
-Plane Surface(186) = {185};
-Line Loop(187) = {93,94,45,44};
-Plane Surface(188) = {187};
-Line Loop(189) = {-87,-83,-68,84};
-Plane Surface(190) = {189};
-Line Loop(191) = {-90,-85,-65,86};
-Plane Surface(192) = {191};
-Line(195) = {72,69};
-Line(196) = {50,46};
-Line(197) = {46,54};
-Line Loop(198) = {96,-46,-197,53};
-Ruled Surface(199) = {198};
-Line Loop(200) = {197,-47,-95,52};
-Ruled Surface(201) = {200};
-Line Loop(202) = {75,-50,195,54};
-Ruled Surface(203) = {202};
-Line Loop(204) = {-195,-51,-78,55};
-Ruled Surface(205) = {204};
-Line Loop(206) = {49,196,-52,77};
-Ruled Surface(207) = {206};
-Line Loop(208) = {76,-48,196,53};
-Ruled Surface(209) = {208};
-Line Loop(210) = {48,82,-50,-51,79,49};
-Plane Surface(211) = {210};
-Line Loop(212) = {73,-54,-55,70,52,53};
-Plane Surface(213) = {212};
-Line Loop(214) = {-79,-78,70,77};
-Plane Surface(215) = {214};
-Line Loop(216) = {82,-75,-73,76};
-Plane Surface(217) = {216};
-Line Loop(218) = {97,98,47,46};
-Plane Surface(219) = {218};
-Line Loop(226) = {39,33,-38,43};
-Plane Surface(227) = {226};
-Line Loop(228) = {-35,33,34,42};
-Plane Surface(229) = {228};
-Line Loop(230) = {41,-35,-39,36};
-Plane Surface(231) = {230};
-Line Loop(232) = {-34,-38,37,40};
-Plane Surface(233) = {232};
-Line(234) = {76,81};
-Line(235) = {81,71};
-Line Loop(236) = {234,235,55,54,74,-36,-43,37,64,62,63};
-Plane Surface(237) = {236};
-Line Loop(238) = {92,-94,-93,-91,68,234,235,70,95,-98,-97,-96,73,74,41,-42,-40,64,65};
-Plane Surface(239) = {238,107,102};
-
-
-
-Surface Loop(601) = {152,104,140,-101,146,144,142,-154,-148,150};
-Complex Volume(602) = {601};
-Surface Loop(603) = {160,-158,-156,109,-132,-138,-136,-134,-112,-162};
-Complex Volume(604) = {603};
-Surface Loop(605) = {213,217,-211,-209,207,-215,205,203};
-Complex Volume(606) = {605};
-Surface Loop(607) = {186,190,-184,174,172,192,-178,-176};
-Complex Volume(608) = {607};
-
-
-Surface Loop(6001) = {213,-239,-182,180,186,237,231,-229,227,-233,-188,
-  -201,-199,-219,132,138,136,134,112,156,-114,162,-160,158,-140,101,
-  -146,-144,-142,154,148,-105,-152,-150};
-Complex Volume(6002) = {6001};
-
-Delete { Line{169} ; }
-
-Line(6003) = {83,87};
-Line(6004) = {87,85};
-Line(6005) = {85,88};
-Line(6006) = {88,84};
-Circle(6007) = {84,85,82};
-Circle(6008) = {82,85,83};
-Circle(6009) = {88,85,86};
-Circle(6010) = {86,85,87};
-Line(6011) = {83,79};
-Line(6012) = {87,63};
-Line(6013) = {88,64};
-Line(6014) = {84,80};
-Line(6015) = {82,78};
-Line(6016) = {86,62};
-Line Loop(6017) = {90,-6014,-6006,6013};
-Plane Surface(6018) = {6017};
-Line Loop(6019) = {87,-6012,-6003,6011};
-Plane Surface(6020) = {6019};
-Line Loop(6021) = {6010,-6003,-6008,-6007,-6006,6009};
-Plane Surface(6022) = {6021};
-Line Loop(6023) = {-58,-6014,6007,6015};
-Ruled Surface(6024) = {6023};
-Line Loop(6025) = {6011,-59,-6015,6008};
-Ruled Surface(6026) = {6025};
-//Line Loop(6027) = {-57,-6013,6009,6016};
-//Ruled Surface(6028) = {6027};
-Line Loop(6029) = {-56,-6016,6010,6012};
-Ruled Surface(6030) = {6029};
-Surface Loop(6031) = {184,6020,6030,6028,6018,-6024,-6022,-6026};
-//Complex Volume(6032) = {6031};
-
-
-AIR = 10000 ;
-R1 = 20000 ;
-R2 = 30000 ;
-T1 = 40000 ;
-T2 = 50000 ;
-CLD0 = 60000 ;
-SOU  = 70000 ;
-CLTEM  = 80000 ;
-
-Physical Volume  (AIR)     = 6002;
-
-Physical Volume  (T1)      = 606;
-Physical Volume  (T2)      = 608;
-Physical Volume  (R1)      = 602;
-Physical Volume  (R2)      = 604;
-//Physical Volume  (SOU)     = 6032;
-
-Physical Surface (CLD0) = {231,229,223,237,227,
-                           199,201,219,209,207,203,205,
-                           180,182,188,176,178,174,172,
-                           6026,6024,6028,6030};
-Physical Surface (CLTEM) = {211,6022};
diff --git a/demos/machine.geo b/demos/machine.geo
deleted file mode 100644
index e06f090ffac04ef7dcee68da62fc26aec6bd1207..0000000000000000000000000000000000000000
--- a/demos/machine.geo
+++ /dev/null
@@ -1,186 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-// All dimensions in meters and rads
-
-Lc = 0.0004 ;           // Base char length
-Z  = 0.0 ;              // Z-coord
-
-// Stator data
-
-nbs = 36 ;		// Num. of poles
-dths = 2 * Pi / nbs ;   // Ang. shift between 2 poles.
-
-// Pi is the only constant predefined in Gmsh
-
-th0s = dths / 2 ;       // Angular pos.
-des = 0.1529 ;          // Ext. diam.
-res = des / 2 ;		  
-dis = 0.09208 ;         // Int. diam.
-ris = dis / 2 ;		  
-			  
-hs = 0.0153 ;           // Pole height
-h1s = 0.000762 ;        // Dist. intersection rec.-int. circle
-d1s = 0.00636 ;         // Diam. sup. circle
-r1s = d1s / 2 ;		  
-rc1s = 0.00084 ;        // Radius convex rec.
-rc2s = 0.000508 ;       // Radius concave rec.
-e1s = 0.0025 ;          // Dist. between 2 sides at int diam
-e2s = 0.00424 ;         // Dist. between 2 sides at 1st rec.
-
-// Rotor data
-
-nbr = 32 ;		// Num. of poles
-dthr = 2 * Pi / nbr ;   // Angular shift betw. 2 poles
-			  
-th0r = dths / 2 ;       // Ang. pos. rotor
-gap = 0.00080 ;         // Air gap width
-espa = 0.0015 ;         // Dist. stator-pole top
-der = 0.09208 ;         // Ext. diam rotor
-rer = der / 2 ;		  
-dir = 0.03175 ;         // Diam. int. 
-rir = dir / 2 ;		  
-			  
-hr = 0.01425 ;          // Pole height
-d1r = 0.00426 ;         // Diam. sup circle
-r1r = d1r / 2 ;		  
-d2r = 0.00213 ;         // Diam. inf. circle
-r2r = d2r / 2 ;		  
-			  
-dist = rer - espa ;	// Radial dist. of intersect. point
-
-/* 'newp' is a meta variable defining a new point number for you.
-   This is mostly useful with included files. There is also 'newreg'
-   which defines a new region number (that is, everything that is not
-   a point). */
-
-pAxe = newp ; Point(pAxe) = { 0. , 0. , 0., 15*Lc} ;
-
-// axis
-
-p1 = newp ; Point(p1) = { rir, 0. , 0., 15*Lc} ;
-p2 = newp ; Point(p2) = { 0. , rir, 0., 15*Lc} ;
-
-lin1 = newreg ;	Line(lin1)   = {pAxe,p1} ;
-arc1 = newreg ;	Circle(arc1) = {p1,pAxe,p2} ;
-lin2 = newreg ;	Line(lin2)   = {p2, pAxe} ;
-
-reg1 = newreg ; Line Loop(reg1) = {lin1,arc1,lin2} ;
-reg2 = newreg ; Plane Surface(reg2) = {reg1} ;
-
-// Rotor lateral sides
-
-p3 = newp ; Point(p3) = { rer-gap, 0.     , 0., Lc} ;
-p4 = newp ; Point(p4) = { 0.     , rer-gap, 0., Lc} ;
-
-lin3 = newreg ; Line(lin3)   = {p1, p3} ;
-arc2 = newreg ; Circle(arc2) = {p3,pAxe,p4} ;
-lin4 = newreg ;	Line(lin4)   = {p4, p2} ;
-
-// Air gap
-
-p5 = newp ; Point(p5) = { ris, 0. , 0., Lc} ;
-p6 = newp ; Point(p6) = { 0. , ris, 0., Lc} ;
-
-lin5 = newreg ; Line(lin5) = {p3, p5} ;
-lin6 = newreg ; Line(lin6) = {p6, p4} ;
-
-// Stator exterior
-
-p7 = newp ; Point(p7) = { res, 0. , 0. , 15*Lc } ;
-p8 = newp ; Point(p8) = { 0. , res, 0. , 15*Lc } ;
-
-lin7 = newreg ;	Line(lin7)   = {p5, p7} ;
-arc4 = newreg ;	Circle(arc4) = {p7,pAxe,p8} ;
-lin8 = newreg ;	Line(lin8)   = {p8, p6} ;
-
-PP1 = p5 ; PPB = p6 ; 
-
-// 8 rotor poles
-
-D1 = dist ; 
-H  = hr ; 
-R1 = r1r ; 
-R2 = r2r ; 
-
-/* You can include files with the 'Include' command. Note that *ALL*
-   variables in Gmsh are global. Including a file is similar to paste
-   its content where the include command is located. */
-
-i = 0;
-
-For(1:8)
-  i++ ;
-  th = th0r + (i - 1) * dthr ;
-  Include "machine.i1" ; 
-EndFor
-
-// 9 stator poles
-
-dth = dths ;
-D2  = ris ;
-H   = hs ;
-R1 = r1s ;
-R2 = rc1s ;
-R3 = rc2s ;
-E1 = e1s ;
-E2 = e2s ;
-H1 = h1s ;
-
-i = 1 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP2 = p1 ; PP3 = p9 ;
-i = 2 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP4 = p1 ; PP5 = p9 ;
-i = 3 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP6 = p1 ; PP7 = p9 ;
-i = 4 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP8 = p1 ; PP9 = p9 ;
-i = 5 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP10 = p1 ; PP11 = p9 ;
-i = 6 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ;
-PP12 = p1 ; PP13 = p9 ;
-i = 7 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP14 = p1 ; PP15 = p9 ;
-i = 8 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP16 = p1 ; PP17 = p9 ;
-i = 9 ; th = th0s + (i - 1) * dths ;
-Include "machine.i2" ; 
-PP18 = p1 ; PP19 = p9 ;
-
-lin1 = newreg ; Line(lin1) = {PP1 , PP2 } ;
-lin1 = newreg ; Line(lin1) = {PP3 , PP4 } ;
-lin1 = newreg ; Line(lin1) = {PP5 , PP6 } ;
-lin1 = newreg ; Line(lin1) = {PP7 , PP8 } ;
-lin1 = newreg ; Line(lin1) = {PP9 , PP10} ;
-lin1 = newreg ; Line(lin1) = {PP11, PP12} ;
-lin1 = newreg ; Line(lin1) = {PP13, PP14} ;
-lin1 = newreg ; Line(lin1) = {PP15, PP16} ;
-lin1 = newreg ; Line(lin1) = {PP17, PP18} ;
-lin1 = newreg ; Line(lin1) = {PP19, PPB } ;
-
-
-Line Loop(145) = {8,-2,6,7};
-Plane Surface(146) = {145,68,61,54,47,40,33,26,19};
-
-Line Loop(147) = {-7,9,133,-74,134,-81,135,-88,136,-95,137,-102,
-                  138,-109,139,-116,140,-123,141,-130,142,10};
-Plane Surface(148) = {147};
-
-Line Loop(149) = {70,71,72,73,134,77,78,79,80,135,84,85,86,87,136,
-                  91,92,93,94,137,98,99,100,101,138,105,106,107,108,
-                  139,112,113,114,115,140,119,120,121,122,141,126,127,
-                  128,129,142,-13,-12,-11,133};
-Plane Surface(150) = {149};
-
-/* One should define physical regions to specify what to
-   save. Otherwise, only mesh points will be output in the mesh
-   file. */
diff --git a/demos/machine.i1 b/demos/machine.i1
deleted file mode 100644
index aa6e3e405789d750dce09783ef14321e825e736a..0000000000000000000000000000000000000000
--- a/demos/machine.i1
+++ /dev/null
@@ -1,51 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-/* Variables that must be defined when including this file:
-   th,D1,H,R1,R2,Lc */
-
-XC1 = (D1 - R1) * Cos(th) ;             // Sup. circle center
-YC1 = (D1 - R1) * Sin(th) ;
-XC2 = (D1 - H + R2) * Cos(th) ;		// Inf. circle center
-YC2 = (D1 - H + R2) * Sin(th) ;
-
-XS1 = (D1) * Cos(th) ;		        // Sup. circle top
-YS1 = (D1) * Sin(th) ;
-
-dth = Pi - ArcCos((R1 - R2) / (H - R1 - R2)) ;
-
-XA1 = XC1 + R1 * Cos(th - dth) ;	// Sup. right tangency point
-YA1 = YC1 + R1 * Sin(th - dth) ;
-XA2 = XC2 + R2 * Cos(th - dth) ;	// Inf. right tangency point
-YA2 = YC2 + R2 * Sin(th - dth) ;
-XB1 = XC1 + R1 * Cos(th + dth) ; 	// Sup. left tangency point
-YB1 = YC1 + R1 * Sin(th + dth) ;
-XB2 = XC2 + R2 * Cos(th + dth) ;	// Inf. left tangency point
-YB2 = YC2 + R2 * Sin(th + dth) ;
-
-// Pole
-
-/* 'newp' is a meta variable defining a new point number for
-   you.  This is mostly useful with included files. There is also
-   'newreg' which defines a new region number (that is, everything
-   that is not a point). */
-
-p1 = newp ; Point(p1) = { XA2 , YA2, 0., 3*Lc} ;
-p2 = newp ; Point(p2) = { XA1 , YA1, 0., Lc} ;
-p3 = newp ; Point(p3) = { XC1 , YC1, 0., Lc} ;
-p4 = newp ; Point(p4) = { XB1 , YB1, 0., Lc} ;
-p5 = newp ; Point(p5) = { XB2 , YB2, 0., 3*Lc} ;
-p6 = newp ; Point(p6) = { XC2 , YC2, 0., 3*Lc} ;
-
-p7 = newp ; Point(p7) = { XS1 , YS1, 0., Lc} ;
-
-lin1 = newreg ; Line(lin1)    = {p1,p2} ;
-arc1 = newreg ; Circle (arc1) = {p2,p3,p7} ;
-arc2 = newreg ; Circle (arc2) = {p7,p3,p4} ;
-lin2 = newreg ; Line(lin2)    = {p4,p5} ;
-arc3 = newreg ; Circle(arc3)  = {p5,p6,p1} ;
-
-reg1 = newreg ; Line Loop(reg1) = {lin1,arc1,arc2,lin2,arc3};
-reg2 = newreg ; Plane Surface(reg2) = {reg1};
-
diff --git a/demos/machine.i2 b/demos/machine.i2
deleted file mode 100644
index 9792c42e4a1cc3ebe85a71a076e2cc8413c5e563..0000000000000000000000000000000000000000
--- a/demos/machine.i2
+++ /dev/null
@@ -1,42 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-/* Variables that must be defined when including this file:
-   th,D2,H,R1,E1 */
-
-dtH = ArcSin(E1/2./D2) ;
-XH6 = D2 * Cos(th + dtH ) ;            // Slab opening
-YH6 = D2 * Sin(th + dtH ) ;
-XH7 = D2 * Cos(th - dtH ) ;
-YH7 = D2 * Sin(th - dtH ) ;
-
-D1  = D2 + H ;
-XH2 = (D1 - R1) * Cos(th) ;	       // Circle center
-YH2 = (D1 - R1) * Sin(th) ;
-
-XS1 = (D1) * Cos(th) ;		       // Circle top
-YS1 = (D1) * Sin(th) ;
-
-XT1 = XH2 + R1 * Cos(th + Pi / 2.) ;
-YT1 = YH2 + R1 * Sin(th + Pi / 2.) ;
-XT2 = XH2 + R1 * Cos(th - Pi / 2.) ;
-YT2 = YH2 + R1 * Sin(th - Pi / 2.) ;
-
-p1 = newp ; Point(p1) = { XH7 , YH7, 0., Lc} ;
-p4 = newp ; Point(p4) = { XT2 , YT2, 0., 3*Lc} ;
-p5 = newp ; Point(p5) = { XH2 , YH2, 0., 3*Lc} ;
-p6 = newp ; Point(p6) = { XT1 , YT1, 0., 3*Lc} ;
-p9 = newp ; Point(p9) = { XH6 , YH6, 0., Lc} ;
-
-p10 = newp ; Point(p10) = { XS1 , YS1, 0., 3*Lc} ;
-
-lin1 = newreg ; Line(lin1) = {p1, p4} ;
-arc1 = newreg ; Circle(arc1) = {p4, p5, p10} ;
-arc2 = newreg ; Circle(arc2) = {p10, p5, p6} ;
-lin6 = newreg ; Line(lin6) = {p6, p9} ;
-
-lin7 = newreg ; Line(lin7) = {p9, p1} ;
-
-reg1 = newreg ; Line Loop(reg1) = {lin1,arc1,arc2,lin6,lin7} ;
-reg2 = newreg ; Plane Surface(reg2) = {reg1} ; 
diff --git a/demos/piece-extr.geo b/demos/piece-extr.geo
deleted file mode 100644
index 070e28da60f043c0863f0fbf1916912e9652bd5e..0000000000000000000000000000000000000000
--- a/demos/piece-extr.geo
+++ /dev/null
@@ -1,96 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-r1 = .1;
-l1 = 1.;
-l2 = .8;
-l3 = .1;
-r2 = 1.1;
-lc = .1;
-lc2 = .05;
-rint = .2;
-rext = .3;
-
-Point(1) = {0.0,0.0,0.0,lc};
-Point(2) = {l1,0.0,0.0,lc2};
-Point(3) = {l1-r1,0.0,0.0,lc2};
-Point(4) = {l1,r1,0.0,lc2};
-Point(5) = {l1,-r1,0.0,lc2};
-Point(6) = {l1+l2,r1,0.0,lc};
-Point(7) = {l1+l2,-r1,0.0,lc};
-Point(8) = {l1+l2,-r1-l3,0.0,lc};
-Point(9) = {l1+l2,r1+l3,0.0,lc};
-
-Line(1) = {4,6};
-Line(2) = {6,9};
-Line(3) = {7,8};
-Line(4) = {5,7};
-Circle(5) = {4,2,3};
-Circle(6) = {3,2,5};
-
-r = 2*3.14159/5;
-Point(10) = { (l1 + r2) * Cos(r/2) , (l1 + r2) * Sin(r/2), 0.0, lc};
-
-// Remember, all rotations are specified by the axis direction
-// ({0,0,1}), an axis point ({0,0,0}) and a rotation angle (r)
-
-i = 0 ;
-
-For(1:4)
-
-  i+=1 ; 
-
-  Rotate {{0.0,0.0,1.0},{0.0,0.0,0.0}, i*r} {
-    Duplicata {
-      Line{1}; Line{2}; Line{3}; 
-      Line{4}; Line{5}; Line{6}; 
-      Point{10};
-    }
-  }
-
-EndFor
-
-Point(newp) = {rint,0,0,lc};
-Point(newp) = {rext,0,0,lc};
-Point(newp) = {-rint,0,0,lc};
-Point(newp) = {-rext,0,0,lc};
-Point(newp) = {0,rint,0,lc};
-Point(newp) = {0,rext,0,lc};
-Point(newp) = {0,-rint,0,lc};
-Point(newp) = {0,-rext,0,lc};
-
-Circle(31) = {8,118,97};
-Circle(32) = {20,10,9};
-Circle(33) = {47,37,16};
-Circle(34) = {74,64,43};
-Circle(35) = {101,91,70};
-Circle(36) = {119,1,123};
-Circle(37) = {123,1,121};
-Circle(38) = {121,1,125};
-Circle(39) = {125,1,119};
-Circle(40) = {124,1,122};
-Circle(41) = {122,1,126};
-Circle(42) = {126,1,120};
-Circle(43) = {120,1,124};
-
-Line Loop(44) = {37,38,39,36};
-Line Loop(46) = {40,41,42,43};
-Plane Surface(47) = {46,44};
-
-Line Loop(48) = {-2,-1,5,6,4,3,31,-26,-25,29,30,28,27,35,-20,-19,
-  23,24,22,21,34,-14,-13,17,18,16,15,33,-8,-7,11,12,10,9,32};
-Plane Surface(49) = {48,46};
-
-ones[]={1,1,1,1,1,1,1,1,1,1};
-ep[]={0.01, 0.05, 0.1, 0.2, 0.5, 0.8, 0.9, 0.95, 0.99, 1};
-For i In {0:4}
-  ep2[i]=2*ep[i]; 
-EndFor
-
-Extrude Surface {47, {0,0,0.2}}{ Layers{ ones[], ones[], ep[] }; };
-Extrude Surface {49, {0,0,0.2}}{ Layers{ ones[], ones[], ep[] }; };
-Extrude Surface {91, {0,0,0.2}}{ Layers{ ones[{0:4}],ones[{0:4}], ep2[] }; };
-Extrude Surface {47, {0,0,-0.2}}{ Layers{ ones[{0:4}],ones[{0:4}], ep2[] }; }; 
-
-Physical Volume(1) = 1 ;
diff --git a/demos/piece.geo b/demos/piece.geo
deleted file mode 100644
index 85f36431b1813ace56601305c25ae3ec3b22a070..0000000000000000000000000000000000000000
--- a/demos/piece.geo
+++ /dev/null
@@ -1,97 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-r1 = .1;
-l1 = 1.;
-l2 = .8;
-l3 = .1;
-r2 = 1.1;
-lc = .1;
-lc2 = .05;
-rint = .2;
-rext = .3;
-
-Point(1) = {0.0,0.0,0.0,lc};
-Point(2) = {l1,0.0,0.0,lc2};
-Point(3) = {l1-r1,0.0,0.0,lc2};
-Point(4) = {l1,r1,0.0,lc2};
-Point(5) = {l1,-r1,0.0,lc2};
-Point(6) = {l1+l2,r1,0.0,lc};
-Point(7) = {l1+l2,-r1,0.0,lc};
-Point(8) = {l1+l2,-r1-l3,0.0,lc};
-Point(9) = {l1+l2,r1+l3,0.0,lc};
-
-Line(1) = {4,6};
-Line(2) = {6,9};
-Line(3) = {7,8};
-Line(4) = {5,7};
-Circle(5) = {4,2,3};
-Circle(6) = {3,2,5};
-
-r = 2*3.14159/5;
-Point(10) = { (l1 + r2) * Cos(r/2) , (l1 + r2) * Sin(r/2), 0.0, lc};
-
-// Remember, all rotations are specified by the axis direction
-// ({0,0,1}), an axis point ({0,0,0}) and a rotation angle (r)
-
-i = 0 ;
-
-For(1:4)
-
-  i+=1 ; 
-
-  Rotate {{0.0,0.0,1.0},{0.0,0.0,0.0}, i*r} {
-    Duplicata {
-      Line{1}; Line{2}; Line{3}; 
-      Line{4}; Line{5}; Line{6}; 
-      Point{10};
-    }
-  }
-
-EndFor
-
-Point(newp) = {rint,0,0,lc};
-Point(newp) = {rext,0,0,lc};
-Point(newp) = {-rint,0,0,lc};
-Point(newp) = {-rext,0,0,lc};
-Point(newp) = {0,rint,0,lc};
-Point(newp) = {0,rext,0,lc};
-Point(newp) = {0,-rint,0,lc};
-Point(newp) = {0,-rext,0,lc};
-
-Circle(31) = {8,118,97};
-Circle(32) = {20,10,9};
-Circle(33) = {47,37,16};
-Circle(34) = {74,64,43};
-Circle(35) = {101,91,70};
-Circle(36) = {119,1,123};
-Circle(37) = {123,1,121};
-Circle(38) = {121,1,125};
-Circle(39) = {125,1,119};
-Circle(40) = {124,1,122};
-Circle(41) = {122,1,126};
-Circle(42) = {126,1,120};
-Circle(43) = {120,1,124};
-
-Line Loop(44) = {37,38,39,36};
-Line Loop(46) = {40,41,42,43};
-Plane Surface(47) = {46,44};
-
-Line Loop(48) = {-2,-1,5,6,4,3,31,-26,-25,29,30,28,27,35,-20,-19,
-  23,24,22,21,34,-14,-13,17,18,16,15,33,-8,-7,11,12,10,9,32};
-Plane Surface(49) = {48,46};
-
-Extrude Surface {47, {0,0,0.2}};
-Extrude Surface {49, {0,0,0.2}};
-Extrude Surface {91, {0,0,0.2}};
-Extrude Surface {47, {0,0,-0.2}};
-
-Surface Loop(373) = {90,371,359,78,82,363,367,86,325,329,317,
-  321,330,301,288,135,49,139,143,147,151,155,159,163,167,171,
-  175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,
-  235,239,243,247,251,255,259,263,267,271,343,347,351,355,372,
-  305,309,313};
-Volume(374) = {373};
-
-Physical Volume(1) = 374 ;
diff --git a/demos/primitives.pos b/demos/primitives.pos
deleted file mode 100644
index e068cfc8358b9ad6f599814999ecc55cf2d073eb..0000000000000000000000000000000000000000
--- a/demos/primitives.pos
+++ /dev/null
@@ -1,55 +0,0 @@
-
-// Post-processing primitives in parsed format
-
-General.FastRedraw = 0 ;
-General.Color.Background = White ;
-General.Color.Foreground = Black ;
-General.Color.Text = Black ;
-
-View "default"{
-  SP(0,10,0){1} ;                                                  // a scalar point
-  VP(0,8,0){1,0,0} ;                                               // a vector point
-  //TP(0,8,0){1,0,0,0,0,0,0,0,0} ;                                 // a tensor point
-  SL(0,6,0, 1,6,0){1,2} ;                                          // a scalar line
-  VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ;                                 // a vector line
-  ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ;                                 // a scalar triangle
-  VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ;                   // a vector triangle
-  SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ;                    // a scalar tetrahedron
-  VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector tetrahedron
-};
-
-
-View "with-options"{
-  SP(0,10,0){1} ;
-  VP(0,8,0){1,0,0} ;
-  //TP(0,8,0){1,0,0,0,0,0,0,0,0} ;
-  SL(0,6,0, 1,6,0){1,2} ;
-  VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ;
-  ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ;
-  VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ;
-  SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ;
-  VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ;
-};
-
-View[1].OffsetX = 3 ;
-View[1].IntervalsType = 2 ;
-View[1].ShowElement = 1 ;
-View[1].ArrowLocation = 2 ;
-View[1].ColorTable = {Red,Green,Magenta,Cyan,Brown,Pink} ;
-
-View "with-options-2"{
-  SP(0,10,0){1} ;
-  VP(0,8,0){1,0,0} ;
-  //TP(0,8,0){1,0,0,0,0,0,0,0,0} ;
-  SL(0,6,0, 1,6,0){1,2} ;
-  VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ;
-  ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ;
-  VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ;
-  SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ;
-  VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ;
-};
-
-View[2].OffsetX = 6 ;
-View[2].IntervalsType = 4 ;
-View[2].ShowElement = 1 ;
-View[2].Format = "%.1f" ;
diff --git a/demos/tower.geo b/demos/tower.geo
deleted file mode 100644
index 5e7ab47c3469133e838c0758f528a5511b6a5933..0000000000000000000000000000000000000000
--- a/demos/tower.geo
+++ /dev/null
@@ -1,55 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-Include "tower.i1" ;
-
-/* Post-Processing meshes */
-
-xBox = 30. ;  
-yBox = y1a * 1.5 ;
-pBox = 20. ;  
-
-Point(1002) = { xBox, yBox, 0, pBox} ;
-Point(1003) = {-xBox, yBox, 0, pBox} ;
-Point(1004) = {-xBox, 0,    0, pBox} ;
-Point(1005) = { xBox, 0,    0, pBox} ;
-
-Line(2301) = {1004,1005};
-Line(2302) = {1005,1002};
-Line(2303) = {1002,1003};
-Line(2305) = {1003,1004};
-
-Line Loop(2307) = {2303,2305,2301,2302};
-Plane Surface(2308) = {2307};
-
-Transfinite Line {2301,2303}  = 61  ;
-Transfinite Line {2302,-2305} = 61 ;
-Transfinite Surface {2308} = {1003,1002,1005,1004} ;
-Recombine Surface {2308} ;
-
-Physical Surface (1201) = {2308} ;
-
-xBox = 30. ;  
-zBox = 150. ;
-pBox = 20. ;  
-
-Point(1006) = { xBox, 1, zBox, pBox} ;
-Point(1007) = {-xBox, 1, zBox, pBox} ;
-Point(1008) = {-xBox, 1,    0, pBox} ;
-Point(1009) = { xBox, 1,    0, pBox} ;
-
-Line(2306) = {1008,1009};
-Line(2307) = {1009,1006};
-Line(2308) = {1006,1007};
-Line(2309) = {1007,1008};
-
-Line Loop(2310) = {2307,2308,2309,2306};
-Plane Surface(2311) = {2310};
-
-Transfinite Line {2306,2308}  = 61  ;
-Transfinite Line {2307,-2309} = 61 ;
-Transfinite Surface {2311} = {1007,1006,1009,1008} ;
-Recombine Surface {2311} ;
-
-Physical Surface (1202) = {2311} ;
diff --git a/demos/tower.i1 b/demos/tower.i1
deleted file mode 100644
index 67a1a4f0a6eae8cad8947c3a687031498d3d58fd..0000000000000000000000000000000000000000
--- a/demos/tower.i1
+++ /dev/null
@@ -1,102 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-h = 19.6 ; hSol = 1. ;
-L = 150. ;
-
-xg  =  0.    ;  yg  = 30.023 + h ;
-x1a = -6.782 ;  y1a = 19.355 + h ;
-x1b = -9.83  ;  y1b =  8.839 + h ;
-x1c = -8.001 ;  y1c =  0.    + h ;
-
-x2a =  6.782 ;  y2a = 19.355 + h ;
-x2b =  9.83  ;  y2b =  8.839 + h ;
-x2c =  8.001 ;  y2c =  0.    + h ;
-
-z0 =   0 ;  dy0 = 12. ;
-z1 =  20 ;  dy1 = 11.787 ;
-z2 =  40 ;  dy2 = 11.148 ;
-z3 =  70 ;  dy3 =  9.391 ;
-z4 = 100 ;  dy4 =  6.673 ;
-z5 = 120 ;  dy5 =  4.326 ;
-z6 = 130 ;  dy6 =  2.991 ;
-z7 = 140 ;  dy7 =  1.550 ;
-z8 = 150 ;  dy8 =  0. ;
-
-p0 = 2. ;  p1 = 30. ;
-
-Include "tower.i2" ;
-
-/* ------------ */
-/* Fil 1a, b, c */
-/* ------------ */
-
-x = x1a ;  y = y1a ;  i_p = 100 ;  i_l = 10 ;
-Include "tower.i3" ;
-x = x1b ;  y = y1b ;  i_p = 200 ;  i_l = 20 ;
-Include "tower.i3" ;
-x = x1c ;  y = y1c ;  i_p = 300 ;  i_l = 30 ;
-Include "tower.i3" ;
-
-/* ------------ */
-/* Fil 2a, b, c */
-/* ------------ */
-
-x = x2a ;  y = y2a ;  i_p = 400 ;  i_l = 40 ;
-Include "tower.i3" ;
-x = x2b ;  y = y2b ;  i_p = 500 ;  i_l = 50 ;
-Include "tower.i3" ;
-x = x2c ;  y = y2c ;  i_p = 600 ;  i_l = 60 ;
-Include "tower.i3" ;
-
-/* ------ */
-/* Fil g  */
-/* ------ */
-
-x = xg ;  y = yg ;  i_p = 700 ;  i_l = 70 ;
-Include "tower.i3" ;
-
-
-/* --------------------------------------------- */
-
-Physical Line (1011) = {10,11,12} ;
-Physical Line (1012) = {20,21,22} ;
-Physical Line (1013) = {30,31,32} ;
-
-Physical Line (1021) = {40,41,42} ;
-Physical Line (1022) = {50,51,52} ;
-Physical Line (1023) = {60,61,62} ;
-
-Physical Line (1010) = {70,71,72} ;
-
-
-Physical Line (1100) = {
-  10,20,30,40,50,60, 70,
-  11,21,31,41,51,61, 71,
-  12,22,32,42,52,62, 72,
-
-   201,202,203,204, 211,212,213,214, 221,222,223,224, 231,232,233,234, 
-   241,242,243,244, 251,252,253,254, 261,262,263,264, 271,272,273,274, 
-   281,282,283,284, 
-   301,302,303,304,305,306,307,308, 311,312,313,314,315,316,317,318, 
-   321,322,323,324,325,326,327,328, 331,332,333,334,335,336,337,338, 
-   401,402,403,404, 411,412,413,414, 421,422,423,424, 431,432,433,434, 
-   441,442,443,444, 451,452,453,454, 
-   501,502,503,504, 511,512,513,514, 521,522,523,524, 531,532,533,534,
-   541,542,543,544, 551,552,553,554
-} ;
-
-Physical Line (1001) = {
-   201,202,203,204, 211,212,213,214, 221,222,223,224, 231,232,233,234, 
-   241,242,243,244, 251,252,253,254, 261,262,263,264, 271,272,273,274, 
-   281,282,283,284, 
-   301,302,303,304,305,306,307,308, 311,312,313,314,315,316,317,318, 
-   321,322,323,324,325,326,327,328, 331,332,333,334,335,336,337,338, 
-   401,402,403,404, 411,412,413,414, 421,422,423,424, 431,432,433,434, 
-   441,442,443,444, 451,452,453,454, 
-   501,502,503,504, 511,512,513,514, 521,522,523,524, 531,532,533,534,
-   541,542,543,544, 551,552,553,554
-} ;
-
-
diff --git a/demos/tower.i2 b/demos/tower.i2
deleted file mode 100644
index bc0708acc7b2dc942e5de0b309e245d0b68baf0e..0000000000000000000000000000000000000000
--- a/demos/tower.i2
+++ /dev/null
@@ -1,172 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-h = 19.6 ; hSol = 1. ;
-L = 150. ;
-
-xg  =  0.    ;  yg  = 30.023 + h ;
-x1a = -6.782 ;  y1a = 19.355 + h ;
-x1b = -9.83  ;  y1b =  8.839 + h ;
-x1c = -8.001 ;  y1c =  0.    + h ;
-
-x2a =  6.782 ;  y2a = 19.355 + h ;
-x2b =  9.83  ;  y2b =  8.839 + h ;
-x2c =  8.001 ;  y2c =  0.    + h ;
-
-
-/* ------------ */
-/*  T o w e r   */
-/* ------------ */
-
-ho = -0.288 ;
-
-
-c0 = 9.144 /2. ;  h0 = 0.10 ;
-c1 = 7.422 /2. ;  h1 =  6.139     + ho ;
-c2 = 5.639 /2. ;  h2 = 12.497     + ho ;
-c3 = 3.657 /2. ;  h3 = 25.527     + ho ;   b3 = 8.001 ;
-c4 = 3.457 /2. ;  h4 = h3 + 1.900 ;
-c5 = 2.743 /2. ;  h5 = h3 + 8.839 ;        b5 = 9.830 ;
-c6 = 2.631 /2. ;  h6 = h5 + 2.320 ;
-c7 = 2.118 /2. ;  h7 = h5 + 10.516 ;       b7 = 6.782 ;
-c8 = 2.100 /2. ;  h8 = h7 + 1.680 ;
-c9 = 1.050 /2. ;  h9 = h7 + 5.029 ;
-
-
-pt0 = 1. ;  pt1 = 1. ;  pt2 = 1. ;  pt3 = 1. ;  pt4 = 1. ;  pt5 = 1. ;
-pt6 = 1. ;  pt7 = 1. ;  pt8 = 1. ;  pt9 = 1. ;
-
-ci = c0 ; hi = h0 ;   pti = pt0 ;   i_p = 0 ;
-Include "tower.i4" ;
-
-ci = c1 ; hi = h1 ;   pti = pt1 ;   i_p = 10 ;
-Include "tower.i4" ;
-Include "tower.i5" ;
-
-ci = c2 ; hi = h2 ;   pti = pt2 ;   i_p = 20 ;
-Include "tower.i4" ;
-Include "tower.i5" ;
-
-ci = c3 ; hi = h3 ;   pti = pt3 ;   i_p = 30 ;
-Include "tower.i4" ;
-
-ci = c4 ; hi = h4 ;   pti = pt4 ;   i_p = 40 ;
-Include "tower.i4" ;
-
-ci = c5 ; hi = h5 ;   pti = pt5 ;   i_p = 50 ;
-Include "tower.i4" ;
-
-ci = c6 ; hi = h6 ;   pti = pt6 ;   i_p = 60 ;
-Include "tower.i4" ;
-
-ci = c7 ; hi = h7 ;   pti = pt7 ;   i_p = 70 ;
-Include "tower.i4" ;
-
-ci = c8 ; hi = h8 ;   pti = pt8 ;   i_p = 80 ;
-Include "tower.i4" ;
-
-ci = c9 ; hi = h9 ;   pti = pt9 ;   i_p = 90 ;
-Point(91) = {  ci , hi , 0. , pti } ;
-Point(92) = { -ci , hi , 0. , pti } ;
-
-
-Point(38) = {  b3 , h3 , 0. , pt3 } ;
-Point(39) = { -b3 , h3 , 0. , pt3 } ;
-
-Point(58) = {  b5 , h5 , 0. , pt5 } ;
-Point(59) = { -b5 , h5 , 0. , pt5 } ;
-
-Point(78) = {  b7 , h7 , 0. , pt7 } ;
-Point(79) = { -b7 , h7 , 0. , pt7 } ;
-
-
-
-Line(201) = { 1 , 11 } ;  Line(202) = { 2 , 12 } ;
-Line(203) = { 3 , 13 } ;  Line(204) = { 4 , 14 } ;
-
-Line(211) = { 11 , 21 } ;  Line(212) = { 12 , 22 } ;
-Line(213) = { 13 , 23 } ;  Line(214) = { 14 , 24 } ;
-
-Line(221) = { 21 , 31 } ;  Line(222) = { 22 , 32 } ;
-Line(223) = { 23 , 33 } ;  Line(224) = { 24 , 34 } ;
-
-Line(231) = { 31 , 41 } ;  Line(232) = { 32 , 42 } ;
-Line(233) = { 33 , 43 } ;  Line(234) = { 34 , 44 } ;
-
-Line(241) = { 41 , 51 } ;  Line(242) = { 42 , 52 } ;
-Line(243) = { 43 , 53 } ;  Line(244) = { 44 , 54 } ;
-
-Line(251) = { 51 , 61 } ;  Line(252) = { 52 , 62 } ;
-Line(253) = { 53 , 63 } ;  Line(254) = { 54 , 64 } ;
-
-Line(261) = { 61 , 71 } ;  Line(262) = { 62 , 72 } ;
-Line(263) = { 63 , 73 } ;  Line(264) = { 64 , 74 } ;
-
-Line(271) = { 71 , 81 } ;  Line(272) = { 72 , 82 } ;
-Line(273) = { 73 , 83 } ;  Line(274) = { 74 , 84 } ;
-
-Line(281) = { 81 , 92 } ;  Line(282) = { 82 , 91 } ;
-Line(283) = { 83 , 91 } ;  Line(284) = { 84 , 92 } ;
-
-
-
-
-Line(301) = { 1 , 17 } ;  Line(302) = { 2 , 17 } ;
-Line(303) = { 2 , 16 } ;  Line(304) = { 3 , 16 } ;
-Line(305) = { 3 , 15 } ;  Line(306) = { 4 , 15 } ;
-Line(307) = { 4 , 18 } ;  Line(308) = { 1 , 18 } ;
-
-Line(311) = { 11 , 27 } ;  Line(312) = { 12 , 27 } ;
-Line(313) = { 12 , 26 } ;  Line(314) = { 13 , 26 } ;
-Line(315) = { 13 , 25 } ;  Line(316) = { 14 , 25 } ;
-Line(317) = { 14 , 28 } ;  Line(318) = { 11 , 28 } ;
-
-Line(321) = { 11 , 17 } ;  Line(322) = { 12 , 17 } ;
-Line(323) = { 12 , 16 } ;  Line(324) = { 13 , 16 } ;
-Line(325) = { 13 , 15 } ;  Line(326) = { 14 , 15 } ;
-Line(327) = { 14 , 18 } ;  Line(328) = { 11 , 18 } ;
-
-Line(331) = { 21 , 27 } ;  Line(332) = { 22 , 27 } ;
-Line(333) = { 22 , 26 } ;  Line(334) = { 23 , 26 } ;
-Line(335) = { 23 , 25 } ;  Line(336) = { 24 , 25 } ;
-Line(337) = { 24 , 28 } ;  Line(338) = { 21 , 28 } ;
-
-
-
-Line(401) = { 31 , 32 } ;  Line(402) = { 32 , 33 } ;
-Line(403) = { 33 , 34 } ;  Line(404) = { 34 , 31 } ;
-
-Line(411) = { 41 , 42 } ;  Line(412) = { 42 , 43 } ;
-Line(413) = { 43 , 44 } ;  Line(414) = { 44 , 41 } ;
-
-Line(421) = { 51 , 52 } ;  Line(422) = { 52 , 53 } ;
-Line(423) = { 53 , 54 } ;  Line(424) = { 54 , 51 } ;
-
-Line(431) = { 61 , 62 } ;  Line(432) = { 62 , 63 } ;
-Line(433) = { 63 , 64 } ;  Line(434) = { 64 , 61 } ;
-
-Line(441) = { 71 , 72 } ;  Line(442) = { 72 , 73 } ;
-Line(443) = { 73 , 74 } ;  Line(444) = { 74 , 71 } ;
-
-Line(451) = { 81 , 82 } ;  Line(452) = { 82 , 83 } ;
-Line(453) = { 83 , 84 } ;  Line(454) = { 84 , 81 } ;
-
-
-
-
-Line(501) = { 31 , 39 } ;  Line(502) = { 41 , 39 } ;
-Line(503) = { 34 , 39 } ;  Line(504) = { 44 , 39 } ;
-Line(511) = { 32 , 38 } ;  Line(512) = { 42 , 38 } ;
-Line(513) = { 33 , 38 } ;  Line(514) = { 43 , 38 } ;
-
-Line(521) = { 51 , 59 } ;  Line(522) = { 61 , 59 } ;
-Line(523) = { 54 , 59 } ;  Line(524) = { 64 , 59 } ;
-Line(531) = { 52 , 58 } ;  Line(532) = { 62 , 58 } ;
-Line(533) = { 53 , 58 } ;  Line(534) = { 63 , 58 } ;
-
-Line(541) = { 71 , 79 } ;  Line(542) = { 81 , 79 } ;
-Line(543) = { 74 , 79 } ;  Line(544) = { 84 , 79 } ;
-Line(551) = { 72 , 78 } ;  Line(552) = { 82 , 78 } ;
-Line(553) = { 73 , 78 } ;  Line(554) = { 83 , 78 } ;
-
diff --git a/demos/tower.i3 b/demos/tower.i3
deleted file mode 100644
index 2c226f78a05f0bacf22c7469c7534db33dd37e5e..0000000000000000000000000000000000000000
--- a/demos/tower.i3
+++ /dev/null
@@ -1,43 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-/* INPUT :
-   i_p
-   i_l
-*/
-
-Point(i_p + 0) = { x, y-dy0, z8+z0, p0} ;
-Point(i_p + 1) = { x, y-dy1, z8+z1, p0} ;
-Point(i_p + 2) = { x, y-dy2, z8+z2, p0} ;
-Point(i_p + 3) = { x, y-dy3, z8+z3, p0} ;
-Point(i_p + 4) = { x, y-dy4, z8+z4, p0} ;
-Point(i_p + 5) = { x, y-dy5, z8+z5, p0} ;
-Point(i_p + 6) = { x, y-dy6, z8+z6, p0} ;
-Point(i_p + 7) = { x, y-dy7, z8+z7, p0} ;
-Point(i_p + 8) = { x, y-dy8, z8+z8, p0} ;
-
-Point(i_p + 11) = { x, y-dy1,z8-z1, p0} ;
-Point(i_p + 12) = { x, y-dy2,z8-z2, p0} ;
-Point(i_p + 13) = { x, y-dy3,z8-z3, p0} ;
-Point(i_p + 14) = { x, y-dy4,z8-z4, p0} ;
-Point(i_p + 15) = { x, y-dy5,z8-z5, p0} ;
-Point(i_p + 16) = { x, y-dy6,z8-z6, p0} ;
-Point(i_p + 17) = { x, y-dy7,z8-z7, p0} ;
-Point(i_p + 18) = { x, y-dy8,z8-z8, p0} ;
-
-
-Point(i_p + 20) = { x, y-dy0, -z8+z0, p0} ;
-Point(i_p + 21) = { x, y-dy1, -z8+z1, p0} ;
-Point(i_p + 22) = { x, y-dy2, -z8+z2, p0} ;
-Point(i_p + 23) = { x, y-dy3, -z8+z3, p0} ;
-Point(i_p + 24) = { x, y-dy4, -z8+z4, p0} ;
-Point(i_p + 25) = { x, y-dy5, -z8+z5, p0} ;
-Point(i_p + 26) = { x, y-dy6, -z8+z6, p0} ;
-Point(i_p + 27) = { x, y-dy7, -z8+z7, p0} ;
-
-
-Spline(i_l + 0) = {i_p, i_p+1 : i_p+8};
-Spline(i_l + 1) = {i_p, i_p+11 : i_p+18};
-Spline(i_l + 2) = {i_p+20 : i_p+27, i_p + 18};
-
diff --git a/demos/tower.i4 b/demos/tower.i4
deleted file mode 100644
index 097293ebfbe0bef594f10b1b702428780143bc1f..0000000000000000000000000000000000000000
--- a/demos/tower.i4
+++ /dev/null
@@ -1,8 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-Point(i_p + 1) = { -ci , hi , -ci ,  pti } ;
-Point(i_p + 2) = {  ci , hi , -ci ,  pti } ;
-Point(i_p + 3) = {  ci , hi ,  ci ,  pti } ;
-Point(i_p + 4) = { -ci , hi ,  ci ,  pti } ;
diff --git a/demos/tower.i5 b/demos/tower.i5
deleted file mode 100644
index 4b8d4b1e8905263ba23336f0f5b86e69c8ade1d9..0000000000000000000000000000000000000000
--- a/demos/tower.i5
+++ /dev/null
@@ -1,8 +0,0 @@
-/* 
-   Gmsh demo file (C) 2000 C. Geuzaine, J.-F. Remacle
-*/
-
-Point(i_p + 5) = {  0. , hi ,  ci ,  pti } ;
-Point(i_p + 6) = {  ci , hi ,  0. ,  pti } ;
-Point(i_p + 7) = {  0. , hi , -ci ,  pti } ;
-Point(i_p + 8) = { -ci , hi ,  0. ,  pti } ;
diff --git a/doc/.globalrc b/doc/.globalrc
deleted file mode 100644
index 2b92f4f4cc9eba365dcd973ea8f3d385b12a7dde..0000000000000000000000000000000000000000
--- a/doc/.globalrc
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# Copyright (c) 1998, 1999
-#             Shigio Yamaguchi. All rights reserved.
-# Copyright (c) 1999, 2000
-#             Tama Communications Corporation. All rights reserved.
-#
-# This file is part of GNU GLOBAL.
-#
-# GNU GLOBAL is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU GLOBAL is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# *
-# Configuration file for GNU GLOBAL source code tag system.
-#
-# GLOBAL doesn't need 'global.conf' because it has the default values in it.
-# But if you have this file as '/etc/global.conf' or "$HOME/.globalrc"
-# then GLOBAL system overwrite default values with the values from the file.
-#
-# 'global.conf' is termcap style file.
-# 'default' is default target.
-# You can specify target with GTAGSLABEL environment variable.
-#
-default:\
-	:tc=gctags:tc=htags:
-#---------------------------------------------------------------------
-#
-# Configuration for gtags(1)
-#
-# format:
-#	Select 'standard' or 'compact'. By default, it assumes 'standard'.
-# suffixes:
-#	Suffixes of target source file. By default, it assumes
-#	'c,h,y,c++,cc,cpp,cxx,hxx,C,H,s,S,java'
-# skip:
-#	Skip files among the target files. If the name ends with '/',
-#	gtags skips all files under the directory.
-#	By default, it assumes 'y.tab.c,y.tab.h,SCCS/,RCS/,CVS/'.
-# extractmethod:
-#	Please see source code of gtags(1).
-# GTAGS:
-#	Tag command for definitions. Non of default value.
-# GRTAGS:
-#	Tag command for references. Non of default value.
-# GSYMS:
-#	Tag command for other symbols. Non of default value.
-#
-# Htags(1) needs both of GTAGS and GRTAGS. Global(1)'s -s option needs GSYMS.
-#
-#---------------------------------------------------------------------
-common:\
-	:skip=GetDP.tab.h,GetDP.tab.c,GetDP.yy.c,pvpii.c,utils/,trash/,\
-              Gmsh.tab.cpp,Gmsh.tab.cpp.h,Gmsh.yy.cpp,\
-              CVS/,HTML/:\
-	:format=standard:
-#
-# [gctags]
-#
-# This command is distributed as part of GLOBAL.
-#
-gctags|tag command for GLOBAL:\
-	:tc=common:\
-	:suffixes=c,h,y,c++,cc,cpp,cxx,hxx,C,H,s,S,java:\
-	:sort_command=sort:\
-	:sed_command=sed:\
-	:GTAGS=gctags %s:\
-	:GRTAGS=gctags -r %s:\
-	:GSYMS=gctags -s %s:
-#
-# [Emacs's ctags]
-#
-# This ctags is distributed as a part of Emacs editor.
-#
-# supported suffixes by etags.
-#
-#      lisp: l,el,lsp,lisp,cl,clisp
-#    scheme: sm,scm,scheme,t,sch,ss,SM,SCM
-# assembler: s,a,sa,asm,src,def,ins,inc
-#       C++: C,H,cpp,cxx,hxx,cc
-#        C*: cs,hs
-#    c,yacc: c,h,y
-#  pl,p,pas: pascal
-#   fortran: f,for
-#
-# [Installation]
-# % cd <emacs source directory>/lib-src
-# % make ctags
-# # cp ctags /usr/local/bin/ctags-emacs
-#
-ctags-emacs|ctags based on etags|GNU Emacs ctags:\
-	:tc=common:\
-	:suffixes=el,s,a,sa,asm,C,H,cpp,cxx,hxx,cc,c,h,y:\
-	:extractmethod:\
-	:GTAGS=/usr/local/bin/ctags-emacs -x -d -T -w %s:
-#
-# [Exuberant Ctags]
-#
-# This ctags is distributed as a part of Vim editor.
-#
-# [Installation]
-# % cd <Vim source directory>/src/ctags
-# % make
-# # cp ctags /usr/local/bin/ctags-exuberant
-#
-ctags-exuberant|Exuberant Ctags|ctags by Darren Hiebert:\
-	:tc=common:\
-	:suffixes=s,a,sa,asm,C,H,cpp,cxx,hxx,cc,c,h,y:\
-	:extractmethod:\
-	:GTAGS=/usr/local/bin/ctags-exuberant -x %s | perl -ne '\
-		if (/^operator \\S+\\s+function\\s/) { s/^operator //; }\
-		($name, $type, $no, $path, $line) = split(/[ \\t]+/, $_, 5);\
-		printf(STDOUT "%-16s %4d %-16s %s", $name, $no, $path, $line);':
-#---------------------------------------------------------------------
-#
-# Configuration for htags(1)
-# Let's paint hypertext with your favorite colors!
-#
-# body_begin,body_end:
-#	body tag
-# title_begin,title_end:
-#	title tag
-# comment_begin,comment_end:
-#	comment tag. (/* ... */, // ...)
-# sharp_begin,sharp_end:
-#	macro tag. (#include, #define, ...)
-# brace_begin,brace_end:
-#	brace tag. ('{', '}')
-# reserved_begin,reserved_end:
-#	reserved word tag. (while, if, char, ...)
-# ncol:
-#	columns of line number. (default = 4)
-# tabs:
-#	tab stop. (default = 8)
-# full_path:
-#	list file names with full path in file index.
-#	By default, the last component of a path.
-# table_list:
-#	list tags using table tag (<table></table>).
-# normal_suffix:
-#	normal suffix for html file. By default, 'html'. 
-# gzipped_suffix:
-#	suffix for compressed html file. By default, 'ghtml'.
-# script_alias:
-#	specified -s option then use this value as script alias.
-#
-#---------------------------------------------------------------------
-htags:\
-	:body_begin=<BODY BGCOLOR="#ffffff">:body_end=</BODY>:\
-	:table_begin=<TABLE>:table_end=</TABLE>:\
-	:title_begin=<FONT COLOR=#cc0000>:title_end=</FONT>:\
-	:comment_begin=<I><FONT COLOR=darkred>:comment_end=</FONT></I>:\
-	:sharp_begin=<FONT COLOR=darkviolet>:sharp_end=</FONT>:\
-	:brace_begin=<FONT COLOR=blue>:brace_end=</FONT>:\
-	:reserved_begin=<FONT COLOR=green><B>:reserved_end=</B></FONT>:script_alias=/cgi-bin/:\
-	:ncol#4:tabs#8:normal_suffix=html:gzipped_suffix=ghtml:
diff --git a/doc/BUGS b/doc/BUGS
deleted file mode 100644
index 3d51eefb15920d7c5aa1e3a693a2fb86e2a87a95..0000000000000000000000000000000000000000
--- a/doc/BUGS
+++ /dev/null
@@ -1,11 +0,0 @@
-$Id: BUGS,v 1.3 2001-06-06 08:47:48 geuzaine Exp $
-
-* Splines are bugged since version 1. Don't use them.
-
-* Si la coherence des surfaces n'est pas recouvree en une etape, et
-qu'on fait une seconde passe qui marche, les volumes ne sont pas
-retrouves-< pas de maillage final.
-
-* Comme le code se stabilise, je pense qu'il serait grand temps de
-penser a desallouer les structures. On pourrait alors cloturer une
-version 1 "stable".
diff --git a/doc/CONTRIBUTORS b/doc/CONTRIBUTORS
deleted file mode 100644
index 894ffa39ebbeba9e35f981d5c8a2b5d3cb850b0f..0000000000000000000000000000000000000000
--- a/doc/CONTRIBUTORS
+++ /dev/null
@@ -1,33 +0,0 @@
-$Id: CONTRIBUTORS,v 1.5 2001-05-01 18:58:24 geuzaine Exp $
-
-Gmsh is copyright (c) 1997-2001 by
-
-    Jean-Fran�ois Remacle <remacle@scorec.rpi.edu> and
-    Christophe Geuzaine <christophe.geuzaine@ulg.ac.be>
-
-Parts of the code have been contributed by
-
-    Patrick Dular <patrick.dular@ulg.ac.be>
-    Marc Um� <Marc.Ume@digitalgraphics.be>
-
-Special thanks to the following folks who have greatly contributed by
-providing fresh ideas on theoretical or programming topics, or who
-have sent patches, requests, warnings, or pleas for changes or
-improvements. While attempts were made to be as complete as possible,
-it is inevitable that some contributors have been omitted. If you are
-in this situation, just send an e-mail to one of the authors, and you
-will be added to the list!
-
-    �ric Bechet <eric.bechet@epost.de>
-    David Colignon <david.colignon@ulg.ac.be>
-    Philippe Geuzaine <geuzaine@gnat.colorado.edu>
-    Johan Gyselinck <johan.gyselinck@ulg.ac.be>
-    Fran�ois Henrotte <fhenrott@esat.kuleuven.ac.be>
-    Beno�t Meys <bmeys@techspace-aero.be>
-    Nicolas Mo�s <moes@tam9.mech.nwu.edu>
-
-Finally, thanks to all of you who sent e-mail showing interest. This
-has motivated us a lot to release the code as free software and to
-continue improving it.
-
-
diff --git a/doc/FAQ b/doc/FAQ
deleted file mode 100644
index 21186bcc228a5a6cfe4a4189b3d2181191f9e869..0000000000000000000000000000000000000000
--- a/doc/FAQ
+++ /dev/null
@@ -1,29 +0,0 @@
-$Id: FAQ,v 1.2 2001-03-06 21:31:17 geuzaine Exp $
-
-Q. Gmsh complains about missing libraries.
-A. Try 'ldd gmsh' to check if all required shared libraries are
-installed on your system.
-
-Q. Gmsh does not work under HP-UX.
-A. the HP version is reported not to work with native OpenGL. You
-should install Mesa instead.
-
-Q. When moving the mouse over the graphic window, everything that is
-drawn on it disappears, and each item is visible only when the cursor
-is directly over it.
-A. You should start Gmsh with the '-noov' command line option.
-
-Q. The graphics display very slowly.
-A. Are you are executing Gmsh from a remote host (via the network)
-without GLX? You should turn double buffering off (with the -nodb
-command line option).
-
-Q. Big post-processing scenes are slow to display.
-A. Try display lists (-dl command line option).
-
-Q. Gmsh keeps re-displaying its graphics when other windows partially
-hide the graphical window. 
-A. Disable opaque move in your window manager.
-
-Q. What does Gmsh mean?
-A. Nothing ;-)
diff --git a/doc/FORMATS b/doc/FORMATS
deleted file mode 100644
index 89ee3b762f30327c92f051725b0391529923e421..0000000000000000000000000000000000000000
--- a/doc/FORMATS
+++ /dev/null
@@ -1,201 +0,0 @@
-$Id: FORMATS,v 1.8 2001-03-01 08:04:15 geuzaine Exp $
-
-This document describes the mesh and post-processing file formats for
-Gmsh, version >= 1.0. 
-
-(This document deals only with the import/export interfaces for
-Gmsh. The language driving the behaviour of Gmsh for defining
-geometries, options, scripts, etc. is explained step by step in the
-tutorials.)
-
-
-Gmsh Mesh File Format
-=====================
-
-The 'msh' file format is the native output file format for Gmsh. The
-file is divided in two sections (enclosed in $KEY and $ENDKEY pairs):
-$NOD/$ENDNOD defines the nodes and $ELM/$ENDELM defines the elements.
-
-   $NOD
-   number-of-nodes
-   node-number coord1 coord2 coord3 
-   ...
-   $ENDNOD
-
-   $ELM
-   number-of-elements
-   elm-number elm-type elm-region unused nb-nodes node-numbers
-   ...
-   $ENDELM
-
-All the syntactic variables stand for integers except coord1, coord2
-and coord3 which stand for floating point values, and node-numbers
-which stand for a list of nb-nodes integers.  The elm-type value
-defines the geometrical type for the element:
-   
-   1  Line (2 nodes, 1 edge). 
-   2  Triangle (3 nodes, 3 edges). 
-   3  Quadrangle (4 nodes, 4 edges). 
-   4  Tetrahedron (4 nodes, 6 edges, 4 facets). 
-   5  Hexahedron (8 nodes, 12 edges, 6 facets). 
-   6  Prism (6 nodes, 9 edges, 5 facets). 
-   7  Pyramid (5 nodes, 8 edges, 5 facets). 
-   15 Point (1 node). 
-
-The elm-region value is the number of the physical entity to which the
-element belongs.
-
-
-Gmsh Ascii Post-Processing File Format
-======================================
-   
-A post-processing file is divided in several sections: one format
-section (enclosed between $PostFormat/$EndPostFormat) and (possibly
-multiple) post-processing views (enclosed between $View/$EndView
-pairs).
-
-    $PostFormat
-    version-number file-type data-size
-    $EndPostFormat
-
-    $View
-    view-name nb-time-steps
-    nb-scalar-points nb-vector-points nb-tensor-points
-    nb-scalar-lines nb-vector-lines nb-tensor-lines
-    nb-scalar-triangles nb-vector-triangles nb-tensor-triangles
-    nb-scalar-tetrahedra nb-vector-tetrahedra nb-tensor-tetrahedra
-    time-step-values
-    scalar-point-value ...
-    vector-point-value ...
-    tensor-point-value ...
-    scalar-line-value ...
-    vector-line-value ...
-    tensor-line-value ...
-    scalar-triangle-value ...
-    vector-triangle-value ...
-    tensor-triangle-value ...
-    scalar-tetrahedron-value ...
-    vector-tetrahedron-value ...
-    tensor-tetrahedron-value ...
-    $endView
-
-version-number is a floating point number giving the version of
-Gmsh for which the file is destined (e.g. 1.0).
-
-file-type is an integer equal to 0 in the ascii file format.
-
-data-size is an integer equal to the size of the floating point
-numbers used in the file (usually, data-size == sizeof(double)).
-
-view-name is a string containing the name of the view (max. 256 characters)
-
-nb-time-step is an integer giving the number of time steps in the view
-
-nb-scalar-points, nb-vector-points, etc. are integers giving the
-number of scalar points, vector points, etc. in the view.
-
-time-step-values is a list of nb-time-steps double precision numbers
-giving the value of the time (or any other variable) for which an
-evolution was saved.
-
-scalar-point-value, vector-point-value, etc. are lists of double
-precision numbers giving the node coordinates and the values
-associated with the nodes of the nb-scalar-points, nb-vector-points,
-etc. for each time-step-value. For example, vector-triangle-value is
-defined as
-
-    coord1-node1 coord1-node2 coord1-node3
-    coord2-node1 coord2-node2 coord2-node3
-    coord3-node1 coord3-node2 coord3-node3
-    comp1-node1-time1 comp2-node1-time1 comp3-node1-time1
-    comp1-node2-time1 comp2-node2-time1 comp3-node2-time1
-    comp1-node3-time1 comp2-node3-time1 comp3-node3-time1
-    comp1-node1-time2 comp2-node1-time2 comp3-node1-time2
-    comp1-node2-time2 comp2-node2-time2 comp3-node2-time2
-    comp1-node3-time2 comp2-node3-time2 comp3-node3-time2
-    ...
-
-
-Gmsh Binary Post-Processing File Format
-=======================================
-
-The binary post-processing file format is the same as the ascii file format,
-except that:
-
-1) file-type equals 1.
-
-2) all lists of floating point numbers are written in binary format
-
-3) there is an additional integer, of value 1, written before
-   time-step-values. This integer is used for detecting if the
-   computer on which the binary file was written and the computer on
-   which the file is read are of the same type (little or big endian).
-
-Here is a pseudo C code to write the beginning of a post-processing
-file in binary format:
-
-int one = 1;
-
-fprintf(file, "$PostFormat\n");
-fprintf(file, "%g %d %d\n", 1.0, 1, sizeof(double));
-fprintf(file, "$EndPostFormat\n");
-
-fprintf(file, "$View\n");
-fprintf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", 
-        view-name, nb-time-steps,
-        nb-scalar-points, nb-vector-points, nb-tensor-points,
-        nb-scalar-lines, nb-vector-lines, nb-tensor-lines,
-        nb-scalar-triangles, nb-vector-triangles, nb-tensor-triangles,
-        nb-scalar-tetrahedra, nb-vector-tetrahedra, nb-tensor-tetrahedra);
-fwrite(&one, sizeof(int), 1, file);
-fwrite(time-step-values, sizeof(double), nb-time-steps, file);
-fwrite(all-scalar-point-values, sizeof(double), all-scalar-points, file);
-...
-fprintf(file, "$EndView\n");
-
-In this pseudo-code, all-scalar-point-values is the array of double
-precision numbers containing all the scalar-point-value lists, put one
-after each other in order to form a long array of doubles. The
-principle is the same for all other kinds of values.
-
-
-Gmsh Parsed Post-Processing Format
-==================================
-
-For testing purposes (or with very small data sets, e.g. in the
-tutorials), there is an additional post-processing format which is
-parsed by the same grammar analyser as the geometry. You can thus, for
-example, embed small post-processing views into your geometrical
-descriptions. The format of the parsed post-processing files is the
-following:
-
-   View "name" {
-     type-of-element (list-of-coordinates) {list-of-values} ;
-     ...
-   };
-
-   12 base objects can be displayed:
-
-                       type-of-element   list-of-coordinates    list-of-values
-   --------------------------------------------------------------------------------
-   scalar point        SP                3                      1  * nb-time-steps
-   vector point        VP                3                      3  * nb-time-steps
-   tensor point        TP                3                      9  * nb-time-steps
-   scalar line         SL                6                      2  * nb-time-steps
-   vector line         VL                6                      6  * nb-time-steps
-   tensor line         TL                6                      18 * nb-time-steps
-   scalar triangle     ST                9                      3  * nb-time-steps
-   vector triangle     VT                9                      9  * nb-time-steps
-   tensor triangle     TT                9                      27 * nb-time-steps
-   scalar tetrahedron  SS                12                     4  * nb-time-steps
-   vector tetrahedron  VS                12                     12 * nb-time-steps
-   tensor tetrahedron  TS                12                     36 * nb-time-steps
-
-Contrary to the ascii post-processing file format, the coordinates are
-given by node, i.e. (coord1, coord2, coord3) for a point,
-(coord1-node1, coord2-node1, coord3-node1, coord1-node2, coord2-node2,
-coord3-node2) for a line, (coord1-node1, coord2-node1, coord3-node1,
-coord1-node2, coord2-node2, coord3-node2, coord1-node3, coord2-node3,
-coord3-node3) for a triangle, etc. The values are given in the same
-order as for the ascii post-processing file format.
-
diff --git a/doc/KEYWORDS b/doc/KEYWORDS
deleted file mode 100644
index 1b3c783f651b623f80174910100752bb293bfd82..0000000000000000000000000000000000000000
--- a/doc/KEYWORDS
+++ /dev/null
@@ -1,213 +0,0 @@
-// $Id: KEYWORDS,v 1.1 2001-05-16 14:33:16 geuzaine Exp $
-
-/* List of reserved keywords for Gmsh 1.19 */
-
-/* Special characters */
-
-\t
-\n
-\r
-\f
-;
-/*
-//
-"
-'
-=
-+=
--=
-*=
-/=
-:
-...
-/\
-||
-&&
-++
---
-==
-!=
-~=
-<=
->=
-
-/* GEO file format */
-
-newreg
-newp
-
-Acos
-ArcCos
-Asin
-ArcSin
-Atan
-ArcTan
-Atan2
-ArcTan2
-Attractor
-
-Bump
-BSpline
-Bounds
-
-Ceil
-Cosh
-Cos
-Characteristic
-Circle
-Coherence
-Complex
-Color
-ColorTable
-CatmullRom
-Call
-
-Delete
-Dilate
-Duplicata
-Draw
-
-Exp
-Ellipsis
-Extrude
-Elliptic
-ELLIPSE
-EndFor
-EndIf
-Exit
-
-Fabs
-Floor
-Fmod
-For
-Function
-
-Hypot
-
-In
-If
-Intersect
-
-Knots
-
-Length
-Line
-Loop
-Log
-Log10
-Layers
-
-Modulo
-Meshes
-
-Nurbs
-
-Order
-
-Physical
-Pi
-Plane
-Point
-Power
-Progression
-Parametric
-Printf
-
-Recombine
-Rotate
-Ruled
-Rand
-Return
-
-Sqrt
-Sin
-Sinh
-Spline
-Surface
-Symmetry
-Sprintf
-
-Transfinite
-Translate
-Tanh
-Tan
-Trimmed
-
-Using
-
-Volume
-
-With
-
-SS
-VS
-TS
-ST
-VT
-TT
-SL
-VL
-TL
-SP
-VP
-TP
-
-/* STEP ISO-10303-21 file format */
-
-CARTESIAN_POINT
-B_SPLINE_SURFACE_WITH_KNOTS
-B_SPLINE_CURVE_WITH_KNOTS
-.UNSPECIFIED.
-.CONTINUOUS.
-.F.
-.T.
-.U.
-.V.
-ORIENTED_EDGE
-EDGE_CURVE
-EDGE_LOOP
-VERTEX_POINT
-FACE_OUTER_BOUND
-FACE_BOUND
-ADVANCED_FACE
-LINE
-VECTOR
-DIRECTION
-AXIS2_PLACEMENT_3D
-PLANE
-HEADER
-DATA
-FILE_SCHEMA
-FILE_NAME
-FILE_DESCRIPTION
-"ISO-10303-21"
-"END-ISO-10303-21"
-ENDSEC
-CLOSED_SHELL
-ADVANCED_BREP_SHAPE_REPRESENTATION
-MANIFOLD_SOLID_BREP
-CYLINDRICAL_SURFACE
-CONICAL_SURFACE
-TOROIDAL_SURFACE
-CIRCLE
-TRIMMED_CURVE
-GEOMETRIC_SET
-COMPOSITE_CURVE_SEGMENT
-COMPOSITE_CURVE
-PRODUCT_DEFINITION
-PRODUCT_DEFINITION_SHAPE
-SHAPE_DEFINITION_REPRESENTATION
-
-/* STL file format */
-
-vertex
-facet
-normal
-outer
-loop
-endloop
-endfacet
-endsolid
-solid
-
-// $Id: KEYWORDS,v 1.1 2001-05-16 14:33:16 geuzaine Exp $
\ No newline at end of file
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644
index 28f91ec995f7d8caa436926166b2c0001e6c9ad2..0000000000000000000000000000000000000000
--- a/doc/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $
-
-RM      = rm
-RMFLAGS = -f
-
-dvi:
-	texi2dvi gmsh.texi 
-
-ps: dvi
-	dvips gmsh -o
-
-pdf:
-	texi2pdf gmsh.texi 
-
-html:
-	texi2html -expandinfo -number -split_chapter gmsh.texi
-
-html2:
-	Texi2html -init_file gmsh.htmlconfig gmsh.texi
-
-html3:
-	makeinfo --html gmsh.texi
-
-info:
-	makeinfo gmsh.texi
-
-infoz:
-	gtar zcvf gmsh-info.tgz gmsh.info*
-
-doc: ps pdf html info
-
-install:
-	cp gmsh.info* /usr/local/info/
-	install-info gmsh.info /usr/local/info/dir
-
-clean:
-	$(RM) $(RMFLAGS) *.cp* *.fn* *.ky* *.pg* *.tp* *.vr* *.mv* \
-                         *.log *.toc *.aux \
-                         *.dvi *.ps gmsh.pdf \
-                         *.html *.info* gmsh-info.tgz*
-
-
diff --git a/doc/README.cvs b/doc/README.cvs
deleted file mode 100644
index d24781307b383f932820e70133fa60a50d2a96a2..0000000000000000000000000000000000000000
--- a/doc/README.cvs
+++ /dev/null
@@ -1,17 +0,0 @@
-
-To download the latset full source by CVS, type
-
-cvs -d :pserver:YOUR_NAME@elap57.montefiore.ulg.ac.be:/usr/users57/cvs-master COMMAND
-
-where YOUR_NAME is your username on elap57.montefiore.ulg.ac.be, and where COMMAND is
-first 'login' (you will be prompted for a password), and then 'checkout gmsh'. When
-this is done, you can use 'logout' to exit.
-
-To update your local version, type
-
-cvs update -dP
-
-To submit your changes, type
-
-cvs commit
-
diff --git a/doc/README.devel b/doc/README.devel
deleted file mode 100644
index 9d736185f1bdb323e6f95b6ff397eca37452cc18..0000000000000000000000000000000000000000
--- a/doc/README.devel
+++ /dev/null
@@ -1,29 +0,0 @@
-
-Some easy rules to make the code easy to read/debug/maintain:
-
-- please enable full warnings for your compiler (e.g. gcc -Wall)
-- always use Msg() to print information/errors/etc.
-- indent your files and, if working on Windows, suppress the tabs (untabify)
-
-
-How to add an option in the graphical user interface?
-
-1) Create the option in the Context_T class (Common/Context.h) if it's
-a classical option, or in the View class (Common/View.h) if it's a
-post-processing view-dependent option.
-
-2) In Common/DefaultOptions.h, give a name (for the parser to be able
-to access it), a reference to a handling routine (i.e. opt_XXX) and a
-default value for this option.
-
-3) Create the handling routine opt_XXX in Common/Options.cpp (and add
-the prototype in Common/Options.h).
-
-4) Create the associated widget in Fltk/GUI.cpp
-
-5) If no special callback is to be associated to the widget, add the
-handling routine opt_XXX to the OK callback for the corresponding
-option panel (in Fltk/Callbacks.cpp).
-
-6) That's it!
-
diff --git a/doc/README.leaks b/doc/README.leaks
deleted file mode 100644
index 5f138056b35b93c84017dcd7190f866cd883d95c..0000000000000000000000000000000000000000
--- a/doc/README.leaks
+++ /dev/null
@@ -1,6 +0,0 @@
-* LIBNJAMD
-
-export LD_PRELOAD=libnjamd.so
-
- kill -USR1
-
diff --git a/doc/README.txt b/doc/README.txt
deleted file mode 100644
index cc17ef0bf84973b66e6c18355d005fea1ce138f5..0000000000000000000000000000000000000000
--- a/doc/README.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-$Id: README.txt,v 1.3 2001-05-08 09:19:28 geuzaine Exp $
-
-For Windows versions of Gmsh only:
-==================================
-
-1) About opengl32.dll:
-
-If a version of the OpenGL library opengl32.dll is already installed
-on your system, you should remove the version shipped with
-Gmsh. Failing to do so may result in an incorrect behaviour of Gmsh
-(the most common being the graphic window staying "transparent").
-
-2) About cygwin1.dll:
-
-If you plan to use other programs than Gmsh which depend on the
-cygwin1.dll library (e.g. GetDP, http://www.geuz.org/getdp/), you
-should keep only one version of the library on your system. For this
-purpose, you should move the file cygwin1.dll from this directory to
-the Windows system directory (usually C:\Windows\System\) and suppress
-all other versions of cygwin1.dll. Failing to do so may result in
-incorrect behaviour of applications sharing the library and running
-simultaneously.
-
-3) About configuration files:
-
-Gmsh saves session information and default options on disk. The
-directory in which these files are saved is (in that order) $HOME (if
-the HOME variable is defined, e.g. in your autoexec.bat file), $TEMP
-(if TEMP is defined) or $TMP (if TMP is defined). If none of these
-variables are defined, Gmsh will try to save/load its configuration
-files from the current working directory.
-
-4) About solvers:
-
-Gmsh can be used as a front end to solvers, e.g. to GetDP. The default
-behaviour of Gmsh is to look for these solvers in the same directory
-as the Gmsh executable (i.e. to look for getdp.exe in the same
-directory as gmsh.exe). If you don't want to copy the solver
-executable into this directory, you have to modify the path in the
-solver command (in the solver option panel).
diff --git a/doc/VERSIONS b/doc/VERSIONS
deleted file mode 100644
index bcaf0f0d2e10822d7781c97201f2e850729f8d67..0000000000000000000000000000000000000000
--- a/doc/VERSIONS
+++ /dev/null
@@ -1,151 +0,0 @@
-$Id: VERSIONS,v 1.53 2001-08-12 14:24:51 geuzaine Exp $
-
-New in 1.23: Fixed duplicate elements generation with Extrude; Better
-display of displacement maps; boundary operator generalization; new
-explode option for post-processing views; enhanced link view behaviour
-(to update only the changed items); new default plugins: Skin,
-Transform, Smooth; various other bug fixes and clean-ups (mostly in
-the post-processing module and for extruded meshes);
-
-New in 1.22: Fixed (yet another) bug for 2D mesh in the mean plane;
-fixed surface coherence bug in extruded meshes; new double logarithmic
-scale, saturate value and smoothed normals option for post-processing
-views; plugins are now enabled by default; three new experimental
-statically linked plugins: CutMap (extracts a given iso surface from a
-3D scalar map), CutPlane (cuts a 3D scalar map with a plane section),
-CutSphere (cuts a 3D scalar map with a sphere); various other bug
-fixes, additions and clean-ups;
-
-New in 1.21: Fixed more memory leaks; added -opt command line option
-to parse definitions directly from the command line; fixed missing
-screen refreshes during contour/surface/volume selection; Enhanced
-string manipulation functions (Sprintf, StrCat, StrPrefix); Many other
-small fixes and clean-ups;
-
-New in 1.20: Fixed various bugs (memory leaks, functions in included
-files, solver command selection, ColorTable option, duplicate nodes in
-extruded meshes (not finished yet), infinite loop on empty views,
-orientation of recombined quadrangles...); reorganized the interface
-menus; added constrained background mesh and mesh visibility options;
-added mesh quality histograms; changed default mesh colors;
-reintegrated the old command-line extrusion mesh generator;
-
-New in 1.19: Fixed seg. fault for scalar simplex post-processing; new
-Solver menu; interface for GetDP solver through sockets; fixed
-multiple scale alignment; added some options + full option
-descriptions;
-
-New in 1.18: Fixed many small bugs and incoherences in
-post-processing; fixed broken background mesh in 1D mesh generation.
-
-New in 1.17: Corrected physical points saving; fixed parsing of DOS
-files (carriage return problems); easier geometrical selections
-(cursor change); plugin manager; enhanced variable arrays (sublist
-selection and affectation); line loop check; New arrow display;
-reduced number of 'fatal' errors + better handling in interactive
-mode; fixed bug when opening meshes; enhanced File->Open behaviour for
-meshes and post-processing views;
-
-New in 1.16: Added single/double buffer selection (only useful for
-Unix versions of Gmsh run from remote hosts without GLX); fixed a bug
-for recent versions of the opengl32.dll on Windows, which caused OpenGL
-fonts not to show up;
-
-New in 1.15: Added automatic visibility setting during entity
-selection; Corrected geometrical extrusion bug;
-
-New in 1.14: Corrected a few bugs in the GUI (most of them were
-introduced in 1.13); Added interactive color selection; Made the
-option database bidirectional (i.e. scripts now correctly update the
-GUI); Default options can now be saved and automatically reloaded at
-startup; Made some changes to the scripting syntax
-(PostProcessing.View[n] becomes View[n]; Offset0 becomes OffsetX,
-etc.); Corrected the handling of simple triangular surfaces with large
-characteristic lengths in the 2D isotropic algorithm; Added an ascii
-to binary post-processing view converter;
-
-New in 1.13: Added jpeg output on Windows;
-
-New in 1.12: Corrected vector lines in the post-processing parsed
-format; corrected animation on Windows; corrected file creation in
-scripts on Windows; direct affectation of variable arrays;
-
-New in 1.11: Corrected included file loading problem.
-
-New in 1.10: Switched from Motif to FLTK for the GUI. Many small
-tweaks.
-
-New in 1.00: Added PPM and YUV output; Corrected nested If/Endif;
-Corrected several bugs for pixel output and enhanced GIF output
-(dithering, transparency); Slightly changed the post-processing file
-format to allow both single and double precision numbers.
-
-New in 0.999: Added JPEG output and easy MPEG generation (see t8.geo in the
-tutorial); Clean up of export functions; small fixes; Linux versions
-are now compiled with gcc 2.95.2, which should fix the problems
-encountered with Mandrake 7.2;
-
-New in 0.998: Corrected bug introduced in 0.997 in the generation of
-the initial 3D mesh;
-
-New in 0.997: Corrected bug in interactive surface/volume selection;
-Added interactive symmetry; Corrected geometrical extrusion with
-rotation in degenerated or partially degenerated cases; Corrected bug
-in 2D mesh when meshing in the mean plane; 
-
-New in 0.996: Arrays of variables; Enhanced Printf and Sprintf;
-Simplified options (suppression of option arrays).
-
-New in 0.995: Totally rewritten geometrical database (performance has
-been drastically improved for all geometrical transformations, and
-most notably for extrusion). As a consequence, the internal numbering
-of geometrical entities has changed: this will cause incompatibilities
-with old .geo files, and will require a partial rewrite of your old
-.geo files if these files made use of geometrical transformations. The
-syntax of the .geo file has also been clarified. Many additions for
-scripting purposes. New extrusion mesh generator. Preliminary version
-of the coupling between extruded and Delaunay meshes. New option and
-procedural database. All interactive operations can be scripted in the
-input files. See the last example in the tutorial for an example. Many
-stability enhancements in the 2D and 3D mesh algorithms. Performance
-boost of the 3D algorithm. Gmsh is still slow, but the performance
-becomes acceptable. An average 1000 tetrahedra/second is obtained on a
-600Mhz computer for a mesh of one million tetrahedra. New anisotropic
-2D mesh algorithm. New (ascii and binary) post-processing file format
-and clarified mesh file format. New handling for interactive rotations
-(trackball mode). New didactic interactive mesh construction (watch
-the Delaunay algorithm in real time on complex geometries: that's
-exciting ;-). And many, many bug fixes and cleanings...
-
-New in 0.992: corrected recombined extrusion; corrected ellipses; added
-simple automatic animation of post-processing maps; fixed various bugs.
-
-New in 0.991: fixed a serious allocation bug in 2D algorithm, which
-caused random crashes. All users should upgrade to 0.991.
-
-New in 0.990: bug fix in non-recombined 3D transfinite meshes.
-
-New in 0.989: added ability to reload previously saved meshes; some
-new command line options; reorganization of the scale menu; GIF
-output.
-
-New in 0.987: fixed bug with smoothing (leading to the possible
-generation of erroneous 3d meshes); corrected bug for mixed 3D meshes;
-moved the 'toggle view link' option to Opt->Postprocessing_Options.
-
-New in 0.986: fixed overlay problems; SGI version should now also run
-on 32 bits machines; fixed small 3d mesh bug.
-
-New in 0.985: corrected colormap bug on HP, SUN, SGI and IBM versions;
-corrected small initialization bug in postscript output.
-
-New in 0.984: corrected bug in display lists; added some options in
-Opt->General.
-
-New in 0.983: corrected some seg faults in interactive mode; corrected
-bug in rotations; changed default window sizes for better match with
-1024x768 screens (default X resources can be changed: see ex03.geo).
-
-New in 0.982: lighting for mesh and post-processing; corrected 2nd
-order mesh on non plane surfaces; added example 13.
-
diff --git a/doc/gmsh.1 b/doc/gmsh.1
deleted file mode 100644
index 862b775931b1523be49b9b4299e9af17dfd0a100..0000000000000000000000000000000000000000
--- a/doc/gmsh.1
+++ /dev/null
@@ -1,225 +0,0 @@
-.\" ======================================================================
-.\"
-.\" This is the manual page for Gmsh
-.\" 
-.\" Copyright (c) 2000-2001 J.-F. Remacle, C. Geuzaine
-.\" 
-.\" ======================================================================
-.TH Gmsh 1 "06 August 2001" "Version 1.23" "Gmsh Manual Pages"
-.UC 4
-.\" ======================================================================
-.SH NAME
-Gmsh \- an automatic three-dimensional finite element mesh generator
-with built-in pre- and post-processing facilities
-.\" ======================================================================
-.SH SYNOPSIS
-.B gmsh [file(s)] [option(s)]
-.\" ======================================================================
-.SH DESCRIPTION
-\fIGmsh\fR is an automatic three-dimensional finite element mesh
-generator, primarily Delaunay, with built-in pre- and post-processing
-facilities. Its primal goal is to provide a simple meshing tool for
-academic test cases with parametric input and up to date visualization
-capabilities. One of the strengths of \fIGmsh\fR is its ability to
-respect a characteristic length field for the generation of adapted
-meshes on lines, surfaces and volumes. These adapted meshes can be
-mixed with simple structured (transfinite, elliptic, etc.)  meshes in
-order to augment the flexibility.
-.SS Geometrical Entity Definition
-Parameterized geometries are created by successively defining points,
-oriented curves (segments, circles, ellipsis, splines, etc.), oriented
-surfaces (plane surfaces, ruled surfaces, etc.)  and volumes. Compound
-groups of geometrical entities can be defined, based on these elementary
-parameterized and scriptable geometric entities.
-.SS Mesh Generation
-A finite element mesh is a tessellation of a given subset of R^3 by
-elementary geometrical elements of various shapes (in this case lines,
-triangles, quadrangles, tetrahedra, prisms and hexahedra), arranged in
-such a way that two of them intersect, if they do, along a common
-face, edge or node, and never otherwise. All the finite element meshes
-produced by \fIGmsh\fR as unstructured, even if they were generated in
-a structured way. This implies that the elementary geometrical
-elements are defined only by an ordered list of their vertices (which
-allows the orientation of all their lower order geometrical entities)
-but no predefined relation is assumed between any two elementary
-elements.
-.PP
-The procedure follows the same order as for the geometry creation:
-curves are discretized first; the mesh of the curves is then used to
-mesh the surfaces; then the mesh of the surfaces is used to mesh the
-volumes. This automatically assures the continuity of the mesh when,
-for example, two surfaces share a common curve. Every meshing step is
-constrained by the characteristic length field, which can be uniform,
-specified by characteristic length associated to elementary
-geometrical entities, or associated to another mesh (the background
-mesh).
-.PP
-For each meshing step (i.e. the discretization of lines, surfaces and
-volumes), all structured mesh directives are executed first, and serve
-as additional constraints for the unstructured parts. The implemented
-Delaunay algorithm is subdivided in the following five steps for
-surface/volume discretization:
-.TP 4
-.B 1.
-trivial meshing of a box including the convex polygon/polyhedron
-defined by the boundary nodes resulting from the discretization of the
-curves/surfaces; 
-.TP 4
-.B 2.
-creation of the initial mesh by insertion of all the nodes on the
-curves/surfaces thanks to the Bowyer algorithm; 
-.TP 4
-.B 3.
-boundary restoration to force all the edges/faces of the
-curves/surfaces to be present in the initial mesh;
-.TP 4
-.B 4.
-suppression of all the unwanted triangles/tetrahedra (in
-particular those containing the nodes of the initial box); 
-.TP 4
-.B 5.
-insertion of new nodes by the Bowyer algorithm until the
-characteristic size of each simplex is lower or equal to the
-characteristic length field evaluated at the center of its
-circumscribed circle/sphere.
-.SS Scalar, vector and tensor field Visualization
-Multiple post-processing scalar or vector maps can be loaded and
-manipulated (globally or individually) along with the geometry and the
-mesh. Scalar fields are represented by iso-value curves or color maps
-and vector fields by three-dimensional arrows or displacement
-maps. Post-processor functions include offsets, elevation, interactive
-color map modification, range clamping, interactive animation, vector
-postscript output, etc. All post-processing options can be accessed
-either interactively or through the input ascii files.
-.\" ======================================================================
-.SH GEOMETRY OPTIONS
-.TP 4
-.B \-0
-parse all input files, output flattened geometry, and exit. 
-.\" ======================================================================
-.SH MESH OPTIONS
-.TP 4
-.B \-1
-perform the one-dimensional mesh, i.e. discretize all the curves in
-the geometry.
-.TP 4
-.B \-2
-perform the two-dimensional mesh, i.e. discretize all the surfaces in
-the geometry.
-.TP 4
-.B \-3
-perform the three-dimensional mesh, i.e. discretize all the volumes in
-the geometry.
-.TP 4
-.B \-o file
-specify mesh output file name.
-.TP 4
-.B \-format msh|unv|gref
-set output mesh format (default: msh).
-.TP 4
-.B \-algo iso|aniso
-select the two-dimensional mesh algorithm (default: iso).
-.TP 4
-.B \-smooth int
-set the number of smoothing passes (default value is 3).
-.TP 4
-.B \-degree int
-set the degree of the generated elements (default value is 1).
-.TP 4
-.B \-scale float
-apply a global scaling factor to the generated mesh (default value is
-1.0).
-.TP 4
-.B \-meshscale float
-apply a global scaling factor to all generated elements (default value is 1.0).
-.TP 4
-.B \-clscale float
-apply a global scaling factor to all the characteristic lengths in the
-mesh (default value is 1.0).
-.TP 4
-.B \-rand float
-set random perturbation factor (default: 1.e-4).
-.TP 4
-.B \-bgm file
-load view in file as current background mesh.
-.TP 4
-.B \-constrain
-constrain background mesh with characteristic lengths.
-.TP 4
-.B \-histogram
-print mesh quality histogram.
-.TP 4
-.B \-interactive
-display the 2D mesh construction interactively if the anisotropic mesh
-algorithm is selected.
-.TP 4
-.B \-extrude
-use old extrusion mesh generator.
-.TP 4
-.B \-recombine
-recombine meshes from old extrusion mesh generator.
-.\" ======================================================================
-.SH POST-PROCESSING OPTIONS
-.TP 4
-.B \-dl
-enable OpenGL display lists.
-.TP 4
-.B \-noview
-hide all views at startup.
-.TP 4
-.B \-link
-link all views (all interactive option modifications will apply to all
-views) at startup.
-.TP 4
-.B \-convert file file
-convert an ascii view into a binary one.
-.\" ======================================================================
-.SH DISPLAY OPTIONS
-.TP 4
-.B \-nodb
-suppress the double buffer. Use this options if you use \fIGmsh\fR on
-a remote host without GLX.
-.TP 4
-.B \-alpha
-enable alpha blending.
-.TP 4
-.B \-notrack
-don't use trackball mode for rotations.
-.TP 4
-.B \-display disp
-specify display.
-.TP 4
-.B \-perspective
-use perspective instead of orthographic projection.
-.\" ======================================================================
-.SH OTHER OPTIONS
-.TP 4
-.B \-a, \-g, \-m, \-s, \-p
-start in automatic, geometry, mesh, solver or post-processing mode
-(default: automatic).
-.TP 4
-.B \-opt string
-parse string before project file.
-.TP 4
-.B \-v int
-set verbosity level (default: 2).
-.TP 4
-.B \-version
-show version number.
-.TP 4
-.B \-info
-show detailed version information.
-.TP 4
-.B \-help
-show help message.
-.\" ======================================================================
-.SH AUTHORS
-Christophe Geuzaine (Christope.Geuzaine@ulg.ac.be) and Jean-Francois
-Remacle (Remacle@scorec.rpi.edu). 
-.\" ======================================================================
-.SH SEE ALSO
-.BR getdp (1),
-.br
-Gmsh examples (\fI/usr/doc/gmsh-1.23/\fR),
-.br
-Gmsh homepage (\fIhttp://www.geuz.org/gmsh/\fR).
diff --git a/doc/gmsh.texi b/doc/gmsh.texi
deleted file mode 100644
index e4636e9730cc6fe27bbe1d63e2d214de468e7d6a..0000000000000000000000000000000000000000
--- a/doc/gmsh.texi
+++ /dev/null
@@ -1,327 +0,0 @@
-\input texinfo.tex    @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.3 2000-12-11 22:09:43 geuzaine Exp $
-@c =========================================================================
-@c
-@c This is the Gmsh documentation texinfo source file
-@c
-@c Indexing : @cindex  == concepts
-@c            @tindex  == syntax
-@c
-@c Before release, run C-u C-c C-u C-a in GNU Emacs
-@c This updates all node pointers and menus
-@c 
-@c info  : makeinfo getdp.texi
-@c dvi   : texi2dvi getdp.texi
-@c ps    : dvips getdp.dvi -o
-@c pdf   : texi2pdf getdp.texi
-@c html  : texi2html -init_file getdp.t2h getdp.texi
-@c nroff : texi2roff getdp.texi
-@c
-@c =========================================================================
-@c %**start of header
-@setfilename   gmsh.info
-@set EDITION   1.
-@set VERSION   0.996
-@set DAY       12
-@set MONTH     December 2000
-@set COPYRIGHT @copyright{} 1997-2000 Christophe Geuzaine, Jean-Francois Remacle
-@set WEB-GMSH  @uref{http://www.geuz.org/gmsh/}
-@settitle Gmsh @value{VERSION}
-@footnotestyle separate
-@setchapternewpage odd
-@paragraphindent 0
-@finalout
-@c %**end of header
-
-@c =========================================================================
-@c Info directives
-@c =========================================================================
-
-@ifinfo
-@dircategory Math
-@direntry
-* Gmsh: (gmsh).       a 3D mesh generator with pre- and post-processing facilities
-@end direntry
-@noindent
-This is Edition @value{EDITION}, last updated @value{DAY} @value{MONTH}, of the
-@cite{Gmsh Manual}, for Gmsh, Version @value{VERSION}.
-@noindent
-Copyright @value{COPYRIGHT}
-@end ifinfo
-
-@c =========================================================================
-@c TeX directives
-@c =========================================================================
-
-@iftex
-@global@let@bullet=-
-@global@let@sl=@it
-@global@setfont@indit@itshape{9}{1000}
-@c @global@let@linkcolor=@Orange
-@c @parskip=5pt
-@end iftex
-
-@c =========================================================================
-@c Title page
-@c =========================================================================
-
-@shorttitlepage Gmsh
-
-@titlepage
-
-@title Gmsh Manual
-
-@subtitle The documentation for Gmsh, Version  @value{VERSION}
-@subtitle 
-@subtitle Edition @value{EDITION}, @value{MONTH}
-
-@author Christophe Geuzaine
-@author Jean-Francois Remacle
-
-
-@page
-@vskip 0pt plus 1filll
-Copyright @value{COPYRIGHT}
-@sp 1
-This manual was prepared with Texinfo (@uref{http://texinfo.org}). The source
-of the document as well as several formatted versions (info, postscript, pdf,
-html) are available at @value{WEB-GMSH}.
-
-@end titlepage
-
-@c =========================================================================
-@c Table of contents
-@c =========================================================================
-
-@summarycontents
-@contents
-
-@c =========================================================================
-@c Top node (for all output, except TeX)
-@c =========================================================================
-
-@ifnottex
-@node Top, Copying Conditions, (dir), (dir)
-@top Gmsh
-
-@chapheading The documentation for Gmsh, version  @value{VERSION}
-
-Christophe Geuzaine and Jean-Francois Remacle
-
-Gmsh is an automatic three-dimensional mesh generator, primarily Delaunay,
-with pre- and post-processing facilities. This is Edition @value{EDITION} of
-the @cite{Gmsh Manual}, last updated @value{DAY} @value{MONTH} for Gmsh
-Version @value{VERSION}.
-@end ifnottex
-
-@c =========================================================================
-@c Master menu
-@c =========================================================================
-
-@menu
-* Copying Conditions::          How is Gmsh distributable?
-* Introduction::                Basic presentation
-* Geometry::                    How to define a geometry in Gmsh
-* Mesh::                        An explanation of the mesh generator
-* Post-Processing::             An overview of the post-processing functions
-* Tutorial::                    Seven complete examples
-* Running Gmsh::                How to run Gmsh on your operating system
-* File formats::                Input and output file formats
-* Versions and credits::        Versions history and contributors
-* Tips and tricks::             Some tips to make your life easier with Gmsh
-* Concept index::               Main concepts
-* Syntax index::                Reserved keywords
-@end menu
-
-@c =========================================================================
-@c Copying Conditions
-@c =========================================================================
-
-@node Copying Conditions, Introduction, Top, Top
-@unnumbered Copying Conditions
-
-@cindex Copyright
-@cindex Web site
-@cindex Internet address
-@cindex Download
-@cindex Platforms
-
-Executable versions of Gmsh can be downloaded for most of the classical UNIX
-platforms (SUN, DEC, IBM, HP, SGI and Linux) from the web site
-@value{WEB-GMSH} (no source distribution is available for the moment). The
-executable versions of Gmsh are free; the only thing asked if you use Gmsh
-is to mention it in your work. Published references, as well as the latest
-news about Gmsh developments and download information, are always available
-on the web site.
-
-
-@c =========================================================================
-@c Introduction
-@c =========================================================================
-
-@node Introduction, General overview, Copying Conditions, Top
-@unnumbered Introduction
-
-@cindex Introduction
-
-Gmsh is an automatic three-dimensional mesh generator, primarily Delaunay,
-with pre- and post-processing facilities. Its primal goal is to provide a
-simple meshing tool for academic test cases with parametric input and up to
-date visualization capabilities.  One of the strengths of Gmsh is its
-ability to respect a characteristic length field for the generation of
-adapted meshes on lines, surfaces and volumes. Gmsh requires OpenGL
-libraries to be installed in on your system.
-
-
-@c -------------------------------------------------------------------------
-@c How to Read this Manual?
-@c -------------------------------------------------------------------------
-
-@node How to Read this Manual?,  , Industry, Introduction
-@heading How to Read this Manual?
-
-@cindex Reading, guidelines
-
-After reading @ref{General overview}, and @ref{Expressions}, which depict
-the general concepts and the way to construct simple expressions in GetDP,
-you can safely (in a first reading) skip @ref{Objects} and @ref{Types for
-objects} and directly go to @ref{Short examples}. This chapter gives simple
-examples of the problem definition syntax used to define the discrete
-problems. For each example, you should then go back to @ref{Objects}, and
-@ref{Types for objects}, and have a detailed view of the syntax of the
-objects appearing in it. Note that indexes for many concepts and for all the
-syntax elements are available at the end of this manual.
-
-Once the examples presented in @ref{Short examples}, are understood, you
-may start to use GetDP on your computer (@pxref{Running GetDP}), for
-example by solving the complete examples presented in @ref{Complete
-examples}. Ready-to-use input files for these examples can be downloaded
-from the web site.
-
-
-@c =========================================================================
-@c Versions and Credits
-@c =========================================================================
-
-@node Versions and credits, Tips and tricks, File formats, Top
-@chapter Versions and Credits
-
-@menu
-* Version history::             
-* Bugs::                        
-* Contributors::                
-@end menu
-
-@c -------------------------------------------------------------------------
-@c Versions
-@c -------------------------------------------------------------------------
-
-@node Version history, Bugs, Versions and credits, Versions and credits
-@section Version History
-
-@cindex Versions
-@cindex History, versions
-@cindex Changelog
-
-@c -------------------------------------------------------------------------
-@c Bugs
-@c -------------------------------------------------------------------------
-
-@node Bugs, Contributors, Version history, Versions and credits
-@section Bugs
-
-@cindex Known bugs
-@cindex Bugs, known
-@cindex Bugs, reporting
-@cindex Reporting bugs
-@cindex Authors, e-mail
-@cindex E-mail, authors
-
-If you think you have found a bug in Gmsh, you can report it by electronic
-mail to @email{Christophe.Geuzaine@@ulg.ac.be} or
-@email{Remacle@@scorec.rpi.edu}.  Please send as precise a description of
-the problem as you can, including sample input files that produce the
-bug. Don't forget to mention both the versions of Gmsh and of your operation
-system (@pxref{Running Gmsh} to see how to get this information).
-
-Here is a list of known bugs:
-
-
-@c -------------------------------------------------------------------------
-@c Contributors
-@c -------------------------------------------------------------------------
-
-@node Contributors,  , Bugs, Versions and credits
-@section Contributors
-
-@cindex Acknowledgments
-@cindex Contributors, list
-@cindex Credits 
-
-@itemize @bullet
-@item
-M. Ume: code for lists and trees (listman.c, treeman.c). 
-@item
-Unknown: avl tree code
-@item
-@dots{}
-@end itemize
-
-And many thanks to all the users whose feedback permitted many
-improvements and bug correction...
-
-
-@c =========================================================================
-@c Tips ans Tricks
-@c =========================================================================
-
-@node Tips and tricks, Gmsh examples, Versions and credits, Top
-@appendix Tips and Tricks
-
-@cindex Tips
-@cindex Tricks
-@cindex Efficiency, tips
-
-@itemize @bullet
-@item
-Install the 'info' version of this user's guide! On your (Unix) system, this
-can be done by 1) copying all getdp.info* files to the place where your info
-files live (usually /usr/info), and 2) issuing the command 'install-info
-/usr/info/getdp.info /usr/info/dir'. You will then be able to access the
-documentation with the command 'info getdp'. Note that particular sections
-("nodes") can be accessed directly. For example, 'info getdp functionspace'
-will take you directly to the definition of the FunctionSpace object.
-@item
-Use emacs to edit your files, and load the C++ mode! This permits automatic
-syntax highlighting and easy indentation. Automatic loading of the C++ mode
-for @file{.pro} files can be done by adding the following command in your
-@code{.emacs} file: @code{(setq auto-mode-alist (append '(("\\.pro$"
-. c++-mode)) auto-mode-alist))}.
-@end itemize
-
-@c =========================================================================
-@c Concept Index
-@c =========================================================================
-
-@node Concept index, Syntax index, Gmsh examples, Top
-@unnumbered Concept Index
-
-@cindex Index, concepts
-@cindex Concepts, index
-
-@printindex cp
-
-@c =========================================================================
-@c Syntax Index
-@c =========================================================================
-
-@node Syntax index, Variable index, Concept index, Top
-@unnumbered Syntax Index
-
-@cindex Index, syntax
-@cindex Syntax, index
-@cindex Keywords, index
-
-@printindex tp
-
-@bye
diff --git a/jpeg/Makefile b/jpeg/Makefile
deleted file mode 100644
index c6eb9ee856c1c2df8236aacb6bdd384acd8b77f5..0000000000000000000000000000000000000000
--- a/jpeg/Makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# $Id: Makefile,v 1.19 2001-08-11 23:32:27 geuzaine Exp $
-#
-# Makefile for "libJpeg.a"
-#
-
-.IGNORE:
-
-CC       = c++
-AR       = ar ruvs
-RM       = rm
-RANLIB   = ranlib
-
-LIB      = ../lib/libJpeg.a
-INCLUDE  = -I.
-
-C_FLAGS       = -g -Wall
-OS_FLAGS      = 
-VERSION_FLAGS = 
-
-RMFLAGS  = -f
-CFLAGS   = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)
-
-SRC = jcomapi.c jutils.c jerror.c jmemmgr.c jmemnobs.c \
-      jcapi.c jcparam.c jdatadst.c jcmaster.c jcmarker.c jcmainct.c \
-      jcprepct.c jccoefct.c jccolor.c jcsample.c jchuff.c jcdctmgr.c \
-      jfdctfst.c jfdctflt.c jfdctint.c
-
-OBJ = $(SRC:.c=.o)
-
-.SUFFIXES: .o .cpp
-
-$(LIB): $(OBJ) 
-	$(AR) $(LIB) $(OBJ) 
-	$(RANLIB) $(LIB)
-
-.cpp.o:
-	$(CC) $(CFLAGS) -c $<
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-lint:
-	$(LINT) $(CFLAGS) $(SRC)
-
-depend:
-	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CC) -MM $(CFLAGS) ${SRC} \
-	) >Makefile.new
-	cp Makefile Makefile.bak
-	cp Makefile.new Makefile
-	$(RM) $(RMFLAGS) Makefile.new
-
-# DO NOT DELETE THIS LINE
-jcomapi.o: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jutils.o: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h \
- jerror.h
-jerror.o: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jversion.h jerror.h
-jmemmgr.o: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h jmemsys.h
-jmemnobs.o: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h jmemsys.h
-jcapi.o: jcapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h \
- jerror.h
-jcparam.o: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jdatadst.o: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jerror.h
-jcmaster.o: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jcmarker.o: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jcmainct.o: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jcprepct.o: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jccoefct.o: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jccolor.o: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jcsample.o: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h
-jchuff.o: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h \
- jerror.h
-jcdctmgr.o: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h jdct.h
-jfdctfst.o: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h jdct.h
-jfdctflt.o: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h jdct.h
-jfdctint.o: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h \
- jpegint.h jerror.h jdct.h
diff --git a/jpeg/jcapi.c b/jpeg/jcapi.c
deleted file mode 100644
index d9ba37b921d772f4dd9adcb2a79a633830cf36e6..0000000000000000000000000000000000000000
--- a/jpeg/jcapi.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * jcapi.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface code for the compression half of
- * the JPEG library.  Most of the routines intended to be called directly by
- * an application are in this file.  But also see jcparam.c for
- * parameter-setup helper routines, and jcomapi.c for routines shared by
- * compression and decompression.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Initialization of a JPEG compression object.
- * The error manager must already be set up (in case memory manager fails).
- */
-
-GLOBAL void
-jpeg_create_compress (j_compress_ptr cinfo)
-{
-  int i;
-
-  /* For debugging purposes, zero the whole master structure.
-   * But error manager pointer is already there, so save and restore it.
-   */
-  {
-    struct jpeg_error_mgr * err = cinfo->err;
-    MEMZERO(cinfo, SIZEOF(struct jpeg_compress_struct));
-    cinfo->err = err;
-  }
-  cinfo->is_decompressor = FALSE;
-
-  /* Initialize a memory manager instance for this object */
-  jinit_memory_mgr((j_common_ptr) cinfo);
-
-  /* Zero out pointers to permanent structures. */
-  cinfo->progress = NULL;
-  cinfo->dest = NULL;
-
-  cinfo->comp_info = NULL;
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++)
-    cinfo->quant_tbl_ptrs[i] = NULL;
-
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    cinfo->dc_huff_tbl_ptrs[i] = NULL;
-    cinfo->ac_huff_tbl_ptrs[i] = NULL;
-  }
-
-  cinfo->input_gamma = 1.0;	/* in case application forgets */
-
-  /* OK, I'm ready */
-  cinfo->global_state = CSTATE_START;
-}
-
-
-/*
- * Destruction of a JPEG compression object
- */
-
-GLOBAL void
-jpeg_destroy_compress (j_compress_ptr cinfo)
-{
-  jpeg_destroy((j_common_ptr) cinfo); /* use common routine */
-}
-
-
-/*
- * Forcibly suppress or un-suppress all quantization and Huffman tables.
- * Marks all currently defined tables as already written (if suppress)
- * or not written (if !suppress).  This will control whether they get emitted
- * by a subsequent jpeg_start_compress call.
- *
- * This routine is exported for use by applications that want to produce
- * abbreviated JPEG datastreams.  It logically belongs in jcparam.c, but
- * since it is called by jpeg_start_compress, we put it here --- otherwise
- * jcparam.o would be linked whether the application used it or not.
- */
-
-GLOBAL void
-jpeg_suppress_tables (j_compress_ptr cinfo, boolean suppress)
-{
-  int i;
-  JQUANT_TBL * qtbl;
-  JHUFF_TBL * htbl;
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++) {
-    if ((qtbl = cinfo->quant_tbl_ptrs[i]) != NULL)
-      qtbl->sent_table = suppress;
-  }
-
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    if ((htbl = cinfo->dc_huff_tbl_ptrs[i]) != NULL)
-      htbl->sent_table = suppress;
-    if ((htbl = cinfo->ac_huff_tbl_ptrs[i]) != NULL)
-      htbl->sent_table = suppress;
-  }
-}
-
-
-/*
- * Compression initialization.
- * Before calling this, all parameters and a data destination must be set up.
- *
- * We require a write_all_tables parameter as a failsafe check when writing
- * multiple datastreams from the same compression object.  Since prior runs
- * will have left all the tables marked sent_table=TRUE, a subsequent run
- * would emit an abbreviated stream (no tables) by default.  This may be what
- * is wanted, but for safety's sake it should not be the default behavior:
- * programmers should have to make a deliberate choice to emit abbreviated
- * images.  Therefore the documentation and examples should encourage people
- * to pass write_all_tables=TRUE; then it will take active thought to do the
- * wrong thing.
- */
-
-GLOBAL void
-jpeg_start_compress (j_compress_ptr cinfo, boolean write_all_tables)
-{
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  if (write_all_tables)
-    jpeg_suppress_tables(cinfo, FALSE);	/* mark all tables to be written */
-
-  /* (Re)initialize error mgr and destination modules */
-  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
-  (*cinfo->dest->init_destination) (cinfo);
-  /* Perform master selection of active modules */
-  jinit_master_compress(cinfo);
-  /* Set up for the first pass */
-  (*cinfo->master->prepare_for_pass) (cinfo);
-  /* Ready for application to drive first pass through jpeg_write_scanlines
-   * or jpeg_write_raw_data.
-   */
-  cinfo->next_scanline = 0;
-  cinfo->global_state = (cinfo->raw_data_in ? CSTATE_RAW_OK : CSTATE_SCANNING);
-}
-
-
-/*
- * Write some scanlines of data to the JPEG compressor.
- *
- * The return value will be the number of lines actually written.
- * This should be less than the supplied num_lines only in case that
- * the data destination module has requested suspension of the compressor,
- * or if more than image_height scanlines are passed in.
- *
- * Note: we warn about excess calls to jpeg_write_scanlines() since
- * this likely signals an application programmer error.  However,
- * excess scanlines passed in the last valid call are *silently* ignored,
- * so that the application need not adjust num_lines for end-of-image
- * when using a multiple-scanline buffer.
- */
-
-GLOBAL JDIMENSION
-jpeg_write_scanlines (j_compress_ptr cinfo, JSAMPARRAY scanlines,
-		      JDIMENSION num_lines)
-{
-  JDIMENSION row_ctr, rows_left;
-
-  if (cinfo->global_state != CSTATE_SCANNING)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->next_scanline >= cinfo->image_height)
-    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
-
-  /* Call progress monitor hook if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
-    cinfo->progress->pass_limit = (long) cinfo->image_height;
-    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-  }
-
-  /* Give master control module another chance if this is first call to
-   * jpeg_write_scanlines.  This lets output of the frame/scan headers be
-   * delayed so that application can write COM, etc, markers between
-   * jpeg_start_compress and jpeg_write_scanlines.
-   */
-  if (cinfo->master->call_pass_startup)
-    (*cinfo->master->pass_startup) (cinfo);
-
-  /* Ignore any extra scanlines at bottom of image. */
-  rows_left = cinfo->image_height - cinfo->next_scanline;
-  if (num_lines > rows_left)
-    num_lines = rows_left;
-
-  row_ctr = 0;
-  (*cinfo->main->process_data) (cinfo, scanlines, &row_ctr, num_lines);
-  cinfo->next_scanline += row_ctr;
-  return row_ctr;
-}
-
-
-/*
- * Alternate entry point to write raw data.
- * Processes exactly one iMCU row per call.
- */
-
-GLOBAL JDIMENSION
-jpeg_write_raw_data (j_compress_ptr cinfo, JSAMPIMAGE data,
-		     JDIMENSION num_lines)
-{
-  JDIMENSION mcu_ctr, lines_per_MCU_row;
-
-  if (cinfo->global_state != CSTATE_RAW_OK)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->next_scanline >= cinfo->image_height) {
-    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
-    return 0;
-  }
-
-  /* Call progress monitor hook if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
-    cinfo->progress->pass_limit = (long) cinfo->image_height;
-    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-  }
-
-  /* Give master control module another chance if this is first call to
-   * jpeg_write_raw_data.  This lets output of the frame/scan headers be
-   * delayed so that application can write COM, etc, markers between
-   * jpeg_start_compress and jpeg_write_raw_data.
-   */
-  if (cinfo->master->call_pass_startup)
-    (*cinfo->master->pass_startup) (cinfo);
-
-  /* Verify that at least one iMCU row has been passed. */
-  lines_per_MCU_row = cinfo->max_v_samp_factor * DCTSIZE;
-  if (num_lines < lines_per_MCU_row)
-    ERREXIT(cinfo, JERR_BUFFER_SIZE);
-
-  /* Directly compress the row. */
-  mcu_ctr = 0;
-  (*cinfo->coef->compress_data) (cinfo, data, &mcu_ctr);
-  /* If compressor did not consume the whole row, then we must need to
-   * suspend processing; this is not currently supported.
-   */
-  if (mcu_ctr != cinfo->MCUs_per_row)
-    ERREXIT(cinfo, JERR_CANT_SUSPEND);
-
-  /* OK, we processed one iMCU row. */
-  cinfo->next_scanline += lines_per_MCU_row;
-  return lines_per_MCU_row;
-}
-
-
-/*
- * Finish JPEG compression.
- *
- * If a multipass operating mode was selected, this may do a great deal of
- * work including most of the actual output.
- */
-
-GLOBAL void
-jpeg_finish_compress (j_compress_ptr cinfo)
-{
-  JDIMENSION iMCU_row, mcu_ctr;
-
-  if (cinfo->global_state != CSTATE_SCANNING && 
-      cinfo->global_state != CSTATE_RAW_OK)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->next_scanline < cinfo->image_height)
-    ERREXIT(cinfo, JERR_TOO_LITTLE_DATA);
-  /* Terminate first pass */
-  (*cinfo->master->finish_pass) (cinfo);
-  /* Perform any remaining passes */
-  while (! cinfo->master->is_last_pass) {
-    (*cinfo->master->prepare_for_pass) (cinfo);
-    for (iMCU_row = 0; iMCU_row < cinfo->total_iMCU_rows; iMCU_row++) {
-      if (cinfo->progress != NULL) {
-	cinfo->progress->pass_counter = (long) iMCU_row;
-	cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows;
-	(*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-      }
-      /* We bypass the main controller and invoke coef controller directly;
-       * all work is being done from the coefficient buffer.
-       */
-      mcu_ctr = 0;
-      (*cinfo->coef->compress_data) (cinfo, (JSAMPIMAGE) NULL, &mcu_ctr);
-      if (mcu_ctr != cinfo->MCUs_per_row)
-	ERREXIT(cinfo, JERR_CANT_SUSPEND);
-    }
-    (*cinfo->master->finish_pass) (cinfo);
-  }
-  /* Write EOI, do final cleanup */
-  (*cinfo->marker->write_file_trailer) (cinfo);
-  (*cinfo->dest->term_destination) (cinfo);
-  /* We can use jpeg_abort to release memory and reset global_state */
-  jpeg_abort((j_common_ptr) cinfo);
-}
-
-
-/*
- * Write a special marker.
- * This is only recommended for writing COM or APPn markers.
- * Must be called after jpeg_start_compress() and before
- * first call to jpeg_write_scanlines() or jpeg_write_raw_data().
- */
-
-GLOBAL void
-jpeg_write_marker (j_compress_ptr cinfo, int marker,
-		   const JOCTET *dataptr, unsigned int datalen)
-{
-  if (cinfo->next_scanline != 0 ||
-      (cinfo->global_state != CSTATE_SCANNING &&
-       cinfo->global_state != CSTATE_RAW_OK))
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  (*cinfo->marker->write_any_marker) (cinfo, marker, dataptr, datalen);
-}
-
-
-/*
- * Alternate compression function: just write an abbreviated table file.
- * Before calling this, all parameters and a data destination must be set up.
- *
- * To produce a pair of files containing abbreviated tables and abbreviated
- * image data, one would proceed as follows:
- *
- *		initialize JPEG object
- *		set JPEG parameters
- *		set destination to table file
- *		jpeg_write_tables(cinfo);
- *		set destination to image file
- *		jpeg_start_compress(cinfo, FALSE);
- *		write data...
- *		jpeg_finish_compress(cinfo);
- *
- * jpeg_write_tables has the side effect of marking all tables written
- * (same as jpeg_suppress_tables(..., TRUE)).  Thus a subsequent start_compress
- * will not re-emit the tables unless it is passed write_all_tables=TRUE.
- */
-
-GLOBAL void
-jpeg_write_tables (j_compress_ptr cinfo)
-{
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* (Re)initialize error mgr and destination modules */
-  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
-  (*cinfo->dest->init_destination) (cinfo);
-  /* Initialize the marker writer ... bit of a crock to do it here. */
-  jinit_marker_writer(cinfo);
-  /* Write them tables! */
-  (*cinfo->marker->write_tables_only) (cinfo);
-  /* And clean up. */
-  (*cinfo->dest->term_destination) (cinfo);
-  /* We can use jpeg_abort to release memory ... is this necessary? */
-  jpeg_abort((j_common_ptr) cinfo);
-}
-
-
-/*
- * Abort processing of a JPEG compression operation,
- * but don't destroy the object itself.
- */
-
-GLOBAL void
-jpeg_abort_compress (j_compress_ptr cinfo)
-{
-  jpeg_abort((j_common_ptr) cinfo); /* use common routine */
-}
diff --git a/jpeg/jccoefct.c b/jpeg/jccoefct.c
deleted file mode 100644
index 2ca1f37451d57d6c1afe72813213b35d4356e111..0000000000000000000000000000000000000000
--- a/jpeg/jccoefct.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * jccoefct.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the coefficient buffer controller for compression.
- * This controller is the top level of the JPEG compressor proper.
- * The coefficient buffer lies between forward-DCT and entropy encoding steps.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* We use a full-image coefficient buffer when doing Huffman optimization,
- * and also for writing multiple-scan JPEG files.  In all cases, the DCT
- * step is run during the first pass, and subsequent passes need only read
- * the buffered coefficients.
- */
-#ifdef ENTROPY_OPT_SUPPORTED
-#define FULL_COEF_BUFFER_SUPPORTED
-#else
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-#define FULL_COEF_BUFFER_SUPPORTED
-#endif
-#endif
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_coef_controller pub; /* public fields */
-
-  JDIMENSION MCU_row_num;	/* keep track of MCU row # within image */
-
-  /* For single-pass compression, it's sufficient to buffer just one MCU
-   * (although this may prove a bit slow in practice).  We allocate a
-   * workspace of MAX_BLOCKS_IN_MCU coefficient blocks, and reuse it for each
-   * MCU constructed and sent.  (On 80x86, the workspace is FAR even though
-   * it's not really very big; this is to keep the module interfaces unchanged
-   * when a large coefficient buffer is necessary.)
-   * In multi-pass modes, this array points to the current MCU's blocks
-   * within the virtual arrays.
-   */
-  JBLOCKROW MCU_buffer[MAX_BLOCKS_IN_MCU];
-
-  /* In multi-pass modes, we need a virtual block array for each component. */
-  jvirt_barray_ptr whole_image[MAX_COMPONENTS];
-} my_coef_controller;
-
-typedef my_coef_controller * my_coef_ptr;
-
-
-/* Forward declarations */
-METHODDEF void compress_data
-    JPP((j_compress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION *in_mcu_ctr));
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-METHODDEF void compress_first_pass
-    JPP((j_compress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION *in_mcu_ctr));
-METHODDEF void compress_output
-    JPP((j_compress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION *in_mcu_ctr));
-#endif
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF void
-start_pass_coef (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  coef->MCU_row_num = 0;
-
-  switch (pass_mode) {
-  case JBUF_PASS_THRU:
-    if (coef->whole_image[0] != NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    coef->pub.compress_data = compress_data;
-    break;
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-  case JBUF_SAVE_AND_PASS:
-    if (coef->whole_image[0] == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    coef->pub.compress_data = compress_first_pass;
-    break;
-  case JBUF_CRANK_DEST:
-    if (coef->whole_image[0] == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    coef->pub.compress_data = compress_output;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    break;
-  }
-}
-
-
-/*
- * Process some data in the single-pass case.
- * Up to one MCU row is processed (less if suspension is forced).
- *
- * NB: input_buf contains a plane for each component in image.
- * For single pass, this is the same as the components in the scan.
- */
-
-METHODDEF void
-compress_data (j_compress_ptr cinfo,
-	       JSAMPIMAGE input_buf, JDIMENSION *in_mcu_ctr)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  JDIMENSION last_MCU_col = cinfo->MCUs_per_row - 1;
-  JDIMENSION last_MCU_row = cinfo->MCU_rows_in_scan - 1;
-  int blkn, bi, ci, yindex, blockcnt;
-  JDIMENSION ypos, xpos;
-  jpeg_component_info *compptr;
-
-  /* Loop to write as much as one whole MCU row */
-
-  for (MCU_col_num = *in_mcu_ctr; MCU_col_num <= last_MCU_col; MCU_col_num++) {
-    /* Determine where data comes from in input_buf and do the DCT thing.
-     * Each call on forward_DCT processes a horizontal row of DCT blocks
-     * as wide as an MCU; we rely on having allocated the MCU_buffer[] blocks
-     * sequentially.  Dummy blocks at the right or bottom edge are filled in
-     * specially.  The data in them does not matter for image reconstruction,
-     * so we fill them with values that will encode to the smallest amount of
-     * data, viz: all zeroes in the AC entries, DC entries equal to previous
-     * block's DC value.  (Thanks to Thomas Kinsman for this idea.)
-     */
-    blkn = 0;
-    for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-      compptr = cinfo->cur_comp_info[ci];
-      blockcnt = (MCU_col_num < last_MCU_col) ? compptr->MCU_width
-					      : compptr->last_col_width;
-      xpos = MCU_col_num * compptr->MCU_sample_width;
-      ypos = 0;
-      for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	if (coef->MCU_row_num < last_MCU_row ||
-	    yindex < compptr->last_row_height) {
-	  (*cinfo->fdct->forward_DCT) (cinfo, compptr,
-				       input_buf[ci], coef->MCU_buffer[blkn],
-				       ypos, xpos, (JDIMENSION) blockcnt);
-	  if (blockcnt < compptr->MCU_width) {
-	    /* Create some dummy blocks at the right edge of the image. */
-	    jzero_far((void FAR *) coef->MCU_buffer[blkn + blockcnt],
-		      (compptr->MCU_width - blockcnt) * SIZEOF(JBLOCK));
-	    for (bi = blockcnt; bi < compptr->MCU_width; bi++) {
-	      coef->MCU_buffer[blkn+bi][0][0] = coef->MCU_buffer[blkn+bi-1][0][0];
-	    }
-	  }
-	} else {
-	  /* Create a whole row of dummy blocks at the bottom of the image. */
-	  jzero_far((void FAR *) coef->MCU_buffer[blkn],
-		    compptr->MCU_width * SIZEOF(JBLOCK));
-	  for (bi = 0; bi < compptr->MCU_width; bi++) {
-	    coef->MCU_buffer[blkn+bi][0][0] = coef->MCU_buffer[blkn-1][0][0];
-	  }
-	}
-	blkn += compptr->MCU_width;
-	ypos += DCTSIZE;
-      }
-    }
-    /* Try to write the MCU.  In event of a suspension failure, we will
-     * re-DCT the MCU on restart (a bit inefficient, could be fixed...)
-     */
-    if (! (*cinfo->entropy->encode_mcu) (cinfo, coef->MCU_buffer))
-      break;			/* suspension forced; exit loop */
-  }
-  if (MCU_col_num > last_MCU_col)
-    coef->MCU_row_num++;	/* advance if we finished the row */
-  *in_mcu_ctr = MCU_col_num;
-}
-
-
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-
-/*
- * Process some data in the first pass of a multi-pass case.
- * We process the equivalent of one fully interleaved MCU row ("iMCU" row)
- * per call, ie, v_samp_factor block rows for each component in the image.
- * This amount of data is read from the source buffer, DCT'd and quantized,
- * and saved into the virtual arrays.  We also generate suitable dummy blocks
- * as needed at the right and lower edges.  (The dummy blocks are constructed
- * in the virtual arrays, which have been padded appropriately.)  This makes
- * it possible for subsequent passes not to worry about real vs. dummy blocks.
- *
- * We must also emit the data to the entropy encoder.  This is conveniently
- * done by calling compress_output() after we've loaded the current strip
- * of the virtual arrays.
- *
- * NB: input_buf contains a plane for each component in image.  All
- * components are DCT'd and loaded into the virtual arrays in this pass.
- * However, it may be that only a subset of the components are emitted to
- * the entropy encoder during this first pass; be careful about looking
- * at the scan-dependent variables (MCU dimensions, etc).
- */
-
-METHODDEF void
-compress_first_pass (j_compress_ptr cinfo,
-		     JSAMPIMAGE input_buf, JDIMENSION *in_mcu_ctr)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION last_MCU_row = cinfo->total_iMCU_rows - 1;
-  JDIMENSION blocks_across, MCUs_across, MCUindex;
-  int bi, ci, h_samp_factor, block_row, block_rows, ndummy;
-  JCOEF lastDC;
-  jpeg_component_info *compptr;
-  JBLOCKARRAY buffer;
-  JBLOCKROW thisblockrow, lastblockrow;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Align the virtual buffer for this component. */
-    buffer = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[ci],
-       coef->MCU_row_num * compptr->v_samp_factor, TRUE);
-    /* Count non-dummy DCT block rows in this iMCU row. */
-    if (coef->MCU_row_num < last_MCU_row)
-      block_rows = compptr->v_samp_factor;
-    else {
-      block_rows = (int) (compptr->height_in_blocks % compptr->v_samp_factor);
-      if (block_rows == 0) block_rows = compptr->v_samp_factor;
-    }
-    blocks_across = compptr->width_in_blocks;
-    h_samp_factor = compptr->h_samp_factor;
-    /* Count number of dummy blocks to be added at the right margin. */
-    ndummy = (int) (blocks_across % h_samp_factor);
-    if (ndummy > 0)
-      ndummy = h_samp_factor - ndummy;
-    /* Perform DCT for all non-dummy blocks in this iMCU row.  Each call
-     * on forward_DCT processes a complete horizontal row of DCT blocks.
-     */
-    for (block_row = 0; block_row < block_rows; block_row++) {
-      thisblockrow = buffer[block_row];
-      (*cinfo->fdct->forward_DCT) (cinfo, compptr,
-				   input_buf[ci], thisblockrow,
-				   (JDIMENSION) (block_row * DCTSIZE),
-				   (JDIMENSION) 0, blocks_across);
-      if (ndummy > 0) {
-	/* Create dummy blocks at the right edge of the image. */
-	thisblockrow += blocks_across; /* => first dummy block */
-	jzero_far((void FAR *) thisblockrow, ndummy * SIZEOF(JBLOCK));
-	lastDC = thisblockrow[-1][0];
-	for (bi = 0; bi < ndummy; bi++) {
-	  thisblockrow[bi][0] = lastDC;
-	}
-      }
-    }
-    /* If at end of image, create dummy block rows as needed.
-     * The tricky part here is that within each MCU, we want the DC values
-     * of the dummy blocks to match the last real block's DC value.
-     * This squeezes a few more bytes out of the resulting file...
-     */
-    if (coef->MCU_row_num == last_MCU_row) {
-      blocks_across += ndummy;	/* include lower right corner */
-      MCUs_across = blocks_across / h_samp_factor;
-      for (block_row = block_rows; block_row < compptr->v_samp_factor;
-	   block_row++) {
-	thisblockrow = buffer[block_row];
-	lastblockrow = buffer[block_row-1];
-	jzero_far((void FAR *) thisblockrow,
-		  (size_t) (blocks_across * SIZEOF(JBLOCK)));
-	for (MCUindex = 0; MCUindex < MCUs_across; MCUindex++) {
-	  lastDC = lastblockrow[h_samp_factor-1][0];
-	  for (bi = 0; bi < h_samp_factor; bi++) {
-	    thisblockrow[bi][0] = lastDC;
-	  }
-	  thisblockrow += h_samp_factor; /* advance to next MCU in row */
-	  lastblockrow += h_samp_factor;
-	}
-      }
-    }
-  }
-  /* NB: compress_output will increment MCU_row_num */
-
-  /* Emit data to the entropy encoder, sharing code with subsequent passes */
-  compress_output(cinfo, input_buf, in_mcu_ctr);
-}
-
-
-/*
- * Process some data in subsequent passes of a multi-pass case.
- * We process the equivalent of one fully interleaved MCU row ("iMCU" row)
- * per call, ie, v_samp_factor block rows for each component in the scan.
- * The data is obtained from the virtual arrays and fed to the entropy coder.
- *
- * Note that output suspension is not supported during multi-pass operation,
- * so the complete MCU row will always be emitted to the entropy encoder
- * before returning.
- *
- * NB: input_buf is ignored; it is likely to be a NULL pointer.
- */
-
-METHODDEF void
-compress_output (j_compress_ptr cinfo,
-		 JSAMPIMAGE input_buf, JDIMENSION *in_mcu_ctr)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  int blkn, ci, xindex, yindex, yoffset, num_MCU_rows;
-  JDIMENSION remaining_rows, start_col;
-  JBLOCKARRAY buffer[MAX_COMPS_IN_SCAN];
-  JBLOCKROW buffer_ptr;
-  jpeg_component_info *compptr;
-
-  /* Align the virtual buffers for the components used in this scan.
-   * NB: during first pass, this is safe only because the buffers will
-   * already be aligned properly, so jmemmgr.c won't need to do any I/O.
-   */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    buffer[ci] = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[compptr->component_index],
-       coef->MCU_row_num * compptr->v_samp_factor, FALSE);
-  }
-
-  /* In an interleaved scan, we process exactly one MCU row.
-   * In a noninterleaved scan, we need to process v_samp_factor MCU rows,
-   * each of which contains a single block row.
-   */
-  if (cinfo->comps_in_scan == 1) {
-    compptr = cinfo->cur_comp_info[0];
-    num_MCU_rows = compptr->v_samp_factor;
-    /* but watch out for the bottom of the image */
-    remaining_rows = cinfo->MCU_rows_in_scan -
-		     coef->MCU_row_num * compptr->v_samp_factor;
-    if (remaining_rows < (JDIMENSION) num_MCU_rows)
-      num_MCU_rows = (int) remaining_rows;
-  } else {
-    num_MCU_rows = 1;
-  }
-
-  /* Loop to process one whole iMCU row */
-  for (yoffset = 0; yoffset < num_MCU_rows; yoffset++) {
-    for (MCU_col_num = 0; MCU_col_num < cinfo->MCUs_per_row; MCU_col_num++) {
-      /* Construct list of pointers to DCT blocks belonging to this MCU */
-      blkn = 0;			/* index of current DCT block within MCU */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-	compptr = cinfo->cur_comp_info[ci];
-	start_col = MCU_col_num * compptr->MCU_width;
-	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	  buffer_ptr = buffer[ci][yindex+yoffset] + start_col;
-	  for (xindex = 0; xindex < compptr->MCU_width; xindex++) {
-	    coef->MCU_buffer[blkn++] = buffer_ptr++;
-	  }
-	}
-      }
-      /* Try to write the MCU. */
-      if (! (*cinfo->entropy->encode_mcu) (cinfo, coef->MCU_buffer)) {
-	ERREXIT(cinfo, JERR_CANT_SUSPEND); /* not supported */
-      }
-    }
-  }
-
-  coef->MCU_row_num++;		/* advance to next iMCU row */
-  *in_mcu_ctr = cinfo->MCUs_per_row;
-}
-
-#endif /* FULL_COEF_BUFFER_SUPPORTED */
-
-
-/*
- * Initialize coefficient buffer controller.
- */
-
-GLOBAL void
-jinit_c_coef_controller (j_compress_ptr cinfo, boolean need_full_buffer)
-{
-  my_coef_ptr coef;
-  int ci, i;
-  jpeg_component_info *compptr;
-  JBLOCKROW buffer;
-
-  coef = (my_coef_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_coef_controller));
-  cinfo->coef = (struct jpeg_c_coef_controller *) coef;
-  coef->pub.start_pass = start_pass_coef;
-
-  /* Create the coefficient buffer. */
-  if (need_full_buffer) {
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-    /* Allocate a full-image virtual array for each component, */
-    /* padded to a multiple of samp_factor DCT blocks in each direction. */
-    /* Note memmgr implicitly pads the vertical direction. */
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      coef->whole_image[ci] = (*cinfo->mem->request_virt_barray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
-				(long) compptr->h_samp_factor),
-	 compptr->height_in_blocks,
-	 (JDIMENSION) compptr->v_samp_factor);
-    }
-#else
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif
-  } else {
-    /* We only need a single-MCU buffer. */
-    buffer = (JBLOCKROW)
-      (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
-    for (i = 0; i < MAX_BLOCKS_IN_MCU; i++) {
-      coef->MCU_buffer[i] = buffer + i;
-    }
-    coef->whole_image[0] = NULL; /* flag for no virtual arrays */
-  }
-}
diff --git a/jpeg/jccolor.c b/jpeg/jccolor.c
deleted file mode 100644
index 4ab3d7eaa2a56debd931e1e4d94e26a50719f6d6..0000000000000000000000000000000000000000
--- a/jpeg/jccolor.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * jccolor.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains input colorspace conversion routines.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_color_converter pub; /* public fields */
-
-  /* Private state for RGB->YCC conversion */
-  INT32 * rgb_ycc_tab;		/* => table for RGB to YCbCr conversion */
-} my_color_converter;
-
-typedef my_color_converter * my_cconvert_ptr;
-
-
-/**************** RGB -> YCbCr conversion: most common case **************/
-
-/*
- * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
- * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
- * The conversion equations to be implemented are therefore
- *	Y  =  0.29900 * R + 0.58700 * G + 0.11400 * B
- *	Cb = -0.16874 * R - 0.33126 * G + 0.50000 * B  + MAXJSAMPLE/2
- *	Cr =  0.50000 * R - 0.41869 * G - 0.08131 * B  + MAXJSAMPLE/2
- * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.)
- *
- * To avoid floating-point arithmetic, we represent the fractional constants
- * as integers scaled up by 2^16 (about 4 digits precision); we have to divide
- * the products by 2^16, with appropriate rounding, to get the correct answer.
- *
- * For even more speed, we avoid doing any multiplications in the inner loop
- * by precalculating the constants times R,G,B for all possible values.
- * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table);
- * for 12-bit samples it is still acceptable.  It's not very reasonable for
- * 16-bit samples, but if you want lossless storage you shouldn't be changing
- * colorspace anyway.
- * The MAXJSAMPLE/2 offsets and the rounding fudge-factor of 0.5 are included
- * in the tables to save adding them separately in the inner loop.
- */
-
-#define SCALEBITS	16	/* speediest right-shift on some machines */
-#define ONE_HALF	((INT32) 1 << (SCALEBITS-1))
-#define FIX(x)		((INT32) ((x) * (1L<<SCALEBITS) + 0.5))
-
-/* We allocate one big table and divide it up into eight parts, instead of
- * doing eight alloc_small requests.  This lets us use a single table base
- * address, which can be held in a register in the inner loops on many
- * machines (more than can hold all eight addresses, anyway).
- */
-
-#define R_Y_OFF		0			/* offset to R => Y section */
-#define G_Y_OFF		(1*(MAXJSAMPLE+1))	/* offset to G => Y section */
-#define B_Y_OFF		(2*(MAXJSAMPLE+1))	/* etc. */
-#define R_CB_OFF	(3*(MAXJSAMPLE+1))
-#define G_CB_OFF	(4*(MAXJSAMPLE+1))
-#define B_CB_OFF	(5*(MAXJSAMPLE+1))
-#define R_CR_OFF	B_CB_OFF		/* B=>Cb, R=>Cr are the same */
-#define G_CR_OFF	(6*(MAXJSAMPLE+1))
-#define B_CR_OFF	(7*(MAXJSAMPLE+1))
-#define TABLE_SIZE	(8*(MAXJSAMPLE+1))
-
-
-/*
- * Initialize for RGB->YCC colorspace conversion.
- */
-
-METHODDEF void
-rgb_ycc_start (j_compress_ptr cinfo)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  INT32 * rgb_ycc_tab;
-  INT32 i;
-
-  /* Allocate and fill in the conversion tables. */
-  cconvert->rgb_ycc_tab = rgb_ycc_tab = (INT32 *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(TABLE_SIZE * SIZEOF(INT32)));
-
-  for (i = 0; i <= MAXJSAMPLE; i++) {
-    rgb_ycc_tab[i+R_Y_OFF] = FIX(0.29900) * i;
-    rgb_ycc_tab[i+G_Y_OFF] = FIX(0.58700) * i;
-    rgb_ycc_tab[i+B_Y_OFF] = FIX(0.11400) * i     + ONE_HALF;
-    rgb_ycc_tab[i+R_CB_OFF] = (-FIX(0.16874)) * i;
-    rgb_ycc_tab[i+G_CB_OFF] = (-FIX(0.33126)) * i;
-    rgb_ycc_tab[i+B_CB_OFF] = FIX(0.50000) * i    + ONE_HALF*(MAXJSAMPLE+1);
-/*  B=>Cb and R=>Cr tables are the same
-    rgb_ycc_tab[i+R_CR_OFF] = FIX(0.50000) * i    + ONE_HALF*(MAXJSAMPLE+1);
-*/
-    rgb_ycc_tab[i+G_CR_OFF] = (-FIX(0.41869)) * i;
-    rgb_ycc_tab[i+B_CR_OFF] = (-FIX(0.08131)) * i;
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- *
- * Note that we change from the application's interleaved-pixel format
- * to our internal noninterleaved, one-plane-per-component format.
- * The input buffer is therefore three times as wide as the output buffer.
- *
- * A starting row offset is provided only for the output buffer.  The caller
- * can easily adjust the passed input_buf value to accommodate any row
- * offset required on that side.
- */
-
-METHODDEF void
-rgb_ycc_convert (j_compress_ptr cinfo,
-		 JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		 JDIMENSION output_row, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int r, g, b;
-  register INT32 * ctab = cconvert->rgb_ycc_tab;
-  register JSAMPROW inptr;
-  register JSAMPROW outptr0, outptr1, outptr2;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr0 = output_buf[0][output_row];
-    outptr1 = output_buf[1][output_row];
-    outptr2 = output_buf[2][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      r = GETJSAMPLE(inptr[RGB_RED]);
-      g = GETJSAMPLE(inptr[RGB_GREEN]);
-      b = GETJSAMPLE(inptr[RGB_BLUE]);
-      inptr += RGB_PIXELSIZE;
-      /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations
-       * must be too; we do not need an explicit range-limiting operation.
-       * Hence the value being shifted is never negative, and we don't
-       * need the general RIGHT_SHIFT macro.
-       */
-      /* Y */
-      outptr0[col] = (JSAMPLE)
-		((ctab[r+R_Y_OFF] + ctab[g+G_Y_OFF] + ctab[b+B_Y_OFF])
-		 >> SCALEBITS);
-      /* Cb */
-      outptr1[col] = (JSAMPLE)
-		((ctab[r+R_CB_OFF] + ctab[g+G_CB_OFF] + ctab[b+B_CB_OFF])
-		 >> SCALEBITS);
-      /* Cr */
-      outptr2[col] = (JSAMPLE)
-		((ctab[r+R_CR_OFF] + ctab[g+G_CR_OFF] + ctab[b+B_CR_OFF])
-		 >> SCALEBITS);
-    }
-  }
-}
-
-
-/**************** Cases other than RGB -> YCbCr **************/
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles RGB->grayscale conversion, which is the same
- * as the RGB->Y portion of RGB->YCbCr.
- * We assume rgb_ycc_start has been called (we only use the Y tables).
- */
-
-METHODDEF void
-rgb_gray_convert (j_compress_ptr cinfo,
-		  JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		  JDIMENSION output_row, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int r, g, b;
-  register INT32 * ctab = cconvert->rgb_ycc_tab;
-  register JSAMPROW inptr;
-  register JSAMPROW outptr;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr = output_buf[0][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      r = GETJSAMPLE(inptr[RGB_RED]);
-      g = GETJSAMPLE(inptr[RGB_GREEN]);
-      b = GETJSAMPLE(inptr[RGB_BLUE]);
-      inptr += RGB_PIXELSIZE;
-      /* Y */
-      outptr[col] = (JSAMPLE)
-		((ctab[r+R_Y_OFF] + ctab[g+G_Y_OFF] + ctab[b+B_Y_OFF])
-		 >> SCALEBITS);
-    }
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles Adobe-style CMYK->YCCK conversion,
- * where we convert R=1-C, G=1-M, and B=1-Y to YCbCr using the same
- * conversion as above, while passing K (black) unchanged.
- * We assume rgb_ycc_start has been called.
- */
-
-METHODDEF void
-cmyk_ycck_convert (j_compress_ptr cinfo,
-		   JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		   JDIMENSION output_row, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int r, g, b;
-  register INT32 * ctab = cconvert->rgb_ycc_tab;
-  register JSAMPROW inptr;
-  register JSAMPROW outptr0, outptr1, outptr2, outptr3;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr0 = output_buf[0][output_row];
-    outptr1 = output_buf[1][output_row];
-    outptr2 = output_buf[2][output_row];
-    outptr3 = output_buf[3][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      r = MAXJSAMPLE - GETJSAMPLE(inptr[0]);
-      g = MAXJSAMPLE - GETJSAMPLE(inptr[1]);
-      b = MAXJSAMPLE - GETJSAMPLE(inptr[2]);
-      /* K passes through as-is */
-      outptr3[col] = inptr[3];	/* don't need GETJSAMPLE here */
-      inptr += 4;
-      /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations
-       * must be too; we do not need an explicit range-limiting operation.
-       * Hence the value being shifted is never negative, and we don't
-       * need the general RIGHT_SHIFT macro.
-       */
-      /* Y */
-      outptr0[col] = (JSAMPLE)
-		((ctab[r+R_Y_OFF] + ctab[g+G_Y_OFF] + ctab[b+B_Y_OFF])
-		 >> SCALEBITS);
-      /* Cb */
-      outptr1[col] = (JSAMPLE)
-		((ctab[r+R_CB_OFF] + ctab[g+G_CB_OFF] + ctab[b+B_CB_OFF])
-		 >> SCALEBITS);
-      /* Cr */
-      outptr2[col] = (JSAMPLE)
-		((ctab[r+R_CR_OFF] + ctab[g+G_CR_OFF] + ctab[b+B_CR_OFF])
-		 >> SCALEBITS);
-    }
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles grayscale output with no conversion.
- * The source can be either plain grayscale or YCbCr (since Y == gray).
- */
-
-METHODDEF void
-grayscale_convert (j_compress_ptr cinfo,
-		   JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		   JDIMENSION output_row, int num_rows)
-{
-  register JSAMPROW inptr;
-  register JSAMPROW outptr;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-  int instride = cinfo->input_components;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr = output_buf[0][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      outptr[col] = inptr[0];	/* don't need GETJSAMPLE() here */
-      inptr += instride;
-    }
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles multi-component colorspaces without conversion.
- * We assume input_components == num_components.
- */
-
-METHODDEF void
-null_convert (j_compress_ptr cinfo,
-	      JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-	      JDIMENSION output_row, int num_rows)
-{
-  register JSAMPROW inptr;
-  register JSAMPROW outptr;
-  register JDIMENSION col;
-  register int ci;
-  int nc = cinfo->num_components;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    /* It seems fastest to make a separate pass for each component. */
-    for (ci = 0; ci < nc; ci++) {
-      inptr = *input_buf;
-      outptr = output_buf[ci][output_row];
-      for (col = 0; col < num_cols; col++) {
-	outptr[col] = inptr[ci]; /* don't need GETJSAMPLE() here */
-	inptr += nc;
-      }
-    }
-    input_buf++;
-    output_row++;
-  }
-}
-
-
-/*
- * Empty method for start_pass.
- */
-
-METHODDEF void
-null_method (j_compress_ptr cinfo)
-{
-  /* no work needed */
-}
-
-
-/*
- * Module initialization routine for input colorspace conversion.
- */
-
-GLOBAL void
-jinit_color_converter (j_compress_ptr cinfo)
-{
-  my_cconvert_ptr cconvert;
-
-  cconvert = (my_cconvert_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_color_converter));
-  cinfo->cconvert = (struct jpeg_color_converter *) cconvert;
-  /* set start_pass to null method until we find out differently */
-  cconvert->pub.start_pass = null_method;
-
-  /* Make sure input_components agrees with in_color_space */
-  switch (cinfo->in_color_space) {
-  case JCS_GRAYSCALE:
-    if (cinfo->input_components != 1)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-
-  case JCS_RGB:
-#if RGB_PIXELSIZE != 3
-    if (cinfo->input_components != RGB_PIXELSIZE)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-#endif /* else share code with YCbCr */
-
-  case JCS_YCbCr:
-    if (cinfo->input_components != 3)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-
-  case JCS_CMYK:
-  case JCS_YCCK:
-    if (cinfo->input_components != 4)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-
-  default:			/* JCS_UNKNOWN can be anything */
-    if (cinfo->input_components < 1)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-  }
-
-  /* Check num_components, set conversion method based on requested space */
-  switch (cinfo->jpeg_color_space) {
-  case JCS_GRAYSCALE:
-    if (cinfo->num_components != 1)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_GRAYSCALE)
-      cconvert->pub.color_convert = grayscale_convert;
-    else if (cinfo->in_color_space == JCS_RGB) {
-      cconvert->pub.start_pass = rgb_ycc_start;
-      cconvert->pub.color_convert = rgb_gray_convert;
-    } else if (cinfo->in_color_space == JCS_YCbCr)
-      cconvert->pub.color_convert = grayscale_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_RGB:
-    if (cinfo->num_components != 3)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_RGB && RGB_PIXELSIZE == 3)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_YCbCr:
-    if (cinfo->num_components != 3)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_RGB) {
-      cconvert->pub.start_pass = rgb_ycc_start;
-      cconvert->pub.color_convert = rgb_ycc_convert;
-    } else if (cinfo->in_color_space == JCS_YCbCr)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_CMYK:
-    if (cinfo->num_components != 4)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_CMYK)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_YCCK:
-    if (cinfo->num_components != 4)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_CMYK) {
-      cconvert->pub.start_pass = rgb_ycc_start;
-      cconvert->pub.color_convert = cmyk_ycck_convert;
-    } else if (cinfo->in_color_space == JCS_YCCK)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  default:			/* allow null conversion of JCS_UNKNOWN */
-    if (cinfo->jpeg_color_space != cinfo->in_color_space ||
-	cinfo->num_components != cinfo->input_components)
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    cconvert->pub.color_convert = null_convert;
-    break;
-  }
-}
diff --git a/jpeg/jcdctmgr.c b/jpeg/jcdctmgr.c
deleted file mode 100644
index b29121e129fe5b6478577673260c50fc4a22a6c2..0000000000000000000000000000000000000000
--- a/jpeg/jcdctmgr.c
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * jcdctmgr.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the forward-DCT management logic.
- * This code selects a particular DCT implementation to be used,
- * and it performs related housekeeping chores including coefficient
- * quantization.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-
-/* Private subobject for this module */
-
-typedef struct {
-  struct jpeg_forward_dct pub;	/* public fields */
-
-  /* Pointer to the DCT routine actually in use */
-  forward_DCT_method_ptr do_dct;
-
-  /* The actual post-DCT divisors --- not identical to the quant table
-   * entries, because of scaling (especially for an unnormalized DCT).
-   * Each table is given in zigzag order.
-   */
-  DCTELEM * divisors[NUM_QUANT_TBLS];
-
-#ifdef DCT_FLOAT_SUPPORTED
-  /* Same as above for the floating-point case. */
-  float_DCT_method_ptr do_float_dct;
-  FAST_FLOAT * float_divisors[NUM_QUANT_TBLS];
-#endif
-} my_fdct_controller;
-
-typedef my_fdct_controller * my_fdct_ptr;
-
-
-/* ZAG[i] is the natural-order position of the i'th element of zigzag order. */
-
-static const int ZAG[DCTSIZE2] = {
-  0,  1,  8, 16,  9,  2,  3, 10,
- 17, 24, 32, 25, 18, 11,  4,  5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13,  6,  7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-
-/*
- * Initialize for a processing pass.
- * Verify that all referenced Q-tables are present, and set up
- * the divisor table for each one.
- * In the current implementation, DCT of all components is done during
- * the first pass, even if only some components will be output in the
- * first scan.  Hence all components should be examined here.
- */
-
-METHODDEF void
-start_pass_fdctmgr (j_compress_ptr cinfo)
-{
-  my_fdct_ptr fdct = (my_fdct_ptr) cinfo->fdct;
-  int ci, qtblno, i;
-  jpeg_component_info *compptr;
-  JQUANT_TBL * qtbl;
-  DCTELEM * dtbl;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    qtblno = compptr->quant_tbl_no;
-    /* Make sure specified quantization table is present */
-    if (qtblno < 0 || qtblno >= NUM_QUANT_TBLS ||
-	cinfo->quant_tbl_ptrs[qtblno] == NULL)
-      ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
-    qtbl = cinfo->quant_tbl_ptrs[qtblno];
-    /* Compute divisors for this quant table */
-    /* We may do this more than once for same table, but it's not a big deal */
-    switch (cinfo->dct_method) {
-#ifdef DCT_ISLOW_SUPPORTED
-    case JDCT_ISLOW:
-      /* For LL&M IDCT method, divisors are equal to raw quantization
-       * coefficients multiplied by 8 (to counteract scaling).
-       */
-      if (fdct->divisors[qtblno] == NULL) {
-	fdct->divisors[qtblno] = (DCTELEM *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      DCTSIZE2 * SIZEOF(DCTELEM));
-      }
-      dtbl = fdct->divisors[qtblno];
-      for (i = 0; i < DCTSIZE2; i++) {
-	dtbl[i] = ((DCTELEM) qtbl->quantval[i]) << 3;
-      }
-      break;
-#endif
-#ifdef DCT_IFAST_SUPPORTED
-    case JDCT_IFAST:
-      {
-	/* For AA&N IDCT method, divisors are equal to quantization
-	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
-	 *   scalefactor[0] = 1
-	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
-	 * We apply a further scale factor of 8.
-	 */
-#define CONST_BITS 14
-	static const INT16 aanscales[DCTSIZE2] = {
-	  /* precomputed values scaled up by 14 bits: in natural order */
-	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
-	  22725, 31521, 29692, 26722, 22725, 17855, 12299,  6270,
-	  21407, 29692, 27969, 25172, 21407, 16819, 11585,  5906,
-	  19266, 26722, 25172, 22654, 19266, 15137, 10426,  5315,
-	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
-	  12873, 17855, 16819, 15137, 12873, 10114,  6967,  3552,
-	   8867, 12299, 11585, 10426,  8867,  6967,  4799,  2446,
-	   4520,  6270,  5906,  5315,  4520,  3552,  2446,  1247
-	};
-	SHIFT_TEMPS
-
-	if (fdct->divisors[qtblno] == NULL) {
-	  fdct->divisors[qtblno] = (DCTELEM *)
-	    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-					DCTSIZE2 * SIZEOF(DCTELEM));
-	}
-	dtbl = fdct->divisors[qtblno];
-	for (i = 0; i < DCTSIZE2; i++) {
-	  dtbl[i] = (DCTELEM)
-	    DESCALE(MULTIPLY16V16((INT32) qtbl->quantval[i],
-				  (INT32) aanscales[ZAG[i]]),
-		    CONST_BITS-3);
-	}
-      }
-      break;
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-    case JDCT_FLOAT:
-      {
-	/* For float AA&N IDCT method, divisors are equal to quantization
-	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
-	 *   scalefactor[0] = 1
-	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
-	 * We apply a further scale factor of 8.
-	 * What's actually stored is 1/divisor so that the inner loop can
-	 * use a multiplication rather than a division.
-	 */
-	FAST_FLOAT * fdtbl;
-	int row, col;
-	static const double aanscalefactor[DCTSIZE] = {
-	  1.0, 1.387039845, 1.306562965, 1.175875602,
-	  1.0, 0.785694958, 0.541196100, 0.275899379
-	};
-
-	if (fdct->float_divisors[qtblno] == NULL) {
-	  fdct->float_divisors[qtblno] = (FAST_FLOAT *)
-	    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-					DCTSIZE2 * SIZEOF(FAST_FLOAT));
-	}
-	fdtbl = fdct->float_divisors[qtblno];
-	for (i = 0; i < DCTSIZE2; i++) {
-	  row = ZAG[i] >> 3;
-	  col = ZAG[i] & 7;
-	  fdtbl[i] = (FAST_FLOAT)
-	    (1.0 / (((double) qtbl->quantval[i] *
-		     aanscalefactor[row] * aanscalefactor[col] * 8.0)));
-	}
-      }
-      break;
-#endif
-    default:
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-      break;
-    }
-  }
-}
-
-
-/*
- * Perform forward DCT on one or more blocks of a component.
- *
- * The input samples are taken from the sample_data[] array starting at
- * position start_row/start_col, and moving to the right for any additional
- * blocks. The quantized, zigzagged coefficients are returned in coef_blocks[].
- */
-
-METHODDEF void
-forward_DCT (j_compress_ptr cinfo, jpeg_component_info * compptr,
-	     JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
-	     JDIMENSION start_row, JDIMENSION start_col,
-	     JDIMENSION num_blocks)
-/* This version is used for integer DCT implementations. */
-{
-  /* This routine is heavily used, so it's worth coding it tightly. */
-  my_fdct_ptr fdct = (my_fdct_ptr) cinfo->fdct;
-  forward_DCT_method_ptr do_dct = fdct->do_dct;
-  DCTELEM * divisors = fdct->divisors[compptr->quant_tbl_no];
-  DCTELEM workspace[DCTSIZE2];	/* work area for FDCT subroutine */
-  JDIMENSION bi;
-
-  sample_data += start_row;	/* fold in the vertical offset once */
-
-  for (bi = 0; bi < num_blocks; bi++, start_col += DCTSIZE) {
-    /* Load data into workspace, applying unsigned->signed conversion */
-    { register DCTELEM *workspaceptr;
-      register JSAMPROW elemptr;
-      register int elemr;
-
-      workspaceptr = workspace;
-      for (elemr = 0; elemr < DCTSIZE; elemr++) {
-	elemptr = sample_data[elemr] + start_col;
-#if DCTSIZE == 8		/* unroll the inner loop */
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-#else
-	{ register int elemc;
-	  for (elemc = DCTSIZE; elemc > 0; elemc--) {
-	    *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	  }
-	}
-#endif
-      }
-    }
-
-    /* Perform the DCT */
-    (*do_dct) (workspace);
-
-    /* Quantize/descale the coefficients, and store into coef_blocks[] */
-    { register DCTELEM temp, qval;
-      register int i;
-      register JCOEFPTR output_ptr = coef_blocks[bi];
-
-      for (i = 0; i < DCTSIZE2; i++) {
-	qval = divisors[i];
-	temp = workspace[ZAG[i]];
-#if 0
-/* SRS Hack to get values */
- if (bi==0) {
-   printf("%d ",temp);
-   if ((i+1)%8==0) printf("\n");
- }
-#endif
-	/* Divide the coefficient value by qval, ensuring proper rounding.
-	 * Since C does not specify the direction of rounding for negative
-	 * quotients, we have to force the dividend positive for portability.
-	 *
-	 * In most files, at least half of the output values will be zero
-	 * (at default quantization settings, more like three-quarters...)
-	 * so we should ensure that this case is fast.  On many machines,
-	 * a comparison is enough cheaper than a divide to make a special test
-	 * a win.  Since both inputs will be nonnegative, we need only test
-	 * for a < b to discover whether a/b is 0.
-	 * If your machine's division is fast enough, define FAST_DIVIDE.
-	 */
-#ifdef FAST_DIVIDE
-#define DIVIDE_BY(a,b)	a /= b
-#else
-#define DIVIDE_BY(a,b)	if (a >= b) a /= b; else a = 0
-#endif
-	if (temp < 0) {
-	  temp = -temp;
-	  temp += qval>>1;	/* for rounding */
-	  DIVIDE_BY(temp, qval);
-	  temp = -temp;
-	} else {
-	  temp += qval>>1;	/* for rounding */
-	  DIVIDE_BY(temp, qval);
-	}
-	output_ptr[i] = (JCOEF) temp;
-      }
-    }
-  }
-}
-
-
-#ifdef DCT_FLOAT_SUPPORTED
-
-METHODDEF void
-forward_DCT_float (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		   JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
-		   JDIMENSION start_row, JDIMENSION start_col,
-		   JDIMENSION num_blocks)
-/* This version is used for floating-point DCT implementations. */
-{
-  /* This routine is heavily used, so it's worth coding it tightly. */
-  my_fdct_ptr fdct = (my_fdct_ptr) cinfo->fdct;
-  float_DCT_method_ptr do_dct = fdct->do_float_dct;
-  FAST_FLOAT * divisors = fdct->float_divisors[compptr->quant_tbl_no];
-  FAST_FLOAT workspace[DCTSIZE2]; /* work area for FDCT subroutine */
-  JDIMENSION bi;
-
-  sample_data += start_row;	/* fold in the vertical offset once */
-
-  for (bi = 0; bi < num_blocks; bi++, start_col += DCTSIZE) {
-    /* Load data into workspace, applying unsigned->signed conversion */
-    { register FAST_FLOAT *workspaceptr;
-      register JSAMPROW elemptr;
-      register int elemr;
-
-      workspaceptr = workspace;
-      for (elemr = 0; elemr < DCTSIZE; elemr++) {
-	elemptr = sample_data[elemr] + start_col;
-#if DCTSIZE == 8		/* unroll the inner loop */
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-#else
-	{ register int elemc;
-	  for (elemc = DCTSIZE; elemc > 0; elemc--) {
-	    *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	  }
-	}
-#endif
-      }
-    }
-
-    /* Perform the DCT */
-    (*do_dct) (workspace);
-
-    /* Quantize/descale the coefficients, and store into coef_blocks[] */
-    { register FAST_FLOAT temp;
-      register int i;
-      register JCOEFPTR output_ptr = coef_blocks[bi];
-
-      for (i = 0; i < DCTSIZE2; i++) {
-	/* Apply the quantization and scaling factor */
-	temp = workspace[ZAG[i]] * divisors[i];
-	/* Round to nearest integer.
-	 * Since C does not specify the direction of rounding for negative
-	 * quotients, we have to force the dividend positive for portability.
-	 * The maximum coefficient size is +-16K (for 12-bit data), so this
-	 * code should work for either 16-bit or 32-bit ints.
-	 */
-	output_ptr[i] = (JCOEF) ((int) (temp + (FAST_FLOAT) 16384.5) - 16384);
-      }
-    }
-  }
-}
-
-#endif /* DCT_FLOAT_SUPPORTED */
-
-
-/*
- * Initialize FDCT manager.
- */
-
-GLOBAL void
-jinit_forward_dct (j_compress_ptr cinfo)
-{
-  my_fdct_ptr fdct;
-  int i;
-
-  fdct = (my_fdct_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_fdct_controller));
-  cinfo->fdct = (struct jpeg_forward_dct *) fdct;
-  fdct->pub.start_pass = start_pass_fdctmgr;
-
-  switch (cinfo->dct_method) {
-#ifdef DCT_ISLOW_SUPPORTED
-  case JDCT_ISLOW:
-    fdct->pub.forward_DCT = forward_DCT;
-    fdct->do_dct = jpeg_fdct_islow;
-    break;
-#endif
-#ifdef DCT_IFAST_SUPPORTED
-  case JDCT_IFAST:
-    fdct->pub.forward_DCT = forward_DCT;
-    fdct->do_dct = jpeg_fdct_ifast;
-    break;
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-  case JDCT_FLOAT:
-    fdct->pub.forward_DCT = forward_DCT_float;
-    fdct->do_float_dct = jpeg_fdct_float;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-    break;
-  }
-
-  /* Mark divisor tables unallocated */
-  for (i = 0; i < NUM_QUANT_TBLS; i++) {
-    fdct->divisors[i] = NULL;
-#ifdef DCT_FLOAT_SUPPORTED
-    fdct->float_divisors[i] = NULL;
-#endif
-  }
-}
diff --git a/jpeg/jchuff.c b/jpeg/jchuff.c
deleted file mode 100644
index 9ddefc5c9cf73824dc55636cbbdf6c7d5118e7e9..0000000000000000000000000000000000000000
--- a/jpeg/jchuff.c
+++ /dev/null
@@ -1,847 +0,0 @@
-/*
- * jchuff.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains Huffman entropy encoding routines.
- *
- * Much of the complexity here has to do with supporting output suspension.
- * If the data destination module demands suspension, we want to be able to
- * back up to the start of the current MCU.  To do this, we copy state
- * variables into local working storage, and update them back to the
- * permanent JPEG objects only upon successful completion of an MCU.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Derived data constructed for each Huffman table */
-
-typedef struct {
-  unsigned int ehufco[256];	/* code for each symbol */
-  char ehufsi[256];		/* length of code for each symbol */
-  /* If no code has been allocated for a symbol S, ehufsi[S] contains 0 */
-} C_DERIVED_TBL;
-
-/* Expanded entropy encoder object for Huffman encoding.
- *
- * The savable_state subrecord contains fields that change within an MCU,
- * but must not be updated permanently until we complete the MCU.
- */
-
-typedef struct {
-  INT32 put_buffer;		/* current bit-accumulation buffer */
-  int put_bits;			/* # of bits now in it */
-  int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */
-} savable_state;
-
-/* This macro is to work around compilers with missing or broken
- * structure assignment.  You'll need to fix this code if you have
- * such a compiler and you change MAX_COMPS_IN_SCAN.
- */
-
-#ifndef NO_STRUCT_ASSIGN
-#define ASSIGN_STATE(dest,src)  ((dest) = (src))
-#else
-#if MAX_COMPS_IN_SCAN == 4
-#define ASSIGN_STATE(dest,src)  \
-	((dest).put_buffer = (src).put_buffer, \
-	 (dest).put_bits = (src).put_bits, \
-	 (dest).last_dc_val[0] = (src).last_dc_val[0], \
-	 (dest).last_dc_val[1] = (src).last_dc_val[1], \
-	 (dest).last_dc_val[2] = (src).last_dc_val[2], \
-	 (dest).last_dc_val[3] = (src).last_dc_val[3])
-#endif
-#endif
-
-
-typedef struct {
-  struct jpeg_entropy_encoder pub; /* public fields */
-
-  savable_state saved;		/* Bit buffer & DC state at start of MCU */
-
-  /* These fields are NOT loaded into local working state. */
-  unsigned int restarts_to_go;	/* MCUs left in this restart interval */
-  int next_restart_num;		/* next restart number to write (0-7) */
-
-  /* Pointers to derived tables (these workspaces have image lifespan) */
-  C_DERIVED_TBL * dc_derived_tbls[NUM_HUFF_TBLS];
-  C_DERIVED_TBL * ac_derived_tbls[NUM_HUFF_TBLS];
-
-#ifdef ENTROPY_OPT_SUPPORTED	/* Statistics tables for optimization */
-  long * dc_count_ptrs[NUM_HUFF_TBLS];
-  long * ac_count_ptrs[NUM_HUFF_TBLS];
-#endif
-} huff_entropy_encoder;
-
-typedef huff_entropy_encoder * huff_entropy_ptr;
-
-/* Working state while writing an MCU.
- * This struct contains all the fields that are needed by subroutines.
- */
-
-typedef struct {
-  JOCTET * next_output_byte;	/* => next byte to write in buffer */
-  size_t free_in_buffer;	/* # of byte spaces remaining in buffer */
-  savable_state cur;		/* Current bit buffer & DC state */
-  j_compress_ptr cinfo;		/* dump_buffer needs access to this */
-} working_state;
-
-
-/* Forward declarations */
-METHODDEF boolean encode_mcu_huff JPP((j_compress_ptr cinfo,
-				       JBLOCKROW *MCU_data));
-METHODDEF void finish_pass_huff JPP((j_compress_ptr cinfo));
-#ifdef ENTROPY_OPT_SUPPORTED
-METHODDEF boolean encode_mcu_gather JPP((j_compress_ptr cinfo,
-					 JBLOCKROW *MCU_data));
-METHODDEF void finish_pass_gather JPP((j_compress_ptr cinfo));
-#endif
-LOCAL void fix_huff_tbl JPP((j_compress_ptr cinfo, JHUFF_TBL * htbl,
-			     C_DERIVED_TBL ** pdtbl));
-
-
-/*
- * Initialize for a Huffman-compressed scan.
- * If gather_statistics is TRUE, we do not output anything during the scan,
- * just count the Huffman symbols used and generate Huffman code tables.
- */
-
-METHODDEF void
-start_pass_huff (j_compress_ptr cinfo, boolean gather_statistics)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int ci, dctbl, actbl;
-  jpeg_component_info * compptr;
-
-  if (gather_statistics) {
-#ifdef ENTROPY_OPT_SUPPORTED
-    entropy->pub.encode_mcu = encode_mcu_gather;
-    entropy->pub.finish_pass = finish_pass_gather;
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    entropy->pub.encode_mcu = encode_mcu_huff;
-    entropy->pub.finish_pass = finish_pass_huff;
-  }
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    dctbl = compptr->dc_tbl_no;
-    actbl = compptr->ac_tbl_no;
-    /* Make sure requested tables are present */
-    /* (In gather mode, tables need not be allocated yet) */
-    if (dctbl < 0 || dctbl >= NUM_HUFF_TBLS ||
-	(cinfo->dc_huff_tbl_ptrs[dctbl] == NULL && !gather_statistics))
-      ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, dctbl);
-    if (actbl < 0 || actbl >= NUM_HUFF_TBLS ||
-	(cinfo->ac_huff_tbl_ptrs[actbl] == NULL && !gather_statistics))
-      ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, actbl);
-    if (gather_statistics) {
-#ifdef ENTROPY_OPT_SUPPORTED
-      /* Allocate and zero the statistics tables */
-      /* Note that gen_huff_coding expects 257 entries in each table! */
-      if (entropy->dc_count_ptrs[dctbl] == NULL)
-	entropy->dc_count_ptrs[dctbl] = (long *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      257 * SIZEOF(long));
-      MEMZERO(entropy->dc_count_ptrs[dctbl], 257 * SIZEOF(long));
-      if (entropy->ac_count_ptrs[actbl] == NULL)
-	entropy->ac_count_ptrs[actbl] = (long *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      257 * SIZEOF(long));
-      MEMZERO(entropy->ac_count_ptrs[actbl], 257 * SIZEOF(long));
-#endif
-    } else {
-      /* Compute derived values for Huffman tables */
-      /* We may do this more than once for a table, but it's not expensive */
-      fix_huff_tbl(cinfo, cinfo->dc_huff_tbl_ptrs[dctbl],
-		   & entropy->dc_derived_tbls[dctbl]);
-      fix_huff_tbl(cinfo, cinfo->ac_huff_tbl_ptrs[actbl],
-		   & entropy->ac_derived_tbls[actbl]);
-    }
-    /* Initialize DC predictions to 0 */
-    entropy->saved.last_dc_val[ci] = 0;
-  }
-
-  /* Initialize bit buffer to empty */
-  entropy->saved.put_buffer = 0;
-  entropy->saved.put_bits = 0;
-
-  /* Initialize restart stuff */
-  entropy->restarts_to_go = cinfo->restart_interval;
-  entropy->next_restart_num = 0;
-}
-
-
-LOCAL void
-fix_huff_tbl (j_compress_ptr cinfo, JHUFF_TBL * htbl, C_DERIVED_TBL ** pdtbl)
-/* Compute the derived values for a Huffman table */
-{
-  C_DERIVED_TBL *dtbl;
-  int p, i, l, lastp, si;
-  char huffsize[257];
-  unsigned int huffcode[257];
-  unsigned int code;
-
-  /* Allocate a workspace if we haven't already done so. */
-  if (*pdtbl == NULL)
-    *pdtbl = (C_DERIVED_TBL *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(C_DERIVED_TBL));
-  dtbl = *pdtbl;
-  
-  /* Figure C.1: make table of Huffman code length for each symbol */
-  /* Note that this is in code-length order. */
-
-  p = 0;
-  for (l = 1; l <= 16; l++) {
-    for (i = 1; i <= (int) htbl->bits[l]; i++)
-      huffsize[p++] = (char) l;
-  }
-  huffsize[p] = 0;
-  lastp = p;
-  
-  /* Figure C.2: generate the codes themselves */
-  /* Note that this is in code-length order. */
-  
-  code = 0;
-  si = huffsize[0];
-  p = 0;
-  while (huffsize[p]) {
-    while (((int) huffsize[p]) == si) {
-      huffcode[p++] = code;
-      code++;
-    }
-    code <<= 1;
-    si++;
-  }
-  
-  /* Figure C.3: generate encoding tables */
-  /* These are code and size indexed by symbol value */
-
-  /* Set any codeless symbols to have code length 0;
-   * this allows emit_bits to detect any attempt to emit such symbols.
-   */
-  MEMZERO(dtbl->ehufsi, SIZEOF(dtbl->ehufsi));
-
-  for (p = 0; p < lastp; p++) {
-    dtbl->ehufco[htbl->huffval[p]] = huffcode[p];
-    dtbl->ehufsi[htbl->huffval[p]] = huffsize[p];
-  }
-}
-
-
-/* Outputting bytes to the file */
-
-/* Emit a byte, taking 'action' if must suspend. */
-#define emit_byte(state,val,action)  \
-	{ *(state)->next_output_byte++ = (JOCTET) (val);  \
-	  if (--(state)->free_in_buffer == 0)  \
-	    if (! dump_buffer(state))  \
-	      { action; } }
-
-
-LOCAL boolean
-dump_buffer (working_state * state)
-/* Empty the output buffer; return TRUE if successful, FALSE if must suspend */
-{
-  struct jpeg_destination_mgr * dest = state->cinfo->dest;
-
-  if (! (*dest->empty_output_buffer) (state->cinfo))
-    return FALSE;
-  /* After a successful buffer dump, must reset buffer pointers */
-  state->next_output_byte = dest->next_output_byte;
-  state->free_in_buffer = dest->free_in_buffer;
-  return TRUE;
-}
-
-
-/* Outputting bits to the file */
-
-/* Only the right 24 bits of put_buffer are used; the valid bits are
- * left-justified in this part.  At most 16 bits can be passed to emit_bits
- * in one call, and we never retain more than 7 bits in put_buffer
- * between calls, so 24 bits are sufficient.
- */
-
-INLINE
-LOCAL boolean
-emit_bits (working_state * state, unsigned int code, int size)
-/* Emit some bits; return TRUE if successful, FALSE if must suspend */
-{
-  /* This routine is heavily used, so it's worth coding tightly. */
-  register INT32 put_buffer = (INT32) code;
-  register int put_bits = state->cur.put_bits;
-
-  /* if size is 0, caller used an invalid Huffman table entry */
-  if (size == 0)
-    ERREXIT(state->cinfo, JERR_HUFF_MISSING_CODE);
-
-  put_buffer &= (((INT32) 1)<<size) - 1; /* mask off any extra bits in code */
-  
-  put_bits += size;		/* new number of bits in buffer */
-  
-  put_buffer <<= 24 - put_bits; /* align incoming bits */
-
-  put_buffer |= state->cur.put_buffer; /* and merge with old buffer contents */
-  
-  while (put_bits >= 8) {
-    int c = (int) ((put_buffer >> 16) & 0xFF);
-    
-    emit_byte(state, c, return FALSE);
-    if (c == 0xFF) {		/* need to stuff a zero byte? */
-      emit_byte(state, 0, return FALSE);
-    }
-    put_buffer <<= 8;
-    put_bits -= 8;
-  }
-
-  state->cur.put_buffer = put_buffer; /* update state variables */
-  state->cur.put_bits = put_bits;
-
-  return TRUE;
-}
-
-
-LOCAL boolean
-flush_bits (working_state * state)
-{
-  if (! emit_bits(state, 0x7F, 7)) /* fill any partial byte with ones */
-    return FALSE;
-  state->cur.put_buffer = 0;	/* and reset bit-buffer to empty */
-  state->cur.put_bits = 0;
-  return TRUE;
-}
-
-
-/* Encode a single block's worth of coefficients */
-
-LOCAL boolean
-encode_one_block (working_state * state, JCOEFPTR block, int last_dc_val,
-		  C_DERIVED_TBL *dctbl, C_DERIVED_TBL *actbl)
-{
-  register int temp, temp2;
-  register int nbits;
-  register int k, r, i;
-  
-  /* Encode the DC coefficient difference per section F.1.2.1 */
-  
-  temp = temp2 = block[0] - last_dc_val;
-
-  if (temp < 0) {
-    temp = -temp;		/* temp is abs value of input */
-    /* For a negative input, want temp2 = bitwise complement of abs(input) */
-    /* This code assumes we are on a two's complement machine */
-    temp2--;
-  }
-  
-  /* Find the number of bits needed for the magnitude of the coefficient */
-  nbits = 0;
-  while (temp) {
-    nbits++;
-    temp >>= 1;
-  }
-  
-  /* Emit the Huffman-coded symbol for the number of bits */
-  if (! emit_bits(state, dctbl->ehufco[nbits], dctbl->ehufsi[nbits]))
-    return FALSE;
-
-  /* Emit that number of bits of the value, if positive, */
-  /* or the complement of its magnitude, if negative. */
-  if (nbits)			/* emit_bits rejects calls with size 0 */
-    if (! emit_bits(state, (unsigned int) temp2, nbits))
-      return FALSE;
-
-  /* Encode the AC coefficients per section F.1.2.2 */
-  
-  r = 0;			/* r = run length of zeros */
-  
-  for (k = 1; k < DCTSIZE2; k++) {
-    if ((temp = block[k]) == 0) {
-      r++;
-    } else {
-      /* if run length > 15, must emit special run-length-16 codes (0xF0) */
-      while (r > 15) {
-	if (! emit_bits(state, actbl->ehufco[0xF0], actbl->ehufsi[0xF0]))
-	  return FALSE;
-	r -= 16;
-      }
-
-      temp2 = temp;
-      if (temp < 0) {
-	temp = -temp;		/* temp is abs value of input */
-	/* This code assumes we are on a two's complement machine */
-	temp2--;
-      }
-      
-      /* Find the number of bits needed for the magnitude of the coefficient */
-      nbits = 1;		/* there must be at least one 1 bit */
-      while ((temp >>= 1))
-	nbits++;
-      
-      /* Emit Huffman symbol for run length / number of bits */
-      i = (r << 4) + nbits;
-      if (! emit_bits(state, actbl->ehufco[i], actbl->ehufsi[i]))
-	return FALSE;
-
-      /* Emit that number of bits of the value, if positive, */
-      /* or the complement of its magnitude, if negative. */
-      if (! emit_bits(state, (unsigned int) temp2, nbits))
-	return FALSE;
-      
-      r = 0;
-    }
-  }
-
-  /* If the last coef(s) were zero, emit an end-of-block code */
-  if (r > 0)
-    if (! emit_bits(state, actbl->ehufco[0], actbl->ehufsi[0]))
-      return FALSE;
-
-  return TRUE;
-}
-
-
-/*
- * Emit a restart marker & resynchronize predictions.
- */
-
-LOCAL boolean
-emit_restart (working_state * state, int restart_num)
-{
-  int ci;
-
-  if (! flush_bits(state))
-    return FALSE;
-
-  emit_byte(state, 0xFF, return FALSE);
-  emit_byte(state, JPEG_RST0 + restart_num, return FALSE);
-
-  /* Re-initialize DC predictions to 0 */
-  for (ci = 0; ci < state->cinfo->comps_in_scan; ci++)
-    state->cur.last_dc_val[ci] = 0;
-
-  /* The restart counter is not updated until we successfully write the MCU. */
-
-  return TRUE;
-}
-
-
-/*
- * Encode and output one MCU's worth of Huffman-compressed coefficients.
- */
-
-METHODDEF boolean
-encode_mcu_huff (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  working_state state;
-  int blkn, ci;
-  jpeg_component_info * compptr;
-
-  /* Load up working state */
-  state.next_output_byte = cinfo->dest->next_output_byte;
-  state.free_in_buffer = cinfo->dest->free_in_buffer;
-  ASSIGN_STATE(state.cur, entropy->saved);
-  state.cinfo = cinfo;
-
-  /* Emit restart marker if needed */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! emit_restart(&state, entropy->next_restart_num))
-	return FALSE;
-  }
-
-  /* Encode the MCU data blocks */
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    ci = cinfo->MCU_membership[blkn];
-    compptr = cinfo->cur_comp_info[ci];
-    if (! encode_one_block(&state,
-			   MCU_data[blkn][0], state.cur.last_dc_val[ci],
-			   entropy->dc_derived_tbls[compptr->dc_tbl_no],
-			   entropy->ac_derived_tbls[compptr->ac_tbl_no]))
-      return FALSE;
-    /* Update last_dc_val */
-    state.cur.last_dc_val[ci] = MCU_data[blkn][0][0];
-  }
-
-  /* Completed MCU, so update state */
-  cinfo->dest->next_output_byte = state.next_output_byte;
-  cinfo->dest->free_in_buffer = state.free_in_buffer;
-  ASSIGN_STATE(entropy->saved, state.cur);
-
-  /* Update restart-interval state too */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      entropy->restarts_to_go = cinfo->restart_interval;
-      entropy->next_restart_num++;
-      entropy->next_restart_num &= 7;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  return TRUE;
-}
-
-
-/*
- * Finish up at the end of a Huffman-compressed scan.
- */
-
-METHODDEF void
-finish_pass_huff (j_compress_ptr cinfo)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  working_state state;
-
-  /* Load up working state ... flush_bits needs it */
-  state.next_output_byte = cinfo->dest->next_output_byte;
-  state.free_in_buffer = cinfo->dest->free_in_buffer;
-  ASSIGN_STATE(state.cur, entropy->saved);
-  state.cinfo = cinfo;
-
-  /* Flush out the last data */
-  if (! flush_bits(&state))
-    ERREXIT(cinfo, JERR_CANT_SUSPEND);
-
-  /* Update state */
-  cinfo->dest->next_output_byte = state.next_output_byte;
-  cinfo->dest->free_in_buffer = state.free_in_buffer;
-  ASSIGN_STATE(entropy->saved, state.cur);
-}
-
-
-/*
- * Huffman coding optimization.
- *
- * This actually is optimization, in the sense that we find the best possible
- * Huffman table(s) for the given data.  We first scan the supplied data and
- * count the number of uses of each symbol that is to be Huffman-coded.
- * (This process must agree with the code above.)  Then we build an
- * optimal Huffman coding tree for the observed counts.
- *
- * The JPEG standard requires Huffman codes to be no more than 16 bits long.
- * If some symbols have a very small but nonzero probability, the Huffman tree
- * must be adjusted to meet the code length restriction.  We currently use
- * the adjustment method suggested in the JPEG spec.  This method is *not*
- * optimal; it may not choose the best possible limited-length code.  But
- * since the symbols involved are infrequently used, it's not clear that
- * going to extra trouble is worthwhile.
- */
-
-#ifdef ENTROPY_OPT_SUPPORTED
-
-
-/* Process a single block's worth of coefficients */
-
-LOCAL void
-htest_one_block (JCOEFPTR block, int last_dc_val,
-		 long dc_counts[], long ac_counts[])
-{
-  register int temp;
-  register int nbits;
-  register int k, r;
-  
-  /* Encode the DC coefficient difference per section F.1.2.1 */
-  
-  temp = block[0] - last_dc_val;
-  if (temp < 0)
-    temp = -temp;
-  
-  /* Find the number of bits needed for the magnitude of the coefficient */
-  nbits = 0;
-  while (temp) {
-    nbits++;
-    temp >>= 1;
-  }
-
-  /* Count the Huffman symbol for the number of bits */
-  dc_counts[nbits]++;
-  
-  /* Encode the AC coefficients per section F.1.2.2 */
-  
-  r = 0;			/* r = run length of zeros */
-  
-  for (k = 1; k < DCTSIZE2; k++) {
-    if ((temp = block[k]) == 0) {
-      r++;
-    } else {
-      /* if run length > 15, must emit special run-length-16 codes (0xF0) */
-      while (r > 15) {
-	ac_counts[0xF0]++;
-	r -= 16;
-      }
-      
-      /* Find the number of bits needed for the magnitude of the coefficient */
-      if (temp < 0)
-	temp = -temp;
-      
-      /* Find the number of bits needed for the magnitude of the coefficient */
-      nbits = 1;		/* there must be at least one 1 bit */
-      while ((temp >>= 1))
-	nbits++;
-      
-      /* Count Huffman symbol for run length / number of bits */
-      ac_counts[(r << 4) + nbits]++;
-      
-      r = 0;
-    }
-  }
-
-  /* If the last coef(s) were zero, emit an end-of-block code */
-  if (r > 0)
-    ac_counts[0]++;
-}
-
-
-/*
- * Trial-encode one MCU's worth of Huffman-compressed coefficients.
- * No data is actually output, so no suspension return is possible.
- */
-
-METHODDEF boolean
-encode_mcu_gather (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int blkn, ci;
-  jpeg_component_info * compptr;
-
-  /* Take care of restart intervals if needed */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      /* Re-initialize DC predictions to 0 */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++)
-	entropy->saved.last_dc_val[ci] = 0;
-      /* Update restart state */
-      entropy->restarts_to_go = cinfo->restart_interval;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    ci = cinfo->MCU_membership[blkn];
-    compptr = cinfo->cur_comp_info[ci];
-    htest_one_block(MCU_data[blkn][0], entropy->saved.last_dc_val[ci],
-		    entropy->dc_count_ptrs[compptr->dc_tbl_no],
-		    entropy->ac_count_ptrs[compptr->ac_tbl_no]);
-    entropy->saved.last_dc_val[ci] = MCU_data[blkn][0][0];
-  }
-
-  return TRUE;
-}
-
-
-/* Generate the optimal coding for the given counts, initialize htbl */
-
-LOCAL void
-gen_huff_coding (j_compress_ptr cinfo, JHUFF_TBL *htbl, long freq[])
-{
-#define MAX_CLEN 32		/* assumed maximum initial code length */
-  UINT8 bits[MAX_CLEN+1];	/* bits[k] = # of symbols with code length k */
-  int codesize[257];		/* codesize[k] = code length of symbol k */
-  int others[257];		/* next symbol in current branch of tree */
-  int c1, c2;
-  int p, i, j;
-  long v;
-
-  /* This algorithm is explained in section K.2 of the JPEG standard */
-
-  MEMZERO(bits, SIZEOF(bits));
-  MEMZERO(codesize, SIZEOF(codesize));
-  for (i = 0; i < 257; i++)
-    others[i] = -1;		/* init links to empty */
-  
-  freq[256] = 1;		/* make sure there is a nonzero count */
-  /* Including the pseudo-symbol 256 in the Huffman procedure guarantees
-   * that no real symbol is given code-value of all ones, because 256
-   * will be placed in the largest codeword category.
-   */
-
-  /* Huffman's basic algorithm to assign optimal code lengths to symbols */
-
-  for (;;) {
-    /* Find the smallest nonzero frequency, set c1 = its symbol */
-    /* In case of ties, take the larger symbol number */
-    c1 = -1;
-    v = 1000000000L;
-    for (i = 0; i <= 256; i++) {
-      if (freq[i] && freq[i] <= v) {
-	v = freq[i];
-	c1 = i;
-      }
-    }
-
-    /* Find the next smallest nonzero frequency, set c2 = its symbol */
-    /* In case of ties, take the larger symbol number */
-    c2 = -1;
-    v = 1000000000L;
-    for (i = 0; i <= 256; i++) {
-      if (freq[i] && freq[i] <= v && i != c1) {
-	v = freq[i];
-	c2 = i;
-      }
-    }
-
-    /* Done if we've merged everything into one frequency */
-    if (c2 < 0)
-      break;
-    
-    /* Else merge the two counts/trees */
-    freq[c1] += freq[c2];
-    freq[c2] = 0;
-
-    /* Increment the codesize of everything in c1's tree branch */
-    codesize[c1]++;
-    while (others[c1] >= 0) {
-      c1 = others[c1];
-      codesize[c1]++;
-    }
-    
-    others[c1] = c2;		/* chain c2 onto c1's tree branch */
-    
-    /* Increment the codesize of everything in c2's tree branch */
-    codesize[c2]++;
-    while (others[c2] >= 0) {
-      c2 = others[c2];
-      codesize[c2]++;
-    }
-  }
-
-  /* Now count the number of symbols of each code length */
-  for (i = 0; i <= 256; i++) {
-    if (codesize[i]) {
-      /* The JPEG standard seems to think that this can't happen, */
-      /* but I'm paranoid... */
-      if (codesize[i] > MAX_CLEN)
-	ERREXIT(cinfo, JERR_HUFF_CLEN_OVERFLOW);
-
-      bits[codesize[i]]++;
-    }
-  }
-
-  /* JPEG doesn't allow symbols with code lengths over 16 bits, so if the pure
-   * Huffman procedure assigned any such lengths, we must adjust the coding.
-   * Here is what the JPEG spec says about how this next bit works:
-   * Since symbols are paired for the longest Huffman code, the symbols are
-   * removed from this length category two at a time.  The prefix for the pair
-   * (which is one bit shorter) is allocated to one of the pair; then,
-   * skipping the BITS entry for that prefix length, a code word from the next
-   * shortest nonzero BITS entry is converted into a prefix for two code words
-   * one bit longer.
-   */
-  
-  for (i = MAX_CLEN; i > 16; i--) {
-    while (bits[i] > 0) {
-      j = i - 2;		/* find length of new prefix to be used */
-      while (bits[j] == 0)
-	j--;
-      
-      bits[i] -= 2;		/* remove two symbols */
-      bits[i-1]++;		/* one goes in this length */
-      bits[j+1] += 2;		/* two new symbols in this length */
-      bits[j]--;		/* symbol of this length is now a prefix */
-    }
-  }
-
-  /* Remove the count for the pseudo-symbol 256 from the largest codelength */
-  while (bits[i] == 0)		/* find largest codelength still in use */
-    i--;
-  bits[i]--;
-  
-  /* Return final symbol counts (only for lengths 0..16) */
-  MEMCOPY(htbl->bits, bits, SIZEOF(htbl->bits));
-  
-  /* Return a list of the symbols sorted by code length */
-  /* It's not real clear to me why we don't need to consider the codelength
-   * changes made above, but the JPEG spec seems to think this works.
-   */
-  p = 0;
-  for (i = 1; i <= MAX_CLEN; i++) {
-    for (j = 0; j <= 255; j++) {
-      if (codesize[j] == i) {
-	htbl->huffval[p] = (UINT8) j;
-	p++;
-      }
-    }
-  }
-
-  /* Set sent_table FALSE so updated table will be written to JPEG file. */
-  htbl->sent_table = FALSE;
-}
-
-
-/*
- * Finish up a statistics-gathering pass and create the new Huffman tables.
- */
-
-METHODDEF void
-finish_pass_gather (j_compress_ptr cinfo)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int ci, dctbl, actbl;
-  jpeg_component_info * compptr;
-  JHUFF_TBL **htblptr;
-  boolean did_dc[NUM_HUFF_TBLS];
-  boolean did_ac[NUM_HUFF_TBLS];
-
-  /* It's important not to apply gen_huff_coding more than once per table,
-   * because it clobbers the input frequency counts!
-   */
-  MEMZERO(did_dc, SIZEOF(did_dc));
-  MEMZERO(did_ac, SIZEOF(did_ac));
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    dctbl = compptr->dc_tbl_no;
-    actbl = compptr->ac_tbl_no;
-    if (! did_dc[dctbl]) {
-      htblptr = & cinfo->dc_huff_tbl_ptrs[dctbl];
-      if (*htblptr == NULL)
-	*htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-      gen_huff_coding(cinfo, *htblptr, entropy->dc_count_ptrs[dctbl]);
-      did_dc[dctbl] = TRUE;
-    }
-    if (! did_ac[actbl]) {
-      htblptr = & cinfo->ac_huff_tbl_ptrs[actbl];
-      if (*htblptr == NULL)
-	*htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-      gen_huff_coding(cinfo, *htblptr, entropy->ac_count_ptrs[actbl]);
-      did_ac[actbl] = TRUE;
-    }
-  }
-}
-
-
-#endif /* ENTROPY_OPT_SUPPORTED */
-
-
-/*
- * Module initialization routine for Huffman entropy encoding.
- */
-
-GLOBAL void
-jinit_huff_encoder (j_compress_ptr cinfo)
-{
-  huff_entropy_ptr entropy;
-  int i;
-
-  entropy = (huff_entropy_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(huff_entropy_encoder));
-  cinfo->entropy = (struct jpeg_entropy_encoder *) entropy;
-  entropy->pub.start_pass = start_pass_huff;
-
-  /* Mark tables unallocated */
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    entropy->dc_derived_tbls[i] = entropy->ac_derived_tbls[i] = NULL;
-#ifdef ENTROPY_OPT_SUPPORTED
-    entropy->dc_count_ptrs[i] = entropy->ac_count_ptrs[i] = NULL;
-#endif
-  }
-}
diff --git a/jpeg/jcmainct.c b/jpeg/jcmainct.c
deleted file mode 100644
index 5359268b57820c2284e2653f7fbebfb7113dd2b7..0000000000000000000000000000000000000000
--- a/jpeg/jcmainct.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * jcmainct.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the main buffer controller for compression.
- * The main buffer lies between the pre-processor and the JPEG
- * compressor proper; it holds downsampled data in the JPEG colorspace.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Note: currently, there is no operating mode in which a full-image buffer
- * is needed at this step.  If there were, that mode could not be used with
- * "raw data" input, since this module is bypassed in that case.  However,
- * we've left the code here for possible use in special applications.
- */
-#undef FULL_MAIN_BUFFER_SUPPORTED
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_main_controller pub; /* public fields */
-
-  JDIMENSION cur_mcu_row;	/* number of current iMCU row */
-  JDIMENSION rowgroup_ctr;	/* counts row groups received in iMCU row */
-  JDIMENSION mcu_ctr;		/* counts MCUs output from current row */
-  boolean suspended;		/* remember if we suspended output */
-  J_BUF_MODE pass_mode;		/* current operating mode */
-
-  /* If using just a strip buffer, this points to the entire set of buffers
-   * (we allocate one for each component).  In the full-image case, this
-   * points to the currently accessible strips of the virtual arrays.
-   */
-  JSAMPARRAY buffer[MAX_COMPONENTS];
-
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-  /* If using full-image storage, this array holds pointers to virtual-array
-   * control blocks for each component.  Unused if not full-image storage.
-   */
-  jvirt_sarray_ptr whole_image[MAX_COMPONENTS];
-#endif
-} my_main_controller;
-
-typedef my_main_controller * my_main_ptr;
-
-
-/* Forward declarations */
-METHODDEF void process_data_simple_main
-	JPP((j_compress_ptr cinfo, JSAMPARRAY input_buf,
-	     JDIMENSION *in_row_ctr, JDIMENSION in_rows_avail));
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-METHODDEF void process_data_buffer_main
-	JPP((j_compress_ptr cinfo, JSAMPARRAY input_buf,
-	     JDIMENSION *in_row_ctr, JDIMENSION in_rows_avail));
-#endif
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF void
-start_pass_main (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-
-  /* Do nothing in raw-data mode. */
-  if (cinfo->raw_data_in)
-    return;
-
-  main->cur_mcu_row = 0;	/* initialize counters */
-  main->rowgroup_ctr = 0;
-  main->mcu_ctr = 0;
-  main->suspended = FALSE;
-  main->pass_mode = pass_mode;	/* save mode for use by process_data */
-
-  switch (pass_mode) {
-  case JBUF_PASS_THRU:
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-    if (main->whole_image[0] != NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif
-    main->pub.process_data = process_data_simple_main;
-    break;
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-  case JBUF_SAVE_SOURCE:
-  case JBUF_CRANK_DEST:
-  case JBUF_SAVE_AND_PASS:
-    if (main->whole_image[0] == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    main->pub.process_data = process_data_buffer_main;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    break;
-  }
-}
-
-
-/*
- * Process some data.
- * This routine handles the simple pass-through mode,
- * where we have only a strip buffer.
- */
-
-METHODDEF void
-process_data_simple_main (j_compress_ptr cinfo,
-			  JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-			  JDIMENSION in_rows_avail)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-
-  while (main->cur_mcu_row < cinfo->total_iMCU_rows) {
-    /* Read input data if we haven't filled the main buffer yet */
-    if (main->rowgroup_ctr < DCTSIZE)
-      (*cinfo->prep->pre_process_data) (cinfo,
-					input_buf, in_row_ctr, in_rows_avail,
-					main->buffer, &main->rowgroup_ctr,
-					(JDIMENSION) DCTSIZE);
-
-    /* If we don't have a full iMCU row buffered, return to application for
-     * more data.  Note that preprocessor will always pad to fill the iMCU row
-     * at the bottom of the image.
-     */
-    if (main->rowgroup_ctr != DCTSIZE)
-      return;
-
-    /* Send the completed row to the compressor */
-    (*cinfo->coef->compress_data) (cinfo, main->buffer, &main->mcu_ctr);
-
-    /* If compressor did not consume the whole row, then we must need to
-     * suspend processing and return to the application.  In this situation
-     * we pretend we didn't yet consume the last input row; otherwise, if
-     * it happened to be the last row of the image, the application would
-     * think we were done.
-     */
-    if (main->mcu_ctr < cinfo->MCUs_per_row) {
-      if (! main->suspended) {
-	(*in_row_ctr)--;
-	main->suspended = TRUE;
-      }
-      return;
-    }
-    /* We did finish the row.  Undo our little suspension hack if a previous
-     * call suspended; then mark the main buffer empty.
-     */
-    if (main->suspended) {
-      (*in_row_ctr)++;
-      main->suspended = FALSE;
-    }
-    main->mcu_ctr = 0;
-    main->rowgroup_ctr = 0;
-    main->cur_mcu_row++;
-  }
-}
-
-
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-
-/*
- * Process some data.
- * This routine handles all of the modes that use a full-size buffer.
- */
-
-METHODDEF void
-process_data_buffer_main (j_compress_ptr cinfo,
-			  JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-			  JDIMENSION in_rows_avail)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  int ci;
-  jpeg_component_info *compptr;
-  boolean writing = (main->pass_mode != JBUF_CRANK_DEST);
-
-  while (main->cur_mcu_row < cinfo->total_iMCU_rows) {
-    /* Realign the virtual buffers if at the start of an iMCU row. */
-    if (main->rowgroup_ctr == 0) {
-      for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	   ci++, compptr++) {
-	main->buffer[ci] = (*cinfo->mem->access_virt_sarray)
-	  ((j_common_ptr) cinfo, main->whole_image[ci],
-	   main->cur_mcu_row * (compptr->v_samp_factor * DCTSIZE), writing);
-      }
-      /* In a read pass, pretend we just read some source data. */
-      if (! writing) {
-	*in_row_ctr += cinfo->max_v_samp_factor * DCTSIZE;
-	main->rowgroup_ctr = DCTSIZE;
-      }
-    }
-
-    /* If a write pass, read input data until the current iMCU row is full. */
-    /* Note: preprocessor will pad if necessary to fill the last iMCU row. */
-    if (writing) {
-      (*cinfo->prep->pre_process_data) (cinfo,
-					input_buf, in_row_ctr, in_rows_avail,
-					main->buffer, &main->rowgroup_ctr,
-					(JDIMENSION) DCTSIZE);
-      /* Return to application if we need more data to fill the iMCU row. */
-      if (main->rowgroup_ctr < DCTSIZE)
-	return;
-    }
-
-    /* Emit data, unless this is a sink-only pass. */
-    if (main->pass_mode != JBUF_SAVE_SOURCE) {
-      (*cinfo->coef->compress_data) (cinfo, main->buffer, &main->mcu_ctr);
-      /* If compressor did not consume the whole row, then we must need to
-       * suspend processing and return to the application.  In this situation
-       * we pretend we didn't yet consume the last input row; otherwise, if
-       * it happened to be the last row of the image, the application would
-       * think we were done.
-       */
-      if (main->mcu_ctr < cinfo->MCUs_per_row) {
-	if (! main->suspended) {
-	  (*in_row_ctr)--;
-	  main->suspended = TRUE;
-	}
-	return;
-      }
-      /* We did finish the row.  Undo our little suspension hack if a previous
-       * call suspended; then mark the main buffer empty.
-       */
-      if (main->suspended) {
-	(*in_row_ctr)++;
-	main->suspended = FALSE;
-      }
-    }
-
-    /* If get here, we are done with this iMCU row.  Mark buffer empty. */
-    main->mcu_ctr = 0;
-    main->rowgroup_ctr = 0;
-    main->cur_mcu_row++;
-  }
-}
-
-#endif /* FULL_MAIN_BUFFER_SUPPORTED */
-
-
-/*
- * Initialize main buffer controller.
- */
-
-GLOBAL void
-jinit_c_main_controller (j_compress_ptr cinfo, boolean need_full_buffer)
-{
-  my_main_ptr main;
-  int ci;
-  jpeg_component_info *compptr;
-
-  main = (my_main_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_main_controller));
-  cinfo->main = (struct jpeg_c_main_controller *) main;
-  main->pub.start_pass = start_pass_main;
-
-  /* We don't need to create a buffer in raw-data mode. */
-  if (cinfo->raw_data_in)
-    return;
-
-  /* Create the buffer.  It holds downsampled data, so each component
-   * may be of a different size.
-   */
-  if (need_full_buffer) {
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-    /* Allocate a full-image virtual array for each component */
-    /* Note we implicitly pad the bottom to a multiple of the iMCU height */
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      main->whole_image[ci] = (*cinfo->mem->request_virt_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 compptr->width_in_blocks * DCTSIZE,
-	 compptr->height_in_blocks * DCTSIZE,
-	 (JDIMENSION) (compptr->v_samp_factor * DCTSIZE));
-    }
-#else
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif
-  } else {
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-    main->whole_image[0] = NULL; /* flag for no virtual arrays */
-#endif
-    /* Allocate a strip buffer for each component */
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      main->buffer[ci] = (*cinfo->mem->alloc_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 compptr->width_in_blocks * DCTSIZE,
-	 (JDIMENSION) (compptr->v_samp_factor * DCTSIZE));
-    }
-  }
-}
diff --git a/jpeg/jcmarker.c b/jpeg/jcmarker.c
deleted file mode 100644
index 54546585e1f2797c6e8150e75d8215305a7195b0..0000000000000000000000000000000000000000
--- a/jpeg/jcmarker.c
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
- * jcmarker.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write JPEG datastream markers.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-typedef enum {			/* JPEG marker codes */
-  M_SOF0  = 0xc0,
-  M_SOF1  = 0xc1,
-  M_SOF2  = 0xc2,
-  M_SOF3  = 0xc3,
-  
-  M_SOF5  = 0xc5,
-  M_SOF6  = 0xc6,
-  M_SOF7  = 0xc7,
-  
-  M_JPG   = 0xc8,
-  M_SOF9  = 0xc9,
-  M_SOF10 = 0xca,
-  M_SOF11 = 0xcb,
-  
-  M_SOF13 = 0xcd,
-  M_SOF14 = 0xce,
-  M_SOF15 = 0xcf,
-  
-  M_DHT   = 0xc4,
-  
-  M_DAC   = 0xcc,
-  
-  M_RST0  = 0xd0,
-  M_RST1  = 0xd1,
-  M_RST2  = 0xd2,
-  M_RST3  = 0xd3,
-  M_RST4  = 0xd4,
-  M_RST5  = 0xd5,
-  M_RST6  = 0xd6,
-  M_RST7  = 0xd7,
-  
-  M_SOI   = 0xd8,
-  M_EOI   = 0xd9,
-  M_SOS   = 0xda,
-  M_DQT   = 0xdb,
-  M_DNL   = 0xdc,
-  M_DRI   = 0xdd,
-  M_DHP   = 0xde,
-  M_EXP   = 0xdf,
-  
-  M_APP0  = 0xe0,
-  M_APP1  = 0xe1,
-  M_APP2  = 0xe2,
-  M_APP3  = 0xe3,
-  M_APP4  = 0xe4,
-  M_APP5  = 0xe5,
-  M_APP6  = 0xe6,
-  M_APP7  = 0xe7,
-  M_APP8  = 0xe8,
-  M_APP9  = 0xe9,
-  M_APP10 = 0xea,
-  M_APP11 = 0xeb,
-  M_APP12 = 0xec,
-  M_APP13 = 0xed,
-  M_APP14 = 0xee,
-  M_APP15 = 0xef,
-  
-  M_JPG0  = 0xf0,
-  M_JPG13 = 0xfd,
-  M_COM   = 0xfe,
-  
-  M_TEM   = 0x01,
-  
-  M_ERROR = 0x100
-} JPEG_MARKER;
-
-
-/*
- * Basic output routines.
- *
- * Note that we do not support suspension while writing a marker.
- * Therefore, an application using suspension must ensure that there is
- * enough buffer space for the initial markers (typ. 600-700 bytes) before
- * calling jpeg_start_compress, and enough space to write the trailing EOI
- * (a few bytes) before calling jpeg_finish_compress.  Multipass compression
- * modes are not supported at all with suspension, so those two are the only
- * points where markers will be written.
- */
-
-LOCAL void
-emit_byte (j_compress_ptr cinfo, int val)
-/* Emit a byte */
-{
-  struct jpeg_destination_mgr * dest = cinfo->dest;
-
-  *(dest->next_output_byte)++ = (JOCTET) val;
-  if (--dest->free_in_buffer == 0) {
-    if (! (*dest->empty_output_buffer) (cinfo))
-      ERREXIT(cinfo, JERR_CANT_SUSPEND);
-  }
-}
-
-
-LOCAL void
-emit_marker (j_compress_ptr cinfo, JPEG_MARKER mark)
-/* Emit a marker code */
-{
-  emit_byte(cinfo, 0xFF);
-  emit_byte(cinfo, (int) mark);
-}
-
-
-LOCAL void
-emit_2bytes (j_compress_ptr cinfo, int value)
-/* Emit a 2-byte integer; these are always MSB first in JPEG files */
-{
-  emit_byte(cinfo, (value >> 8) & 0xFF);
-  emit_byte(cinfo, value & 0xFF);
-}
-
-
-/*
- * Routines to write specific marker types.
- */
-
-LOCAL int
-emit_dqt (j_compress_ptr cinfo, int index)
-/* Emit a DQT marker */
-/* Returns the precision used (0 = 8bits, 1 = 16bits) for baseline checking */
-{
-  JQUANT_TBL * qtbl = cinfo->quant_tbl_ptrs[index];
-  int prec;
-  int i;
-
-  if (qtbl == NULL)
-    ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, index);
-
-  prec = 0;
-  for (i = 0; i < DCTSIZE2; i++) {
-    if (qtbl->quantval[i] > 255)
-      prec = 1;
-  }
-
-  if (! qtbl->sent_table) {
-    emit_marker(cinfo, M_DQT);
-
-    emit_2bytes(cinfo, prec ? DCTSIZE2*2 + 1 + 2 : DCTSIZE2 + 1 + 2);
-
-    emit_byte(cinfo, index + (prec<<4));
-
-    for (i = 0; i < DCTSIZE2; i++) {
-      if (prec)
-	emit_byte(cinfo, qtbl->quantval[i] >> 8);
-      emit_byte(cinfo, qtbl->quantval[i] & 0xFF);
-    }
-
-    qtbl->sent_table = TRUE;
-  }
-
-  return prec;
-}
-
-
-LOCAL void
-emit_dht (j_compress_ptr cinfo, int index, boolean is_ac)
-/* Emit a DHT marker */
-{
-  JHUFF_TBL * htbl;
-  int length, i;
-  
-  if (is_ac) {
-    htbl = cinfo->ac_huff_tbl_ptrs[index];
-    index += 0x10;		/* output index has AC bit set */
-  } else {
-    htbl = cinfo->dc_huff_tbl_ptrs[index];
-  }
-
-  if (htbl == NULL)
-    ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, index);
-  
-  if (! htbl->sent_table) {
-    emit_marker(cinfo, M_DHT);
-    
-    length = 0;
-    for (i = 1; i <= 16; i++)
-      length += htbl->bits[i];
-    
-    emit_2bytes(cinfo, length + 2 + 1 + 16);
-    emit_byte(cinfo, index);
-    
-    for (i = 1; i <= 16; i++)
-      emit_byte(cinfo, htbl->bits[i]);
-    
-    for (i = 0; i < length; i++)
-      emit_byte(cinfo, htbl->huffval[i]);
-    
-    htbl->sent_table = TRUE;
-  }
-}
-
-
-LOCAL void
-emit_dac (j_compress_ptr cinfo)
-/* Emit a DAC marker */
-/* Since the useful info is so small, we want to emit all the tables in */
-/* one DAC marker.  Therefore this routine does its own scan of the table. */
-{
-#ifdef C_ARITH_CODING_SUPPORTED
-  char dc_in_use[NUM_ARITH_TBLS];
-  char ac_in_use[NUM_ARITH_TBLS];
-  int length, i;
-  jpeg_component_info *compptr;
-  
-  for (i = 0; i < NUM_ARITH_TBLS; i++)
-    dc_in_use[i] = ac_in_use[i] = 0;
-  
-  for (i = 0; i < cinfo->comps_in_scan; i++) {
-    compptr = cinfo->cur_comp_info[i];
-    dc_in_use[compptr->dc_tbl_no] = 1;
-    ac_in_use[compptr->ac_tbl_no] = 1;
-  }
-  
-  length = 0;
-  for (i = 0; i < NUM_ARITH_TBLS; i++)
-    length += dc_in_use[i] + ac_in_use[i];
-  
-  emit_marker(cinfo, M_DAC);
-  
-  emit_2bytes(cinfo, length*2 + 2);
-  
-  for (i = 0; i < NUM_ARITH_TBLS; i++) {
-    if (dc_in_use[i]) {
-      emit_byte(cinfo, i);
-      emit_byte(cinfo, cinfo->arith_dc_L[i] + (cinfo->arith_dc_U[i]<<4));
-    }
-    if (ac_in_use[i]) {
-      emit_byte(cinfo, i + 0x10);
-      emit_byte(cinfo, cinfo->arith_ac_K[i]);
-    }
-  }
-#endif /* C_ARITH_CODING_SUPPORTED */
-}
-
-
-LOCAL void
-emit_dri (j_compress_ptr cinfo)
-/* Emit a DRI marker */
-{
-  emit_marker(cinfo, M_DRI);
-  
-  emit_2bytes(cinfo, 4);	/* fixed length */
-
-  emit_2bytes(cinfo, (int) cinfo->restart_interval);
-}
-
-
-LOCAL void
-emit_sof (j_compress_ptr cinfo, JPEG_MARKER code)
-/* Emit a SOF marker */
-{
-  int ci;
-  jpeg_component_info *compptr;
-  
-  emit_marker(cinfo, code);
-  
-  emit_2bytes(cinfo, 3 * cinfo->num_components + 2 + 5 + 1); /* length */
-
-  /* Make sure image isn't bigger than SOF field can handle */
-  if ((long) cinfo->image_height > 65535L ||
-      (long) cinfo->image_width > 65535L)
-    ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) 65535);
-
-  emit_byte(cinfo, cinfo->data_precision);
-  emit_2bytes(cinfo, (int) cinfo->image_height);
-  emit_2bytes(cinfo, (int) cinfo->image_width);
-
-  emit_byte(cinfo, cinfo->num_components);
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    emit_byte(cinfo, compptr->component_id);
-    emit_byte(cinfo, (compptr->h_samp_factor << 4) + compptr->v_samp_factor);
-    emit_byte(cinfo, compptr->quant_tbl_no);
-  }
-}
-
-
-LOCAL void
-emit_sos (j_compress_ptr cinfo)
-/* Emit a SOS marker */
-{
-  int i;
-  jpeg_component_info *compptr;
-  
-  emit_marker(cinfo, M_SOS);
-  
-  emit_2bytes(cinfo, 2 * cinfo->comps_in_scan + 2 + 1 + 3); /* length */
-  
-  emit_byte(cinfo, cinfo->comps_in_scan);
-  
-  for (i = 0; i < cinfo->comps_in_scan; i++) {
-    compptr = cinfo->cur_comp_info[i];
-    emit_byte(cinfo, compptr->component_id);
-    emit_byte(cinfo, (compptr->dc_tbl_no << 4) + compptr->ac_tbl_no);
-  }
-
-  emit_byte(cinfo, 0);		/* Spectral selection start */
-  emit_byte(cinfo, DCTSIZE2-1);	/* Spectral selection end */
-  emit_byte(cinfo, 0);		/* Successive approximation */
-}
-
-
-LOCAL void
-emit_jfif_app0 (j_compress_ptr cinfo)
-/* Emit a JFIF-compliant APP0 marker */
-{
-  /*
-   * Length of APP0 block	(2 bytes)
-   * Block ID			(4 bytes - ASCII "JFIF")
-   * Zero byte			(1 byte to terminate the ID string)
-   * Version Major, Minor	(2 bytes - 0x01, 0x01)
-   * Units			(1 byte - 0x00 = none, 0x01 = inch, 0x02 = cm)
-   * Xdpu			(2 bytes - dots per unit horizontal)
-   * Ydpu			(2 bytes - dots per unit vertical)
-   * Thumbnail X size		(1 byte)
-   * Thumbnail Y size		(1 byte)
-   */
-  
-  emit_marker(cinfo, M_APP0);
-  
-  emit_2bytes(cinfo, 2 + 4 + 1 + 2 + 1 + 2 + 2 + 1 + 1); /* length */
-
-  emit_byte(cinfo, 0x4A);	/* Identifier: ASCII "JFIF" */
-  emit_byte(cinfo, 0x46);
-  emit_byte(cinfo, 0x49);
-  emit_byte(cinfo, 0x46);
-  emit_byte(cinfo, 0);
-  /* We currently emit version code 1.01 since we use no 1.02 features.
-   * This may avoid complaints from some older decoders.
-   */
-  emit_byte(cinfo, 1);		/* Major version */
-  emit_byte(cinfo, 1);		/* Minor version */
-  emit_byte(cinfo, cinfo->density_unit); /* Pixel size information */
-  emit_2bytes(cinfo, (int) cinfo->X_density);
-  emit_2bytes(cinfo, (int) cinfo->Y_density);
-  emit_byte(cinfo, 0);		/* No thumbnail image */
-  emit_byte(cinfo, 0);
-}
-
-
-LOCAL void
-emit_adobe_app14 (j_compress_ptr cinfo)
-/* Emit an Adobe APP14 marker */
-{
-  /*
-   * Length of APP14 block	(2 bytes)
-   * Block ID			(5 bytes - ASCII "Adobe")
-   * Version Number		(2 bytes - currently 100)
-   * Flags0			(2 bytes - currently 0)
-   * Flags1			(2 bytes - currently 0)
-   * Color transform		(1 byte)
-   *
-   * Although Adobe TN 5116 mentions Version = 101, all the Adobe files
-   * now in circulation seem to use Version = 100, so that's what we write.
-   *
-   * We write the color transform byte as 1 if the JPEG color space is
-   * YCbCr, 2 if it's YCCK, 0 otherwise.  Adobe's definition has to do with
-   * whether the encoder performed a transformation, which is pretty useless.
-   */
-  
-  emit_marker(cinfo, M_APP14);
-  
-  emit_2bytes(cinfo, 2 + 5 + 2 + 2 + 2 + 1); /* length */
-
-  emit_byte(cinfo, 0x41);	/* Identifier: ASCII "Adobe" */
-  emit_byte(cinfo, 0x64);
-  emit_byte(cinfo, 0x6F);
-  emit_byte(cinfo, 0x62);
-  emit_byte(cinfo, 0x65);
-  emit_2bytes(cinfo, 100);	/* Version */
-  emit_2bytes(cinfo, 0);	/* Flags0 */
-  emit_2bytes(cinfo, 0);	/* Flags1 */
-  switch (cinfo->jpeg_color_space) {
-  case JCS_YCbCr:
-    emit_byte(cinfo, 1);	/* Color transform = 1 */
-    break;
-  case JCS_YCCK:
-    emit_byte(cinfo, 2);	/* Color transform = 2 */
-    break;
-  default:
-    emit_byte(cinfo, 0);	/* Color transform = 0 */
-    break;
-  }
-}
-
-
-/*
- * This routine is exported for possible use by applications.
- * The intended use is to emit COM or APPn markers after calling
- * jpeg_start_compress() and before the first jpeg_write_scanlines() call
- * (hence, after write_file_header but before write_frame_header).
- * Other uses are not guaranteed to produce desirable results.
- */
-
-METHODDEF void
-write_any_marker (j_compress_ptr cinfo, int marker,
-		  const JOCTET *dataptr, unsigned int datalen)
-/* Emit an arbitrary marker with parameters */
-{
-  if (datalen <= (unsigned int) 65533) { /* safety check */
-    emit_marker(cinfo, (JPEG_MARKER) marker);
-  
-    emit_2bytes(cinfo, (int) (datalen + 2)); /* total length */
-
-    while (datalen--) {
-      emit_byte(cinfo, *dataptr);
-      dataptr++;
-    }
-  }
-}
-
-
-/*
- * Write datastream header.
- * This consists of an SOI and optional APPn markers.
- * We recommend use of the JFIF marker, but not the Adobe marker,
- * when using YCbCr or grayscale data.  The JFIF marker should NOT
- * be used for any other JPEG colorspace.  The Adobe marker is helpful
- * to distinguish RGB, CMYK, and YCCK colorspaces.
- * Note that an application can write additional header markers after
- * jpeg_start_decompress returns.
- */
-
-METHODDEF void
-write_file_header (j_compress_ptr cinfo)
-{
-  emit_marker(cinfo, M_SOI);	/* first the SOI */
-
-  if (cinfo->write_JFIF_header)	/* next an optional JFIF APP0 */
-    emit_jfif_app0(cinfo);
-  if (cinfo->write_Adobe_marker) /* next an optional Adobe APP14 */
-    emit_adobe_app14(cinfo);
-}
-
-
-/*
- * Write frame header.
- * This consists of DQT and SOFn markers.
- * Note that we do not emit the SOF until we have emitted the DQT(s).
- * This avoids compatibility problems with incorrect implementations that
- * try to error-check the quant table numbers as soon as they see the SOF.
- */
-
-METHODDEF void
-write_frame_header (j_compress_ptr cinfo)
-{
-  int ci, prec;
-  boolean is_baseline;
-  jpeg_component_info *compptr;
-  
-  /* Emit DQT for each quantization table.
-   * Note that emit_dqt() suppresses any duplicate tables.
-   */
-  prec = 0;
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    prec += emit_dqt(cinfo, compptr->quant_tbl_no);
-  }
-  /* now prec is nonzero iff there are any 16-bit quant tables. */
-
-  /* Check for a non-baseline specification.
-   * Note we assume that Huffman table numbers won't be changed later.
-   */
-  is_baseline = TRUE;
-  if (cinfo->arith_code || (cinfo->data_precision != 8))
-    is_baseline = FALSE;
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    if (compptr->dc_tbl_no > 1 || compptr->ac_tbl_no > 1)
-      is_baseline = FALSE;
-  }
-  if (prec && is_baseline) {
-    is_baseline = FALSE;
-    /* If it's baseline except for quantizer size, warn the user */
-    TRACEMS(cinfo, 0, JTRC_16BIT_TABLES);
-  }
-
-  /* Emit the proper SOF marker */
-  if (cinfo->arith_code)
-    emit_sof(cinfo, M_SOF9);	/* SOF code for arithmetic coding */
-  else if (is_baseline)
-    emit_sof(cinfo, M_SOF0);	/* SOF code for baseline implementation */
-  else
-    emit_sof(cinfo, M_SOF1);	/* SOF code for non-baseline Huffman file */
-}
-
-
-/*
- * Write scan header.
- * This consists of DHT or DAC markers, optional DRI, and SOS.
- * Compressed data will be written following the SOS.
- */
-
-METHODDEF void
-write_scan_header (j_compress_ptr cinfo)
-{
-  int i;
-  jpeg_component_info *compptr;
-
-  if (cinfo->arith_code) {
-    /* Emit arith conditioning info.  We may have some duplication
-     * if the file has multiple scans, but it's so small it's hardly
-     * worth worrying about.
-     */
-    emit_dac(cinfo);
-  } else {
-    /* Emit Huffman tables.
-     * Note that emit_dht() suppresses any duplicate tables.
-     */
-    for (i = 0; i < cinfo->comps_in_scan; i++) {
-      compptr = cinfo->cur_comp_info[i];
-      emit_dht(cinfo, compptr->dc_tbl_no, FALSE);
-      emit_dht(cinfo, compptr->ac_tbl_no, TRUE);
-    }
-  }
-
-  /* Emit DRI if required --- note that DRI value could change for each scan.
-   * If it doesn't, a tiny amount of space is wasted in multiple-scan files.
-   * We assume DRI will never be nonzero for one scan and zero for a later one.
-   */
-  if (cinfo->restart_interval)
-    emit_dri(cinfo);
-
-  emit_sos(cinfo);
-}
-
-
-/*
- * Write datastream trailer.
- */
-
-METHODDEF void
-write_file_trailer (j_compress_ptr cinfo)
-{
-  emit_marker(cinfo, M_EOI);
-}
-
-
-/*
- * Write an abbreviated table-specification datastream.
- * This consists of SOI, DQT and DHT tables, and EOI.
- * Any table that is defined and not marked sent_table = TRUE will be
- * emitted.  Note that all tables will be marked sent_table = TRUE at exit.
- */
-
-METHODDEF void
-write_tables_only (j_compress_ptr cinfo)
-{
-  int i;
-
-  emit_marker(cinfo, M_SOI);
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++) {
-    if (cinfo->quant_tbl_ptrs[i] != NULL)
-      (void) emit_dqt(cinfo, i);
-  }
-
-  if (! cinfo->arith_code) {
-    for (i = 0; i < NUM_HUFF_TBLS; i++) {
-      if (cinfo->dc_huff_tbl_ptrs[i] != NULL)
-	emit_dht(cinfo, i, FALSE);
-      if (cinfo->ac_huff_tbl_ptrs[i] != NULL)
-	emit_dht(cinfo, i, TRUE);
-    }
-  }
-
-  emit_marker(cinfo, M_EOI);
-}
-
-
-/*
- * Initialize the marker writer module.
- */
-
-GLOBAL void
-jinit_marker_writer (j_compress_ptr cinfo)
-{
-  /* Create the subobject */
-  cinfo->marker = (struct jpeg_marker_writer *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(struct jpeg_marker_writer));
-  /* Initialize method pointers */
-  cinfo->marker->write_any_marker = write_any_marker;
-  cinfo->marker->write_file_header = write_file_header;
-  cinfo->marker->write_frame_header = write_frame_header;
-  cinfo->marker->write_scan_header = write_scan_header;
-  cinfo->marker->write_file_trailer = write_file_trailer;
-  cinfo->marker->write_tables_only = write_tables_only;
-}
diff --git a/jpeg/jcmaster.c b/jpeg/jcmaster.c
deleted file mode 100644
index d9b5c032a61a980857d6637dae2dd8414e67a1ba..0000000000000000000000000000000000000000
--- a/jpeg/jcmaster.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * jcmaster.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains master control logic for the JPEG compressor.
- * These routines are concerned with selecting the modules to be executed
- * and with determining the number of passes and the work to be done in each
- * pass.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private state */
-
-typedef struct {
-  struct jpeg_comp_master pub;	/* public fields */
-
-  int pass_number;		/* eventually need more complex state... */
-} my_comp_master;
-
-typedef my_comp_master * my_master_ptr;
-
-
-/*
- * Support routines that do various essential calculations.
- */
-
-LOCAL void
-initial_setup (j_compress_ptr cinfo)
-/* Do computations that are needed before master selection phase */
-{
-  int ci;
-  jpeg_component_info *compptr;
-  long samplesperrow;
-  JDIMENSION jd_samplesperrow;
-
-  /* Sanity check on image dimensions */
-  if (cinfo->image_height <= 0 || cinfo->image_width <= 0
-      || cinfo->num_components <= 0 || cinfo->input_components <= 0)
-    ERREXIT(cinfo, JERR_EMPTY_IMAGE);
-
-  /* Make sure image isn't bigger than I can handle */
-  if ((long) cinfo->image_height > (long) JPEG_MAX_DIMENSION ||
-      (long) cinfo->image_width > (long) JPEG_MAX_DIMENSION)
-    ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION);
-
-  /* Width of an input scanline must be representable as JDIMENSION. */
-  samplesperrow = (long) cinfo->image_width * (long) cinfo->input_components;
-  jd_samplesperrow = (JDIMENSION) samplesperrow;
-  if ((long) jd_samplesperrow != samplesperrow)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-
-  /* For now, precision must match compiled-in value... */
-  if (cinfo->data_precision != BITS_IN_JSAMPLE)
-    ERREXIT1(cinfo, JERR_BAD_PRECISION, cinfo->data_precision);
-
-  /* Check that number of components won't exceed internal array sizes */
-  if (cinfo->num_components > MAX_COMPONENTS)
-    ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	     MAX_COMPONENTS);
-
-  /* Compute maximum sampling factors; check factor validity */
-  cinfo->max_h_samp_factor = 1;
-  cinfo->max_v_samp_factor = 1;
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    if (compptr->h_samp_factor<=0 || compptr->h_samp_factor>MAX_SAMP_FACTOR ||
-	compptr->v_samp_factor<=0 || compptr->v_samp_factor>MAX_SAMP_FACTOR)
-      ERREXIT(cinfo, JERR_BAD_SAMPLING);
-    cinfo->max_h_samp_factor = MAX(cinfo->max_h_samp_factor,
-				   compptr->h_samp_factor);
-    cinfo->max_v_samp_factor = MAX(cinfo->max_v_samp_factor,
-				   compptr->v_samp_factor);
-  }
-
-  /* Compute dimensions of components */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* For compression, we never do DCT scaling. */
-    compptr->DCT_scaled_size = DCTSIZE;
-    /* Size in DCT blocks */
-    compptr->width_in_blocks = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * (long) compptr->h_samp_factor,
-		    (long) (cinfo->max_h_samp_factor * DCTSIZE));
-    compptr->height_in_blocks = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * (long) compptr->v_samp_factor,
-		    (long) (cinfo->max_v_samp_factor * DCTSIZE));
-    /* Size in samples */
-    compptr->downsampled_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * (long) compptr->h_samp_factor,
-		    (long) cinfo->max_h_samp_factor);
-    compptr->downsampled_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * (long) compptr->v_samp_factor,
-		    (long) cinfo->max_v_samp_factor);
-    /* Mark component needed (this flag isn't actually used for compression) */
-    compptr->component_needed = TRUE;
-  }
-
-  /* Compute number of fully interleaved MCU rows (number of times that
-   * main controller will call coefficient controller).
-   */
-  cinfo->total_iMCU_rows = (JDIMENSION)
-    jdiv_round_up((long) cinfo->image_height,
-		  (long) (cinfo->max_v_samp_factor*DCTSIZE));
-}
-
-
-LOCAL void
-per_scan_setup (j_compress_ptr cinfo)
-/* Do computations that are needed before processing a JPEG scan */
-/* cinfo->comps_in_scan and cinfo->cur_comp_info[] are already set */
-{
-  int ci, mcublks, tmp;
-  jpeg_component_info *compptr;
-  
-  if (cinfo->comps_in_scan == 1) {
-    
-    /* Noninterleaved (single-component) scan */
-    compptr = cinfo->cur_comp_info[0];
-    
-    /* Overall image size in MCUs */
-    cinfo->MCUs_per_row = compptr->width_in_blocks;
-    cinfo->MCU_rows_in_scan = compptr->height_in_blocks;
-    
-    /* For noninterleaved scan, always one block per MCU */
-    compptr->MCU_width = 1;
-    compptr->MCU_height = 1;
-    compptr->MCU_blocks = 1;
-    compptr->MCU_sample_width = DCTSIZE;
-    compptr->last_col_width = 1;
-    compptr->last_row_height = 1;
-    
-    /* Prepare array describing MCU composition */
-    cinfo->blocks_in_MCU = 1;
-    cinfo->MCU_membership[0] = 0;
-    
-  } else {
-    
-    /* Interleaved (multi-component) scan */
-    if (cinfo->comps_in_scan <= 0 || cinfo->comps_in_scan > MAX_COMPS_IN_SCAN)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->comps_in_scan,
-	       MAX_COMPS_IN_SCAN);
-    
-    /* Overall image size in MCUs */
-    cinfo->MCUs_per_row = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width,
-		    (long) (cinfo->max_h_samp_factor*DCTSIZE));
-    cinfo->MCU_rows_in_scan = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height,
-		    (long) (cinfo->max_v_samp_factor*DCTSIZE));
-    
-    cinfo->blocks_in_MCU = 0;
-    
-    for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-      compptr = cinfo->cur_comp_info[ci];
-      /* Sampling factors give # of blocks of component in each MCU */
-      compptr->MCU_width = compptr->h_samp_factor;
-      compptr->MCU_height = compptr->v_samp_factor;
-      compptr->MCU_blocks = compptr->MCU_width * compptr->MCU_height;
-      compptr->MCU_sample_width = compptr->MCU_width * DCTSIZE;
-      /* Figure number of non-dummy blocks in last MCU column & row */
-      tmp = (int) (compptr->width_in_blocks % compptr->MCU_width);
-      if (tmp == 0) tmp = compptr->MCU_width;
-      compptr->last_col_width = tmp;
-      tmp = (int) (compptr->height_in_blocks % compptr->MCU_height);
-      if (tmp == 0) tmp = compptr->MCU_height;
-      compptr->last_row_height = tmp;
-      /* Prepare array describing MCU composition */
-      mcublks = compptr->MCU_blocks;
-      if (cinfo->blocks_in_MCU + mcublks > MAX_BLOCKS_IN_MCU)
-	ERREXIT(cinfo, JERR_BAD_MCU_SIZE);
-      while (mcublks-- > 0) {
-	cinfo->MCU_membership[cinfo->blocks_in_MCU++] = ci;
-      }
-    }
-    
-  }
-
-  /* Convert restart specified in rows to actual MCU count. */
-  /* Note that count must fit in 16 bits, so we provide limiting. */
-  if (cinfo->restart_in_rows > 0) {
-    long nominal = (long) cinfo->restart_in_rows * (long) cinfo->MCUs_per_row;
-    cinfo->restart_interval = (unsigned int) MIN(nominal, 65535L);
-  }
-}
-
-
-/*
- * Master selection of compression modules.
- * This is done once at the start of processing an image.  We determine
- * which modules will be used and give them appropriate initialization calls.
- */
-
-LOCAL void
-master_selection (j_compress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-
-  initial_setup(cinfo);
-  master->pass_number = 0;
-
-  /* There's not a lot of smarts here right now, but it'll get more
-   * complicated when we have multiple implementations available...
-   */
-
-  /* Preprocessing */
-  if (! cinfo->raw_data_in) {
-    jinit_color_converter(cinfo);
-    jinit_downsampler(cinfo);
-    jinit_c_prep_controller(cinfo, FALSE /* never need full buffer here */);
-  }
-  /* Forward DCT */
-  jinit_forward_dct(cinfo);
-  /* Entropy encoding: either Huffman or arithmetic coding. */
-  if (cinfo->arith_code) {
-#ifdef C_ARITH_CODING_SUPPORTED
-    jinit_arith_encoder(cinfo);
-#else
-    ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
-#endif
-  } else
-    jinit_huff_encoder(cinfo);
-
-  /* For now, a full buffer is needed only for Huffman optimization. */
-  jinit_c_coef_controller(cinfo, cinfo->optimize_coding);
-  jinit_c_main_controller(cinfo, FALSE /* never need full buffer here */);
-
-  jinit_marker_writer(cinfo);
-
-  /* We can now tell the memory manager to allocate virtual arrays. */
-  (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
-
-  /* Write the datastream header (SOI) immediately.
-   * Frame and scan headers are postponed till later.
-   * This lets application insert special markers after the SOI.
-   */
-  (*cinfo->marker->write_file_header) (cinfo);
-}
-
-
-/*
- * Per-pass setup.
- * This is called at the beginning of each pass.  We determine which modules
- * will be active during this pass and give them appropriate start_pass calls.
- * We also set is_last_pass to indicate whether any more passes will be
- * required.
- */
-
-METHODDEF void
-prepare_for_pass (j_compress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-  int ci;
-  int npasses;
-
-  /* ???? JUST A QUICK CROCK FOR NOW ??? */
-
-  /* For now, handle only single interleaved output scan; */
-  /* we support two passes for Huffman optimization. */
-
-  /* Prepare for single scan containing all components */
-  if (cinfo->num_components > MAX_COMPS_IN_SCAN)
-    ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	     MAX_COMPS_IN_SCAN);
-  cinfo->comps_in_scan = cinfo->num_components;
-  for (ci = 0; ci < cinfo->num_components; ci++) {
-    cinfo->cur_comp_info[ci] = &cinfo->comp_info[ci];
-  }
-
-  per_scan_setup(cinfo);
-
-  if (! cinfo->optimize_coding) {
-    /* Standard single-pass case */
-    npasses = 1;
-    master->pub.call_pass_startup = TRUE;
-    master->pub.is_last_pass = TRUE;
-    if (! cinfo->raw_data_in) {
-      (*cinfo->cconvert->start_pass) (cinfo);
-      (*cinfo->downsample->start_pass) (cinfo);
-      (*cinfo->prep->start_pass) (cinfo, JBUF_PASS_THRU);
-    }
-    (*cinfo->fdct->start_pass) (cinfo);
-    (*cinfo->entropy->start_pass) (cinfo, FALSE);
-    (*cinfo->coef->start_pass) (cinfo, JBUF_PASS_THRU);
-    (*cinfo->main->start_pass) (cinfo, JBUF_PASS_THRU);
-  } else {
-    npasses = 2;
-    switch (master->pass_number) {
-    case 0:
-      /* Huffman optimization: run all modules, gather statistics */
-      master->pub.call_pass_startup = FALSE;
-      master->pub.is_last_pass = FALSE;
-      if (! cinfo->raw_data_in) {
-	(*cinfo->cconvert->start_pass) (cinfo);
-	(*cinfo->downsample->start_pass) (cinfo);
-	(*cinfo->prep->start_pass) (cinfo, JBUF_PASS_THRU);
-      }
-      (*cinfo->fdct->start_pass) (cinfo);
-      (*cinfo->entropy->start_pass) (cinfo, TRUE);
-      (*cinfo->coef->start_pass) (cinfo, JBUF_SAVE_AND_PASS);
-      (*cinfo->main->start_pass) (cinfo, JBUF_PASS_THRU);
-      break;
-    case 1:
-      /* Second pass: reread data from coefficient buffer */
-      master->pub.is_last_pass = TRUE;
-      (*cinfo->entropy->start_pass) (cinfo, FALSE);
-      (*cinfo->coef->start_pass) (cinfo, JBUF_CRANK_DEST);
-      /* We emit frame/scan headers now */
-      (*cinfo->marker->write_frame_header) (cinfo);
-      (*cinfo->marker->write_scan_header) (cinfo);
-      break;
-    }
-  }
-
-  /* Set up progress monitor's pass info if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->completed_passes = master->pass_number;
-    cinfo->progress->total_passes = npasses;
-  }
-
-  master->pass_number++;
-}
-
-
-/*
- * Special start-of-pass hook.
- * This is called by jpeg_write_scanlines if call_pass_startup is TRUE.
- * In single-pass processing, we need this hook because we don't want to
- * write frame/scan headers during jpeg_start_compress; we want to let the
- * application write COM markers etc. between jpeg_start_compress and the
- * jpeg_write_scanlines loop.
- * In multi-pass processing, this routine is not used.
- */
-
-METHODDEF void
-pass_startup (j_compress_ptr cinfo)
-{
-  cinfo->master->call_pass_startup = FALSE; /* reset flag so call only once */
-
-  (*cinfo->marker->write_frame_header) (cinfo);
-  (*cinfo->marker->write_scan_header) (cinfo);
-}
-
-
-/*
- * Finish up at end of pass.
- */
-
-METHODDEF void
-finish_pass_master (j_compress_ptr cinfo)
-{
-  /* More complex logic later ??? */
-
-  /* The entropy coder needs an end-of-pass call, either to analyze
-   * statistics or to flush its output buffer.
-   */
-  (*cinfo->entropy->finish_pass) (cinfo);
-}
-
-
-/*
- * Initialize master compression control.
- * This creates my own subrecord and also performs the master selection phase,
- * which causes other modules to create their subrecords.
- */
-
-GLOBAL void
-jinit_master_compress (j_compress_ptr cinfo)
-{
-  my_master_ptr master;
-
-  master = (my_master_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(my_comp_master));
-  cinfo->master = (struct jpeg_comp_master *) master;
-  master->pub.prepare_for_pass = prepare_for_pass;
-  master->pub.pass_startup = pass_startup;
-  master->pub.finish_pass = finish_pass_master;
-
-  master_selection(cinfo);
-}
diff --git a/jpeg/jcomapi.c b/jpeg/jcomapi.c
deleted file mode 100644
index c10903f0753fb11a64d9c05fd5436f3985f66939..0000000000000000000000000000000000000000
--- a/jpeg/jcomapi.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * jcomapi.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface routines that are used for both
- * compression and decompression.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Abort processing of a JPEG compression or decompression operation,
- * but don't destroy the object itself.
- *
- * For this, we merely clean up all the nonpermanent memory pools.
- * Note that temp files (virtual arrays) are not allowed to belong to
- * the permanent pool, so we will be able to close all temp files here.
- * Closing a data source or destination, if necessary, is the application's
- * responsibility.
- */
-
-GLOBAL void
-jpeg_abort (j_common_ptr cinfo)
-{
-  int pool;
-
-  /* Releasing pools in reverse order might help avoid fragmentation
-   * with some (brain-damaged) malloc libraries.
-   */
-  for (pool = JPOOL_NUMPOOLS-1; pool > JPOOL_PERMANENT; pool--) {
-    (*cinfo->mem->free_pool) (cinfo, pool);
-  }
-
-  /* Reset overall state for possible reuse of object */
-  cinfo->global_state = (cinfo->is_decompressor ? DSTATE_START : CSTATE_START);
-}
-
-
-/*
- * Destruction of a JPEG object.
- *
- * Everything gets deallocated except the master jpeg_compress_struct itself
- * and the error manager struct.  Both of these are supplied by the application
- * and must be freed, if necessary, by the application.  (Often they are on
- * the stack and so don't need to be freed anyway.)
- * Closing a data source or destination, if necessary, is the application's
- * responsibility.
- */
-
-GLOBAL void
-jpeg_destroy (j_common_ptr cinfo)
-{
-  /* We need only tell the memory manager to release everything. */
-  /* NB: mem pointer is NULL if memory mgr failed to initialize. */
-  if (cinfo->mem != NULL)
-    (*cinfo->mem->self_destruct) (cinfo);
-  cinfo->mem = NULL;		/* be safe if jpeg_destroy is called twice */
-  cinfo->global_state = 0;	/* mark it destroyed */
-}
-
-
-/*
- * Convenience routines for allocating quantization and Huffman tables.
- * (Would jutils.c be a more reasonable place to put these?)
- */
-
-GLOBAL JQUANT_TBL *
-jpeg_alloc_quant_table (j_common_ptr cinfo)
-{
-  JQUANT_TBL *tbl;
-
-  tbl = (JQUANT_TBL *)
-    (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JQUANT_TBL));
-  tbl->sent_table = FALSE;	/* make sure this is false in any new table */
-  return tbl;
-}
-
-
-GLOBAL JHUFF_TBL *
-jpeg_alloc_huff_table (j_common_ptr cinfo)
-{
-  JHUFF_TBL *tbl;
-
-  tbl = (JHUFF_TBL *)
-    (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JHUFF_TBL));
-  tbl->sent_table = FALSE;	/* make sure this is false in any new table */
-  return tbl;
-}
diff --git a/jpeg/jconfig.h b/jpeg/jconfig.h
deleted file mode 100644
index 57de4db48bafa8ef69fb927b1817fe51903d012a..0000000000000000000000000000000000000000
--- a/jpeg/jconfig.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* jconfig.h.  Generated automatically by configure.  */
-/* jconfig.auto --- source file edited by configure script */
-/* see jconfig.doc for explanations */
-
-#define HAVE_PROTOTYPES 
-#define HAVE_UNSIGNED_CHAR 
-#define HAVE_UNSIGNED_SHORT 
-#undef void
-#undef const
-#undef CHAR_IS_UNSIGNED
-#define HAVE_STDDEF_H 
-#define HAVE_STDLIB_H 
-#undef NEED_BSD_STRINGS
-#undef NEED_SYS_TYPES_H
-#undef NEED_FAR_POINTERS
-#undef NEED_SHORT_EXTERNAL_NAMES
-/* Define this if you get warnings about undefined structures. */
-#undef INCOMPLETE_TYPES_BROKEN
-
-#ifdef JPEG_INTERNALS
-
-#undef RIGHT_SHIFT_IS_UNSIGNED
-#define INLINE inline
-/* These are for configuring the JPEG memory manager. */
-#undef DEFAULT_MAX_MEM
-#undef NO_MKTEMP
-
-#endif /* JPEG_INTERNALS */
-
-#ifdef JPEG_CJPEG_DJPEG
-
-#define BMP_SUPPORTED		/* BMP image file format */
-#define GIF_SUPPORTED		/* GIF image file format */
-#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
-#undef RLE_SUPPORTED		/* Utah RLE image file format */
-#define TARGA_SUPPORTED		/* Targa image file format */
-
-#undef TWO_FILE_COMMANDLINE
-#undef NEED_SIGNAL_CATCHER
-#undef DONT_USE_B_MODE
-
-/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
-#undef PROGRESS_REPORT
-
-#endif /* JPEG_CJPEG_DJPEG */
diff --git a/jpeg/jcparam.c b/jpeg/jcparam.c
deleted file mode 100644
index 234aa56fd54c2a386cac9fc654986ff7d6656ce8..0000000000000000000000000000000000000000
--- a/jpeg/jcparam.c
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * jcparam.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains optional default-setting code for the JPEG compressor.
- * Applications do not have to use this file, but those that don't use it
- * must know a lot more about the innards of the JPEG code.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Quantization table setup routines
- */
-
-GLOBAL void
-jpeg_add_quant_table (j_compress_ptr cinfo, int which_tbl,
-		      const unsigned int *basic_table,
-		      int scale_factor, boolean force_baseline)
-/* Define a quantization table equal to the basic_table times
- * a scale factor (given as a percentage).
- * If force_baseline is TRUE, the computed quantization table entries
- * are limited to 1..255 for JPEG baseline compatibility.
- */
-{
-  JQUANT_TBL ** qtblptr = & cinfo->quant_tbl_ptrs[which_tbl];
-  int i;
-  long temp;
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  if (*qtblptr == NULL)
-    *qtblptr = jpeg_alloc_quant_table((j_common_ptr) cinfo);
-
-  for (i = 0; i < DCTSIZE2; i++) {
-    temp = ((long) basic_table[i] * scale_factor + 50L) / 100L;
-    /* limit the values to the valid range */
-    if (temp <= 0L) temp = 1L;
-    if (temp > 32767L) temp = 32767L; /* max quantizer needed for 12 bits */
-    if (force_baseline && temp > 255L)
-      temp = 255L;		/* limit to baseline range if requested */
-    (*qtblptr)->quantval[i] = (UINT16) temp;
-  }
-
-  /* Initialize sent_table FALSE so table will be written to JPEG file. */
-  (*qtblptr)->sent_table = FALSE;
-}
-
-
-GLOBAL void
-jpeg_set_linear_quality (j_compress_ptr cinfo, int scale_factor,
-			 boolean force_baseline)
-/* Set or change the 'quality' (quantization) setting, using default tables
- * and a straight percentage-scaling quality scale.  In most cases it's better
- * to use jpeg_set_quality (below); this entry point is provided for
- * applications that insist on a linear percentage scaling.
- */
-{
-  /* This is the sample quantization table given in the JPEG spec section K.1,
-   * but expressed in zigzag order (as are all of our quant. tables).
-   * The spec says that the values given produce "good" quality, and
-   * when divided by 2, "very good" quality.
-   */
-  static const unsigned int std_luminance_quant_tbl[DCTSIZE2] = {
-    16,  11,  12,  14,  12,  10,  16,  14,
-    13,  14,  18,  17,  16,  19,  24,  40,
-    26,  24,  22,  22,  24,  49,  35,  37,
-    29,  40,  58,  51,  61,  60,  57,  51,
-    56,  55,  64,  72,  92,  78,  64,  68,
-    87,  69,  55,  56,  80, 109,  81,  87,
-    95,  98, 103, 104, 103,  62,  77, 113,
-    121, 112, 100, 120,  92, 101, 103,  99
-    };
-  static const unsigned int std_chrominance_quant_tbl[DCTSIZE2] = {
-    17,  18,  18,  24,  21,  24,  47,  26,
-    26,  47,  99,  66,  56,  66,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99
-    };
-
-  /* Set up two quantization tables using the specified scaling */
-  jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
-		       scale_factor, force_baseline);
-  jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
-		       scale_factor, force_baseline);
-}
-
-
-GLOBAL int
-jpeg_quality_scaling (int quality)
-/* Convert a user-specified quality rating to a percentage scaling factor
- * for an underlying quantization table, using our recommended scaling curve.
- * The input 'quality' factor should be 0 (terrible) to 100 (very good).
- */
-{
-  /* Safety limit on quality factor.  Convert 0 to 1 to avoid zero divide. */
-  if (quality <= 0) quality = 1;
-  if (quality > 100) quality = 100;
-
-  /* The basic table is used as-is (scaling 100) for a quality of 50.
-   * Qualities 50..100 are converted to scaling percentage 200 - 2*Q;
-   * note that at Q=100 the scaling is 0, which will cause j_add_quant_table
-   * to make all the table entries 1 (hence, no quantization loss).
-   * Qualities 1..50 are converted to scaling percentage 5000/Q.
-   */
-  if (quality < 50)
-    quality = 5000 / quality;
-  else
-    quality = 200 - quality*2;
-
-  return quality;
-}
-
-
-GLOBAL void
-jpeg_set_quality (j_compress_ptr cinfo, int quality, boolean force_baseline)
-/* Set or change the 'quality' (quantization) setting, using default tables.
- * This is the standard quality-adjusting entry point for typical user
- * interfaces; only those who want detailed control over quantization tables
- * would use the preceding three routines directly.
- */
-{
-  /* Convert user 0-100 rating to percentage scaling */
-  quality = jpeg_quality_scaling(quality);
-
-  /* Set up standard quality tables */
-  jpeg_set_linear_quality(cinfo, quality, force_baseline);
-}
-
-
-/*
- * Huffman table setup routines
- */
-
-LOCAL void
-add_huff_table (j_compress_ptr cinfo,
-		JHUFF_TBL **htblptr, const UINT8 *bits, const UINT8 *val)
-/* Define a Huffman table */
-{
-  if (*htblptr == NULL)
-    *htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-  
-  MEMCOPY((*htblptr)->bits, bits, SIZEOF((*htblptr)->bits));
-  MEMCOPY((*htblptr)->huffval, val, SIZEOF((*htblptr)->huffval));
-
-  /* Initialize sent_table FALSE so table will be written to JPEG file. */
-  (*htblptr)->sent_table = FALSE;
-}
-
-
-LOCAL void
-std_huff_tables (j_compress_ptr cinfo)
-/* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
-/* IMPORTANT: these are only valid for 8-bit data precision! */
-{
-  static const UINT8 bits_dc_luminance[17] =
-    { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
-  static const UINT8 val_dc_luminance[] =
-    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-  
-  static const UINT8 bits_dc_chrominance[17] =
-    { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
-  static const UINT8 val_dc_chrominance[] =
-    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-  
-  static const UINT8 bits_ac_luminance[17] =
-    { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
-  static const UINT8 val_ac_luminance[] =
-    { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
-      0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
-      0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
-      0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
-      0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
-      0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
-      0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
-      0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
-      0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
-      0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
-      0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
-      0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
-      0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
-      0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-      0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
-      0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
-      0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
-      0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
-      0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
-      0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
-      0xf9, 0xfa };
-  
-  static const UINT8 bits_ac_chrominance[17] =
-    { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 };
-  static const UINT8 val_ac_chrominance[] =
-    { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
-      0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
-      0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
-      0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
-      0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
-      0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
-      0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
-      0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
-      0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
-      0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
-      0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
-      0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-      0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
-      0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
-      0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
-      0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
-      0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
-      0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
-      0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
-      0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
-      0xf9, 0xfa };
-  
-  add_huff_table(cinfo, &cinfo->dc_huff_tbl_ptrs[0],
-		 bits_dc_luminance, val_dc_luminance);
-  add_huff_table(cinfo, &cinfo->ac_huff_tbl_ptrs[0],
-		 bits_ac_luminance, val_ac_luminance);
-  add_huff_table(cinfo, &cinfo->dc_huff_tbl_ptrs[1],
-		 bits_dc_chrominance, val_dc_chrominance);
-  add_huff_table(cinfo, &cinfo->ac_huff_tbl_ptrs[1],
-		 bits_ac_chrominance, val_ac_chrominance);
-}
-
-
-/*
- * Default parameter setup for compression.
- *
- * Applications that don't choose to use this routine must do their
- * own setup of all these parameters.  Alternately, you can call this
- * to establish defaults and then alter parameters selectively.  This
- * is the recommended approach since, if we add any new parameters,
- * your code will still work (they'll be set to reasonable defaults).
- */
-
-GLOBAL void
-jpeg_set_defaults (j_compress_ptr cinfo)
-{
-  int i;
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* Allocate comp_info array large enough for maximum component count.
-   * Array is made permanent in case application wants to compress
-   * multiple images at same param settings.
-   */
-  if (cinfo->comp_info == NULL)
-    cinfo->comp_info = (jpeg_component_info *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				  MAX_COMPONENTS * SIZEOF(jpeg_component_info));
-
-  /* Initialize everything not dependent on the color space */
-
-  cinfo->data_precision = BITS_IN_JSAMPLE;
-  /* Set up two quantization tables using default quality of 75 */
-  jpeg_set_quality(cinfo, 75, TRUE);
-  /* Set up two Huffman tables */
-  std_huff_tables(cinfo);
-
-  /* Initialize default arithmetic coding conditioning */
-  for (i = 0; i < NUM_ARITH_TBLS; i++) {
-    cinfo->arith_dc_L[i] = 0;
-    cinfo->arith_dc_U[i] = 1;
-    cinfo->arith_ac_K[i] = 5;
-  }
-
-  /* Expect normal source image, not raw downsampled data */
-  cinfo->raw_data_in = FALSE;
-
-  /* Use Huffman coding, not arithmetic coding, by default */
-  cinfo->arith_code = FALSE;
-
-  /* Color images are interleaved by default */
-  cinfo->interleave = TRUE;
-
-  /* By default, don't do extra passes to optimize entropy coding */
-  cinfo->optimize_coding = FALSE;
-  /* The standard Huffman tables are only valid for 8-bit data precision.
-   * If the precision is higher, force optimization on so that usable
-   * tables will be computed.  This test can be removed if default tables
-   * are supplied that are valid for the desired precision.
-   */
-  if (cinfo->data_precision > 8)
-    cinfo->optimize_coding = TRUE;
-
-  /* By default, use the simpler non-cosited sampling alignment */
-  cinfo->CCIR601_sampling = FALSE;
-
-  /* No input smoothing */
-  cinfo->smoothing_factor = 0;
-
-  /* DCT algorithm preference */
-  cinfo->dct_method = JDCT_DEFAULT;
-
-  /* No restart markers */
-  cinfo->restart_interval = 0;
-  cinfo->restart_in_rows = 0;
-
-  /* Fill in default JFIF marker parameters.  Note that whether the marker
-   * will actually be written is determined by jpeg_set_colorspace.
-   */
-  cinfo->density_unit = 0;	/* Pixel size is unknown by default */
-  cinfo->X_density = 1;		/* Pixel aspect ratio is square by default */
-  cinfo->Y_density = 1;
-
-  /* Choose JPEG colorspace based on input space, set defaults accordingly */
-
-  jpeg_default_colorspace(cinfo);
-}
-
-
-/*
- * Select an appropriate JPEG colorspace for in_color_space.
- */
-
-GLOBAL void
-jpeg_default_colorspace (j_compress_ptr cinfo)
-{
-  switch (cinfo->in_color_space) {
-  case JCS_GRAYSCALE:
-    jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);
-    break;
-  case JCS_RGB:
-    jpeg_set_colorspace(cinfo, JCS_YCbCr);
-    break;
-  case JCS_YCbCr:
-    jpeg_set_colorspace(cinfo, JCS_YCbCr);
-    break;
-  case JCS_CMYK:
-    jpeg_set_colorspace(cinfo, JCS_CMYK); /* By default, no translation */
-    break;
-  case JCS_YCCK:
-    jpeg_set_colorspace(cinfo, JCS_YCCK);
-    break;
-  case JCS_UNKNOWN:
-    jpeg_set_colorspace(cinfo, JCS_UNKNOWN);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-  }
-}
-
-
-/*
- * Set the JPEG colorspace, and choose colorspace-dependent default values.
- */
-
-GLOBAL void
-jpeg_set_colorspace (j_compress_ptr cinfo, J_COLOR_SPACE colorspace)
-{
-  jpeg_component_info * compptr;
-  int ci;
-
-#define SET_COMP(index,id,hsamp,vsamp,quant,dctbl,actbl)  \
-  (compptr = &cinfo->comp_info[index], \
-   compptr->component_index = (index), \
-   compptr->component_id = (id), \
-   compptr->h_samp_factor = (hsamp), \
-   compptr->v_samp_factor = (vsamp), \
-   compptr->quant_tbl_no = (quant), \
-   compptr->dc_tbl_no = (dctbl), \
-   compptr->ac_tbl_no = (actbl) )
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* For all colorspaces, we use Q and Huff tables 0 for luminance components,
-   * tables 1 for chrominance components.
-   */
-
-  cinfo->jpeg_color_space = colorspace;
-
-  cinfo->write_JFIF_header = FALSE; /* No marker for non-JFIF colorspaces */
-  cinfo->write_Adobe_marker = FALSE; /* write no Adobe marker by default */
-
-  switch (colorspace) {
-  case JCS_GRAYSCALE:
-    cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */
-    cinfo->num_components = 1;
-    /* JFIF specifies component ID 1 */
-    SET_COMP(0, 1, 1,1, 0, 0,0);
-    break;
-  case JCS_RGB:
-    cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag RGB */
-    cinfo->num_components = 3;
-    SET_COMP(0, 'R', 1,1, 0, 0,0);
-    SET_COMP(1, 'G', 1,1, 0, 0,0);
-    SET_COMP(2, 'B', 1,1, 0, 0,0);
-    break;
-  case JCS_YCbCr:
-    cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */
-    cinfo->num_components = 3;
-    /* JFIF specifies component IDs 1,2,3 */
-    /* We default to 2x2 subsamples of chrominance */
-    SET_COMP(0, 1, 2,2, 0, 0,0);
-    SET_COMP(1, 2, 1,1, 1, 1,1);
-    SET_COMP(2, 3, 1,1, 1, 1,1);
-    break;
-  case JCS_CMYK:
-    cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag CMYK */
-    cinfo->num_components = 4;
-    SET_COMP(0, 'C', 1,1, 0, 0,0);
-    SET_COMP(1, 'M', 1,1, 0, 0,0);
-    SET_COMP(2, 'Y', 1,1, 0, 0,0);
-    SET_COMP(3, 'K', 1,1, 0, 0,0);
-    break;
-  case JCS_YCCK:
-    cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag YCCK */
-    cinfo->num_components = 4;
-    SET_COMP(0, 1, 2,2, 0, 0,0);
-    SET_COMP(1, 2, 1,1, 1, 1,1);
-    SET_COMP(2, 3, 1,1, 1, 1,1);
-    SET_COMP(3, 4, 2,2, 0, 0,0);
-    break;
-  case JCS_UNKNOWN:
-    cinfo->num_components = cinfo->input_components;
-    if (cinfo->num_components < 1 || cinfo->num_components > MAX_COMPONENTS)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	       MAX_COMPONENTS);
-    for (ci = 0; ci < cinfo->num_components; ci++) {
-      SET_COMP(ci, ci, 1,1, 0, 0,0);
-    }
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-  }
-}
diff --git a/jpeg/jcprepct.c b/jpeg/jcprepct.c
deleted file mode 100644
index 7e6094623eaf1ae5e44d21383310140746d11314..0000000000000000000000000000000000000000
--- a/jpeg/jcprepct.c
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * jcprepct.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the compression preprocessing controller.
- * This controller manages the color conversion, downsampling,
- * and edge expansion steps.
- *
- * Most of the complexity here is associated with buffering input rows
- * as required by the downsampler.  See the comments at the head of
- * jcsample.c for the downsampler's needs.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* At present, jcsample.c can request context rows only for smoothing.
- * In the future, we might also need context rows for CCIR601 sampling
- * or other more-complex downsampling procedures.  The code to support
- * context rows should be compiled only if needed.
- */
-#ifdef INPUT_SMOOTHING_SUPPORTED
-#define CONTEXT_ROWS_SUPPORTED
-#endif
-
-
-/*
- * For the simple (no-context-row) case, we just need to buffer one
- * row group's worth of pixels for the downsampling step.  At the bottom of
- * the image, we pad to a full row group by replicating the last pixel row.
- * The downsampler's last output row is then replicated if needed to pad
- * out to a full iMCU row.
- *
- * When providing context rows, we must buffer three row groups' worth of
- * pixels.  Three row groups are physically allocated, but the row pointer
- * arrays are made five row groups high, with the extra pointers above and
- * below "wrapping around" to point to the last and first real row groups.
- * This allows the downsampler to access the proper context rows.
- * At the top and bottom of the image, we create dummy context rows by
- * copying the first or last real pixel row.  This copying could be avoided
- * by pointer hacking as is done in jdmainct.c, but it doesn't seem worth the
- * trouble on the compression side.
- */
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_prep_controller pub; /* public fields */
-
-  /* Downsampling input buffer.  This buffer holds color-converted data
-   * until we have enough to do a downsample step.
-   */
-  JSAMPARRAY color_buf[MAX_COMPONENTS];
-
-  JDIMENSION rows_to_go;	/* counts rows remaining in source image */
-  int next_buf_row;		/* index of next row to store in color_buf */
-
-#ifdef CONTEXT_ROWS_SUPPORTED	/* only needed for context case */
-  int this_row_group;		/* starting row index of group to process */
-  int next_buf_stop;		/* downsample when we reach this index */
-#endif
-} my_prep_controller;
-
-typedef my_prep_controller * my_prep_ptr;
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF void
-start_pass_prep (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-
-  if (pass_mode != JBUF_PASS_THRU)
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-
-  /* Initialize total-height counter for detecting bottom of image */
-  prep->rows_to_go = cinfo->image_height;
-  /* Mark the conversion buffer empty */
-  prep->next_buf_row = 0;
-#ifdef CONTEXT_ROWS_SUPPORTED
-  /* Preset additional state variables for context mode.
-   * These aren't used in non-context mode, so we needn't test which mode.
-   */
-  prep->this_row_group = 0;
-  /* Set next_buf_stop to stop after two row groups have been read in. */
-  prep->next_buf_stop = 2 * cinfo->max_v_samp_factor;
-#endif
-}
-
-
-/*
- * Expand an image vertically from height input_rows to height output_rows,
- * by duplicating the bottom row.
- */
-
-LOCAL void
-expand_bottom_edge (JSAMPARRAY image_data, JDIMENSION num_cols,
-		    int input_rows, int output_rows)
-{
-  register int row;
-
-  for (row = input_rows; row < output_rows; row++) {
-    jcopy_sample_rows(image_data, input_rows-1, image_data, row,
-		      1, num_cols);
-  }
-}
-
-
-/*
- * Process some data in the simple no-context case.
- *
- * Preprocessor output data is counted in "row groups".  A row group
- * is defined to be v_samp_factor sample rows of each component.
- * Downsampling will produce this much data from each max_v_samp_factor
- * input rows.
- */
-
-METHODDEF void
-pre_process_data (j_compress_ptr cinfo,
-		  JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-		  JDIMENSION in_rows_avail,
-		  JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
-		  JDIMENSION out_row_groups_avail)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-  int numrows, ci;
-  JDIMENSION inrows;
-  jpeg_component_info * compptr;
-
-  while (*in_row_ctr < in_rows_avail &&
-	 *out_row_group_ctr < out_row_groups_avail) {
-    /* Do color conversion to fill the conversion buffer. */
-    inrows = in_rows_avail - *in_row_ctr;
-    numrows = cinfo->max_v_samp_factor - prep->next_buf_row;
-    numrows = (int) MIN((JDIMENSION) numrows, inrows);
-    (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
-				       prep->color_buf,
-				       (JDIMENSION) prep->next_buf_row,
-				       numrows);
-    *in_row_ctr += numrows;
-    prep->next_buf_row += numrows;
-    prep->rows_to_go -= numrows;
-    /* If at bottom of image, pad to fill the conversion buffer. */
-    if (prep->rows_to_go == 0 &&
-	prep->next_buf_row < cinfo->max_v_samp_factor) {
-      for (ci = 0; ci < cinfo->num_components; ci++) {
-	expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
-			   prep->next_buf_row, cinfo->max_v_samp_factor);
-      }
-      prep->next_buf_row = cinfo->max_v_samp_factor;
-    }
-    /* If we've filled the conversion buffer, empty it. */
-    if (prep->next_buf_row == cinfo->max_v_samp_factor) {
-      (*cinfo->downsample->downsample) (cinfo,
-					prep->color_buf, (JDIMENSION) 0,
-					output_buf, *out_row_group_ctr);
-      prep->next_buf_row = 0;
-      (*out_row_group_ctr)++;
-    }
-    /* If at bottom of image, pad the output to a full iMCU height.
-     * Note we assume the caller is providing a one-iMCU-height output buffer!
-     */
-    if (prep->rows_to_go == 0 &&
-	*out_row_group_ctr < out_row_groups_avail) {
-      for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	   ci++, compptr++) {
-	expand_bottom_edge(output_buf[ci],
-			   compptr->width_in_blocks * DCTSIZE,
-			   (int) (*out_row_group_ctr * compptr->v_samp_factor),
-			   (int) (out_row_groups_avail * compptr->v_samp_factor));
-      }
-      *out_row_group_ctr = out_row_groups_avail;
-      break;			/* can exit outer loop without test */
-    }
-  }
-}
-
-
-#ifdef CONTEXT_ROWS_SUPPORTED
-
-/*
- * Process some data in the context case.
- */
-
-METHODDEF void
-pre_process_context (j_compress_ptr cinfo,
-		     JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-		     JDIMENSION in_rows_avail,
-		     JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
-		     JDIMENSION out_row_groups_avail)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-  int numrows, ci;
-  int buf_height = cinfo->max_v_samp_factor * 3;
-  JDIMENSION inrows;
-  jpeg_component_info * compptr;
-
-  while (*out_row_group_ctr < out_row_groups_avail) {
-    if (*in_row_ctr < in_rows_avail) {
-      /* Do color conversion to fill the conversion buffer. */
-      inrows = in_rows_avail - *in_row_ctr;
-      numrows = prep->next_buf_stop - prep->next_buf_row;
-      numrows = (int) MIN((JDIMENSION) numrows, inrows);
-      (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
-					 prep->color_buf,
-					 (JDIMENSION) prep->next_buf_row,
-					 numrows);
-      /* Pad at top of image, if first time through */
-      if (prep->rows_to_go == cinfo->image_height) {
-	for (ci = 0; ci < cinfo->num_components; ci++) {
-	  int row;
-	  for (row = 1; row <= cinfo->max_v_samp_factor; row++) {
-	    jcopy_sample_rows(prep->color_buf[ci], 0,
-			      prep->color_buf[ci], -row,
-			      1, cinfo->image_width);
-	  }
-	}
-      }
-      *in_row_ctr += numrows;
-      prep->next_buf_row += numrows;
-      prep->rows_to_go -= numrows;
-    } else {
-      /* Return for more data, unless we are at the bottom of the image. */
-      if (prep->rows_to_go != 0)
-	break;
-    }
-    /* If at bottom of image, pad to fill the conversion buffer. */
-    if (prep->rows_to_go == 0 &&
-	prep->next_buf_row < prep->next_buf_stop) {
-      for (ci = 0; ci < cinfo->num_components; ci++) {
-	expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
-			   prep->next_buf_row, prep->next_buf_stop);
-      }
-      prep->next_buf_row = prep->next_buf_stop;
-    }
-    /* If we've gotten enough data, downsample a row group. */
-    if (prep->next_buf_row == prep->next_buf_stop) {
-      (*cinfo->downsample->downsample) (cinfo,
-					prep->color_buf,
-					(JDIMENSION) prep->this_row_group,
-					output_buf, *out_row_group_ctr);
-      (*out_row_group_ctr)++;
-      /* Advance pointers with wraparound as necessary. */
-      prep->this_row_group += cinfo->max_v_samp_factor;
-      if (prep->this_row_group >= buf_height)
-	prep->this_row_group = 0;
-      if (prep->next_buf_row >= buf_height)
-	prep->next_buf_row = 0;
-      prep->next_buf_stop = prep->next_buf_row + cinfo->max_v_samp_factor;
-    }
-    /* If at bottom of image, pad the output to a full iMCU height.
-     * Note we assume the caller is providing a one-iMCU-height output buffer!
-     */
-    if (prep->rows_to_go == 0 &&
-	*out_row_group_ctr < out_row_groups_avail) {
-      for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	   ci++, compptr++) {
-	expand_bottom_edge(output_buf[ci],
-			   compptr->width_in_blocks * DCTSIZE,
-			   (int) (*out_row_group_ctr * compptr->v_samp_factor),
-			   (int) (out_row_groups_avail * compptr->v_samp_factor));
-      }
-      *out_row_group_ctr = out_row_groups_avail;
-      break;			/* can exit outer loop without test */
-    }
-  }
-}
-
-
-/*
- * Create the wrapped-around downsampling input buffer needed for context mode.
- */
-
-LOCAL void
-create_context_buffer (j_compress_ptr cinfo)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-  int rgroup_height = cinfo->max_v_samp_factor;
-  int ci, i;
-  jpeg_component_info * compptr;
-  JSAMPARRAY true_buffer, fake_buffer;
-
-  /* Grab enough space for fake row pointers for all the components;
-   * we need five row groups' worth of pointers for each component.
-   */
-  fake_buffer = (JSAMPARRAY)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(cinfo->num_components * 5 * rgroup_height) *
-				SIZEOF(JSAMPROW));
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Allocate the actual buffer space (3 row groups) for this component.
-     * We make the buffer wide enough to allow the downsampler to edge-expand
-     * horizontally within the buffer, if it so chooses.
-     */
-    true_buffer = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
-		      cinfo->max_h_samp_factor) / compptr->h_samp_factor),
-       (JDIMENSION) (3 * rgroup_height));
-    /* Copy true buffer row pointers into the middle of the fake row array */
-    MEMCOPY(fake_buffer + rgroup_height, true_buffer,
-	    3 * rgroup_height * SIZEOF(JSAMPROW));
-    /* Fill in the above and below wraparound pointers */
-    for (i = 0; i < rgroup_height; i++) {
-      fake_buffer[i] = true_buffer[2 * rgroup_height + i];
-      fake_buffer[4 * rgroup_height + i] = true_buffer[i];
-    }
-    prep->color_buf[ci] = fake_buffer + rgroup_height;
-    fake_buffer += 5 * rgroup_height; /* point to space for next component */
-  }
-}
-
-#endif /* CONTEXT_ROWS_SUPPORTED */
-
-
-/*
- * Initialize preprocessing controller.
- */
-
-GLOBAL void
-jinit_c_prep_controller (j_compress_ptr cinfo, boolean need_full_buffer)
-{
-  my_prep_ptr prep;
-  int ci;
-  jpeg_component_info * compptr;
-
-  if (need_full_buffer)		/* safety check */
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-
-  prep = (my_prep_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_prep_controller));
-  cinfo->prep = (struct jpeg_c_prep_controller *) prep;
-  prep->pub.start_pass = start_pass_prep;
-
-  /* Allocate the color conversion buffer.
-   * We make the buffer wide enough to allow the downsampler to edge-expand
-   * horizontally within the buffer, if it so chooses.
-   */
-  if (cinfo->downsample->need_context_rows) {
-    /* Set up to provide context rows */
-#ifdef CONTEXT_ROWS_SUPPORTED
-    prep->pub.pre_process_data = pre_process_context;
-    create_context_buffer(cinfo);
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    /* No context, just make it tall enough for one row group */
-    prep->pub.pre_process_data = pre_process_data;
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      prep->color_buf[ci] = (*cinfo->mem->alloc_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
-			cinfo->max_h_samp_factor) / compptr->h_samp_factor),
-	 (JDIMENSION) cinfo->max_v_samp_factor);
-    }
-  }
-}
diff --git a/jpeg/jcsample.c b/jpeg/jcsample.c
deleted file mode 100644
index bf0fb46bbfee155b5b7cfbbb66c17bd09d66ab94..0000000000000000000000000000000000000000
--- a/jpeg/jcsample.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * jcsample.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains downsampling routines.
- *
- * Downsampling input data is counted in "row groups".  A row group
- * is defined to be max_v_samp_factor pixel rows of each component,
- * from which the downsampler produces v_samp_factor sample rows.
- * A single row group is processed in each call to the downsampler module.
- *
- * The downsampler is responsible for edge-expansion of its output data
- * to fill an integral number of DCT blocks horizontally.  The source buffer
- * may be modified if it is helpful for this purpose (the source buffer is
- * allocated wide enough to correspond to the desired output width).
- * The caller (the prep controller) is responsible for vertical padding.
- *
- * The downsampler may request "context rows" by setting need_context_rows
- * during startup.  In this case, the input arrays will contain at least
- * one row group's worth of pixels above and below the passed-in data;
- * the caller will create dummy rows at image top and bottom by replicating
- * the first or last real pixel row.
- *
- * An excellent reference for image resampling is
- *   Digital Image Warping, George Wolberg, 1990.
- *   Pub. by IEEE Computer Society Press, Los Alamitos, CA. ISBN 0-8186-8944-7.
- *
- * The downsampling algorithm used here is a simple average of the source
- * pixels covered by the output pixel.  The hi-falutin sampling literature
- * refers to this as a "box filter".  In general the characteristics of a box
- * filter are not very good, but for the specific cases we normally use (1:1
- * and 2:1 ratios) the box is equivalent to a "triangle filter" which is not
- * nearly so bad.  If you intend to use other sampling ratios, you'd be well
- * advised to improve this code.
- *
- * A simple input-smoothing capability is provided.  This is mainly intended
- * for cleaning up color-dithered GIF input files (if you find it inadequate,
- * we suggest using an external filtering program such as pnmconvol).  When
- * enabled, each input pixel P is replaced by a weighted sum of itself and its
- * eight neighbors.  P's weight is 1-8*SF and each neighbor's weight is SF,
- * where SF = (smoothing_factor / 1024).
- * Currently, smoothing is only supported for 2h2v sampling factors.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Pointer to routine to downsample a single component */
-typedef JMETHOD(void, downsample1_ptr,
-		(j_compress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY output_data));
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_downsampler pub;	/* public fields */
-
-  /* Downsampling method pointers, one per component */
-  downsample1_ptr methods[MAX_COMPONENTS];
-} my_downsampler;
-
-typedef my_downsampler * my_downsample_ptr;
-
-
-/*
- * Initialize for a downsampling pass.
- */
-
-METHODDEF void
-start_pass_downsample (j_compress_ptr cinfo)
-{
-  /* no work for now */
-}
-
-
-/*
- * Expand a component horizontally from width input_cols to width output_cols,
- * by duplicating the rightmost samples.
- */
-
-LOCAL void
-expand_right_edge (JSAMPARRAY image_data, int num_rows,
-		   JDIMENSION input_cols, JDIMENSION output_cols)
-{
-  register JSAMPROW ptr;
-  register JSAMPLE pixval;
-  register int count;
-  int row;
-  int numcols = (int) (output_cols - input_cols);
-
-  if (numcols > 0) {
-    for (row = 0; row < num_rows; row++) {
-      ptr = image_data[row] + input_cols;
-      pixval = ptr[-1];		/* don't need GETJSAMPLE() here */
-      for (count = numcols; count > 0; count--)
-	*ptr++ = pixval;
-    }
-  }
-}
-
-
-/*
- * Do downsampling for a whole row group (all components).
- *
- * In this version we simply downsample each component independently.
- */
-
-METHODDEF void
-sep_downsample (j_compress_ptr cinfo,
-		JSAMPIMAGE input_buf, JDIMENSION in_row_index,
-		JSAMPIMAGE output_buf, JDIMENSION out_row_group_index)
-{
-  my_downsample_ptr downsample = (my_downsample_ptr) cinfo->downsample;
-  int ci;
-  jpeg_component_info * compptr;
-  JSAMPARRAY in_ptr, out_ptr;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    in_ptr = input_buf[ci] + in_row_index;
-    out_ptr = output_buf[ci] + (out_row_group_index * compptr->v_samp_factor);
-    (*downsample->methods[ci]) (cinfo, compptr, in_ptr, out_ptr);
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * One row group is processed per call.
- * This version handles arbitrary integral sampling ratios, without smoothing.
- * Note that this version is not actually used for customary sampling ratios.
- */
-
-METHODDEF void
-int_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int inrow, outrow, h_expand, v_expand, numpix, numpix2, h, v;
-  JDIMENSION outcol, outcol_h;	/* outcol_h == outcol*h_expand */
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  JSAMPROW inptr, outptr;
-  INT32 outvalue;
-
-  h_expand = cinfo->max_h_samp_factor / compptr->h_samp_factor;
-  v_expand = cinfo->max_v_samp_factor / compptr->v_samp_factor;
-  numpix = h_expand * v_expand;
-  numpix2 = numpix/2;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, output_cols * h_expand);
-
-  inrow = 0;
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    for (outcol = 0, outcol_h = 0; outcol < output_cols;
-	 outcol++, outcol_h += h_expand) {
-      outvalue = 0;
-      for (v = 0; v < v_expand; v++) {
-	inptr = input_data[inrow+v] + outcol_h;
-	for (h = 0; h < h_expand; h++) {
-	  outvalue += (INT32) GETJSAMPLE(*inptr++);
-	}
-      }
-      *outptr++ = (JSAMPLE) ((outvalue + numpix2) / numpix);
-    }
-    inrow += v_expand;
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the special case of a full-size component,
- * without smoothing.
- */
-
-METHODDEF void
-fullsize_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		     JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  /* Copy the data */
-  jcopy_sample_rows(input_data, 0, output_data, 0,
-		    cinfo->max_v_samp_factor, cinfo->image_width);
-  /* Edge-expand */
-  expand_right_edge(output_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, compptr->width_in_blocks * DCTSIZE);
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the common case of 2:1 horizontal and 1:1 vertical,
- * without smoothing.
- *
- * A note about the "bias" calculations: when rounding fractional values to
- * integer, we do not want to always round 0.5 up to the next integer.
- * If we did that, we'd introduce a noticeable bias towards larger values.
- * Instead, this code is arranged so that 0.5 will be rounded up or down at
- * alternate pixel locations (a simple ordered dither pattern).
- */
-
-METHODDEF void
-h2v1_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int outrow;
-  JDIMENSION outcol;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr, outptr;
-  register int bias;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, output_cols * 2);
-
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr = input_data[outrow];
-    bias = 0;			/* bias = 0,1,0,1,... for successive samples */
-    for (outcol = 0; outcol < output_cols; outcol++) {
-      *outptr++ = (JSAMPLE) ((GETJSAMPLE(*inptr) + GETJSAMPLE(inptr[1])
-			      + bias) >> 1);
-      bias ^= 1;		/* 0=>1, 1=>0 */
-      inptr += 2;
-    }
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the standard case of 2:1 horizontal and 2:1 vertical,
- * without smoothing.
- */
-
-METHODDEF void
-h2v2_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int inrow, outrow;
-  JDIMENSION outcol;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr0, inptr1, outptr;
-  register int bias;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, output_cols * 2);
-
-  inrow = 0;
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr0 = input_data[inrow];
-    inptr1 = input_data[inrow+1];
-    bias = 1;			/* bias = 1,2,1,2,... for successive samples */
-    for (outcol = 0; outcol < output_cols; outcol++) {
-      *outptr++ = (JSAMPLE) ((GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-			      GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1])
-			      + bias) >> 2);
-      bias ^= 3;		/* 1=>2, 2=>1 */
-      inptr0 += 2; inptr1 += 2;
-    }
-    inrow += 2;
-  }
-}
-
-
-#ifdef INPUT_SMOOTHING_SUPPORTED
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the standard case of 2:1 horizontal and 2:1 vertical,
- * with smoothing.  One row of context is required.
- */
-
-METHODDEF void
-h2v2_smooth_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-			JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int inrow, outrow;
-  JDIMENSION colctr;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr0, inptr1, above_ptr, below_ptr, outptr;
-  INT32 membersum, neighsum, memberscale, neighscale;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data - 1, cinfo->max_v_samp_factor + 2,
-		    cinfo->image_width, output_cols * 2);
-
-  /* We don't bother to form the individual "smoothed" input pixel values;
-   * we can directly compute the output which is the average of the four
-   * smoothed values.  Each of the four member pixels contributes a fraction
-   * (1-8*SF) to its own smoothed image and a fraction SF to each of the three
-   * other smoothed pixels, therefore a total fraction (1-5*SF)/4 to the final
-   * output.  The four corner-adjacent neighbor pixels contribute a fraction
-   * SF to just one smoothed pixel, or SF/4 to the final output; while the
-   * eight edge-adjacent neighbors contribute SF to each of two smoothed
-   * pixels, or SF/2 overall.  In order to use integer arithmetic, these
-   * factors are scaled by 2^16 = 65536.
-   * Also recall that SF = smoothing_factor / 1024.
-   */
-
-  memberscale = 16384 - cinfo->smoothing_factor * 80; /* scaled (1-5*SF)/4 */
-  neighscale = cinfo->smoothing_factor * 16; /* scaled SF/4 */
-
-  inrow = 0;
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr0 = input_data[inrow];
-    inptr1 = input_data[inrow+1];
-    above_ptr = input_data[inrow-1];
-    below_ptr = input_data[inrow+2];
-
-    /* Special case for first column: pretend column -1 is same as column 0 */
-    membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-		GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]);
-    neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) +
-	       GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) +
-	       GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[2]) +
-	       GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[2]);
-    neighsum += neighsum;
-    neighsum += GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[2]) +
-		GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[2]);
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-    inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2;
-
-    for (colctr = output_cols - 2; colctr > 0; colctr--) {
-      /* sum of pixels directly mapped to this output element */
-      membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-		  GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]);
-      /* sum of edge-neighbor pixels */
-      neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) +
-		 GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) +
-		 GETJSAMPLE(inptr0[-1]) + GETJSAMPLE(inptr0[2]) +
-		 GETJSAMPLE(inptr1[-1]) + GETJSAMPLE(inptr1[2]);
-      /* The edge-neighbors count twice as much as corner-neighbors */
-      neighsum += neighsum;
-      /* Add in the corner-neighbors */
-      neighsum += GETJSAMPLE(above_ptr[-1]) + GETJSAMPLE(above_ptr[2]) +
-		  GETJSAMPLE(below_ptr[-1]) + GETJSAMPLE(below_ptr[2]);
-      /* form final output scaled up by 2^16 */
-      membersum = membersum * memberscale + neighsum * neighscale;
-      /* round, descale and output it */
-      *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-      inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2;
-    }
-
-    /* Special case for last column */
-    membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-		GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]);
-    neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) +
-	       GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) +
-	       GETJSAMPLE(inptr0[-1]) + GETJSAMPLE(inptr0[1]) +
-	       GETJSAMPLE(inptr1[-1]) + GETJSAMPLE(inptr1[1]);
-    neighsum += neighsum;
-    neighsum += GETJSAMPLE(above_ptr[-1]) + GETJSAMPLE(above_ptr[1]) +
-		GETJSAMPLE(below_ptr[-1]) + GETJSAMPLE(below_ptr[1]);
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr = (JSAMPLE) ((membersum + 32768) >> 16);
-
-    inrow += 2;
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the special case of a full-size component,
- * with smoothing.  One row of context is required.
- */
-
-METHODDEF void
-fullsize_smooth_downsample (j_compress_ptr cinfo, jpeg_component_info *compptr,
-			    JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int outrow;
-  JDIMENSION colctr;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr, above_ptr, below_ptr, outptr;
-  INT32 membersum, neighsum, memberscale, neighscale;
-  int colsum, lastcolsum, nextcolsum;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data - 1, cinfo->max_v_samp_factor + 2,
-		    cinfo->image_width, output_cols);
-
-  /* Each of the eight neighbor pixels contributes a fraction SF to the
-   * smoothed pixel, while the main pixel contributes (1-8*SF).  In order
-   * to use integer arithmetic, these factors are multiplied by 2^16 = 65536.
-   * Also recall that SF = smoothing_factor / 1024.
-   */
-
-  memberscale = 65536L - cinfo->smoothing_factor * 512L; /* scaled 1-8*SF */
-  neighscale = cinfo->smoothing_factor * 64; /* scaled SF */
-
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr = input_data[outrow];
-    above_ptr = input_data[outrow-1];
-    below_ptr = input_data[outrow+1];
-
-    /* Special case for first column */
-    colsum = GETJSAMPLE(*above_ptr++) + GETJSAMPLE(*below_ptr++) +
-	     GETJSAMPLE(*inptr);
-    membersum = GETJSAMPLE(*inptr++);
-    nextcolsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(*below_ptr) +
-		 GETJSAMPLE(*inptr);
-    neighsum = colsum + (colsum - membersum) + nextcolsum;
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-    lastcolsum = colsum; colsum = nextcolsum;
-
-    for (colctr = output_cols - 2; colctr > 0; colctr--) {
-      membersum = GETJSAMPLE(*inptr++);
-      above_ptr++; below_ptr++;
-      nextcolsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(*below_ptr) +
-		   GETJSAMPLE(*inptr);
-      neighsum = lastcolsum + (colsum - membersum) + nextcolsum;
-      membersum = membersum * memberscale + neighsum * neighscale;
-      *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-      lastcolsum = colsum; colsum = nextcolsum;
-    }
-
-    /* Special case for last column */
-    membersum = GETJSAMPLE(*inptr);
-    neighsum = lastcolsum + (colsum - membersum) + colsum;
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr = (JSAMPLE) ((membersum + 32768) >> 16);
-
-  }
-}
-
-#endif /* INPUT_SMOOTHING_SUPPORTED */
-
-
-/*
- * Module initialization routine for downsampling.
- * Note that we must select a routine for each component.
- */
-
-GLOBAL void
-jinit_downsampler (j_compress_ptr cinfo)
-{
-  my_downsample_ptr downsample;
-  int ci;
-  jpeg_component_info * compptr;
-  boolean smoothok = TRUE;
-
-  downsample = (my_downsample_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_downsampler));
-  cinfo->downsample = (struct jpeg_downsampler *) downsample;
-  downsample->pub.start_pass = start_pass_downsample;
-  downsample->pub.downsample = sep_downsample;
-  downsample->pub.need_context_rows = FALSE;
-
-  if (cinfo->CCIR601_sampling)
-    ERREXIT(cinfo, JERR_CCIR601_NOTIMPL);
-
-  /* Verify we can handle the sampling factors, and set up method pointers */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    if (compptr->h_samp_factor == cinfo->max_h_samp_factor &&
-	compptr->v_samp_factor == cinfo->max_v_samp_factor) {
-#ifdef INPUT_SMOOTHING_SUPPORTED
-      if (cinfo->smoothing_factor) {
-	downsample->methods[ci] = fullsize_smooth_downsample;
-	downsample->pub.need_context_rows = TRUE;
-      } else
-#endif
-	downsample->methods[ci] = fullsize_downsample;
-    } else if (compptr->h_samp_factor * 2 == cinfo->max_h_samp_factor &&
-	       compptr->v_samp_factor == cinfo->max_v_samp_factor) {
-      smoothok = FALSE;
-      downsample->methods[ci] = h2v1_downsample;
-    } else if (compptr->h_samp_factor * 2 == cinfo->max_h_samp_factor &&
-	       compptr->v_samp_factor * 2 == cinfo->max_v_samp_factor) {
-#ifdef INPUT_SMOOTHING_SUPPORTED
-      if (cinfo->smoothing_factor) {
-	downsample->methods[ci] = h2v2_smooth_downsample;
-	downsample->pub.need_context_rows = TRUE;
-      } else
-#endif
-	downsample->methods[ci] = h2v2_downsample;
-    } else if ((cinfo->max_h_samp_factor % compptr->h_samp_factor) == 0 &&
-	       (cinfo->max_v_samp_factor % compptr->v_samp_factor) == 0) {
-      smoothok = FALSE;
-      downsample->methods[ci] = int_downsample;
-    } else
-      ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
-  }
-
-#ifdef INPUT_SMOOTHING_SUPPORTED
-  if (cinfo->smoothing_factor && !smoothok)
-    TRACEMS(cinfo, 0, JTRC_SMOOTH_NOTIMPL);
-#endif
-}
diff --git a/jpeg/jdatadst.c b/jpeg/jdatadst.c
deleted file mode 100644
index 08c4dafd50a1e12a0e7a02e313a09ade5cf21b0b..0000000000000000000000000000000000000000
--- a/jpeg/jdatadst.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * jdatadst.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains compression data destination routines for the case of
- * emitting JPEG data to a file (or any stdio stream).  While these routines
- * are sufficient for most applications, some will want to use a different
- * destination manager.
- * IMPORTANT: we assume that fwrite() will correctly transcribe an array of
- * JOCTETs into 8-bit-wide elements on external storage.  If char is wider
- * than 8 bits on your machine, you may need to do some tweaking.
- */
-
-/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jerror.h"
-
-
-/* Expanded data destination object for stdio output */
-
-typedef struct {
-  struct jpeg_destination_mgr pub; /* public fields */
-
-  FILE * outfile;		/* target stream */
-  JOCTET * buffer;		/* start of buffer */
-} my_destination_mgr;
-
-typedef my_destination_mgr * my_dest_ptr;
-
-#define OUTPUT_BUF_SIZE  4096	/* choose an efficiently fwrite'able size */
-
-
-/*
- * Initialize destination --- called by jpeg_start_compress
- * before any data is actually written.
- */
-
-METHODDEF void
-init_destination (j_compress_ptr cinfo)
-{
-  my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
-
-  /* Allocate the output buffer --- it will be released when done with image */
-  dest->buffer = (JOCTET *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  OUTPUT_BUF_SIZE * SIZEOF(JOCTET));
-
-  dest->pub.next_output_byte = dest->buffer;
-  dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
-}
-
-
-/*
- * Empty the output buffer --- called whenever buffer fills up.
- *
- * In typical applications, this should write the entire output buffer
- * (ignoring the current state of next_output_byte & free_in_buffer),
- * reset the pointer & count to the start of the buffer, and return TRUE
- * indicating that the buffer has been dumped.
- *
- * In applications that need to be able to suspend compression due to output
- * overrun, a FALSE return indicates that the buffer cannot be emptied now.
- * In this situation, the compressor will return to its caller (possibly with
- * an indication that it has not accepted all the supplied scanlines).  The
- * application should resume compression after it has made more room in the
- * output buffer.  Note that there are substantial restrictions on the use of
- * suspension --- see the documentation.
- *
- * When suspending, the compressor will back up to a convenient restart point
- * (typically the start of the current MCU). next_output_byte & free_in_buffer
- * indicate where the restart point will be if the current call returns FALSE.
- * Data beyond this point will be regenerated after resumption, so do not
- * write it out when emptying the buffer externally.
- */
-
-METHODDEF boolean
-empty_output_buffer (j_compress_ptr cinfo)
-{
-  my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
-
-  if (JFWRITE(dest->outfile, dest->buffer, OUTPUT_BUF_SIZE) !=
-      (size_t) OUTPUT_BUF_SIZE)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-
-  dest->pub.next_output_byte = dest->buffer;
-  dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
-
-  return TRUE;
-}
-
-
-/*
- * Terminate destination --- called by jpeg_finish_compress
- * after all data has been written.  Usually needs to flush buffer.
- *
- * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
- * application must deal with any cleanup that should happen even
- * for error exit.
- */
-
-METHODDEF void
-term_destination (j_compress_ptr cinfo)
-{
-  my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
-  size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;
-
-  /* Write any data remaining in the buffer */
-  if (datacount > 0) {
-    if (JFWRITE(dest->outfile, dest->buffer, datacount) != datacount)
-      ERREXIT(cinfo, JERR_FILE_WRITE);
-  }
-  fflush(dest->outfile);
-  /* Make sure we wrote the output file OK */
-  if (ferror(dest->outfile))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * Prepare for output to a stdio stream.
- * The caller must have already opened the stream, and is responsible
- * for closing it after finishing compression.
- */
-
-GLOBAL void
-jpeg_stdio_dest (j_compress_ptr cinfo, FILE * outfile)
-{
-  my_dest_ptr dest;
-
-  /* The destination object is made permanent so that multiple JPEG images
-   * can be written to the same file without re-executing jpeg_stdio_dest.
-   * This makes it dangerous to use this manager and a different destination
-   * manager serially with the same JPEG object, because their private object
-   * sizes may be different.  Caveat programmer.
-   */
-  if (cinfo->dest == NULL) {	/* first time for this JPEG object? */
-    cinfo->dest = (struct jpeg_destination_mgr *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				  SIZEOF(my_destination_mgr));
-  }
-
-  dest = (my_dest_ptr) cinfo->dest;
-  dest->pub.init_destination = init_destination;
-  dest->pub.empty_output_buffer = empty_output_buffer;
-  dest->pub.term_destination = term_destination;
-  dest->outfile = outfile;
-}
diff --git a/jpeg/jdct.h b/jpeg/jdct.h
deleted file mode 100644
index 3ce790bc8f62e1f584d32fcff3b6e7098fb3c7b6..0000000000000000000000000000000000000000
--- a/jpeg/jdct.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * jdct.h
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This include file contains common declarations for the forward and
- * inverse DCT modules.  These declarations are private to the DCT managers
- * (jcdctmgr.c, jddctmgr.c) and the individual DCT algorithms.
- * The individual DCT algorithms are kept in separate files to ease 
- * machine-dependent tuning (e.g., assembly coding).
- */
-
-
-/*
- * A forward DCT routine is given a pointer to a work area of type DCTELEM[];
- * the DCT is to be performed in-place in that buffer.  Type DCTELEM is int
- * for 8-bit samples, INT32 for 12-bit samples.  (NOTE: Floating-point DCT
- * implementations use an array of type FAST_FLOAT, instead.)
- * The DCT inputs are expected to be signed (range +-CENTERJSAMPLE).
- * The DCT outputs are returned scaled up by a factor of 8; they therefore
- * have a range of +-8K for 8-bit data, +-128K for 12-bit data.  This
- * convention improves accuracy in integer implementations and saves some
- * work in floating-point ones.
- * Quantization of the output coefficients is done by jcdctmgr.c.
- */
-
-#if BITS_IN_JSAMPLE == 8
-typedef int DCTELEM;		/* 16 or 32 bits is fine */
-#else
-typedef INT32 DCTELEM;		/* must have 32 bits */
-#endif
-
-typedef JMETHOD(void, forward_DCT_method_ptr, (DCTELEM * data));
-typedef JMETHOD(void, float_DCT_method_ptr, (FAST_FLOAT * data));
-
-
-/*
- * An inverse DCT routine is given a pointer to the input JBLOCK and a pointer
- * to an output sample array.  The routine must dequantize the input data as
- * well as perform the IDCT; for dequantization, it uses the multiplier table
- * pointed to by compptr->dct_table.  The output data is to be placed into the
- * sample array starting at a specified column.  (Any row offset needed will
- * be applied to the array pointer before it is passed to the IDCT code.)
- * Note that the number of samples emitted by the IDCT routine is
- * DCT_scaled_size * DCT_scaled_size.
- */
-
-/* typedef inverse_DCT_method_ptr is declared in jpegint.h */
-
-/*
- * Each IDCT routine has its own ideas about the best dct_table element type.
- */
-
-typedef MULTIPLIER ISLOW_MULT_TYPE; /* short or int, whichever is faster */
-#if BITS_IN_JSAMPLE == 8
-typedef MULTIPLIER IFAST_MULT_TYPE; /* 16 bits is OK, use short if faster */
-#define IFAST_SCALE_BITS  2	/* fractional bits in scale factors */
-#else
-typedef INT32 IFAST_MULT_TYPE;	/* need 32 bits for scaled quantizers */
-#define IFAST_SCALE_BITS  13	/* fractional bits in scale factors */
-#endif
-typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */
-
-
-/*
- * Each IDCT routine is responsible for range-limiting its results and
- * converting them to unsigned form (0..MAXJSAMPLE).  The raw outputs could
- * be quite far out of range if the input data is corrupt, so a bulletproof
- * range-limiting step is required.  We use a mask-and-table-lookup method
- * to do the combined operations quickly.  See the comments with
- * prepare_range_limit_table (in jdmaster.c) for more info.
- */
-
-#define IDCT_range_limit(cinfo)  ((cinfo)->sample_range_limit + CENTERJSAMPLE)
-
-#define RANGE_MASK  (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_fdct_islow		jFDislow
-#define jpeg_fdct_ifast		jFDifast
-#define jpeg_fdct_float		jFDfloat
-#define jpeg_idct_islow		jRDislow
-#define jpeg_idct_ifast		jRDifast
-#define jpeg_idct_float		jRDfloat
-#define jpeg_idct_4x4		jRD4x4
-#define jpeg_idct_2x2		jRD2x2
-#define jpeg_idct_1x1		jRD1x1
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-/* Extern declarations for the forward and inverse DCT routines. */
-
-EXTERN void jpeg_fdct_islow JPP((DCTELEM * data));
-EXTERN void jpeg_fdct_ifast JPP((DCTELEM * data));
-EXTERN void jpeg_fdct_float JPP((FAST_FLOAT * data));
-
-EXTERN void jpeg_idct_islow
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN void jpeg_idct_ifast
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN void jpeg_idct_float
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN void jpeg_idct_4x4
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN void jpeg_idct_2x2
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN void jpeg_idct_1x1
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-
-
-/*
- * Macros for handling fixed-point arithmetic; these are used by many
- * but not all of the DCT/IDCT modules.
- *
- * All values are expected to be of type INT32.
- * Fractional constants are scaled left by CONST_BITS bits.
- * CONST_BITS is defined within each module using these macros,
- * and may differ from one module to the next.
- */
-
-#define ONE	((INT32) 1)
-#define CONST_SCALE (ONE << CONST_BITS)
-
-/* Convert a positive real constant to an integer scaled by CONST_SCALE.
- * Caution: some C compilers fail to reduce "FIX(constant)" at compile time,
- * thus causing a lot of useless floating-point operations at run time.
- */
-
-#define FIX(x)	((INT32) ((x) * CONST_SCALE + 0.5))
-
-/* Descale and correctly round an INT32 value that's scaled by N bits.
- * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
- * the fudge factor is correct for either sign of X.
- */
-
-#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * This macro is used only when the two inputs will actually be no more than
- * 16 bits wide, so that a 16x16->32 bit multiply can be used instead of a
- * full 32x32 multiply.  This provides a useful speedup on many machines.
- * Unfortunately there is no way to specify a 16x16->32 multiply portably
- * in C, but some C compilers will do the right thing if you provide the
- * correct combination of casts.
- */
-
-#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
-#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT16) (const)))
-#endif
-#ifdef SHORTxLCONST_32		/* known to work with Microsoft C 6.0 */
-#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT32) (const)))
-#endif
-
-#ifndef MULTIPLY16C16		/* default definition */
-#define MULTIPLY16C16(var,const)  ((var) * (const))
-#endif
-
-/* Same except both inputs are variables. */
-
-#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
-#define MULTIPLY16V16(var1,var2)  (((INT16) (var1)) * ((INT16) (var2)))
-#endif
-
-#ifndef MULTIPLY16V16		/* default definition */
-#define MULTIPLY16V16(var1,var2)  ((var1) * (var2))
-#endif
diff --git a/jpeg/jerror.c b/jpeg/jerror.c
deleted file mode 100644
index 690a3d3db9b817f81f4f47d974c106818432d49a..0000000000000000000000000000000000000000
--- a/jpeg/jerror.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * jerror.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains simple error-reporting and trace-message routines.
- * These are suitable for Unix-like systems and others where writing to
- * stderr is the right thing to do.  Many applications will want to replace
- * some or all of these routines.
- *
- * These routines are used by both the compression and decompression code.
- */
-
-/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jversion.h"
-
-#include "jerror.h"		/* get error codes */
-#define JMAKE_MSG_TABLE
-#include "jerror.h"		/* create message string table */
-
-#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
-#define EXIT_FAILURE  1
-#endif
-
-
-/*
- * Error exit handler: must not return to caller.
- *
- * Applications may override this if they want to get control back after
- * an error.  Typically one would longjmp somewhere instead of exiting.
- * The setjmp buffer can be made a private field within an expanded error
- * handler object.  Note that the info needed to generate an error message
- * is stored in the error object, so you can generate the message now or
- * later, at your convenience.
- * You should make sure that the JPEG object is cleaned up (with jpeg_abort
- * or jpeg_destroy) at some point.
- */
-
-METHODDEF void
-error_exit (j_common_ptr cinfo)
-{
-  /* Always display the message */
-  (*cinfo->err->output_message) (cinfo);
-
-  /* Let the memory manager delete any temp files before we die */
-  jpeg_destroy(cinfo);
-
-  exit(EXIT_FAILURE);
-}
-
-
-/*
- * Actual output of an error or trace message.
- * Applications may override this method to send JPEG messages somewhere
- * other than stderr.
- */
-
-METHODDEF void
-output_message (j_common_ptr cinfo)
-{
-  char buffer[JMSG_LENGTH_MAX];
-
-  /* Create the message */
-  (*cinfo->err->format_message) (cinfo, buffer);
-
-  /* Send it to stderr, adding a newline */
-  fprintf(stderr, "%s\n", buffer);
-}
-
-
-/*
- * Decide whether to emit a trace or warning message.
- * msg_level is one of:
- *   -1: recoverable corrupt-data warning, may want to abort.
- *    0: important advisory messages (always display to user).
- *    1: first level of tracing detail.
- *    2,3,...: successively more detailed tracing messages.
- * An application might override this method if it wanted to abort on warnings
- * or change the policy about which messages to display.
- */
-
-METHODDEF void
-emit_message (j_common_ptr cinfo, int msg_level)
-{
-  struct jpeg_error_mgr * err = cinfo->err;
-
-  if (msg_level < 0) {
-    /* It's a warning message.  Since corrupt files may generate many warnings,
-     * the policy implemented here is to show only the first warning,
-     * unless trace_level >= 3.
-     */
-    if (err->num_warnings == 0 || err->trace_level >= 3)
-      (*err->output_message) (cinfo);
-    /* Always count warnings in num_warnings. */
-    err->num_warnings++;
-  } else {
-    /* It's a trace message.  Show it if trace_level >= msg_level. */
-    if (err->trace_level >= msg_level)
-      (*err->output_message) (cinfo);
-  }
-}
-
-
-/*
- * Format a message string for the most recent JPEG error or message.
- * The message is stored into buffer, which should be at least JMSG_LENGTH_MAX
- * characters.  Note that no '\n' character is added to the string.
- * Few applications should need to override this method.
- */
-
-METHODDEF void
-format_message (j_common_ptr cinfo, char * buffer)
-{
-  struct jpeg_error_mgr * err = cinfo->err;
-  int msg_code = err->msg_code;
-  const char * msgtext = NULL;
-  const char * msgptr;
-  char ch;
-  boolean isstring;
-
-  /* Look up message string in proper table */
-  if (msg_code > 0 && msg_code <= err->last_jpeg_message) {
-    msgtext = err->jpeg_message_table[msg_code];
-  } else if (err->addon_message_table != NULL &&
-	     msg_code >= err->first_addon_message &&
-	     msg_code <= err->last_addon_message) {
-    msgtext = err->addon_message_table[msg_code - err->first_addon_message];
-  }
-
-  /* Defend against bogus message number */
-  if (msgtext == NULL) {
-    err->msg_parm.i[0] = msg_code;
-    msgtext = err->jpeg_message_table[0];
-  }
-
-  /* Check for string parameter, as indicated by %s in the message text */
-  isstring = FALSE;
-  msgptr = msgtext;
-  while ((ch = *msgptr++) != '\0') {
-    if (ch == '%') {
-      if (*msgptr == 's') isstring = TRUE;
-      break;
-    }
-  }
-
-  /* Format the message into the passed buffer */
-  if (isstring)
-    sprintf(buffer, msgtext, err->msg_parm.s);
-  else
-    sprintf(buffer, msgtext,
-	    err->msg_parm.i[0], err->msg_parm.i[1],
-	    err->msg_parm.i[2], err->msg_parm.i[3],
-	    err->msg_parm.i[4], err->msg_parm.i[5],
-	    err->msg_parm.i[6], err->msg_parm.i[7]);
-}
-
-
-/*
- * Reset error state variables at start of a new image.
- * This is called during compression startup to reset trace/error
- * processing to default state, without losing any application-specific
- * method pointers.  An application might possibly want to override
- * this method if it has additional error processing state.
- */
-
-METHODDEF void
-reset_error_mgr (j_common_ptr cinfo)
-{
-  cinfo->err->num_warnings = 0;
-  /* trace_level is not reset since it is an application-supplied parameter */
-  cinfo->err->msg_code = 0;	/* may be useful as a flag for "no error" */
-}
-
-
-/*
- * Fill in the standard error-handling methods in a jpeg_error_mgr object.
- * Typical call is:
- *	struct jpeg_compress_struct cinfo;
- *	struct jpeg_error_mgr err;
- *
- *	cinfo.err = jpeg_std_error(&err);
- * after which the application may override some of the methods.
- */
-
-GLOBAL struct jpeg_error_mgr *
-jpeg_std_error (struct jpeg_error_mgr * err)
-{
-  err->error_exit = error_exit;
-  err->emit_message = emit_message;
-  err->output_message = output_message;
-  err->format_message = format_message;
-  err->reset_error_mgr = reset_error_mgr;
-
-  err->trace_level = 0;		/* default = no tracing */
-  err->num_warnings = 0;	/* no warnings emitted yet */
-  err->msg_code = 0;		/* may be useful as a flag for "no error" */
-
-  /* Initialize message table pointers */
-  err->jpeg_message_table = jpeg_message_table;
-  err->last_jpeg_message = (int) JMSG_LASTMSGCODE - 1;
-
-  err->addon_message_table = NULL;
-  err->first_addon_message = 0;	/* for safety */
-  err->last_addon_message = 0;
-
-  return err;
-}
diff --git a/jpeg/jerror.h b/jpeg/jerror.h
deleted file mode 100644
index 7918c38803669927b182f1a65fcefa7f4eb25d14..0000000000000000000000000000000000000000
--- a/jpeg/jerror.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * jerror.h
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the error and message codes for the JPEG library.
- * Edit this file to add new codes, or to translate the message strings to
- * some other language.
- * A set of error-reporting macros are defined too.  Some applications using
- * the JPEG library may wish to include this file to get the error codes
- * and/or the macros.
- */
-
-
-/* To define the enum list of message codes, include this file without
- * defining JMAKE_MSG_TABLE.  To create the message string table, include it
- * again with JMAKE_MSG_TABLE defined (this should be done in just one module).
- */
-
-#ifdef JMAKE_MSG_TABLE
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_message_table	jMsgTable
-#endif
-
-const char * const jpeg_message_table[] = {
-
-#define JMESSAGE(code,string)	string ,
-
-#else /* not JMAKE_MSG_TABLE */
-
-typedef enum {
-
-#define JMESSAGE(code,string)	code ,
-
-#endif /* JMAKE_MSG_TABLE */
-
-JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
-
-/* For maintenance convenience, list is alphabetical by message code name */
-JMESSAGE(JERR_ARITH_NOTIMPL,
-	 "Sorry, there are legal restrictions on arithmetic coding")
-JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
-JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
-JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
-JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
-JMESSAGE(JERR_BAD_DCTSIZE, "IDCT output block size %d not supported")
-JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
-JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
-JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
-JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
-JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
-JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
-JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
-JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
-JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
-JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
-JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
-JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
-JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
-JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
-JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
-JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
-JMESSAGE(JERR_DHT_COUNTS, "Bogus DHT counts")
-JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
-JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
-JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
-JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
-JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
-JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
-JMESSAGE(JERR_FILE_READ, "Input file read error")
-JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
-JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
-JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
-JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
-JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
-JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
-JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
-JMESSAGE(JERR_JFIF_MAJOR, "Unsupported JFIF revision number %d.%02d")
-JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
-JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
-JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
-JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
-JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
-JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
-JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
-JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
-JMESSAGE(JERR_QUANT_COMPONENTS,
-	 "Cannot quantize more than %d color components")
-JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
-JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
-JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
-JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
-JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
-JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
-JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
-JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
-JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
-JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
-JMESSAGE(JERR_TFILE_WRITE,
-	 "Write failed on temporary file --- out of disk space?")
-JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
-JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
-JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
-JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
-JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
-JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
-JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
-JMESSAGE(JMSG_VERSION, JVERSION)
-JMESSAGE(JTRC_16BIT_TABLES,
-	 "Caution: quantization tables are too coarse for baseline JPEG")
-JMESSAGE(JTRC_ADOBE,
-	 "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
-JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
-JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
-JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
-JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
-JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d")
-JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
-JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
-JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
-JMESSAGE(JTRC_EOI, "End Of Image")
-JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d")
-JMESSAGE(JTRC_JFIF, "JFIF APP0 marker, density %dx%d  %d")
-JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
-	 "Warning: thumbnail image size does not match data length %u")
-JMESSAGE(JTRC_JFIF_MINOR, "Warning: unknown JFIF revision number %d.%02d")
-JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image")
-JMESSAGE(JTRC_MISC_MARKER, "Skipping marker 0x%02x, length %u")
-JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
-JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u")
-JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
-JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
-JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
-JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
-JMESSAGE(JTRC_RST, "RST%d")
-JMESSAGE(JTRC_SMOOTH_NOTIMPL,
-	 "Smoothing not supported with nonstandard sampling ratios")
-JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
-JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d")
-JMESSAGE(JTRC_SOI, "Start of Image")
-JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
-JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d")
-JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
-JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
-JMESSAGE(JTRC_UNKNOWN_IDS,
-	 "Unrecognized component IDs %d %d %d, assuming YCbCr")
-JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
-JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
-JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
-JMESSAGE(JWRN_EXTRANEOUS_DATA,
-	 "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
-JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
-JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
-JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
-JMESSAGE(JWRN_MUST_RESYNC,
-	 "Corrupt JPEG data: found marker 0x%02x instead of RST%d")
-JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
-JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
-
-#ifdef JMAKE_MSG_TABLE
-
-  NULL
-};
-
-#else /* not JMAKE_MSG_TABLE */
-
-  JMSG_LASTMSGCODE
-} J_MESSAGE_CODE;
-
-#endif /* JMAKE_MSG_TABLE */
-
-#undef JMESSAGE
-
-
-#ifndef JMAKE_MSG_TABLE
-
-/* Macros to simplify using the error and trace message stuff */
-/* The first parameter is either type of cinfo pointer */
-
-/* Fatal errors (print message and exit) */
-#define ERREXIT(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT3(cinfo,code,p1,p2,p3)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (cinfo)->err->msg_parm.i[3] = (p4), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXITS(cinfo,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-
-#define MAKESTMT(stuff)		do { stuff } while (0)
-
-/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
-#define WARNMS(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-
-/* Informational/debugging messages */
-#define TRACEMS(cinfo,lvl,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS1(cinfo,lvl,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS2(cinfo,lvl,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-	   _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMSS(cinfo,lvl,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-
-#endif /* JMAKE_MSG_TABLE */
diff --git a/jpeg/jfdctflt.c b/jpeg/jfdctflt.c
deleted file mode 100644
index 21371eb8f33f60637ea263474662e8d98fdbe4ed..0000000000000000000000000000000000000000
--- a/jpeg/jfdctflt.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * jfdctflt.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a floating-point implementation of the
- * forward DCT (Discrete Cosine Transform).
- *
- * This implementation should be more accurate than either of the integer
- * DCT implementations.  However, it may not give the same results on all
- * machines because of differences in roundoff behavior.  Speed will depend
- * on the hardware's floating point capacity.
- *
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on Arai, Agui, and Nakajima's algorithm for
- * scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
- * Japanese, but the algorithm is described in the Pennebaker & Mitchell
- * JPEG textbook (see REFERENCES section in file README).  The following code
- * is based directly on figure 4-8 in P&M.
- * While an 8-point DCT cannot be done in less than 11 multiplies, it is
- * possible to arrange the computation so that many of the multiplies are
- * simple scalings of the final outputs.  These multiplies can then be
- * folded into the multiplications or divisions by the JPEG quantization
- * table entries.  The AA&N method leaves only 5 multiplies and 29 adds
- * to be done in the DCT itself.
- * The primary disadvantage of this method is that with a fixed-point
- * implementation, accuracy is lost due to imprecise representation of the
- * scaled quantization values.  However, that problem does not arise if
- * we use floating point arithmetic.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_FLOAT_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-GLOBAL void
-jpeg_fdct_float (FAST_FLOAT * data)
-{
-  FAST_FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  FAST_FLOAT tmp10, tmp11, tmp12, tmp13;
-  FAST_FLOAT z1, z2, z3, z4, z5, z11, z13;
-  FAST_FLOAT *dataptr;
-  int ctr;
-
-  /* Pass 1: process rows. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[4] = tmp10 - tmp11;
-    
-    z1 = (tmp12 + tmp13) * ((FAST_FLOAT) 0.707106781); /* c4 */
-    dataptr[2] = tmp13 + z1;	/* phase 5 */
-    dataptr[6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = (tmp10 - tmp12) * ((FAST_FLOAT) 0.382683433); /* c6 */
-    z2 = ((FAST_FLOAT) 0.541196100) * tmp10 + z5; /* c2-c6 */
-    z4 = ((FAST_FLOAT) 1.306562965) * tmp12 + z5; /* c2+c6 */
-    z3 = tmp11 * ((FAST_FLOAT) 0.707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[5] = z13 + z2;	/* phase 6 */
-    dataptr[3] = z13 - z2;
-    dataptr[1] = z11 + z4;
-    dataptr[7] = z11 - z4;
-
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[DCTSIZE*4] = tmp10 - tmp11;
-    
-    z1 = (tmp12 + tmp13) * ((FAST_FLOAT) 0.707106781); /* c4 */
-    dataptr[DCTSIZE*2] = tmp13 + z1; /* phase 5 */
-    dataptr[DCTSIZE*6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = (tmp10 - tmp12) * ((FAST_FLOAT) 0.382683433); /* c6 */
-    z2 = ((FAST_FLOAT) 0.541196100) * tmp10 + z5; /* c2-c6 */
-    z4 = ((FAST_FLOAT) 1.306562965) * tmp12 + z5; /* c2+c6 */
-    z3 = tmp11 * ((FAST_FLOAT) 0.707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[DCTSIZE*5] = z13 + z2; /* phase 6 */
-    dataptr[DCTSIZE*3] = z13 - z2;
-    dataptr[DCTSIZE*1] = z11 + z4;
-    dataptr[DCTSIZE*7] = z11 - z4;
-
-    dataptr++;			/* advance pointer to next column */
-  }
-}
-
-#endif /* DCT_FLOAT_SUPPORTED */
diff --git a/jpeg/jfdctfst.c b/jpeg/jfdctfst.c
deleted file mode 100644
index a52d7b73c30fe633445622be85be59e7e72d9e0d..0000000000000000000000000000000000000000
--- a/jpeg/jfdctfst.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * jfdctfst.c
- *
- * Copyright (C) 1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a fast, not so accurate integer implementation of the
- * forward DCT (Discrete Cosine Transform).
- *
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on Arai, Agui, and Nakajima's algorithm for
- * scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
- * Japanese, but the algorithm is described in the Pennebaker & Mitchell
- * JPEG textbook (see REFERENCES section in file README).  The following code
- * is based directly on figure 4-8 in P&M.
- * While an 8-point DCT cannot be done in less than 11 multiplies, it is
- * possible to arrange the computation so that many of the multiplies are
- * simple scalings of the final outputs.  These multiplies can then be
- * folded into the multiplications or divisions by the JPEG quantization
- * table entries.  The AA&N method leaves only 5 multiplies and 29 adds
- * to be done in the DCT itself.
- * The primary disadvantage of this method is that with fixed-point math,
- * accuracy is lost due to imprecise representation of the scaled
- * quantization values.  The smaller the quantization table entry, the less
- * precise the scaled value, so this implementation does worse with high-
- * quality-setting files than with low-quality ones.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_IFAST_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/* Scaling decisions are generally the same as in the LL&M algorithm;
- * see jfdctint.c for more details.  However, we choose to descale
- * (right shift) multiplication products as soon as they are formed,
- * rather than carrying additional fractional bits into subsequent additions.
- * This compromises accuracy slightly, but it lets us save a few shifts.
- * More importantly, 16-bit arithmetic is then adequate (for 8-bit samples)
- * everywhere except in the multiplications proper; this saves a good deal
- * of work on 16-bit-int machines.
- *
- * Again to save a few shifts, the intermediate results between pass 1 and
- * pass 2 are not upscaled, but are represented only to integral precision.
- *
- * A final compromise is to represent the multiplicative constants to only
- * 8 fractional bits, rather than 13.  This saves some shifting work on some
- * machines, and may also reduce the cost of multiplication (since there
- * are fewer one-bits in the constants).
- */
-
-#define CONST_BITS  8
-
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 8
-#define FIX_0_382683433  ((INT32)   98)		/* FIX(0.382683433) */
-#define FIX_0_541196100  ((INT32)  139)		/* FIX(0.541196100) */
-#define FIX_0_707106781  ((INT32)  181)		/* FIX(0.707106781) */
-#define FIX_1_306562965  ((INT32)  334)		/* FIX(1.306562965) */
-#else
-#define FIX_0_382683433  FIX(0.382683433)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_707106781  FIX(0.707106781)
-#define FIX_1_306562965  FIX(1.306562965)
-#endif
-
-
-/* We can gain a little more speed, with a further compromise in accuracy,
- * by omitting the addition in a descaling shift.  This yields an incorrectly
- * rounded result half the time...
- */
-
-#ifndef USE_ACCURATE_ROUNDING
-#undef DESCALE
-#define DESCALE(x,n)  RIGHT_SHIFT(x, n)
-#endif
-
-
-/* Multiply a DCTELEM variable by an INT32 constant, and immediately
- * descale to yield a DCTELEM result.
- */
-
-#define MULTIPLY(var,const)  ((DCTELEM) DESCALE((var) * (const), CONST_BITS))
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-GLOBAL void
-jpeg_fdct_ifast (DCTELEM * data)
-{
-  DCTELEM tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  DCTELEM tmp10, tmp11, tmp12, tmp13;
-  DCTELEM z1, z2, z3, z4, z5, z11, z13;
-  DCTELEM *dataptr;
-  int ctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[4] = tmp10 - tmp11;
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_707106781); /* c4 */
-    dataptr[2] = tmp13 + z1;	/* phase 5 */
-    dataptr[6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = MULTIPLY(tmp10 - tmp12, FIX_0_382683433); /* c6 */
-    z2 = MULTIPLY(tmp10, FIX_0_541196100) + z5; /* c2-c6 */
-    z4 = MULTIPLY(tmp12, FIX_1_306562965) + z5; /* c2+c6 */
-    z3 = MULTIPLY(tmp11, FIX_0_707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[5] = z13 + z2;	/* phase 6 */
-    dataptr[3] = z13 - z2;
-    dataptr[1] = z11 + z4;
-    dataptr[7] = z11 - z4;
-
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[DCTSIZE*4] = tmp10 - tmp11;
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_707106781); /* c4 */
-    dataptr[DCTSIZE*2] = tmp13 + z1; /* phase 5 */
-    dataptr[DCTSIZE*6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = MULTIPLY(tmp10 - tmp12, FIX_0_382683433); /* c6 */
-    z2 = MULTIPLY(tmp10, FIX_0_541196100) + z5; /* c2-c6 */
-    z4 = MULTIPLY(tmp12, FIX_1_306562965) + z5; /* c2+c6 */
-    z3 = MULTIPLY(tmp11, FIX_0_707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[DCTSIZE*5] = z13 + z2; /* phase 6 */
-    dataptr[DCTSIZE*3] = z13 - z2;
-    dataptr[DCTSIZE*1] = z11 + z4;
-    dataptr[DCTSIZE*7] = z11 - z4;
-
-    dataptr++;			/* advance pointer to next column */
-  }
-}
-
-#endif /* DCT_IFAST_SUPPORTED */
diff --git a/jpeg/jfdctint.c b/jpeg/jfdctint.c
deleted file mode 100644
index 7df043306f485bc99208ff22ba0090686adc130b..0000000000000000000000000000000000000000
--- a/jpeg/jfdctint.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * jfdctint.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a slow-but-accurate integer implementation of the
- * forward DCT (Discrete Cosine Transform).
- *
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on an algorithm described in
- *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
- *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
- *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
- * The primary algorithm described there uses 11 multiplies and 29 adds.
- * We use their alternate method with 12 multiplies and 32 adds.
- * The advantage of this method is that no data path contains more than one
- * multiplication; this allows a very simple and accurate implementation in
- * scaled fixed-point arithmetic, with a minimal number of shifts.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_ISLOW_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * The poop on this scaling stuff is as follows:
- *
- * Each 1-D DCT step produces outputs which are a factor of sqrt(N)
- * larger than the true DCT outputs.  The final outputs are therefore
- * a factor of N larger than desired; since N=8 this can be cured by
- * a simple right shift at the end of the algorithm.  The advantage of
- * this arrangement is that we save two multiplications per 1-D DCT,
- * because the y0 and y4 outputs need not be divided by sqrt(N).
- * In the IJG code, this factor of 8 is removed by the quantization step
- * (in jcdctmgr.c), NOT in this module.
- *
- * We have to do addition and subtraction of the integer inputs, which
- * is no problem, and multiplication by fractional constants, which is
- * a problem to do in integer arithmetic.  We multiply all the constants
- * by CONST_SCALE and convert them to integer constants (thus retaining
- * CONST_BITS bits of precision in the constants).  After doing a
- * multiplication we have to divide the product by CONST_SCALE, with proper
- * rounding, to produce the correct output.  This division can be done
- * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
- * as long as possible so that partial sums can be added together with
- * full fractional precision.
- *
- * The outputs of the first pass are scaled up by PASS1_BITS bits so that
- * they are represented to better-than-integral precision.  These outputs
- * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word
- * with the recommended scaling.  (For 12-bit sample data, the intermediate
- * array is INT32 anyway.)
- *
- * To avoid overflow of the 32-bit intermediate results in pass 2, we must
- * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 26.  Error analysis
- * shows that the values given below are the most effective.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  1		/* lose a little precision to avoid overflow */
-#endif
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_298631336  ((INT32)  2446)	/* FIX(0.298631336) */
-#define FIX_0_390180644  ((INT32)  3196)	/* FIX(0.390180644) */
-#define FIX_0_541196100  ((INT32)  4433)	/* FIX(0.541196100) */
-#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
-#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
-#define FIX_1_175875602  ((INT32)  9633)	/* FIX(1.175875602) */
-#define FIX_1_501321110  ((INT32)  12299)	/* FIX(1.501321110) */
-#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
-#define FIX_1_961570560  ((INT32)  16069)	/* FIX(1.961570560) */
-#define FIX_2_053119869  ((INT32)  16819)	/* FIX(2.053119869) */
-#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
-#define FIX_3_072711026  ((INT32)  25172)	/* FIX(3.072711026) */
-#else
-#define FIX_0_298631336  FIX(0.298631336)
-#define FIX_0_390180644  FIX(0.390180644)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_175875602  FIX(1.175875602)
-#define FIX_1_501321110  FIX(1.501321110)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_1_961570560  FIX(1.961570560)
-#define FIX_2_053119869  FIX(2.053119869)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_072711026  FIX(3.072711026)
-#endif
-
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply.
- * For 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define MULTIPLY(var,const)  MULTIPLY16C16(var,const)
-#else
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-GLOBAL void
-jpeg_fdct_islow (DCTELEM * data)
-{
-  INT32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  INT32 tmp10, tmp11, tmp12, tmp13;
-  INT32 z1, z2, z3, z4, z5;
-  DCTELEM *dataptr;
-  int ctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows. */
-  /* Note results are scaled up by sqrt(8) compared to a true DCT; */
-  /* furthermore, we scale the results by 2**PASS1_BITS. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part per LL&M figure 1 --- note that published figure is faulty;
-     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-     */
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = (DCTELEM) ((tmp10 + tmp11) << PASS1_BITS);
-    dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
-    dataptr[2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
-				   CONST_BITS-PASS1_BITS);
-    dataptr[6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
-				   CONST_BITS-PASS1_BITS);
-    
-    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-     * cK represents cos(K*pi/16).
-     * i0..i3 in the paper are tmp4..tmp7 here.
-     */
-    
-    z1 = tmp4 + tmp7;
-    z2 = tmp5 + tmp6;
-    z3 = tmp4 + tmp6;
-    z4 = tmp5 + tmp7;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    dataptr[7] = (DCTELEM) DESCALE(tmp4 + z1 + z3, CONST_BITS-PASS1_BITS);
-    dataptr[5] = (DCTELEM) DESCALE(tmp5 + z2 + z4, CONST_BITS-PASS1_BITS);
-    dataptr[3] = (DCTELEM) DESCALE(tmp6 + z2 + z3, CONST_BITS-PASS1_BITS);
-    dataptr[1] = (DCTELEM) DESCALE(tmp7 + z1 + z4, CONST_BITS-PASS1_BITS);
-    
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns.
-   * We remove the PASS1_BITS scaling, but leave the results scaled up
-   * by an overall factor of 8.
-   */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part per LL&M figure 1 --- note that published figure is faulty;
-     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-     */
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp11, PASS1_BITS);
-    dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp10 - tmp11, PASS1_BITS);
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
-    dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
-					   CONST_BITS+PASS1_BITS);
-    
-    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-     * cK represents cos(K*pi/16).
-     * i0..i3 in the paper are tmp4..tmp7 here.
-     */
-    
-    z1 = tmp4 + tmp7;
-    z2 = tmp5 + tmp6;
-    z3 = tmp4 + tmp6;
-    z4 = tmp5 + tmp7;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp4 + z1 + z3,
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp5 + z2 + z4,
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp6 + z2 + z3,
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp7 + z1 + z4,
-					   CONST_BITS+PASS1_BITS);
-    
-    dataptr++;			/* advance pointer to next column */
-  }
-}
-
-#endif /* DCT_ISLOW_SUPPORTED */
diff --git a/jpeg/jfwddct.c b/jpeg/jfwddct.c
deleted file mode 100644
index 77752ab8851fd7c6434ea2e363e4978d727e0088..0000000000000000000000000000000000000000
--- a/jpeg/jfwddct.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * jfwddct.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the basic DCT (Discrete Cosine Transform)
- * transformation subroutine.
- *
- * This implementation is based on an algorithm described in
- *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
- *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
- *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
- * The primary algorithm described there uses 11 multiplies and 29 adds.
- * We use their alternate method with 12 multiplies and 32 adds.
- * The advantage of this method is that no data path contains more than one
- * multiplication; this allows a very simple and accurate implementation in
- * scaled fixed-point arithmetic, with a minimal number of shifts.
- */
-
-#include "jinclude.h"
-#include "jpegint.h"
-
-
-/*
- * This routine is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * The poop on this scaling stuff is as follows:
- *
- * Each 1-D DCT step produces outputs which are a factor of sqrt(N)
- * larger than the true DCT outputs.  The final outputs are therefore
- * a factor of N larger than desired; since N=8 this can be cured by
- * a simple right shift at the end of the algorithm.  The advantage of
- * this arrangement is that we save two multiplications per 1-D DCT,
- * because the y0 and y4 outputs need not be divided by sqrt(N).
- *
- * We have to do addition and subtraction of the integer inputs, which
- * is no problem, and multiplication by fractional constants, which is
- * a problem to do in integer arithmetic.  We multiply all the constants
- * by CONST_SCALE and convert them to integer constants (thus retaining
- * CONST_BITS bits of precision in the constants).  After doing a
- * multiplication we have to divide the product by CONST_SCALE, with proper
- * rounding, to produce the correct output.  This division can be done
- * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
- * as long as possible so that partial sums can be added together with
- * full fractional precision.
- *
- * The outputs of the first pass are scaled up by PASS1_BITS bits so that
- * they are represented to better-than-integral precision.  These outputs
- * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word
- * with the recommended scaling.  (To scale up 12-bit sample data, an
- * intermediate INT32 array would be needed.)
- *
- * To avoid overflow of the 32-bit intermediate results in pass 2, we must
- * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 25.  Error analysis
- * shows that the values given below are the most effective.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  0		/* lose a little precision to avoid overflow */
-#endif
-
-#define ONE	((INT32) 1)
-
-#define CONST_SCALE (ONE << CONST_BITS)
-
-/* Convert a positive real constant to an integer scaled by CONST_SCALE. */
-
-#define FIX(x)	((INT32) ((x) * CONST_SCALE + 0.5))
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_298631336  ((INT32)  2446)	/* FIX(0.298631336) */
-#define FIX_0_390180644  ((INT32)  3196)	/* FIX(0.390180644) */
-#define FIX_0_541196100  ((INT32)  4433)	/* FIX(0.541196100) */
-#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
-#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
-#define FIX_1_175875602  ((INT32)  9633)	/* FIX(1.175875602) */
-#define FIX_1_501321110  ((INT32)  12299)	/* FIX(1.501321110) */
-#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
-#define FIX_1_961570560  ((INT32)  16069)	/* FIX(1.961570560) */
-#define FIX_2_053119869  ((INT32)  16819)	/* FIX(2.053119869) */
-#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
-#define FIX_3_072711026  ((INT32)  25172)	/* FIX(3.072711026) */
-#else
-#define FIX_0_298631336  FIX(0.298631336)
-#define FIX_0_390180644  FIX(0.390180644)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_175875602  FIX(1.175875602)
-#define FIX_1_501321110  FIX(1.501321110)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_1_961570560  FIX(1.961570560)
-#define FIX_2_053119869  FIX(2.053119869)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_072711026  FIX(3.072711026)
-#endif
-
-
-/* Descale and correctly round an INT32 value that's scaled by N bits.
- * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
- * the fudge factor is correct for either sign of X.
- */
-
-#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply;
- * this provides a useful speedup on many machines.
- * There is no way to specify a 16x16->32 multiply in portable C, but
- * some C compilers will do the right thing if you provide the correct
- * combination of casts.
- * NB: for 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
-#define MULTIPLY(var,const)  (((INT16) (var)) * ((INT16) (const)))
-#endif
-#ifdef SHORTxLCONST_32		/* known to work with Microsoft C 6.0 */
-#define MULTIPLY(var,const)  (((INT16) (var)) * ((INT32) (const)))
-#endif
-#endif /* BITS_IN_JSAMPLE == 8 */
-
-#ifndef MULTIPLY		/* default definition */
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-typedef int DCTELEM;
-
-GLOBAL void
-j_fwd_dct (DCTELEM * data)
-{
-  INT32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  INT32 tmp10, tmp11, tmp12, tmp13;
-  INT32 z1, z2, z3, z4, z5;
-  register DCTELEM *dataptr;
-  int rowctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows. */
-  /* Note results are scaled up by sqrt(8) compared to a true DCT; */
-  /* furthermore, we scale the results by 2**PASS1_BITS. */
-
-  dataptr = data;
-  for (rowctr = DCTSIZE-1; rowctr >= 0; rowctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part per LL&M figure 1 --- note that published figure is faulty;
-     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-     */
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = (DCTELEM) ((tmp10 + tmp11) << PASS1_BITS);
-    dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
-    dataptr[2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
-				   CONST_BITS-PASS1_BITS);
-    dataptr[6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
-				   CONST_BITS-PASS1_BITS);
-    
-    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-     * cK represents cos(K*pi/16).
-     * i0..i3 in the paper are tmp4..tmp7 here.
-     */
-    
-    z1 = tmp4 + tmp7;
-    z2 = tmp5 + tmp6;
-    z3 = tmp4 + tmp6;
-    z4 = tmp5 + tmp7;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    dataptr[7] = (DCTELEM) DESCALE(tmp4 + z1 + z3, CONST_BITS-PASS1_BITS);
-    dataptr[5] = (DCTELEM) DESCALE(tmp5 + z2 + z4, CONST_BITS-PASS1_BITS);
-    dataptr[3] = (DCTELEM) DESCALE(tmp6 + z2 + z3, CONST_BITS-PASS1_BITS);
-    dataptr[1] = (DCTELEM) DESCALE(tmp7 + z1 + z4, CONST_BITS-PASS1_BITS);
-    
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns. */
-  /* Note that we must descale the results by a factor of 8 == 2**3, */
-  /* and also undo the PASS1_BITS scaling. */
-
-  dataptr = data;
-  for (rowctr = DCTSIZE-1; rowctr >= 0; rowctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part per LL&M figure 1 --- note that published figure is faulty;
-     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-     */
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp11, PASS1_BITS+3);
-    dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp10 - tmp11, PASS1_BITS+3);
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
-    dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
-					   CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
-					   CONST_BITS+PASS1_BITS+3);
-    
-    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-     * cK represents cos(K*pi/16).
-     * i0..i3 in the paper are tmp4..tmp7 here.
-     */
-    
-    z1 = tmp4 + tmp7;
-    z2 = tmp5 + tmp6;
-    z3 = tmp4 + tmp6;
-    z4 = tmp5 + tmp7;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp4 + z1 + z3,
-					   CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp5 + z2 + z4,
-					   CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp6 + z2 + z3,
-					   CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp7 + z1 + z4,
-					   CONST_BITS+PASS1_BITS+3);
-    
-    dataptr++;			/* advance pointer to next column */
-  }
-}
diff --git a/jpeg/jinclude.h b/jpeg/jinclude.h
deleted file mode 100644
index 0a4f15146aeb2070601838439e169509f6fe5b7d..0000000000000000000000000000000000000000
--- a/jpeg/jinclude.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * jinclude.h
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file exists to provide a single place to fix any problems with
- * including the wrong system include files.  (Common problems are taken
- * care of by the standard jconfig symbols, but on really weird systems
- * you may have to edit this file.)
- *
- * NOTE: this file is NOT intended to be included by applications using the
- * JPEG library.  Most applications need only include jpeglib.h.
- */
-
-
-/* Include auto-config file to find out which system include files we need. */
-
-#include "jconfig.h"		/* auto configuration options */
-#define JCONFIG_INCLUDED	/* so that jpeglib.h doesn't do it again */
-
-/*
- * We need the NULL macro and size_t typedef.
- * On an ANSI-conforming system it is sufficient to include <stddef.h>.
- * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
- * pull in <sys/types.h> as well.
- * Note that the core JPEG library does not require <stdio.h>;
- * only the default error handler and data source/destination modules do.
- * But we must pull it in because of the references to FILE in jpeglib.h.
- * You can remove those references if you want to compile without <stdio.h>.
- */
-
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#ifdef NEED_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#include <stdio.h>
-
-/*
- * We need memory copying and zeroing functions, plus strncpy().
- * ANSI and System V implementations declare these in <string.h>.
- * BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
- * Some systems may declare memset and memcpy in <memory.h>.
- *
- * NOTE: we assume the size parameters to these functions are of type size_t.
- * Change the casts in these macros if not!
- */
-
-#ifdef NEED_BSD_STRINGS
-
-#include <strings.h>
-#define MEMZERO(target,size)	bzero((void *)(target), (size_t)(size))
-#define MEMCOPY(dest,src,size)	bcopy((const void *)(src), (void *)(dest), (size_t)(size))
-
-#else /* not BSD, assume ANSI/SysV string lib */
-
-#include <string.h>
-#define MEMZERO(target,size)	memset((void *)(target), 0, (size_t)(size))
-#define MEMCOPY(dest,src,size)	memcpy((void *)(dest), (const void *)(src), (size_t)(size))
-
-#endif
-
-/*
- * In ANSI C, and indeed any rational implementation, size_t is also the
- * type returned by sizeof().  However, it seems there are some irrational
- * implementations out there, in which sizeof() returns an int even though
- * size_t is defined as long or unsigned long.  To ensure consistent results
- * we always use this SIZEOF() macro in place of using sizeof() directly.
- */
-
-#define SIZEOF(object)	((size_t) sizeof(object))
-
-/*
- * The modules that use fread() and fwrite() always invoke them through
- * these macros.  On some systems you may need to twiddle the argument casts.
- * CAUTION: argument order is different from underlying functions!
- */
-
-#define JFREAD(file,buf,sizeofbuf)  \
-  ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
-#define JFWRITE(file,buf,sizeofbuf)  \
-  ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
diff --git a/jpeg/jmemmgr.c b/jpeg/jmemmgr.c
deleted file mode 100644
index 76fb486741d8c690203824a334f6f46ab8806fea..0000000000000000000000000000000000000000
--- a/jpeg/jmemmgr.c
+++ /dev/null
@@ -1,1062 +0,0 @@
-/*
- * jmemmgr.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the JPEG system-independent memory management
- * routines.  This code is usable across a wide variety of machines; most
- * of the system dependencies have been isolated in a separate file.
- * The major functions provided here are:
- *   * pool-based allocation and freeing of memory;
- *   * policy decisions about how to divide available memory among the
- *     virtual arrays;
- *   * control logic for swapping virtual arrays between main memory and
- *     backing storage.
- * The separate system-dependent file provides the actual backing-storage
- * access code, and it contains the policy decision about how much total
- * main memory to use.
- * This file is system-dependent in the sense that some of its functions
- * are unnecessary in some systems.  For example, if there is enough virtual
- * memory so that backing storage will never be used, much of the virtual
- * array control logic could be removed.  (Of course, if you have that much
- * memory then you shouldn't care about a little bit of unused code...)
- */
-
-#define JPEG_INTERNALS
-#define AM_MEMORY_MANAGER	/* we define jvirt_Xarray_control structs */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jmemsys.h"		/* import the system-dependent declarations */
-
-#ifndef NO_GETENV
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare getenv() */
-extern char * getenv JPP((const char * name));
-#endif
-#endif
-
-
-/*
- * Some important notes:
- *   The allocation routines provided here must never return NULL.
- *   They should exit to error_exit if unsuccessful.
- *
- *   It's not a good idea to try to merge the sarray and barray routines,
- *   even though they are textually almost the same, because samples are
- *   usually stored as bytes while coefficients are shorts or ints.  Thus,
- *   in machines where byte pointers have a different representation from
- *   word pointers, the resulting machine code could not be the same.
- */
-
-
-/*
- * Many machines require storage alignment: longs must start on 4-byte
- * boundaries, doubles on 8-byte boundaries, etc.  On such machines, malloc()
- * always returns pointers that are multiples of the worst-case alignment
- * requirement, and we had better do so too.
- * There isn't any really portable way to determine the worst-case alignment
- * requirement.  This module assumes that the alignment requirement is
- * multiples of sizeof(ALIGN_TYPE).
- * By default, we define ALIGN_TYPE as double.  This is necessary on some
- * workstations (where doubles really do need 8-byte alignment) and will work
- * fine on nearly everything.  If your machine has lesser alignment needs,
- * you can save a few bytes by making ALIGN_TYPE smaller.
- * The only place I know of where this will NOT work is certain Macintosh
- * 680x0 compilers that define double as a 10-byte IEEE extended float.
- * Doing 10-byte alignment is counterproductive because longwords won't be
- * aligned well.  Put "#define ALIGN_TYPE long" in jconfig.h if you have
- * such a compiler.
- */
-
-#ifndef ALIGN_TYPE		/* so can override from jconfig.h */
-#define ALIGN_TYPE  double
-#endif
-
-
-/*
- * We allocate objects from "pools", where each pool is gotten with a single
- * request to jpeg_get_small() or jpeg_get_large().  There is no per-object
- * overhead within a pool, except for alignment padding.  Each pool has a
- * header with a link to the next pool of the same class.
- * Small and large pool headers are identical except that the latter's
- * link pointer must be FAR on 80x86 machines.
- * Notice that the "real" header fields are union'ed with a dummy ALIGN_TYPE
- * field.  This forces the compiler to make SIZEOF(small_pool_hdr) a multiple
- * of the alignment requirement of ALIGN_TYPE.
- */
-
-typedef union small_pool_struct * small_pool_ptr;
-
-typedef union small_pool_struct {
-  struct {
-    small_pool_ptr next;	/* next in list of pools */
-    size_t bytes_used;		/* how many bytes already used within pool */
-    size_t bytes_left;		/* bytes still available in this pool */
-  } hdr;
-  ALIGN_TYPE dummy;		/* included in union to ensure alignment */
-} small_pool_hdr;
-
-typedef union large_pool_struct FAR * large_pool_ptr;
-
-typedef union large_pool_struct {
-  struct {
-    large_pool_ptr next;	/* next in list of pools */
-    size_t bytes_used;		/* how many bytes already used within pool */
-    size_t bytes_left;		/* bytes still available in this pool */
-  } hdr;
-  ALIGN_TYPE dummy;		/* included in union to ensure alignment */
-} large_pool_hdr;
-
-
-/*
- * Here is the full definition of a memory manager object.
- */
-
-typedef struct {
-  struct jpeg_memory_mgr pub;	/* public fields */
-
-  /* Each pool identifier (lifetime class) names a linked list of pools. */
-  small_pool_ptr small_list[JPOOL_NUMPOOLS];
-  large_pool_ptr large_list[JPOOL_NUMPOOLS];
-
-  /* Since we only have one lifetime class of virtual arrays, only one
-   * linked list is necessary (for each datatype).  Note that the virtual
-   * array control blocks being linked together are actually stored somewhere
-   * in the small-pool list.
-   */
-  jvirt_sarray_ptr virt_sarray_list;
-  jvirt_barray_ptr virt_barray_list;
-
-  /* This counts total space obtained from jpeg_get_small/large */
-  long total_space_allocated;
-
-  /* alloc_sarray and alloc_barray set this value for use by virtual
-   * array routines.
-   */
-  JDIMENSION last_rowsperchunk;	/* from most recent alloc_sarray/barray */
-} my_memory_mgr;
-
-typedef my_memory_mgr * my_mem_ptr;
-
-
-/*
- * The control blocks for virtual arrays.
- * Note that these blocks are allocated in the "small" pool area.
- * System-dependent info for the associated backing store (if any) is hidden
- * inside the backing_store_info struct.
- */
-
-struct jvirt_sarray_control {
-  JSAMPARRAY mem_buffer;	/* => the in-memory buffer */
-  JDIMENSION rows_in_array;	/* total virtual array height */
-  JDIMENSION samplesperrow;	/* width of array (and of memory buffer) */
-  JDIMENSION unitheight;	/* # of rows accessed by access_virt_sarray */
-  JDIMENSION rows_in_mem;	/* height of memory buffer */
-  JDIMENSION rowsperchunk;	/* allocation chunk size in mem_buffer */
-  JDIMENSION cur_start_row;	/* first logical row # in the buffer */
-  boolean dirty;		/* do current buffer contents need written? */
-  boolean b_s_open;		/* is backing-store data valid? */
-  jvirt_sarray_ptr next;	/* link to next virtual sarray control block */
-  backing_store_info b_s_info;	/* System-dependent control info */
-};
-
-struct jvirt_barray_control {
-  JBLOCKARRAY mem_buffer;	/* => the in-memory buffer */
-  JDIMENSION rows_in_array;	/* total virtual array height */
-  JDIMENSION blocksperrow;	/* width of array (and of memory buffer) */
-  JDIMENSION unitheight;	/* # of rows accessed by access_virt_barray */
-  JDIMENSION rows_in_mem;	/* height of memory buffer */
-  JDIMENSION rowsperchunk;	/* allocation chunk size in mem_buffer */
-  JDIMENSION cur_start_row;	/* first logical row # in the buffer */
-  boolean dirty;		/* do current buffer contents need written? */
-  boolean b_s_open;		/* is backing-store data valid? */
-  jvirt_barray_ptr next;	/* link to next virtual barray control block */
-  backing_store_info b_s_info;	/* System-dependent control info */
-};
-
-
-#ifdef MEM_STATS		/* optional extra stuff for statistics */
-
-LOCAL void
-print_mem_stats (j_common_ptr cinfo, int pool_id)
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  small_pool_ptr shdr_ptr;
-  large_pool_ptr lhdr_ptr;
-
-  /* Since this is only a debugging stub, we can cheat a little by using
-   * fprintf directly rather than going through the trace message code.
-   * This is helpful because message parm array can't handle longs.
-   */
-  fprintf(stderr, "Freeing pool %d, total space = %ld\n",
-	  pool_id, mem->total_space_allocated);
-
-  for (lhdr_ptr = mem->large_list[pool_id]; lhdr_ptr != NULL;
-       lhdr_ptr = lhdr_ptr->hdr.next) {
-    fprintf(stderr, "  Large chunk used %ld\n",
-	    (long) lhdr_ptr->hdr.bytes_used);
-  }
-
-  for (shdr_ptr = mem->small_list[pool_id]; shdr_ptr != NULL;
-       shdr_ptr = shdr_ptr->hdr.next) {
-    fprintf(stderr, "  Small chunk used %ld free %ld\n",
-	    (long) shdr_ptr->hdr.bytes_used,
-	    (long) shdr_ptr->hdr.bytes_left);
-  }
-}
-
-#endif /* MEM_STATS */
-
-
-LOCAL void
-out_of_memory (j_common_ptr cinfo, int which)
-/* Report an out-of-memory error and stop execution */
-/* If we compiled MEM_STATS support, report alloc requests before dying */
-{
-#ifdef MEM_STATS
-  cinfo->err->trace_level = 2;	/* force self_destruct to report stats */
-#endif
-  ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, which);
-}
-
-
-/*
- * Allocation of "small" objects.
- *
- * For these, we use pooled storage.  When a new pool must be created,
- * we try to get enough space for the current request plus a "slop" factor,
- * where the slop will be the amount of leftover space in the new pool.
- * The speed vs. space tradeoff is largely determined by the slop values.
- * A different slop value is provided for each pool class (lifetime),
- * and we also distinguish the first pool of a class from later ones.
- * NOTE: the values given work fairly well on both 16- and 32-bit-int
- * machines, but may be too small if longs are 64 bits or more.
- */
-
-static const size_t first_pool_slop[JPOOL_NUMPOOLS] = 
-{
-	1600,			/* first PERMANENT pool */
-	16000			/* first IMAGE pool */
-};
-
-static const size_t extra_pool_slop[JPOOL_NUMPOOLS] = 
-{
-	0,			/* additional PERMANENT pools */
-	5000			/* additional IMAGE pools */
-};
-
-#define MIN_SLOP  50		/* greater than 0 to avoid futile looping */
-
-
-METHODDEF void *
-alloc_small (j_common_ptr cinfo, int pool_id, size_t sizeofobject)
-/* Allocate a "small" object */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  small_pool_ptr hdr_ptr, prev_hdr_ptr;
-  char * data_ptr;
-  size_t odd_bytes, min_request, slop;
-
-  /* Check for unsatisfiable request (do now to ensure no overflow below) */
-  if (sizeofobject > (size_t) (MAX_ALLOC_CHUNK-SIZEOF(small_pool_hdr)))
-    out_of_memory(cinfo, 1);	/* request exceeds malloc's ability */
-
-  /* Round up the requested size to a multiple of SIZEOF(ALIGN_TYPE) */
-  odd_bytes = sizeofobject % SIZEOF(ALIGN_TYPE);
-  if (odd_bytes > 0)
-    sizeofobject += SIZEOF(ALIGN_TYPE) - odd_bytes;
-
-  /* See if space is available in any existing pool */
-  if (pool_id < 0 || pool_id >= JPOOL_NUMPOOLS)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-  prev_hdr_ptr = NULL;
-  hdr_ptr = mem->small_list[pool_id];
-  while (hdr_ptr != NULL) {
-    if (hdr_ptr->hdr.bytes_left >= sizeofobject)
-      break;			/* found pool with enough space */
-    prev_hdr_ptr = hdr_ptr;
-    hdr_ptr = hdr_ptr->hdr.next;
-  }
-
-  /* Time to make a new pool? */
-  if (hdr_ptr == NULL) {
-    /* min_request is what we need now, slop is what will be leftover */
-    min_request = sizeofobject + SIZEOF(small_pool_hdr);
-    if (prev_hdr_ptr == NULL)	/* first pool in class? */
-      slop = first_pool_slop[pool_id];
-    else
-      slop = extra_pool_slop[pool_id];
-    /* Don't ask for more than MAX_ALLOC_CHUNK */
-    if (slop > (size_t) (MAX_ALLOC_CHUNK-min_request))
-      slop = (size_t) (MAX_ALLOC_CHUNK-min_request);
-    /* Try to get space, if fail reduce slop and try again */
-    for (;;) {
-      hdr_ptr = (small_pool_ptr) jpeg_get_small(cinfo, min_request + slop);
-      if (hdr_ptr != NULL)
-	break;
-      slop /= 2;
-      if (slop < MIN_SLOP)	/* give up when it gets real small */
-	out_of_memory(cinfo, 2); /* jpeg_get_small failed */
-    }
-    mem->total_space_allocated += min_request + slop;
-    /* Success, initialize the new pool header and add to end of list */
-    hdr_ptr->hdr.next = NULL;
-    hdr_ptr->hdr.bytes_used = 0;
-    hdr_ptr->hdr.bytes_left = sizeofobject + slop;
-    if (prev_hdr_ptr == NULL)	/* first pool in class? */
-      mem->small_list[pool_id] = hdr_ptr;
-    else
-      prev_hdr_ptr->hdr.next = hdr_ptr;
-  }
-
-  /* OK, allocate the object from the current pool */
-  data_ptr = (char *) (hdr_ptr + 1); /* point to first data byte in pool */
-  data_ptr += hdr_ptr->hdr.bytes_used; /* point to place for object */
-  hdr_ptr->hdr.bytes_used += sizeofobject;
-  hdr_ptr->hdr.bytes_left -= sizeofobject;
-
-  return (void *) data_ptr;
-}
-
-
-/*
- * Allocation of "large" objects.
- *
- * The external semantics of these are the same as "small" objects,
- * except that FAR pointers are used on 80x86.  However the pool
- * management heuristics are quite different.  We assume that each
- * request is large enough that it may as well be passed directly to
- * jpeg_get_large; the pool management just links everything together
- * so that we can free it all on demand.
- * Note: the major use of "large" objects is in JSAMPARRAY and JBLOCKARRAY
- * structures.  The routines that create these structures (see below)
- * deliberately bunch rows together to ensure a large request size.
- */
-
-METHODDEF void FAR *
-alloc_large (j_common_ptr cinfo, int pool_id, size_t sizeofobject)
-/* Allocate a "large" object */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  large_pool_ptr hdr_ptr;
-  size_t odd_bytes;
-
-  /* Check for unsatisfiable request (do now to ensure no overflow below) */
-  if (sizeofobject > (size_t) (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)))
-    out_of_memory(cinfo, 3);	/* request exceeds malloc's ability */
-
-  /* Round up the requested size to a multiple of SIZEOF(ALIGN_TYPE) */
-  odd_bytes = sizeofobject % SIZEOF(ALIGN_TYPE);
-  if (odd_bytes > 0)
-    sizeofobject += SIZEOF(ALIGN_TYPE) - odd_bytes;
-
-  /* Always make a new pool */
-  if (pool_id < 0 || pool_id >= JPOOL_NUMPOOLS)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-  hdr_ptr = (large_pool_ptr) jpeg_get_large(cinfo, sizeofobject +
-					    SIZEOF(large_pool_hdr));
-  if (hdr_ptr == NULL)
-    out_of_memory(cinfo, 4);	/* jpeg_get_large failed */
-  mem->total_space_allocated += sizeofobject + SIZEOF(large_pool_hdr);
-
-  /* Success, initialize the new pool header and add to list */
-  hdr_ptr->hdr.next = mem->large_list[pool_id];
-  /* We maintain space counts in each pool header for statistical purposes,
-   * even though they are not needed for allocation.
-   */
-  hdr_ptr->hdr.bytes_used = sizeofobject;
-  hdr_ptr->hdr.bytes_left = 0;
-  mem->large_list[pool_id] = hdr_ptr;
-
-  return (void FAR *) (hdr_ptr + 1); /* point to first data byte in pool */
-}
-
-
-/*
- * Creation of 2-D sample arrays.
- * The pointers are in near heap, the samples themselves in FAR heap.
- *
- * To minimize allocation overhead and to allow I/O of large contiguous
- * blocks, we allocate the sample rows in groups of as many rows as possible
- * without exceeding MAX_ALLOC_CHUNK total bytes per allocation request.
- * NB: the virtual array control routines, later in this file, know about
- * this chunking of rows.  The rowsperchunk value is left in the mem manager
- * object so that it can be saved away if this sarray is the workspace for
- * a virtual array.
- */
-
-METHODDEF JSAMPARRAY
-alloc_sarray (j_common_ptr cinfo, int pool_id,
-	      JDIMENSION samplesperrow, JDIMENSION numrows)
-/* Allocate a 2-D sample array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  JSAMPARRAY result;
-  JSAMPROW workspace;
-  JDIMENSION rowsperchunk, currow, i;
-  long ltemp;
-
-  /* Calculate max # of rows allowed in one allocation chunk */
-  ltemp = (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)) /
-	  ((long) samplesperrow * SIZEOF(JSAMPLE));
-  if (ltemp <= 0)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-  if (ltemp < (long) numrows)
-    rowsperchunk = (JDIMENSION) ltemp;
-  else
-    rowsperchunk = numrows;
-  mem->last_rowsperchunk = rowsperchunk;
-
-  /* Get space for row pointers (small object) */
-  result = (JSAMPARRAY) alloc_small(cinfo, pool_id,
-				    (size_t) (numrows * SIZEOF(JSAMPROW)));
-
-  /* Get the rows themselves (large objects) */
-  currow = 0;
-  while (currow < numrows) {
-    rowsperchunk = MIN(rowsperchunk, numrows - currow);
-    workspace = (JSAMPROW) alloc_large(cinfo, pool_id,
-	(size_t) ((size_t) rowsperchunk * (size_t) samplesperrow
-		  * SIZEOF(JSAMPLE)));
-    for (i = rowsperchunk; i > 0; i--) {
-      result[currow++] = workspace;
-      workspace += samplesperrow;
-    }
-  }
-
-  return result;
-}
-
-
-/*
- * Creation of 2-D coefficient-block arrays.
- * This is essentially the same as the code for sample arrays, above.
- */
-
-METHODDEF JBLOCKARRAY
-alloc_barray (j_common_ptr cinfo, int pool_id,
-	      JDIMENSION blocksperrow, JDIMENSION numrows)
-/* Allocate a 2-D coefficient-block array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  JBLOCKARRAY result;
-  JBLOCKROW workspace;
-  JDIMENSION rowsperchunk, currow, i;
-  long ltemp;
-
-  /* Calculate max # of rows allowed in one allocation chunk */
-  ltemp = (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)) /
-	  ((long) blocksperrow * SIZEOF(JBLOCK));
-  if (ltemp <= 0)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-  if (ltemp < (long) numrows)
-    rowsperchunk = (JDIMENSION) ltemp;
-  else
-    rowsperchunk = numrows;
-  mem->last_rowsperchunk = rowsperchunk;
-
-  /* Get space for row pointers (small object) */
-  result = (JBLOCKARRAY) alloc_small(cinfo, pool_id,
-				     (size_t) (numrows * SIZEOF(JBLOCKROW)));
-
-  /* Get the rows themselves (large objects) */
-  currow = 0;
-  while (currow < numrows) {
-    rowsperchunk = MIN(rowsperchunk, numrows - currow);
-    workspace = (JBLOCKROW) alloc_large(cinfo, pool_id,
-	(size_t) ((size_t) rowsperchunk * (size_t) blocksperrow
-		  * SIZEOF(JBLOCK)));
-    for (i = rowsperchunk; i > 0; i--) {
-      result[currow++] = workspace;
-      workspace += blocksperrow;
-    }
-  }
-
-  return result;
-}
-
-
-/*
- * About virtual array management:
- *
- * To allow machines with limited memory to handle large images, all
- * processing in the JPEG system is done a few pixel or block rows at a time.
- * The above "normal" array routines are only used to allocate strip buffers
- * (as wide as the image, but just a few rows high).
- * In some cases multiple passes must be made over the data.  In these
- * cases the virtual array routines are used.  The array is still accessed
- * a strip at a time, but the memory manager must save the whole array
- * for repeated accesses.  The intended implementation is that there is
- * a strip buffer in memory (as high as is possible given the desired memory
- * limit), plus a backing file that holds the rest of the array.
- *
- * The request_virt_array routines are told the total size of the image and
- * the unit height, which is the number of rows that will be accessed at once;
- * the in-memory buffer should be made a multiple of this height for best
- * efficiency.
- *
- * The request routines create control blocks but not the in-memory buffers.
- * That is postponed until realize_virt_arrays is called.  At that time the
- * total amount of space needed is known (approximately, anyway), so free
- * memory can be divided up fairly.
- *
- * The access_virt_array routines are responsible for making a specific strip
- * area accessible (after reading or writing the backing file, if necessary).
- * Note that the access routines are told whether the caller intends to modify
- * the accessed strip; during a read-only pass this saves having to rewrite
- * data to disk.
- *
- * The typical access pattern is one top-to-bottom pass to write the data,
- * followed by one or more read-only top-to-bottom passes.  However, other
- * access patterns may occur while reading.  For example, translation of image
- * formats that use bottom-to-top scan order will require bottom-to-top read
- * passes.  The memory manager need not support multiple write passes nor
- * funny write orders (meaning that rearranging rows must be handled while
- * reading data out of the virtual array, not while putting it in).  THIS WILL
- * PROBABLY NEED TO CHANGE ... will need multiple write passes for progressive
- * JPEG decoding.
- *
- * In current usage, the access requests are always for nonoverlapping strips;
- * that is, successive access start_row numbers always differ by exactly the
- * unitheight.  This allows fairly simple buffer dump/reload logic if the
- * in-memory buffer is made a multiple of the unitheight.  The code below
- * would work with overlapping access requests, but not very efficiently.
- */
-
-
-METHODDEF jvirt_sarray_ptr
-request_virt_sarray (j_common_ptr cinfo, int pool_id,
-		     JDIMENSION samplesperrow, JDIMENSION numrows,
-		     JDIMENSION unitheight)
-/* Request a virtual 2-D sample array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  jvirt_sarray_ptr result;
-
-  /* Only IMAGE-lifetime virtual arrays are currently supported */
-  if (pool_id != JPOOL_IMAGE)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-  /* Round array size up to a multiple of unitheight */
-  numrows = (JDIMENSION) jround_up((long) numrows, (long) unitheight);
-
-  /* get control block */
-  result = (jvirt_sarray_ptr) alloc_small(cinfo, pool_id,
-					  SIZEOF(struct jvirt_sarray_control));
-
-  result->mem_buffer = NULL;	/* marks array not yet realized */
-  result->rows_in_array = numrows;
-  result->samplesperrow = samplesperrow;
-  result->unitheight = unitheight;
-  result->b_s_open = FALSE;	/* no associated backing-store object */
-  result->next = mem->virt_sarray_list; /* add to list of virtual arrays */
-  mem->virt_sarray_list = result;
-
-  return result;
-}
-
-
-METHODDEF jvirt_barray_ptr
-request_virt_barray (j_common_ptr cinfo, int pool_id,
-		     JDIMENSION blocksperrow, JDIMENSION numrows,
-		     JDIMENSION unitheight)
-/* Request a virtual 2-D coefficient-block array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  jvirt_barray_ptr result;
-
-  /* Only IMAGE-lifetime virtual arrays are currently supported */
-  if (pool_id != JPOOL_IMAGE)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-  /* Round array size up to a multiple of unitheight */
-  numrows = (JDIMENSION) jround_up((long) numrows, (long) unitheight);
-
-  /* get control block */
-  result = (jvirt_barray_ptr) alloc_small(cinfo, pool_id,
-					  SIZEOF(struct jvirt_barray_control));
-
-  result->mem_buffer = NULL;	/* marks array not yet realized */
-  result->rows_in_array = numrows;
-  result->blocksperrow = blocksperrow;
-  result->unitheight = unitheight;
-  result->b_s_open = FALSE;	/* no associated backing-store object */
-  result->next = mem->virt_barray_list; /* add to list of virtual arrays */
-  mem->virt_barray_list = result;
-
-  return result;
-}
-
-
-METHODDEF void
-realize_virt_arrays (j_common_ptr cinfo)
-/* Allocate the in-memory buffers for any unrealized virtual arrays */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  long space_per_unitheight, maximum_space, avail_mem;
-  long unitheights, max_unitheights;
-  jvirt_sarray_ptr sptr;
-  jvirt_barray_ptr bptr;
-
-  /* Compute the minimum space needed (unitheight rows in each buffer)
-   * and the maximum space needed (full image height in each buffer).
-   * These may be of use to the system-dependent jpeg_mem_available routine.
-   */
-  space_per_unitheight = 0;
-  maximum_space = 0;
-  for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {
-    if (sptr->mem_buffer == NULL) { /* if not realized yet */
-      space_per_unitheight += (long) sptr->unitheight *
-			      (long) sptr->samplesperrow * SIZEOF(JSAMPLE);
-      maximum_space += (long) sptr->rows_in_array *
-		       (long) sptr->samplesperrow * SIZEOF(JSAMPLE);
-    }
-  }
-  for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {
-    if (bptr->mem_buffer == NULL) { /* if not realized yet */
-      space_per_unitheight += (long) bptr->unitheight *
-			      (long) bptr->blocksperrow * SIZEOF(JBLOCK);
-      maximum_space += (long) bptr->rows_in_array *
-		       (long) bptr->blocksperrow * SIZEOF(JBLOCK);
-    }
-  }
-
-  if (space_per_unitheight <= 0)
-    return;			/* no unrealized arrays, no work */
-
-  /* Determine amount of memory to actually use; this is system-dependent. */
-  avail_mem = jpeg_mem_available(cinfo, space_per_unitheight, maximum_space,
-				 mem->total_space_allocated);
-
-  /* If the maximum space needed is available, make all the buffers full
-   * height; otherwise parcel it out with the same number of unitheights
-   * in each buffer.
-   */
-  if (avail_mem >= maximum_space)
-    max_unitheights = 1000000000L;
-  else {
-    max_unitheights = avail_mem / space_per_unitheight;
-    /* If there doesn't seem to be enough space, try to get the minimum
-     * anyway.  This allows a "stub" implementation of jpeg_mem_available().
-     */
-    if (max_unitheights <= 0)
-      max_unitheights = 1;
-  }
-
-  /* Allocate the in-memory buffers and initialize backing store as needed. */
-
-  for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {
-    if (sptr->mem_buffer == NULL) { /* if not realized yet */
-      unitheights = ((long) sptr->rows_in_array - 1L) / sptr->unitheight + 1L;
-      if (unitheights <= max_unitheights) {
-	/* This buffer fits in memory */
-	sptr->rows_in_mem = sptr->rows_in_array;
-      } else {
-	/* It doesn't fit in memory, create backing store. */
-	sptr->rows_in_mem = (JDIMENSION) (max_unitheights * sptr->unitheight);
-	jpeg_open_backing_store(cinfo, & sptr->b_s_info,
-				(long) sptr->rows_in_array *
-				(long) sptr->samplesperrow *
-				(long) SIZEOF(JSAMPLE));
-	sptr->b_s_open = TRUE;
-      }
-      sptr->mem_buffer = alloc_sarray(cinfo, JPOOL_IMAGE,
-				      sptr->samplesperrow, sptr->rows_in_mem);
-      sptr->rowsperchunk = mem->last_rowsperchunk;
-      sptr->cur_start_row = 0;
-      sptr->dirty = FALSE;
-    }
-  }
-
-  for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {
-    if (bptr->mem_buffer == NULL) { /* if not realized yet */
-      unitheights = ((long) bptr->rows_in_array - 1L) / bptr->unitheight + 1L;
-      if (unitheights <= max_unitheights) {
-	/* This buffer fits in memory */
-	bptr->rows_in_mem = bptr->rows_in_array;
-      } else {
-	/* It doesn't fit in memory, create backing store. */
-	bptr->rows_in_mem = (JDIMENSION) (max_unitheights * bptr->unitheight);
-	jpeg_open_backing_store(cinfo, & bptr->b_s_info,
-				(long) bptr->rows_in_array *
-				(long) bptr->blocksperrow *
-				(long) SIZEOF(JBLOCK));
-	bptr->b_s_open = TRUE;
-      }
-      bptr->mem_buffer = alloc_barray(cinfo, JPOOL_IMAGE,
-				      bptr->blocksperrow, bptr->rows_in_mem);
-      bptr->rowsperchunk = mem->last_rowsperchunk;
-      bptr->cur_start_row = 0;
-      bptr->dirty = FALSE;
-    }
-  }
-}
-
-
-LOCAL void
-do_sarray_io (j_common_ptr cinfo, jvirt_sarray_ptr ptr, boolean writing)
-/* Do backing store read or write of a virtual sample array */
-{
-  long bytesperrow, file_offset, byte_count, rows, i;
-
-  bytesperrow = (long) ptr->samplesperrow * SIZEOF(JSAMPLE);
-  file_offset = ptr->cur_start_row * bytesperrow;
-  /* Loop to read or write each allocation chunk in mem_buffer */
-  for (i = 0; i < (long) ptr->rows_in_mem; i += ptr->rowsperchunk) {
-    /* One chunk, but check for short chunk at end of buffer */
-    rows = MIN((long) ptr->rowsperchunk, (long) ptr->rows_in_mem - i);
-    /* Transfer no more than fits in file */
-    rows = MIN(rows, (long) ptr->rows_in_array -
-		    ((long) ptr->cur_start_row + i));
-    if (rows <= 0)		/* this chunk might be past end of file! */
-      break;
-    byte_count = rows * bytesperrow;
-    if (writing)
-      (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,
-					    (void FAR *) ptr->mem_buffer[i],
-					    file_offset, byte_count);
-    else
-      (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,
-					   (void FAR *) ptr->mem_buffer[i],
-					   file_offset, byte_count);
-    file_offset += byte_count;
-  }
-}
-
-
-LOCAL void
-do_barray_io (j_common_ptr cinfo, jvirt_barray_ptr ptr, boolean writing)
-/* Do backing store read or write of a virtual coefficient-block array */
-{
-  long bytesperrow, file_offset, byte_count, rows, i;
-
-  bytesperrow = (long) ptr->blocksperrow * SIZEOF(JBLOCK);
-  file_offset = ptr->cur_start_row * bytesperrow;
-  /* Loop to read or write each allocation chunk in mem_buffer */
-  for (i = 0; i < (long) ptr->rows_in_mem; i += ptr->rowsperchunk) {
-    /* One chunk, but check for short chunk at end of buffer */
-    rows = MIN((long) ptr->rowsperchunk, (long) ptr->rows_in_mem - i);
-    /* Transfer no more than fits in file */
-    rows = MIN(rows, (long) ptr->rows_in_array -
-		    ((long) ptr->cur_start_row + i));
-    if (rows <= 0)		/* this chunk might be past end of file! */
-      break;
-    byte_count = rows * bytesperrow;
-    if (writing)
-      (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,
-					    (void FAR *) ptr->mem_buffer[i],
-					    file_offset, byte_count);
-    else
-      (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,
-					   (void FAR *) ptr->mem_buffer[i],
-					   file_offset, byte_count);
-    file_offset += byte_count;
-  }
-}
-
-
-METHODDEF JSAMPARRAY
-access_virt_sarray (j_common_ptr cinfo, jvirt_sarray_ptr ptr,
-		    JDIMENSION start_row, boolean writable)
-/* Access the part of a virtual sample array starting at start_row */
-/* and extending for ptr->unitheight rows.  writable is true if  */
-/* caller intends to modify the accessed area. */
-{
-  /* debugging check */
-  if (start_row >= ptr->rows_in_array || ptr->mem_buffer == NULL)
-    ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-
-  /* Make the desired part of the virtual array accessible */
-  if (start_row < ptr->cur_start_row ||
-      start_row+ptr->unitheight > ptr->cur_start_row+ptr->rows_in_mem) {
-    if (! ptr->b_s_open)
-      ERREXIT(cinfo, JERR_VIRTUAL_BUG);
-    /* Flush old buffer contents if necessary */
-    if (ptr->dirty) {
-      do_sarray_io(cinfo, ptr, TRUE);
-      ptr->dirty = FALSE;
-    }
-    /* Decide what part of virtual array to access.
-     * Algorithm: if target address > current window, assume forward scan,
-     * load starting at target address.  If target address < current window,
-     * assume backward scan, load so that target area is top of window.
-     * Note that when switching from forward write to forward read, will have
-     * start_row = 0, so the limiting case applies and we load from 0 anyway.
-     */
-    if (start_row > ptr->cur_start_row) {
-      ptr->cur_start_row = start_row;
-    } else {
-      /* use long arithmetic here to avoid overflow & unsigned problems */
-      long ltemp;
-
-      ltemp = (long) start_row + (long) ptr->unitheight -
-	      (long) ptr->rows_in_mem;
-      if (ltemp < 0)
-	ltemp = 0;		/* don't fall off front end of file */
-      ptr->cur_start_row = (JDIMENSION) ltemp;
-    }
-    /* If reading, read in the selected part of the array. 
-     * If we are writing, we need not pre-read the selected portion,
-     * since the access sequence constraints ensure it would be garbage.
-     */
-    if (! writable) {
-      do_sarray_io(cinfo, ptr, FALSE);
-    }
-  }
-  /* Flag the buffer dirty if caller will write in it */
-  if (writable)
-    ptr->dirty = TRUE;
-  /* Return address of proper part of the buffer */
-  return ptr->mem_buffer + (start_row - ptr->cur_start_row);
-}
-
-
-METHODDEF JBLOCKARRAY
-access_virt_barray (j_common_ptr cinfo, jvirt_barray_ptr ptr,
-		    JDIMENSION start_row, boolean writable)
-/* Access the part of a virtual block array starting at start_row */
-/* and extending for ptr->unitheight rows.  writable is true if  */
-/* caller intends to modify the accessed area. */
-{
-  /* debugging check */
-  if (start_row >= ptr->rows_in_array || ptr->mem_buffer == NULL)
-    ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-
-  /* Make the desired part of the virtual array accessible */
-  if (start_row < ptr->cur_start_row ||
-      start_row+ptr->unitheight > ptr->cur_start_row+ptr->rows_in_mem) {
-    if (! ptr->b_s_open)
-      ERREXIT(cinfo, JERR_VIRTUAL_BUG);
-    /* Flush old buffer contents if necessary */
-    if (ptr->dirty) {
-      do_barray_io(cinfo, ptr, TRUE);
-      ptr->dirty = FALSE;
-    }
-    /* Decide what part of virtual array to access.
-     * Algorithm: if target address > current window, assume forward scan,
-     * load starting at target address.  If target address < current window,
-     * assume backward scan, load so that target area is top of window.
-     * Note that when switching from forward write to forward read, will have
-     * start_row = 0, so the limiting case applies and we load from 0 anyway.
-     */
-    if (start_row > ptr->cur_start_row) {
-      ptr->cur_start_row = start_row;
-    } else {
-      /* use long arithmetic here to avoid overflow & unsigned problems */
-      long ltemp;
-
-      ltemp = (long) start_row + (long) ptr->unitheight -
-	      (long) ptr->rows_in_mem;
-      if (ltemp < 0)
-	ltemp = 0;		/* don't fall off front end of file */
-      ptr->cur_start_row = (JDIMENSION) ltemp;
-    }
-    /* If reading, read in the selected part of the array. 
-     * If we are writing, we need not pre-read the selected portion,
-     * since the access sequence constraints ensure it would be garbage.
-     */
-    if (! writable) {
-      do_barray_io(cinfo, ptr, FALSE);
-    }
-  }
-  /* Flag the buffer dirty if caller will write in it */
-  if (writable)
-    ptr->dirty = TRUE;
-  /* Return address of proper part of the buffer */
-  return ptr->mem_buffer + (start_row - ptr->cur_start_row);
-}
-
-
-/*
- * Release all objects belonging to a specified pool.
- */
-
-METHODDEF void
-free_pool (j_common_ptr cinfo, int pool_id)
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  small_pool_ptr shdr_ptr;
-  large_pool_ptr lhdr_ptr;
-  size_t space_freed;
-
-  if (pool_id < 0 || pool_id >= JPOOL_NUMPOOLS)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-#ifdef MEM_STATS
-  if (cinfo->err->trace_level > 1)
-    print_mem_stats(cinfo, pool_id); /* print pool's memory usage statistics */
-#endif
-
-  /* If freeing IMAGE pool, close any virtual arrays first */
-  if (pool_id == JPOOL_IMAGE) {
-    jvirt_sarray_ptr sptr;
-    jvirt_barray_ptr bptr;
-
-    for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {
-      if (sptr->b_s_open) {	/* there may be no backing store */
-	sptr->b_s_open = FALSE;	/* prevent recursive close if error */
-	(*sptr->b_s_info.close_backing_store) (cinfo, & sptr->b_s_info);
-      }
-    }
-    mem->virt_sarray_list = NULL;
-    for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {
-      if (bptr->b_s_open) {	/* there may be no backing store */
-	bptr->b_s_open = FALSE;	/* prevent recursive close if error */
-	(*bptr->b_s_info.close_backing_store) (cinfo, & bptr->b_s_info);
-      }
-    }
-    mem->virt_barray_list = NULL;
-  }
-
-  /* Release large objects */
-  lhdr_ptr = mem->large_list[pool_id];
-  mem->large_list[pool_id] = NULL;
-
-  while (lhdr_ptr != NULL) {
-    large_pool_ptr next_lhdr_ptr = lhdr_ptr->hdr.next;
-    space_freed = lhdr_ptr->hdr.bytes_used +
-		  lhdr_ptr->hdr.bytes_left +
-		  SIZEOF(large_pool_hdr);
-    jpeg_free_large(cinfo, (void FAR *) lhdr_ptr, space_freed);
-    mem->total_space_allocated -= space_freed;
-    lhdr_ptr = next_lhdr_ptr;
-  }
-
-  /* Release small objects */
-  shdr_ptr = mem->small_list[pool_id];
-  mem->small_list[pool_id] = NULL;
-
-  while (shdr_ptr != NULL) {
-    small_pool_ptr next_shdr_ptr = shdr_ptr->hdr.next;
-    space_freed = shdr_ptr->hdr.bytes_used +
-		  shdr_ptr->hdr.bytes_left +
-		  SIZEOF(small_pool_hdr);
-    jpeg_free_small(cinfo, (void *) shdr_ptr, space_freed);
-    mem->total_space_allocated -= space_freed;
-    shdr_ptr = next_shdr_ptr;
-  }
-}
-
-
-/*
- * Close up shop entirely.
- * Note that this cannot be called unless cinfo->mem is non-NULL.
- */
-
-METHODDEF void
-self_destruct (j_common_ptr cinfo)
-{
-  int pool;
-
-  /* Close all backing store, release all memory.
-   * Releasing pools in reverse order might help avoid fragmentation
-   * with some (brain-damaged) malloc libraries.
-   */
-  for (pool = JPOOL_NUMPOOLS-1; pool >= JPOOL_PERMANENT; pool--) {
-    free_pool(cinfo, pool);
-  }
-
-  /* Release the memory manager control block too. */
-  jpeg_free_small(cinfo, (void *) cinfo->mem, SIZEOF(my_memory_mgr));
-  cinfo->mem = NULL;		/* ensures I will be called only once */
-
-  jpeg_mem_term(cinfo);		/* system-dependent cleanup */
-}
-
-
-/*
- * Memory manager initialization.
- * When this is called, only the error manager pointer is valid in cinfo!
- */
-
-GLOBAL void
-jinit_memory_mgr (j_common_ptr cinfo)
-{
-  my_mem_ptr mem;
-  long max_to_use;
-  int pool;
-  size_t test_mac;
-
-  cinfo->mem = NULL;		/* for safety if init fails */
-
-  /* Check for configuration errors.
-   * SIZEOF(ALIGN_TYPE) should be a power of 2; otherwise, it probably
-   * doesn't reflect any real hardware alignment requirement.
-   * The test is a little tricky: for X>0, X and X-1 have no one-bits
-   * in common if and only if X is a power of 2, ie has only one one-bit.
-   * Some compilers may give an "unreachable code" warning here; ignore it.
-   */
-  if ((SIZEOF(ALIGN_TYPE) & (SIZEOF(ALIGN_TYPE)-1)) != 0)
-    ERREXIT(cinfo, JERR_BAD_ALIGN_TYPE);
-  /* MAX_ALLOC_CHUNK must be representable as type size_t, and must be
-   * a multiple of SIZEOF(ALIGN_TYPE).
-   * Again, an "unreachable code" warning may be ignored here.
-   * But a "constant too large" warning means you need to fix MAX_ALLOC_CHUNK.
-   */
-  test_mac = (size_t) MAX_ALLOC_CHUNK;
-  if ((long) test_mac != MAX_ALLOC_CHUNK ||
-      (MAX_ALLOC_CHUNK % SIZEOF(ALIGN_TYPE)) != 0)
-    ERREXIT(cinfo, JERR_BAD_ALLOC_CHUNK);
-
-  max_to_use = jpeg_mem_init(cinfo); /* system-dependent initialization */
-
-  /* Attempt to allocate memory manager's control block */
-  mem = (my_mem_ptr) jpeg_get_small(cinfo, SIZEOF(my_memory_mgr));
-
-  if (mem == NULL) {
-    jpeg_mem_term(cinfo);	/* system-dependent cleanup */
-    ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 0);
-  }
-
-  /* OK, fill in the method pointers */
-  mem->pub.alloc_small = alloc_small;
-  mem->pub.alloc_large = alloc_large;
-  mem->pub.alloc_sarray = alloc_sarray;
-  mem->pub.alloc_barray = alloc_barray;
-  mem->pub.request_virt_sarray = request_virt_sarray;
-  mem->pub.request_virt_barray = request_virt_barray;
-  mem->pub.realize_virt_arrays = realize_virt_arrays;
-  mem->pub.access_virt_sarray = access_virt_sarray;
-  mem->pub.access_virt_barray = access_virt_barray;
-  mem->pub.free_pool = free_pool;
-  mem->pub.self_destruct = self_destruct;
-
-  /* Initialize working state */
-  mem->pub.max_memory_to_use = max_to_use;
-
-  for (pool = JPOOL_NUMPOOLS-1; pool >= JPOOL_PERMANENT; pool--) {
-    mem->small_list[pool] = NULL;
-    mem->large_list[pool] = NULL;
-  }
-  mem->virt_sarray_list = NULL;
-  mem->virt_barray_list = NULL;
-
-  mem->total_space_allocated = SIZEOF(my_memory_mgr);
-
-  /* Declare ourselves open for business */
-  cinfo->mem = & mem->pub;
-
-  /* Check for an environment variable JPEGMEM; if found, override the
-   * default max_memory setting from jpeg_mem_init.  Note that the
-   * surrounding application may again override this value.
-   * If your system doesn't support getenv(), define NO_GETENV to disable
-   * this feature.
-   */
-#ifndef NO_GETENV
-  { char * memenv;
-
-    if ((memenv = getenv("JPEGMEM")) != NULL) {
-      char ch = 'x';
-
-      if (sscanf(memenv, "%ld%c", &max_to_use, &ch) > 0) {
-	if (ch == 'm' || ch == 'M')
-	  max_to_use *= 1000L;
-	mem->pub.max_memory_to_use = max_to_use * 1000L;
-      }
-    }
-  }
-#endif
-
-}
diff --git a/jpeg/jmemnobs.c b/jpeg/jmemnobs.c
deleted file mode 100644
index d758f4000955106efaffaa5ef3a8508e4d2e4595..0000000000000000000000000000000000000000
--- a/jpeg/jmemnobs.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * jmemnobs.c
- *
- * Copyright (C) 1992-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file provides a really simple implementation of the system-
- * dependent portion of the JPEG memory manager.  This implementation
- * assumes that no backing-store files are needed: all required space
- * can be obtained from malloc().
- * This is very portable in the sense that it'll compile on almost anything,
- * but you'd better have lots of main memory (or virtual memory) if you want
- * to process big images.
- * Note that the max_memory_to_use option is ignored by this implementation.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jmemsys.h"		/* import the system-dependent declarations */
-
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare malloc(),free() */
-extern void * malloc JPP((size_t size));
-extern void free JPP((void *ptr));
-#endif
-
-
-/*
- * Memory allocation and freeing are controlled by the regular library
- * routines malloc() and free().
- */
-
-GLOBAL void *
-jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void *) malloc(sizeofobject);
-}
-
-GLOBAL void
-jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * "Large" objects are treated the same as "small" ones.
- * NB: although we include FAR keywords in the routine declarations,
- * this file won't actually work in 80x86 small/medium model; at least,
- * you probably won't be able to process useful-size images in only 64KB.
- */
-
-GLOBAL void FAR *
-jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void FAR *) malloc(sizeofobject);
-}
-
-GLOBAL void
-jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * This routine computes the total memory space available for allocation.
- * Here we always say, "we got all you want bud!"
- */
-
-GLOBAL long
-jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
-		    long max_bytes_needed, long already_allocated)
-{
-  return max_bytes_needed;
-}
-
-
-/*
- * Backing store (temporary file) management.
- * Since jpeg_mem_available always promised the moon,
- * this should never be called and we can just error out.
- */
-
-GLOBAL void
-jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-			 long total_bytes_needed)
-{
-  ERREXIT(cinfo, JERR_NO_BACKING_STORE);
-}
-
-
-/*
- * These routines take care of any system-dependent initialization and
- * cleanup required.  Here, there isn't any.
- */
-
-GLOBAL long
-jpeg_mem_init (j_common_ptr cinfo)
-{
-  return 0;			/* just set max_memory_to_use to 0 */
-}
-
-GLOBAL void
-jpeg_mem_term (j_common_ptr cinfo)
-{
-  /* no work */
-}
diff --git a/jpeg/jmemsys.h b/jpeg/jmemsys.h
deleted file mode 100644
index 033d29a79cba0126098411edb0c2cb315d78053d..0000000000000000000000000000000000000000
--- a/jpeg/jmemsys.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * jmemsys.h
- *
- * Copyright (C) 1992-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This include file defines the interface between the system-independent
- * and system-dependent portions of the JPEG memory manager.  No other
- * modules need include it.  (The system-independent portion is jmemmgr.c;
- * there are several different versions of the system-dependent portion.)
- *
- * This file works as-is for the system-dependent memory managers supplied
- * in the IJG distribution.  You may need to modify it if you write a
- * custom memory manager.  If system-dependent changes are needed in
- * this file, the best method is to #ifdef them based on a configuration
- * symbol supplied in jconfig.h, as we have done with USE_MSDOS_MEMMGR.
- */
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_get_small		jGetSmall
-#define jpeg_free_small		jFreeSmall
-#define jpeg_get_large		jGetLarge
-#define jpeg_free_large		jFreeLarge
-#define jpeg_mem_available	jMemAvail
-#define jpeg_open_backing_store	jOpenBackStore
-#define jpeg_mem_init		jMemInit
-#define jpeg_mem_term		jMemTerm
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/*
- * These two functions are used to allocate and release small chunks of
- * memory.  (Typically the total amount requested through jpeg_get_small is
- * no more than 20K or so; this will be requested in chunks of a few K each.)
- * Behavior should be the same as for the standard library functions malloc
- * and free; in particular, jpeg_get_small must return NULL on failure.
- * On most systems, these ARE malloc and free.  jpeg_free_small is passed the
- * size of the object being freed, just in case it's needed.
- * On an 80x86 machine using small-data memory model, these manage near heap.
- */
-
-EXTERN void * jpeg_get_small JPP((j_common_ptr cinfo, size_t sizeofobject));
-EXTERN void jpeg_free_small JPP((j_common_ptr cinfo, void * object,
-				 size_t sizeofobject));
-
-/*
- * These two functions are used to allocate and release large chunks of
- * memory (up to the total free space designated by jpeg_mem_available).
- * The interface is the same as above, except that on an 80x86 machine,
- * far pointers are used.  On most other machines these are identical to
- * the jpeg_get/free_small routines; but we keep them separate anyway,
- * in case a different allocation strategy is desirable for large chunks.
- */
-
-EXTERN void FAR * jpeg_get_large JPP((j_common_ptr cinfo,size_t sizeofobject));
-EXTERN void jpeg_free_large JPP((j_common_ptr cinfo, void FAR * object,
-				 size_t sizeofobject));
-
-/*
- * The macro MAX_ALLOC_CHUNK designates the maximum number of bytes that may
- * be requested in a single call to jpeg_get_large (and jpeg_get_small for that
- * matter, but that case should never come into play).  This macro is needed
- * to model the 64Kb-segment-size limit of far addressing on 80x86 machines.
- * On those machines, we expect that jconfig.h will provide a proper value.
- * On machines with 32-bit flat address spaces, any large constant may be used.
- *
- * NB: jmemmgr.c expects that MAX_ALLOC_CHUNK will be representable as type
- * size_t and will be a multiple of sizeof(align_type).
- */
-
-#ifndef MAX_ALLOC_CHUNK		/* may be overridden in jconfig.h */
-#define MAX_ALLOC_CHUNK  1000000000L
-#endif
-
-/*
- * This routine computes the total space still available for allocation by
- * jpeg_get_large.  If more space than this is needed, backing store will be
- * used.  NOTE: any memory already allocated must not be counted.
- *
- * There is a minimum space requirement, corresponding to the minimum
- * feasible buffer sizes; jmemmgr.c will request that much space even if
- * jpeg_mem_available returns zero.  The maximum space needed, enough to hold
- * all working storage in memory, is also passed in case it is useful.
- * Finally, the total space already allocated is passed.  If no better
- * method is available, cinfo->mem->max_memory_to_use - already_allocated
- * is often a suitable calculation.
- *
- * It is OK for jpeg_mem_available to underestimate the space available
- * (that'll just lead to more backing-store access than is really necessary).
- * However, an overestimate will lead to failure.  Hence it's wise to subtract
- * a slop factor from the true available space.  5% should be enough.
- *
- * On machines with lots of virtual memory, any large constant may be returned.
- * Conversely, zero may be returned to always use the minimum amount of memory.
- */
-
-EXTERN long jpeg_mem_available JPP((j_common_ptr cinfo,
-				    long min_bytes_needed,
-				    long max_bytes_needed,
-				    long already_allocated));
-
-
-/*
- * This structure holds whatever state is needed to access a single
- * backing-store object.  The read/write/close method pointers are called
- * by jmemmgr.c to manipulate the backing-store object; all other fields
- * are private to the system-dependent backing store routines.
- */
-
-#define TEMP_NAME_LENGTH   64	/* max length of a temporary file's name */
-
-#ifdef USE_MSDOS_MEMMGR		/* DOS-specific junk */
-
-typedef unsigned short XMSH;	/* type of extended-memory handles */
-typedef unsigned short EMSH;	/* type of expanded-memory handles */
-
-typedef union {
-  short file_handle;		/* DOS file handle if it's a temp file */
-  XMSH xms_handle;		/* handle if it's a chunk of XMS */
-  EMSH ems_handle;		/* handle if it's a chunk of EMS */
-} handle_union;
-
-#endif /* USE_MSDOS_MEMMGR */
-
-typedef struct backing_store_struct * backing_store_ptr;
-
-typedef struct backing_store_struct {
-  /* Methods for reading/writing/closing this backing-store object */
-  JMETHOD(void, read_backing_store, (j_common_ptr cinfo,
-				     backing_store_ptr info,
-				     void FAR * buffer_address,
-				     long file_offset, long byte_count));
-  JMETHOD(void, write_backing_store, (j_common_ptr cinfo,
-				      backing_store_ptr info,
-				      void FAR * buffer_address,
-				      long file_offset, long byte_count));
-  JMETHOD(void, close_backing_store, (j_common_ptr cinfo,
-				      backing_store_ptr info));
-
-  /* Private fields for system-dependent backing-store management */
-#ifdef USE_MSDOS_MEMMGR
-  /* For the MS-DOS manager (jmemdos.c), we need: */
-  handle_union handle;		/* reference to backing-store storage object */
-  char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
-#else
-  /* For a typical implementation with temp files, we need: */
-  FILE * temp_file;		/* stdio reference to temp file */
-  char temp_name[TEMP_NAME_LENGTH]; /* name of temp file */
-#endif
-} backing_store_info;
-
-/*
- * Initial opening of a backing-store object.  This must fill in the
- * read/write/close pointers in the object.  The read/write routines
- * may take an error exit if the specified maximum file size is exceeded.
- * (If jpeg_mem_available always returns a large value, this routine can
- * just take an error exit.)
- */
-
-EXTERN void jpeg_open_backing_store JPP((j_common_ptr cinfo,
-					 backing_store_ptr info,
-					 long total_bytes_needed));
-
-
-/*
- * These routines take care of any system-dependent initialization and
- * cleanup required.  jpeg_mem_init will be called before anything is
- * allocated (and, therefore, nothing in cinfo is of use except the error
- * manager pointer).  It should return a suitable default value for
- * max_memory_to_use; this may subsequently be overridden by the surrounding
- * application.  (Note that max_memory_to_use is only important if
- * jpeg_mem_available chooses to consult it ... no one else will.)
- * jpeg_mem_term may assume that all requested memory has been freed and that
- * all opened backing-store objects have been closed.
- */
-
-EXTERN long jpeg_mem_init JPP((j_common_ptr cinfo));
-EXTERN void jpeg_mem_term JPP((j_common_ptr cinfo));
diff --git a/jpeg/jmorecfg.h b/jpeg/jmorecfg.h
deleted file mode 100644
index b3d2baa184b4b22320305a828feed4e35fbf3cec..0000000000000000000000000000000000000000
--- a/jpeg/jmorecfg.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * jmorecfg.h
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains additional configuration options that customize the
- * JPEG software for special applications or support machine-dependent
- * optimizations.  Most users will not need to touch this file.
- */
-
-
-/*
- * Define BITS_IN_JSAMPLE as either
- *   8   for 8-bit sample values (the usual setting)
- *   12  for 12-bit sample values
- * Only 8 and 12 are legal data precisions for lossy JPEG according to the
- * JPEG standard, and the IJG code does not support anything else!
- * We do not support run-time selection of data precision, sorry.
- */
-
-#define BITS_IN_JSAMPLE  8	/* use 8 or 12 */
-
-
-/*
- * Maximum number of components (color channels) allowed in JPEG image.
- * To meet the letter of the JPEG spec, set this to 255.  However, darn
- * few applications need more than 4 channels (maybe 5 for CMYK + alpha
- * mask).  We recommend 10 as a reasonable compromise; use 4 if you are
- * really short on memory.  (Each allowed component costs a hundred or so
- * bytes of storage, whether actually used in an image or not.)
- */
-
-#define MAX_COMPONENTS  10	/* maximum number of image components */
-
-
-/*
- * Basic data types.
- * You may need to change these if you have a machine with unusual data
- * type sizes; for example, "char" not 8 bits, "short" not 16 bits,
- * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits,
- * but it had better be at least 16.
- */
-
-/* Representation of a single sample (pixel element value).
- * We frequently allocate large arrays of these, so it's important to keep
- * them small.  But if you have memory to burn and access to char or short
- * arrays is very slow on your hardware, you might want to change these.
- */
-
-#if BITS_IN_JSAMPLE == 8
-/* JSAMPLE should be the smallest type that will hold the values 0..255.
- * You can use a signed char by having GETJSAMPLE mask it with 0xFF.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JSAMPLE;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJSAMPLE(value)  ((int) (value))
-#else
-#define GETJSAMPLE(value)  ((int) (value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-#define MAXJSAMPLE	255
-#define CENTERJSAMPLE	128
-
-#endif /* BITS_IN_JSAMPLE == 8 */
-
-
-#if BITS_IN_JSAMPLE == 12
-/* JSAMPLE should be the smallest type that will hold the values 0..4095.
- * On nearly all machines "short" will do nicely.
- */
-
-typedef short JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#define MAXJSAMPLE	4095
-#define CENTERJSAMPLE	2048
-
-#endif /* BITS_IN_JSAMPLE == 12 */
-
-
-/* Representation of a DCT frequency coefficient.
- * This should be a signed value of at least 16 bits; "short" is usually OK.
- * Again, we allocate large arrays of these, but you can change to int
- * if you have memory to burn and "short" is really slow.
- */
-
-typedef short JCOEF;
-
-
-/* Compressed datastreams are represented as arrays of JOCTET.
- * These must be EXACTLY 8 bits wide, at least once they are written to
- * external storage.  Note that when using the stdio data source/destination
- * managers, this is also the data type passed to fread/fwrite.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JOCTET;
-#define GETJOCTET(value)  (value)
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JOCTET;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJOCTET(value)  (value)
-#else
-#define GETJOCTET(value)  ((value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-/* These typedefs are used for various table entries and so forth.
- * They must be at least as wide as specified; but making them too big
- * won't cost a huge amount of memory, so we don't provide special
- * extraction code like we did for JSAMPLE.  (In other words, these
- * typedefs live at a different point on the speed/space tradeoff curve.)
- */
-
-/* UINT8 must hold at least the values 0..255. */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char UINT8;
-#else /* not HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char UINT8;
-#else /* not CHAR_IS_UNSIGNED */
-typedef short UINT8;
-#endif /* CHAR_IS_UNSIGNED */
-#endif /* HAVE_UNSIGNED_CHAR */
-
-/* UINT16 must hold at least the values 0..65535. */
-
-#ifdef HAVE_UNSIGNED_SHORT
-typedef unsigned short UINT16;
-#else /* not HAVE_UNSIGNED_SHORT */
-typedef unsigned int UINT16;
-#endif /* HAVE_UNSIGNED_SHORT */
-
-/* INT16 must hold at least the values -32768..32767. */
-
-#ifndef XMD_H			/* X11/xmd.h correctly defines INT16 */
-typedef short INT16;
-#endif
-
-/* INT32 must hold at least signed 32-bit values. */
-
-#ifndef WIN32//geuz
-#ifndef XMD_H			/* X11/xmd.h correctly defines INT32 */
-typedef long INT32;
-#endif
-#endif//geuz
-
-/* Datatype used for image dimensions.  The JPEG standard only supports
- * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore
- * "unsigned int" is sufficient on all machines.  However, if you need to
- * handle larger images and you don't mind deviating from the spec, you
- * can change this datatype.
- */
-
-typedef unsigned int JDIMENSION;
-
-#define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */
-
-
-/* These defines are used in all function definitions and extern declarations.
- * You could modify them if you need to change function linkage conventions.
- * Another application is to make all functions global for use with debuggers
- * or code profilers that require it.
- */
-
-#define METHODDEF static	/* a function called through method pointers */
-#define LOCAL	  static	/* a function used only in its module */
-#define GLOBAL			/* a function referenced thru EXTERNs */
-#define EXTERN	  extern	/* a reference to a GLOBAL function */
-
-
-/* Here is the pseudo-keyword for declaring pointers that must be "far"
- * on 80x86 machines.  Most of the specialized coding for 80x86 is handled
- * by just saying "FAR *" where such a pointer is needed.  In a few places
- * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
- */
-
-#ifdef NEED_FAR_POINTERS
-#define FAR  far
-#else
-#define FAR
-#endif
-
-
-/*
- * On a few systems, type boolean and/or its values FALSE, TRUE may appear
- * in standard header files.  Or you may have conflicts with application-
- * specific header files that you want to include together with these files.
- * Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
- */
-
-//#ifndef WIN32 //geuz
-#ifndef HAVE_BOOLEAN
-typedef int boolean;
-#endif
-//#endif //geuz
-
-#ifndef FALSE			/* in case these macros already exist */
-#define FALSE	0		/* values of boolean */
-#endif
-
-#ifndef TRUE
-#define TRUE	1
-#endif
-
-
-/*
- * The remaining options affect code selection within the JPEG library,
- * but they don't need to be visible to most applications using the library.
- * To minimize application namespace pollution, the symbols won't be
- * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
- */
-
-#ifdef JPEG_INTERNALS
-#define JPEG_INTERNAL_OPTIONS
-#endif
-
-#ifdef JPEG_INTERNAL_OPTIONS
-
-
-/*
- * These defines indicate whether to include various optional functions.
- * Undefining some of these symbols will produce a smaller but less capable
- * library.  Note that you can leave certain source files out of the
- * compilation/linking process if you've #undef'd the corresponding symbols.
- * (You may HAVE to do that if your compiler doesn't like null source files.)
- */
-
-/* Arithmetic coding is unsupported for legal reasons.  Complaints to IBM. */
-
-/* Capability options common to encoder and decoder: */
-
-#define DCT_ISLOW_SUPPORTED	/* slow but accurate integer algorithm */
-#define DCT_IFAST_SUPPORTED	/* faster, less accurate integer method */
-#define DCT_FLOAT_SUPPORTED	/* floating-point: accurate, fast on fast HW */
-
-/* Encoder capability options: */
-
-#undef  C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#undef  C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files?  (NYI) */
-#define ENTROPY_OPT_SUPPORTED	    /* Optimization of entropy coding parms? */
-/* Note: if you selected 12-bit data precision, it is dangerous to turn off
- * ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only good for 8-bit
- * precision, so jchuff.c normally uses entropy optimization to compute
- * usable tables for higher precision.  If you don't want to do optimization,
- * you'll have to supply different default Huffman tables.
- */
-#define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */
-
-/* Decoder capability options: */
-
-#undef  D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define IDCT_SCALING_SUPPORTED	    /* Output rescaling via IDCT? */
-#undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */
-#define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */
-#define QUANT_1PASS_SUPPORTED	    /* 1-pass color quantization? */
-#define QUANT_2PASS_SUPPORTED	    /* 2-pass color quantization? */
-
-/* more capability options later, no doubt */
-
-
-/*
- * Ordering of RGB data in scanlines passed to or from the application.
- * If your application wants to deal with data in the order B,G,R, just
- * change these macros.  You can also deal with formats such as R,G,B,X
- * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing
- * the offsets will also change the order in which colormap data is organized.
- * RESTRICTIONS:
- * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
- * 2. These macros only affect RGB<=>YCbCr color conversion, so they are not
- *    useful if you are using JPEG color spaces other than YCbCr or grayscale.
- * 3. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
- *    is not 3 (they don't understand about dummy color components!).  So you
- *    can't use color quantization if you change that value.
- */
-
-#define RGB_RED		0	/* Offset of Red in an RGB scanline element */
-#define RGB_GREEN	1	/* Offset of Green */
-#define RGB_BLUE	2	/* Offset of Blue */
-#define RGB_PIXELSIZE	3	/* JSAMPLEs per RGB scanline element */
-
-
-/* Definitions for speed-related optimizations. */
-
-
-/* If your compiler supports inline functions, define INLINE
- * as the inline keyword; otherwise define it as empty.
- */
-
-#ifndef INLINE
-#ifdef __GNUC__			/* for instance, GNU C knows about inline */
-#define INLINE __inline__
-#endif
-#ifndef INLINE
-#define INLINE			/* default is to define it as empty */
-#endif
-#endif
-
-
-/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
- * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER
- * as short on such a machine.  MULTIPLIER must be at least 16 bits wide.
- */
-
-#ifndef MULTIPLIER
-#define MULTIPLIER  int		/* type for fastest integer multiply */
-#endif
-
-
-/* FAST_FLOAT should be either float or double, whichever is done faster
- * by your compiler.  (Note that this type is only used in the floating point
- * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
- * Typically, float is faster in ANSI C compilers, while double is faster in
- * pre-ANSI compilers (because they insist on converting to double anyway).
- * The code below therefore chooses float if we have ANSI-style prototypes.
- */
-
-#ifndef FAST_FLOAT
-#ifdef HAVE_PROTOTYPES
-#define FAST_FLOAT  float
-#else
-#define FAST_FLOAT  double
-#endif
-#endif
-
-#endif /* JPEG_INTERNAL_OPTIONS */
diff --git a/jpeg/jpegint.h b/jpeg/jpegint.h
deleted file mode 100644
index 5ae3a9f34c820604f6dc7222e19a6a46ccd4e7f4..0000000000000000000000000000000000000000
--- a/jpeg/jpegint.h
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * jpegint.h
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file provides common declarations for the various JPEG modules.
- * These declarations are considered internal to the JPEG library; most
- * applications using the library shouldn't need to include this file.
- */
-
-
-/* Declarations for both compression & decompression */
-
-typedef enum {			/* Operating modes for buffer controllers */
-	JBUF_PASS_THRU,		/* Plain stripwise operation */
-	JBUF_CRANK_SOURCE,	/* Run source subobject, no output expected */
-	/* Remaining modes require a full-image buffer to have been created */
-	JBUF_SAVE_SOURCE,	/* Run source subobject only, save output */
-	JBUF_CRANK_DEST,	/* Run dest subobject only, using saved data */
-	JBUF_SAVE_AND_PASS	/* Run both subobjects, save output */
-} J_BUF_MODE;
-
-/* Values of global_state field */
-#define CSTATE_START	100	/* after create_compress */
-#define CSTATE_SCANNING	101	/* start_compress done, write_scanlines OK */
-#define CSTATE_RAW_OK	102	/* start_compress done, write_raw_data OK */
-#define DSTATE_START	200	/* after create_decompress */
-#define DSTATE_INHEADER	201	/* read_header initialized but not done */
-#define DSTATE_READY	202	/* read_header done, found image */
-#define DSTATE_SCANNING	203	/* start_decompress done, read_scanlines OK */
-#define DSTATE_RAW_OK	204	/* start_decompress done, read_raw_data OK */
-#define DSTATE_STOPPING	205	/* done reading data, looking for EOI */
-
-
-/* Declarations for compression modules */
-
-/* Master control module */
-struct jpeg_comp_master {
-  JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo));
-  JMETHOD(void, pass_startup, (j_compress_ptr cinfo));
-  JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
-
-  /* State variables made visible to other modules */
-  boolean call_pass_startup;	/* True if pass_startup must be called */
-  boolean is_last_pass;		/* True during last pass */
-};
-
-/* Main buffer control (downsampled-data buffer) */
-struct jpeg_c_main_controller {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, process_data, (j_compress_ptr cinfo,
-			       JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-			       JDIMENSION in_rows_avail));
-};
-
-/* Compression preprocessing (downsampling input buffer control) */
-struct jpeg_c_prep_controller {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, pre_process_data, (j_compress_ptr cinfo,
-				   JSAMPARRAY input_buf,
-				   JDIMENSION *in_row_ctr,
-				   JDIMENSION in_rows_avail,
-				   JSAMPIMAGE output_buf,
-				   JDIMENSION *out_row_group_ctr,
-				   JDIMENSION out_row_groups_avail));
-};
-
-/* Coefficient buffer control */
-struct jpeg_c_coef_controller {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, compress_data, (j_compress_ptr cinfo,
-				JSAMPIMAGE input_buf,
-				JDIMENSION *in_mcu_ctr));
-};
-
-/* Colorspace conversion */
-struct jpeg_color_converter {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
-  JMETHOD(void, color_convert, (j_compress_ptr cinfo,
-				JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-				JDIMENSION output_row, int num_rows));
-};
-
-/* Downsampling */
-struct jpeg_downsampler {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
-  JMETHOD(void, downsample, (j_compress_ptr cinfo,
-			     JSAMPIMAGE input_buf, JDIMENSION in_row_index,
-			     JSAMPIMAGE output_buf,
-			     JDIMENSION out_row_group_index));
-
-  boolean need_context_rows;	/* TRUE if need rows above & below */
-};
-
-/* Forward DCT (also controls coefficient quantization) */
-struct jpeg_forward_dct {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
-  /* perhaps this should be an array??? */
-  JMETHOD(void, forward_DCT, (j_compress_ptr cinfo,
-			      jpeg_component_info * compptr,
-			      JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
-			      JDIMENSION start_row, JDIMENSION start_col,
-			      JDIMENSION num_blocks));
-};
-
-/* Entropy encoding */
-struct jpeg_entropy_encoder {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics));
-  JMETHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data));
-  JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
-};
-
-/* Marker writing */
-struct jpeg_marker_writer {
-  /* write_any_marker is exported for use by applications */
-  /* Probably only COM and APPn markers should be written */
-  JMETHOD(void, write_any_marker, (j_compress_ptr cinfo, int marker,
-				   const JOCTET *dataptr, unsigned int datalen));
-  JMETHOD(void, write_file_header, (j_compress_ptr cinfo));
-  JMETHOD(void, write_frame_header, (j_compress_ptr cinfo));
-  JMETHOD(void, write_scan_header, (j_compress_ptr cinfo));
-  JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo));
-  JMETHOD(void, write_tables_only, (j_compress_ptr cinfo));
-};
-
-
-/* Declarations for decompression modules */
-
-/* Master control module */
-struct jpeg_decomp_master {
-  JMETHOD(void, prepare_for_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, finish_pass, (j_decompress_ptr cinfo));
-
-  /* State variables made visible to other modules */
-  boolean is_last_pass;		/* True during last pass */
-  boolean eoi_processed;	/* True if EOI marker already read */
-};
-
-/* Main buffer control (downsampled-data buffer) */
-struct jpeg_d_main_controller {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, process_data, (j_decompress_ptr cinfo,
-			       JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-			       JDIMENSION out_rows_avail));
-  /* During input-only passes, output_buf and out_rows_avail are ignored.
-   * out_row_ctr is incremented towards the limit num_chunks.
-   */
-  JDIMENSION num_chunks;	/* number of chunks to be processed in pass */
-};
-
-/* Coefficient buffer control */
-struct jpeg_d_coef_controller {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(boolean, decompress_data, (j_decompress_ptr cinfo,
-				     JSAMPIMAGE output_buf));
-};
-
-/* Decompression postprocessing (color quantization buffer control) */
-struct jpeg_d_post_controller {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, post_process_data, (j_decompress_ptr cinfo,
-				    JSAMPIMAGE input_buf,
-				    JDIMENSION *in_row_group_ctr,
-				    JDIMENSION in_row_groups_avail,
-				    JSAMPARRAY output_buf,
-				    JDIMENSION *out_row_ctr,
-				    JDIMENSION out_rows_avail));
-};
-
-/* Marker reading & parsing */
-struct jpeg_marker_reader {
-  JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo));
-  /* Read markers until SOS or EOI.
-   * Returns same codes as are defined for jpeg_read_header,
-   * but HEADER_OK and HEADER_TABLES_ONLY merely indicate which marker type
-   * stopped the scan --- further validation is needed to declare file OK.
-   */
-  JMETHOD(int, read_markers, (j_decompress_ptr cinfo));
-  /* Read a restart marker --- exported for use by entropy decoder only */
-  jpeg_marker_parser_method read_restart_marker;
-  /* Application-overridable marker processing methods */
-  jpeg_marker_parser_method process_COM;
-  jpeg_marker_parser_method process_APPn[16];
-
-  /* State of marker reader --- nominally internal, but applications
-   * supplying COM or APPn handlers might like to know the state.
-   */
-  boolean saw_SOI;		/* found SOI? */
-  boolean saw_SOF;		/* found SOF? */
-  int next_restart_num;		/* next restart number expected (0-7) */
-  unsigned int discarded_bytes;	/* # of bytes skipped looking for a marker */
-};
-
-/* Entropy decoding */
-struct jpeg_entropy_decoder {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo,
-				JBLOCKROW *MCU_data));
-};
-
-/* Inverse DCT (also performs dequantization) */
-typedef JMETHOD(void, inverse_DCT_method_ptr,
-		(j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		 JCOEFPTR coef_block,
-		 JSAMPARRAY output_buf, JDIMENSION output_col));
-
-struct jpeg_inverse_dct {
-  JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo));
-  /* It is useful to allow each component to have a separate IDCT method. */
-  inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS];
-};
-
-/* Upsampling (note that upsampler must also call color converter) */
-struct jpeg_upsampler {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, upsample, (j_decompress_ptr cinfo,
-			   JSAMPIMAGE input_buf,
-			   JDIMENSION *in_row_group_ctr,
-			   JDIMENSION in_row_groups_avail,
-			   JSAMPARRAY output_buf,
-			   JDIMENSION *out_row_ctr,
-			   JDIMENSION out_rows_avail));
-
-  boolean need_context_rows;	/* TRUE if need rows above & below */
-};
-
-/* Colorspace conversion */
-struct jpeg_color_deconverter {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
-				JSAMPIMAGE input_buf, JDIMENSION input_row,
-				JSAMPARRAY output_buf, int num_rows));
-};
-
-/* Color quantization or color precision reduction */
-struct jpeg_color_quantizer {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan));
-  JMETHOD(void, color_quantize, (j_decompress_ptr cinfo,
-				 JSAMPARRAY input_buf, JSAMPARRAY output_buf,
-				 int num_rows));
-  JMETHOD(void, finish_pass, (j_decompress_ptr cinfo));
-};
-
-
-/* Miscellaneous useful macros */
-
-#undef MAX
-#define MAX(a,b)	((a) > (b) ? (a) : (b))
-#undef MIN
-#define MIN(a,b)	((a) < (b) ? (a) : (b))
-
-
-/* We assume that right shift corresponds to signed division by 2 with
- * rounding towards minus infinity.  This is correct for typical "arithmetic
- * shift" instructions that shift in copies of the sign bit.  But some
- * C compilers implement >> with an unsigned shift.  For these machines you
- * must define RIGHT_SHIFT_IS_UNSIGNED.
- * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
- * It is only applied with constant shift counts.  SHIFT_TEMPS must be
- * included in the variables of any routine using RIGHT_SHIFT.
- */
-
-#ifdef RIGHT_SHIFT_IS_UNSIGNED
-#define SHIFT_TEMPS	INT32 shift_temp;
-#define RIGHT_SHIFT(x,shft)  \
-	((shift_temp = (x)) < 0 ? \
-	 (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
-	 (shift_temp >> (shft)))
-#else
-#define SHIFT_TEMPS
-#define RIGHT_SHIFT(x,shft)	((x) >> (shft))
-#endif
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jinit_master_compress	jICMaster
-#define jinit_c_main_controller	jICMainC
-#define jinit_c_prep_controller	jICPrepC
-#define jinit_c_coef_controller	jICCoefC
-#define jinit_color_converter	jICColor
-#define jinit_downsampler	jIDownsampler
-#define jinit_forward_dct	jIFDCT
-#define jinit_huff_encoder	jIHEncoder
-#define jinit_marker_writer	jIMWriter
-#define jinit_master_decompress	jIDMaster
-#define jinit_d_main_controller	jIDMainC
-#define jinit_d_coef_controller	jIDCoefC
-#define jinit_d_post_controller	jIDPostC
-#define jinit_marker_reader	jIMReader
-#define jinit_huff_decoder	jIHDecoder
-#define jinit_inverse_dct	jIIDCT
-#define jinit_upsampler		jIUpsampler
-#define jinit_color_deconverter	jIDColor
-#define jinit_1pass_quantizer	jI1Quant
-#define jinit_2pass_quantizer	jI2Quant
-#define jinit_merged_upsampler	jIMUpsampler
-#define jinit_memory_mgr	jIMemMgr
-#define jdiv_round_up		jDivRound
-#define jround_up		jRound
-#define jcopy_sample_rows	jCopySamples
-#define jcopy_block_row		jCopyBlocks
-#define jzero_far		jZeroFar
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Compression module initialization routines */
-EXTERN void jinit_master_compress JPP((j_compress_ptr cinfo));
-EXTERN void jinit_c_main_controller JPP((j_compress_ptr cinfo,
-					 boolean need_full_buffer));
-EXTERN void jinit_c_prep_controller JPP((j_compress_ptr cinfo,
-					 boolean need_full_buffer));
-EXTERN void jinit_c_coef_controller JPP((j_compress_ptr cinfo,
-					 boolean need_full_buffer));
-EXTERN void jinit_color_converter JPP((j_compress_ptr cinfo));
-EXTERN void jinit_downsampler JPP((j_compress_ptr cinfo));
-EXTERN void jinit_forward_dct JPP((j_compress_ptr cinfo));
-EXTERN void jinit_huff_encoder JPP((j_compress_ptr cinfo));
-EXTERN void jinit_marker_writer JPP((j_compress_ptr cinfo));
-/* Decompression module initialization routines */
-EXTERN void jinit_master_decompress JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_d_main_controller JPP((j_decompress_ptr cinfo,
-					 boolean need_full_buffer));
-EXTERN void jinit_d_coef_controller JPP((j_decompress_ptr cinfo,
-					 boolean need_full_buffer));
-EXTERN void jinit_d_post_controller JPP((j_decompress_ptr cinfo,
-					 boolean need_full_buffer));
-EXTERN void jinit_marker_reader JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_huff_decoder JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_inverse_dct JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_upsampler JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_color_deconverter JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_1pass_quantizer JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_2pass_quantizer JPP((j_decompress_ptr cinfo));
-EXTERN void jinit_merged_upsampler JPP((j_decompress_ptr cinfo));
-/* Memory manager initialization */
-EXTERN void jinit_memory_mgr JPP((j_common_ptr cinfo));
-
-/* Utility routines in jutils.c */
-EXTERN long jdiv_round_up JPP((long a, long b));
-EXTERN long jround_up JPP((long a, long b));
-EXTERN void jcopy_sample_rows JPP((JSAMPARRAY input_array, int source_row,
-				   JSAMPARRAY output_array, int dest_row,
-				   int num_rows, JDIMENSION num_cols));
-EXTERN void jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
-				 JDIMENSION num_blocks));
-EXTERN void jzero_far JPP((void FAR * target, size_t bytestozero));
-
-
-/* Suppress undefined-structure complaints if necessary. */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef AM_MEMORY_MANAGER	/* only jmemmgr.c defines these */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-#endif
-#endif /* INCOMPLETE_TYPES_BROKEN */
diff --git a/jpeg/jpeglib.h b/jpeg/jpeglib.h
deleted file mode 100644
index ca33a83dba6494f4c27f214455c3dd508aaa7446..0000000000000000000000000000000000000000
--- a/jpeg/jpeglib.h
+++ /dev/null
@@ -1,934 +0,0 @@
-/*
- * jpeglib.h
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the application interface for the JPEG library.
- * Most applications using the library need only include this file,
- * and perhaps jerror.h if they want to know the exact error codes.
- */
-
-/*
- * First we include the configuration files that record how this
- * installation of the JPEG library is set up.  jconfig.h can be
- * generated automatically for many systems.  jmorecfg.h contains
- * manual configuration options that most people need not worry about.
- */
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#ifndef JCONFIG_INCLUDED	/* in case jinclude.h already did */
-#include "jconfig.h"		/* widely used configuration options */
-#endif
-#include "jmorecfg.h"		/* seldom changed options */
-
-
-/* Version ID for the JPEG library.
- * Might be useful for tests like "#if JPEG_LIB_VERSION >= 60".
- */
-
-#define JPEG_LIB_VERSION  50	/* Version 5.0 */
-
-
-/* Various constants determining the sizes of things.
- * All of these are specified by the JPEG standard, so don't change them
- * if you want to be compatible.
- */
-
-#define DCTSIZE		    8	/* The basic DCT block is 8x8 samples */
-#define DCTSIZE2	    64	/* DCTSIZE squared; # of elements in a block */
-#define NUM_QUANT_TBLS      4	/* Quantization tables are numbered 0..3 */
-#define NUM_HUFF_TBLS       4	/* Huffman tables are numbered 0..3 */
-#define NUM_ARITH_TBLS      16	/* Arith-coding tables are numbered 0..15 */
-#define MAX_COMPS_IN_SCAN   4	/* JPEG limit on # of components in one scan */
-#define MAX_SAMP_FACTOR     4	/* JPEG limit on sampling factors */
-#define MAX_BLOCKS_IN_MCU   10	/* JPEG limit on # of blocks in an MCU */
-
-
-/* This macro is used to declare a "method", that is, a function pointer.
- * We want to supply prototype parameters if the compiler can cope.
- * Note that the arglist parameter must be parenthesized!
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JMETHOD(type,methodname,arglist)  type (*methodname) arglist
-#else
-#define JMETHOD(type,methodname,arglist)  type (*methodname) ()
-#endif
-
-
-/* Data structures for images (arrays of samples and of DCT coefficients).
- * On 80x86 machines, the image arrays are too big for near pointers,
- * but the pointer arrays can fit in near memory.
- */
-
-typedef JSAMPLE FAR *JSAMPROW;	/* ptr to one image row of pixel samples. */
-typedef JSAMPROW *JSAMPARRAY;	/* ptr to some rows (a 2-D sample array) */
-typedef JSAMPARRAY *JSAMPIMAGE;	/* a 3-D sample array: top index is color */
-
-typedef JCOEF JBLOCK[DCTSIZE2];	/* one block of coefficients */
-typedef JBLOCK FAR *JBLOCKROW;	/* pointer to one row of coefficient blocks */
-typedef JBLOCKROW *JBLOCKARRAY;		/* a 2-D array of coefficient blocks */
-typedef JBLOCKARRAY *JBLOCKIMAGE;	/* a 3-D array of coefficient blocks */
-
-typedef JCOEF FAR *JCOEFPTR;	/* useful in a couple of places */
-
-
-/* Types for JPEG compression parameters and working tables. */
-
-
-/* DCT coefficient quantization tables. */
-
-typedef struct {
-  /* This field directly represents the contents of a JPEG DQT marker.
-   * Note: the values are always given in zigzag order.
-   */
-  UINT16 quantval[DCTSIZE2];	/* quantization step for each coefficient */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;		/* TRUE when table has been output */
-} JQUANT_TBL;
-
-
-/* Huffman coding tables. */
-
-typedef struct {
-  /* These two fields directly represent the contents of a JPEG DHT marker */
-  UINT8 bits[17];		/* bits[k] = # of symbols with codes of */
-				/* length k bits; bits[0] is unused */
-  UINT8 huffval[256];		/* The symbols, in order of incr code length */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;		/* TRUE when table has been output */
-} JHUFF_TBL;
-
-
-/* Basic info about one component (color channel). */
-
-typedef struct {
-  /* These values are fixed over the whole image. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOF marker. */
-  int component_id;		/* identifier for this component (0..255) */
-  int component_index;		/* its index in SOF or cinfo->comp_info[] */
-  int h_samp_factor;		/* horizontal sampling factor (1..4) */
-  int v_samp_factor;		/* vertical sampling factor (1..4) */
-  int quant_tbl_no;		/* quantization table selector (0..3) */
-  /* These values may vary between scans. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOS marker. */
-  int dc_tbl_no;		/* DC entropy table selector (0..3) */
-  int ac_tbl_no;		/* AC entropy table selector (0..3) */
-  
-  /* Remaining fields should be treated as private by applications. */
-  
-  /* These values are computed during compression or decompression startup: */
-  /* Component's size in DCT blocks.
-   * Any dummy blocks added to complete an MCU are not counted; therefore
-   * these values do not depend on whether a scan is interleaved or not.
-   */
-  JDIMENSION width_in_blocks;
-  JDIMENSION height_in_blocks;
-  /* Size of a DCT block in samples.  Always DCTSIZE for compression.
-   * For decompression this is the size of the output from one DCT block,
-   * reflecting any scaling we choose to apply during the IDCT step.
-   * Values of 1,2,4,8 are likely to be supported.  Note that different
-   * components may receive different IDCT scalings.
-   */
-  int DCT_scaled_size;
-  /* The downsampled dimensions are the component's actual, unpadded number
-   * of samples at the main buffer (preprocessing/compression interface), thus
-   * downsampled_width = ceil(image_width * Hi/Hmax)
-   * and similarly for height.  For decompression, IDCT scaling is included, so
-   * downsampled_width = ceil(image_width * Hi/Hmax * DCT_scaled_size/DCTSIZE)
-   */
-  JDIMENSION downsampled_width;	 /* actual width in samples */
-  JDIMENSION downsampled_height; /* actual height in samples */
-  /* This flag is used only for decompression.  In cases where some of the
-   * components will be ignored (eg grayscale output from YCbCr image),
-   * we can skip most computations for the unused components.
-   */
-  boolean component_needed;	/* do we need the value of this component? */
-
-  /* These values are computed before starting a scan of the component: */
-  int MCU_width;		/* number of blocks per MCU, horizontally */
-  int MCU_height;		/* number of blocks per MCU, vertically */
-  int MCU_blocks;		/* MCU_width * MCU_height */
-  int MCU_sample_width;		/* MCU width in samples, MCU_width*DCT_scaled_size */
-  int last_col_width;		/* # of non-dummy blocks across in last MCU */
-  int last_row_height;		/* # of non-dummy blocks down in last MCU */
-
-  /* Private per-component storage for DCT or IDCT subsystem. */
-  void * dct_table;
-} jpeg_component_info;
-
-
-/* Known color spaces. */
-
-typedef enum {
-	JCS_UNKNOWN,		/* error/unspecified */
-	JCS_GRAYSCALE,		/* monochrome */
-	JCS_RGB,		/* red/green/blue */
-	JCS_YCbCr,		/* Y/Cb/Cr (also known as YUV) */
-	JCS_CMYK,		/* C/M/Y/K */
-	JCS_YCCK		/* Y/Cb/Cr/K */
-} J_COLOR_SPACE;
-
-/* DCT/IDCT algorithm options. */
-
-typedef enum {
-	JDCT_ISLOW,		/* slow but accurate integer algorithm */
-	JDCT_IFAST,		/* faster, less accurate integer method */
-	JDCT_FLOAT		/* floating-point: accurate, fast on fast HW */
-} J_DCT_METHOD;
-
-#ifndef JDCT_DEFAULT		/* may be overridden in jconfig.h */
-#define JDCT_DEFAULT  JDCT_ISLOW
-#endif
-#ifndef JDCT_FASTEST		/* may be overridden in jconfig.h */
-#define JDCT_FASTEST  JDCT_IFAST
-#endif
-
-/* Dithering options for decompression. */
-
-typedef enum {
-	JDITHER_NONE,		/* no dithering */
-	JDITHER_ORDERED,	/* simple ordered dither */
-	JDITHER_FS		/* Floyd-Steinberg error diffusion dither */
-} J_DITHER_MODE;
-
-
-/* Common fields between JPEG compression and decompression master structs. */
-
-#define jpeg_common_fields \
-  struct jpeg_error_mgr * err;	/* Error handler module */\
-  struct jpeg_memory_mgr * mem;	/* Memory manager module */\
-  struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
-  boolean is_decompressor;	/* so common code can tell which is which */\
-  int global_state		/* for checking call sequence validity */
-
-/* Routines that are to be used by both halves of the library are declared
- * to receive a pointer to this structure.  There are no actual instances of
- * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
- */
-struct jpeg_common_struct {
-  jpeg_common_fields;		/* Fields common to both master struct types */
-  /* Additional fields follow in an actual jpeg_compress_struct or
-   * jpeg_decompress_struct.  All three structs must agree on these
-   * initial fields!  (This would be a lot cleaner in C++.)
-   */
-};
-
-typedef struct jpeg_common_struct * j_common_ptr;
-typedef struct jpeg_compress_struct * j_compress_ptr;
-typedef struct jpeg_decompress_struct * j_decompress_ptr;
-
-
-/* Master record for a compression instance */
-
-struct jpeg_compress_struct {
-  jpeg_common_fields;		/* Fields shared with jpeg_decompress_struct */
-
-  /* Destination for compressed data */
-  struct jpeg_destination_mgr * dest;
-
-  /* Description of source image --- these fields must be filled in by
-   * outer application before starting compression.  in_color_space must
-   * be correct before you can even call jpeg_set_defaults().
-   */
-
-  JDIMENSION image_width;	/* input image width */
-  JDIMENSION image_height;	/* input image height */
-  int input_components;		/* # of color components in input image */
-  J_COLOR_SPACE in_color_space;	/* colorspace of input image */
-
-  double input_gamma;		/* image gamma of input image */
-
-  /* Compression parameters --- these fields must be set before calling
-   * jpeg_start_compress().  We recommend calling jpeg_set_defaults() to
-   * initialize everything to reasonable defaults, then changing anything
-   * the application specifically wants to change.  That way you won't get
-   * burnt when new parameters are added.  Also note that there are several
-   * helper routines to simplify changing parameters.
-   */
-
-  int data_precision;		/* bits of precision in image data */
-
-  int num_components;		/* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-  
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined */
-  
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-  
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  boolean raw_data_in;		/* TRUE=caller supplies downsampled data */
-  boolean arith_code;		/* TRUE=arithmetic coding, FALSE=Huffman */
-  boolean interleave;		/* TRUE=interleaved output, FALSE=not */
-  boolean optimize_coding;	/* TRUE=optimize entropy encoding parms */
-  boolean CCIR601_sampling;	/* TRUE=first samples are cosited */
-  int smoothing_factor;		/* 1..100, or 0 for no input smoothing */
-  J_DCT_METHOD dct_method;	/* DCT algorithm selector */
-
-  /* The restart interval can be specified in absolute MCUs by setting
-   * restart_interval, or in MCU rows by setting restart_in_rows
-   * (in which case the correct restart_interval will be figured
-   * for each scan).
-   */
-  unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
-  int restart_in_rows;		/* if > 0, MCU rows per restart interval */
-
-  /* Parameters controlling emission of special markers. */
-
-  boolean write_JFIF_header;	/* should a JFIF marker be written? */
-  /* These three values are not used by the JPEG code, merely copied */
-  /* into the JFIF APP0 marker.  density_unit can be 0 for unknown, */
-  /* 1 for dots/inch, or 2 for dots/cm.  Note that the pixel aspect */
-  /* ratio is defined by X_density/Y_density even when density_unit=0. */
-  UINT8 density_unit;		/* JFIF code for pixel size units */
-  UINT16 X_density;		/* Horizontal pixel density */
-  UINT16 Y_density;		/* Vertical pixel density */
-  boolean write_Adobe_marker;	/* should an Adobe marker be written? */
-  
-  /* State variable: index of next scanline to be written to
-   * jpeg_write_scanlines().  Application may use this to control its
-   * processing loop, e.g., "while (next_scanline < image_height)".
-   */
-
-  JDIMENSION next_scanline;	/* 0 .. image_height-1  */
-
-  /* Remaining fields are known throughout compressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during compression startup
-   */
-  int max_h_samp_factor;	/* largest h_samp_factor */
-  int max_v_samp_factor;	/* largest v_samp_factor */
-
-  JDIMENSION total_iMCU_rows;	/* # of iMCU rows to be input to coef ctlr */
-  /* The coefficient controller receives data in units of MCU rows as defined
-   * for fully interleaved scans (whether the JPEG file is interleaved or not).
-   * There are v_samp_factor * DCTSIZE sample rows of each component in an
-   * "iMCU" (interleaved MCU) row.
-   */
-  
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   */
-  int comps_in_scan;		/* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-  
-  JDIMENSION MCUs_per_row;	/* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan;	/* # of MCU rows in the image */
-  
-  int blocks_in_MCU;		/* # of DCT blocks per MCU */
-  int MCU_membership[MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  /*
-   * Links to compression subobjects (methods and private variables of modules)
-   */
-  struct jpeg_comp_master * master;
-  struct jpeg_c_main_controller * main;
-  struct jpeg_c_prep_controller * prep;
-  struct jpeg_c_coef_controller * coef;
-  struct jpeg_marker_writer * marker;
-  struct jpeg_color_converter * cconvert;
-  struct jpeg_downsampler * downsample;
-  struct jpeg_forward_dct * fdct;
-  struct jpeg_entropy_encoder * entropy;
-};
-
-
-/* Master record for a decompression instance */
-
-struct jpeg_decompress_struct {
-  jpeg_common_fields;		/* Fields shared with jpeg_compress_struct */
-
-  /* Source of compressed data */
-  struct jpeg_source_mgr * src;
-
-  /* Basic description of image --- filled in by jpeg_read_header(). */
-  /* Application may inspect these values to decide how to process image. */
-
-  JDIMENSION image_width;	/* nominal image width (from SOF marker) */
-  JDIMENSION image_height;	/* nominal image height */
-  int num_components;		/* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  /* Decompression processing parameters --- these fields must be set before
-   * calling jpeg_start_decompress().  Note that jpeg_read_header() initializes
-   * them to default values.
-   */
-
-  J_COLOR_SPACE out_color_space; /* colorspace for output */
-
-  unsigned int scale_num, scale_denom; /* fraction by which to scale image */
-
-  double output_gamma;		/* image gamma wanted in output */
-
-  boolean raw_data_out;		/* TRUE=downsampled data wanted */
-
-  boolean quantize_colors;	/* TRUE=colormapped output wanted */
-  /* the following are ignored if not quantize_colors: */
-  boolean two_pass_quantize;	/* TRUE=use two-pass color quantization */
-  J_DITHER_MODE dither_mode;	/* type of color dithering to use */
-  int desired_number_of_colors;	/* max number of colors to use */
-
-  J_DCT_METHOD dct_method;	/* DCT algorithm selector */
-  boolean do_fancy_upsampling;	/* TRUE=apply fancy upsampling */
-
-  /* Description of actual output image that will be returned to application.
-   * These fields are computed by jpeg_start_decompress().
-   * You can also use jpeg_calc_output_dimensions() to determine these values
-   * in advance of calling jpeg_start_decompress().
-   */
-
-  JDIMENSION output_width;	/* scaled image width */
-  JDIMENSION output_height;	/* scaled image height */
-  int out_color_components;	/* # of color components in out_color_space */
-  int output_components;	/* # of color components returned */
-  /* output_components is 1 (a colormap index) when quantizing colors;
-   * otherwise it equals out_color_components.
-   */
-  int rec_outbuf_height;	/* min recommended height of scanline buffer */
-  /* If the buffer passed to jpeg_read_scanlines() is less than this many rows
-   * high, space and time will be wasted due to unnecessary data copying.
-   * Usually rec_outbuf_height will be 1 or 2, at most 4.
-   */
-
-  /* When quantizing colors, the output colormap is described by these fields.
-   * The application can supply a colormap by setting colormap non-NULL before
-   * calling jpeg_start_decompress; otherwise a colormap is created during
-   * jpeg_start_decompress.
-   * The map has out_color_components rows and actual_number_of_colors columns.
-   */
-  int actual_number_of_colors;	/* number of entries in use */
-  JSAMPARRAY colormap;		/* The color map as a 2-D pixel array */
-
-  /* State variable: index of next scaled scanline to be read from
-   * jpeg_read_scanlines().  Application may use this to control its
-   * processing loop, e.g., "while (output_scanline < output_height)".
-   */
-
-  JDIMENSION output_scanline;	/* 0 .. output_height-1  */
-
-  /* Internal JPEG parameters --- the application usually need not look at
-   * these fields.
-   */
-
-  /* Quantization and Huffman tables are carried forward across input
-   * datastreams when processing abbreviated JPEG datastreams.
-   */
-
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined */
-
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-
-  /* These parameters are never carried across datastreams, since they
-   * are given in SOF/SOS markers or defined to be reset by SOI.
-   */
-
-  int data_precision;		/* bits of precision in image data */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  boolean arith_code;		/* TRUE=arithmetic coding, FALSE=Huffman */
-
-  unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */
-
-  /* These fields record data obtained from optional markers recognized by
-   * the JPEG library.
-   */
-  boolean saw_JFIF_marker;	/* TRUE iff a JFIF APP0 marker was found */
-  /* Data copied from JFIF marker: */
-  UINT8 density_unit;		/* JFIF code for pixel size units */
-  UINT16 X_density;		/* Horizontal pixel density */
-  UINT16 Y_density;		/* Vertical pixel density */
-  boolean saw_Adobe_marker;	/* TRUE iff an Adobe APP14 marker was found */
-  UINT8 Adobe_transform;	/* Color transform code from Adobe marker */
-
-  boolean CCIR601_sampling;	/* TRUE=first samples are cosited */
-
-  /* Remaining fields are known throughout decompressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during decompression startup
-   */
-  int max_h_samp_factor;	/* largest h_samp_factor */
-  int max_v_samp_factor;	/* largest v_samp_factor */
-
-  int min_DCT_scaled_size;	/* smallest DCT_scaled_size of any component */
-
-  JDIMENSION total_iMCU_rows;	/* # of iMCU rows to be output by coef ctlr */
-  /* The coefficient controller outputs data in units of MCU rows as defined
-   * for fully interleaved scans (whether the JPEG file is interleaved or not).
-   * There are v_samp_factor * DCT_scaled_size sample rows of each component
-   * in an "iMCU" (interleaved MCU) row.
-   */
-
-  JSAMPLE * sample_range_limit; /* table for fast range-limiting */
-
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   */
-  int comps_in_scan;		/* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-
-  JDIMENSION MCUs_per_row;	/* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan;	/* # of MCU rows in the image */
-
-  int blocks_in_MCU;		/* # of DCT blocks per MCU */
-  int MCU_membership[MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  /* This field is shared between entropy decoder and marker parser.
-   * It is either zero or the code of a JPEG marker that has been
-   * read from the data source, but has not yet been processed.
-   */
-  int unread_marker;
-
-  /*
-   * Links to decompression subobjects (methods, private variables of modules)
-   */
-  struct jpeg_decomp_master * master;
-  struct jpeg_d_main_controller * main;
-  struct jpeg_d_coef_controller * coef;
-  struct jpeg_d_post_controller * post;
-  struct jpeg_marker_reader * marker;
-  struct jpeg_entropy_decoder * entropy;
-  struct jpeg_inverse_dct * idct;
-  struct jpeg_upsampler * upsample;
-  struct jpeg_color_deconverter * cconvert;
-  struct jpeg_color_quantizer * cquantize;
-};
-
-
-/* "Object" declarations for JPEG modules that may be supplied or called
- * directly by the surrounding application.
- * As with all objects in the JPEG library, these structs only define the
- * publicly visible methods and state variables of a module.  Additional
- * private fields may exist after the public ones.
- */
-
-
-/* Error handler object */
-
-struct jpeg_error_mgr {
-  /* Error exit handler: does not return to caller */
-  JMETHOD(void, error_exit, (j_common_ptr cinfo));
-  /* Conditionally emit a trace or warning message */
-  JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level));
-  /* Routine that actually outputs a trace or error message */
-  JMETHOD(void, output_message, (j_common_ptr cinfo));
-  /* Format a message string for the most recent JPEG error or message */
-  JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer));
-#define JMSG_LENGTH_MAX  200	/* recommended size of format_message buffer */
-  /* Reset error state variables at start of a new image */
-  JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo));
-  
-  /* The message ID code and any parameters are saved here.
-   * A message can have one string parameter or up to 8 int parameters.
-   */
-  int msg_code;
-#define JMSG_STR_PARM_MAX  80
-  union {
-    int i[8];
-    char s[JMSG_STR_PARM_MAX];
-  } msg_parm;
-  
-  /* Standard state variables for error facility */
-  
-  int trace_level;		/* max msg_level that will be displayed */
-  
-  /* For recoverable corrupt-data errors, we emit a warning message,
-   * but keep going unless emit_message chooses to abort.  emit_message
-   * should count warnings in num_warnings.  The surrounding application
-   * can check for bad data by seeing if num_warnings is nonzero at the
-   * end of processing.
-   */
-  long num_warnings;		/* number of corrupt-data warnings */
-
-  /* These fields point to the table(s) of error message strings.
-   * An application can change the table pointer to switch to a different
-   * message list (typically, to change the language in which errors are
-   * reported).  Some applications may wish to add additional error codes
-   * that will be handled by the JPEG library error mechanism; the second
-   * table pointer is used for this purpose.
-   *
-   * First table includes all errors generated by JPEG library itself.
-   * Error code 0 is reserved for a "no such error string" message.
-   */
-  const char * const * jpeg_message_table; /* Library errors */
-  int last_jpeg_message;    /* Table contains strings 0..last_jpeg_message */
-  /* Second table can be added by application (see cjpeg/djpeg for example).
-   * It contains strings numbered first_addon_message..last_addon_message.
-   */
-  const char * const * addon_message_table; /* Non-library errors */
-  int first_addon_message;	/* code for first string in addon table */
-  int last_addon_message;	/* code for last string in addon table */
-};
-
-
-/* Progress monitor object */
-
-struct jpeg_progress_mgr {
-  JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
-
-  long pass_counter;		/* work units completed in this pass */
-  long pass_limit;		/* total number of work units in this pass */
-  int completed_passes;		/* passes completed so far */
-  int total_passes;		/* total number of passes expected */
-};
-
-
-/* Data destination object for compression */
-
-struct jpeg_destination_mgr {
-  JOCTET * next_output_byte;	/* => next byte to write in buffer */
-  size_t free_in_buffer;	/* # of byte spaces remaining in buffer */
-
-  JMETHOD(void, init_destination, (j_compress_ptr cinfo));
-  JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo));
-  JMETHOD(void, term_destination, (j_compress_ptr cinfo));
-};
-
-
-/* Data source object for decompression */
-
-struct jpeg_source_mgr {
-  const JOCTET * next_input_byte; /* => next byte to read from buffer */
-  size_t bytes_in_buffer;	/* # of bytes remaining in buffer */
-
-  JMETHOD(void, init_source, (j_decompress_ptr cinfo));
-  JMETHOD(boolean, fill_input_buffer, (j_decompress_ptr cinfo));
-  JMETHOD(void, skip_input_data, (j_decompress_ptr cinfo, long num_bytes));
-  JMETHOD(boolean, resync_to_restart, (j_decompress_ptr cinfo));
-  JMETHOD(void, term_source, (j_decompress_ptr cinfo));
-};
-
-
-/* Memory manager object.
- * Allocates "small" objects (a few K total), "large" objects (tens of K),
- * and "really big" objects (virtual arrays with backing store if needed).
- * The memory manager does not allow individual objects to be freed; rather,
- * each created object is assigned to a pool, and whole pools can be freed
- * at once.  This is faster and more convenient than remembering exactly what
- * to free, especially where malloc()/free() are not too speedy.
- * NB: alloc routines never return NULL.  They exit to error_exit if not
- * successful.
- */
-
-#define JPOOL_PERMANENT	0	/* lasts until master record is destroyed */
-#define JPOOL_IMAGE	1	/* lasts until done with image/datastream */
-#define JPOOL_NUMPOOLS	2
-
-typedef struct jvirt_sarray_control * jvirt_sarray_ptr;
-typedef struct jvirt_barray_control * jvirt_barray_ptr;
-
-
-struct jpeg_memory_mgr {
-  /* Method pointers */
-  JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id,
-				size_t sizeofobject));
-  JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id,
-				     size_t sizeofobject));
-  JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
-				     JDIMENSION samplesperrow,
-				     JDIMENSION numrows));
-  JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id,
-				      JDIMENSION blocksperrow,
-				      JDIMENSION numrows));
-  JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo,
-						  int pool_id,
-						  JDIMENSION samplesperrow,
-						  JDIMENSION numrows,
-						  JDIMENSION unitheight));
-  JMETHOD(jvirt_barray_ptr, request_virt_barray, (j_common_ptr cinfo,
-						  int pool_id,
-						  JDIMENSION blocksperrow,
-						  JDIMENSION numrows,
-						  JDIMENSION unitheight));
-  JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo));
-  JMETHOD(JSAMPARRAY, access_virt_sarray, (j_common_ptr cinfo,
-					   jvirt_sarray_ptr ptr,
-					   JDIMENSION start_row,
-					   boolean writable));
-  JMETHOD(JBLOCKARRAY, access_virt_barray, (j_common_ptr cinfo,
-					    jvirt_barray_ptr ptr,
-					    JDIMENSION start_row,
-					    boolean writable));
-  JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id));
-  JMETHOD(void, self_destruct, (j_common_ptr cinfo));
-
-  /* Limit on memory allocation for this JPEG object.  (Note that this is
-   * merely advisory, not a guaranteed maximum; it only affects the space
-   * used for virtual-array buffers.)  May be changed by outer application
-   * after creating the JPEG object.
-   */
-  long max_memory_to_use;
-};
-
-
-/* Routine signature for application-supplied marker processing methods.
- * Need not pass marker code since it is stored in cinfo->unread_marker.
- */
-typedef JMETHOD(boolean, jpeg_marker_parser_method, (j_decompress_ptr cinfo));
-
-
-/* Declarations for routines called by application.
- * The JPP macro hides prototype parameters from compilers that can't cope.
- * Note JPP requires double parentheses.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JPP(arglist)	arglist
-#else
-#define JPP(arglist)	()
-#endif
-
-
-/* Short forms of external names for systems with brain-damaged linkers.
- * We shorten external names to be unique in the first six letters, which
- * is good enough for all known systems.
- * (If your compiler itself needs names to be unique in less than 15 
- * characters, you are out of luck.  Get a better compiler.)
- */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_std_error		jStdError
-#define jpeg_create_compress	jCreaCompress
-#define jpeg_create_decompress	jCreaDecompress
-#define jpeg_destroy_compress	jDestCompress
-#define jpeg_destroy_decompress	jDestDecompress
-#define jpeg_stdio_dest		jStdDest
-#define jpeg_stdio_src		jStdSrc
-#define jpeg_set_defaults	jSetDefaults
-#define jpeg_set_colorspace	jSetColorspace
-#define jpeg_default_colorspace	jDefColorspace
-#define jpeg_set_quality	jSetQuality
-#define jpeg_set_linear_quality	jSetLQuality
-#define jpeg_add_quant_table	jAddQuantTable
-#define jpeg_quality_scaling	jQualityScaling
-#define jpeg_suppress_tables	jSuppressTables
-#define jpeg_alloc_quant_table	jAlcQTable
-#define jpeg_alloc_huff_table	jAlcHTable
-#define jpeg_start_compress	jStrtCompress
-#define jpeg_write_scanlines	jWrtScanlines
-#define jpeg_finish_compress	jFinCompress
-#define jpeg_write_raw_data	jWrtRawData
-#define jpeg_write_marker	jWrtMarker
-#define jpeg_write_tables	jWrtTables
-#define jpeg_read_header	jReadHeader
-#define jpeg_start_decompress	jStrtDecompress
-#define jpeg_read_scanlines	jReadScanlines
-#define jpeg_finish_decompress	jFinDecompress
-#define jpeg_read_raw_data	jReadRawData
-#define jpeg_calc_output_dimensions	jCalcDimensions
-#define jpeg_set_marker_processor	jSetMarker
-#define jpeg_abort_compress	jAbrtCompress
-#define jpeg_abort_decompress	jAbrtDecompress
-#define jpeg_abort		jAbort
-#define jpeg_destroy		jDestroy
-#define jpeg_resync_to_restart	jResyncRestart
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Default error-management setup */
-EXTERN struct jpeg_error_mgr *jpeg_std_error JPP((struct jpeg_error_mgr *err));
-
-/* Initialization and destruction of JPEG compression objects */
-/* NB: you must set up the error-manager BEFORE calling jpeg_create_xxx */
-EXTERN void jpeg_create_compress JPP((j_compress_ptr cinfo));
-EXTERN void jpeg_create_decompress JPP((j_decompress_ptr cinfo));
-EXTERN void jpeg_destroy_compress JPP((j_compress_ptr cinfo));
-EXTERN void jpeg_destroy_decompress JPP((j_decompress_ptr cinfo));
-
-/* Standard data source and destination managers: stdio streams. */
-/* Caller is responsible for opening the file before and closing after. */
-EXTERN void jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile));
-EXTERN void jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile));
-
-/* Default parameter setup for compression */
-EXTERN void jpeg_set_defaults JPP((j_compress_ptr cinfo));
-/* Compression parameter setup aids */
-EXTERN void jpeg_set_colorspace JPP((j_compress_ptr cinfo,
-				     J_COLOR_SPACE colorspace));
-EXTERN void jpeg_default_colorspace JPP((j_compress_ptr cinfo));
-EXTERN void jpeg_set_quality JPP((j_compress_ptr cinfo, int quality,
-				  boolean force_baseline));
-EXTERN void jpeg_set_linear_quality JPP((j_compress_ptr cinfo,
-					 int scale_factor,
-					 boolean force_baseline));
-EXTERN void jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl,
-				      const unsigned int *basic_table,
-				      int scale_factor,
-				      boolean force_baseline));
-EXTERN int jpeg_quality_scaling JPP((int quality));
-EXTERN void jpeg_suppress_tables JPP((j_compress_ptr cinfo,
-				      boolean suppress));
-EXTERN JQUANT_TBL * jpeg_alloc_quant_table JPP((j_common_ptr cinfo));
-EXTERN JHUFF_TBL * jpeg_alloc_huff_table JPP((j_common_ptr cinfo));
-
-/* Main entry points for compression */
-EXTERN void jpeg_start_compress JPP((j_compress_ptr cinfo,
-				     boolean write_all_tables));
-EXTERN JDIMENSION jpeg_write_scanlines JPP((j_compress_ptr cinfo,
-					    JSAMPARRAY scanlines,
-					    JDIMENSION num_lines));
-EXTERN void jpeg_finish_compress JPP((j_compress_ptr cinfo));
-
-/* Replaces jpeg_write_scanlines when writing raw downsampled data. */
-EXTERN JDIMENSION jpeg_write_raw_data JPP((j_compress_ptr cinfo,
-					   JSAMPIMAGE data,
-					   JDIMENSION num_lines));
-
-/* Write a special marker.  See libjpeg.doc concerning safe usage. */
-EXTERN void jpeg_write_marker JPP((j_compress_ptr cinfo, int marker,
-				   const JOCTET *dataptr, unsigned int datalen));
-
-/* Alternate compression function: just write an abbreviated table file */
-EXTERN void jpeg_write_tables JPP((j_compress_ptr cinfo));
-
-/* Decompression startup: read start of JPEG datastream to see what's there */
-EXTERN int jpeg_read_header JPP((j_decompress_ptr cinfo,
-				 boolean require_image));
-/* Return value is one of: */
-#define JPEG_HEADER_OK		0 /* Found valid image datastream */
-#define JPEG_HEADER_TABLES_ONLY	1 /* Found valid table-specs-only datastream */
-#define JPEG_SUSPENDED		2 /* Had to suspend before end of headers */
-/* If you pass require_image = TRUE (normal case), you need not check for
- * a TABLES_ONLY return code; an abbreviated file will cause an error exit.
- * JPEG_SUSPENDED is only possible if you use a data source module that can
- * give a suspension return (the stdio source module doesn't).
- */
-
-/* Main entry points for decompression */
-EXTERN void jpeg_start_decompress JPP((j_decompress_ptr cinfo));
-EXTERN JDIMENSION jpeg_read_scanlines JPP((j_decompress_ptr cinfo,
-					   JSAMPARRAY scanlines,
-					   JDIMENSION max_lines));
-EXTERN boolean jpeg_finish_decompress JPP((j_decompress_ptr cinfo));
-
-/* Replaces jpeg_read_scanlines when reading raw downsampled data. */
-EXTERN JDIMENSION jpeg_read_raw_data JPP((j_decompress_ptr cinfo,
-					  JSAMPIMAGE data,
-					  JDIMENSION max_lines));
-
-/* Precalculate output dimensions for current decompression parameters. */
-EXTERN void jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo));
-
-/* Install a special processing method for COM or APPn markers. */
-EXTERN void jpeg_set_marker_processor JPP((j_decompress_ptr cinfo,
-					   int marker_code,
-					   jpeg_marker_parser_method routine));
-
-/* If you choose to abort compression or decompression before completing
- * jpeg_finish_(de)compress, then you need to clean up to release memory,
- * temporary files, etc.  You can just call jpeg_destroy_(de)compress
- * if you're done with the JPEG object, but if you want to clean it up and
- * reuse it, call this:
- */
-EXTERN void jpeg_abort_compress JPP((j_compress_ptr cinfo));
-EXTERN void jpeg_abort_decompress JPP((j_decompress_ptr cinfo));
-
-/* Generic versions of jpeg_abort and jpeg_destroy that work on either
- * flavor of JPEG object.  These may be more convenient in some places.
- */
-EXTERN void jpeg_abort JPP((j_common_ptr cinfo));
-EXTERN void jpeg_destroy JPP((j_common_ptr cinfo));
-
-/* Default restart-marker-resync procedure for use by data source modules */
-EXTERN boolean jpeg_resync_to_restart JPP((j_decompress_ptr cinfo));
-
-
-/* These marker codes are exported since applications and data source modules
- * are likely to want to use them.
- */
-
-#define JPEG_RST0	0xD0	/* RST0 marker code */
-#define JPEG_EOI	0xD9	/* EOI marker code */
-#define JPEG_APP0	0xE0	/* APP0 marker code */
-#define JPEG_COM	0xFE	/* COM marker code */
-
-
-/* If we have a brain-damaged compiler that emits warnings (or worse, errors)
- * for structure definitions that are never filled in, keep it quiet by
- * supplying dummy definitions for the various substructures.
- */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef JPEG_INTERNALS		/* will be defined in jpegint.h */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-struct jpeg_comp_master { long dummy; };
-struct jpeg_c_main_controller { long dummy; };
-struct jpeg_c_prep_controller { long dummy; };
-struct jpeg_c_coef_controller { long dummy; };
-struct jpeg_marker_writer { long dummy; };
-struct jpeg_color_converter { long dummy; };
-struct jpeg_downsampler { long dummy; };
-struct jpeg_forward_dct { long dummy; };
-struct jpeg_entropy_encoder { long dummy; };
-struct jpeg_decomp_master { long dummy; };
-struct jpeg_d_main_controller { long dummy; };
-struct jpeg_d_coef_controller { long dummy; };
-struct jpeg_d_post_controller { long dummy; };
-struct jpeg_marker_reader { long dummy; };
-struct jpeg_entropy_decoder { long dummy; };
-struct jpeg_inverse_dct { long dummy; };
-struct jpeg_upsampler { long dummy; };
-struct jpeg_color_deconverter { long dummy; };
-struct jpeg_color_quantizer { long dummy; };
-#endif /* JPEG_INTERNALS */
-#endif /* INCOMPLETE_TYPES_BROKEN */
-
-
-/*
- * The JPEG library modules define JPEG_INTERNALS before including this file.
- * The internal structure declarations are read only when that is true.
- * Applications using the library should not include jpegint.h, but may wish
- * to include jerror.h.
- */
-
-#ifdef JPEG_INTERNALS
-#include "jpegint.h"		/* fetch private declarations */
-#include "jerror.h"		/* fetch error codes too */
-#endif
diff --git a/jpeg/jrevdct.c b/jpeg/jrevdct.c
deleted file mode 100644
index 379e4b375a29d0b67451e7eecbbc74f46733191a..0000000000000000000000000000000000000000
--- a/jpeg/jrevdct.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * jrevdct.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the basic inverse-DCT transformation subroutine.
- *
- * This implementation is based on an algorithm described in
- *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
- *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
- *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
- * The primary algorithm described there uses 11 multiplies and 29 adds.
- * We use their alternate method with 12 multiplies and 32 adds.
- * The advantage of this method is that no data path contains more than one
- * multiplication; this allows a very simple and accurate implementation in
- * scaled fixed-point arithmetic, with a minimal number of shifts.
- */
-
-#include "jinclude.h"
-#include "jpegint.h"
-
-
-/*
- * This routine is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * A 2-D IDCT can be done by 1-D IDCT on each row followed by 1-D IDCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * The poop on this scaling stuff is as follows:
- *
- * Each 1-D IDCT step produces outputs which are a factor of sqrt(N)
- * larger than the true IDCT outputs.  The final outputs are therefore
- * a factor of N larger than desired; since N=8 this can be cured by
- * a simple right shift at the end of the algorithm.  The advantage of
- * this arrangement is that we save two multiplications per 1-D IDCT,
- * because the y0 and y4 inputs need not be divided by sqrt(N).
- *
- * We have to do addition and subtraction of the integer inputs, which
- * is no problem, and multiplication by fractional constants, which is
- * a problem to do in integer arithmetic.  We multiply all the constants
- * by CONST_SCALE and convert them to integer constants (thus retaining
- * CONST_BITS bits of precision in the constants).  After doing a
- * multiplication we have to divide the product by CONST_SCALE, with proper
- * rounding, to produce the correct output.  This division can be done
- * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
- * as long as possible so that partial sums can be added together with
- * full fractional precision.
- *
- * The outputs of the first pass are scaled up by PASS1_BITS bits so that
- * they are represented to better-than-integral precision.  These outputs
- * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word
- * with the recommended scaling.  (To scale up 12-bit sample data further, an
- * intermediate INT32 array would be needed.)
- *
- * To avoid overflow of the 32-bit intermediate results in pass 2, we must
- * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 26.  Error analysis
- * shows that the values given below are the most effective.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  1		/* lose a little precision to avoid overflow */
-#endif
-
-#define ONE	((INT32) 1)
-
-#define CONST_SCALE (ONE << CONST_BITS)
-
-/* Convert a positive real constant to an integer scaled by CONST_SCALE. */
-
-#define FIX(x)	((INT32) ((x) * CONST_SCALE + 0.5))
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_298631336  ((INT32)  2446)	/* FIX(0.298631336) */
-#define FIX_0_390180644  ((INT32)  3196)	/* FIX(0.390180644) */
-#define FIX_0_541196100  ((INT32)  4433)	/* FIX(0.541196100) */
-#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
-#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
-#define FIX_1_175875602  ((INT32)  9633)	/* FIX(1.175875602) */
-#define FIX_1_501321110  ((INT32)  12299)	/* FIX(1.501321110) */
-#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
-#define FIX_1_961570560  ((INT32)  16069)	/* FIX(1.961570560) */
-#define FIX_2_053119869  ((INT32)  16819)	/* FIX(2.053119869) */
-#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
-#define FIX_3_072711026  ((INT32)  25172)	/* FIX(3.072711026) */
-#else
-#define FIX_0_298631336  FIX(0.298631336)
-#define FIX_0_390180644  FIX(0.390180644)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_175875602  FIX(1.175875602)
-#define FIX_1_501321110  FIX(1.501321110)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_1_961570560  FIX(1.961570560)
-#define FIX_2_053119869  FIX(2.053119869)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_072711026  FIX(3.072711026)
-#endif
-
-
-/* Descale and correctly round an INT32 value that's scaled by N bits.
- * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
- * the fudge factor is correct for either sign of X.
- */
-
-#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply;
- * this provides a useful speedup on many machines.
- * There is no way to specify a 16x16->32 multiply in portable C, but
- * some C compilers will do the right thing if you provide the correct
- * combination of casts.
- * NB: for 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
-#define MULTIPLY(var,const)  (((INT16) (var)) * ((INT16) (const)))
-#endif
-#ifdef SHORTxLCONST_32		/* known to work with Microsoft C 6.0 */
-#define MULTIPLY(var,const)  (((INT16) (var)) * ((INT32) (const)))
-#endif
-#endif /* BITS_IN_JSAMPLE == 8 */
-
-#ifndef MULTIPLY		/* default definition */
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/*
- * Perform the inverse DCT on one block of coefficients.
- */
-
-GLOBAL void
-j_rev_dct (JCOEFPTR input, int * output)
-{
-  INT32 tmp0, tmp1, tmp2, tmp3;
-  INT32 tmp10, tmp11, tmp12, tmp13;
-  INT32 z1, z2, z3, z4, z5;
-  register int * outptr;
-  register JCOEFPTR inptr;
-  int rowctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows from input, store into output array. */
-  /* Note results are scaled up by sqrt(8) compared to a true IDCT; */
-  /* furthermore, we scale the results by 2**PASS1_BITS. */
-
-  inptr = input;
-  outptr = output;
-  for (rowctr = DCTSIZE; rowctr > 0; rowctr--) {
-    /* Due to quantization, we will usually find that many of the input
-     * coefficients are zero, especially the AC terms.  We can exploit this
-     * by short-circuiting the IDCT calculation for any row in which all
-     * the AC terms are zero.  In that case each output is equal to the
-     * DC coefficient (with scale factor as needed).
-     * With typical images and quantization tables, half or more of the
-     * row DCT calculations can be simplified this way.
-     */
-    
-    if ((inptr[1] | inptr[2] | inptr[3] | inptr[4] | inptr[5] |
-	 inptr[6] | inptr[7]) == 0) {
-      /* AC terms all zero */
-      int dcval = ((int) inptr[0]) << PASS1_BITS;
-      
-      outptr[0] = dcval;
-      outptr[1] = dcval;
-      outptr[2] = dcval;
-      outptr[3] = dcval;
-      outptr[4] = dcval;
-      outptr[5] = dcval;
-      outptr[6] = dcval;
-      outptr[7] = dcval;
-      
-      inptr += DCTSIZE;		/* advance pointers to next row */
-      outptr += DCTSIZE;
-      continue;
-    }
-    
-    /* Even part: reverse the even part of the forward DCT. */
-    /* The rotator is sqrt(2)*c(-6). */
-    
-    z2 = (INT32) inptr[2];
-    z3 = (INT32) inptr[6];
-    
-    z1 = MULTIPLY(z2 + z3, FIX_0_541196100);
-    tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065);
-    tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865);
-    
-    tmp0 = ((INT32) inptr[0] + (INT32) inptr[4]) << CONST_BITS;
-    tmp1 = ((INT32) inptr[0] - (INT32) inptr[4]) << CONST_BITS;
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    /* Odd part per figure 8; the matrix is unitary and hence its
-     * transpose is its inverse.  i0..i3 are y7,y5,y3,y1 respectively.
-     */
-    
-    tmp0 = (INT32) inptr[7];
-    tmp1 = (INT32) inptr[5];
-    tmp2 = (INT32) inptr[3];
-    tmp3 = (INT32) inptr[1];
-    
-    z1 = tmp0 + tmp3;
-    z2 = tmp1 + tmp2;
-    z3 = tmp0 + tmp2;
-    z4 = tmp1 + tmp3;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    tmp0 += z1 + z3;
-    tmp1 += z2 + z4;
-    tmp2 += z2 + z3;
-    tmp3 += z1 + z4;
-    
-    /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */
-    
-    outptr[0] = (int) DESCALE(tmp10 + tmp3, CONST_BITS-PASS1_BITS);
-    outptr[7] = (int) DESCALE(tmp10 - tmp3, CONST_BITS-PASS1_BITS);
-    outptr[1] = (int) DESCALE(tmp11 + tmp2, CONST_BITS-PASS1_BITS);
-    outptr[6] = (int) DESCALE(tmp11 - tmp2, CONST_BITS-PASS1_BITS);
-    outptr[2] = (int) DESCALE(tmp12 + tmp1, CONST_BITS-PASS1_BITS);
-    outptr[5] = (int) DESCALE(tmp12 - tmp1, CONST_BITS-PASS1_BITS);
-    outptr[3] = (int) DESCALE(tmp13 + tmp0, CONST_BITS-PASS1_BITS);
-    outptr[4] = (int) DESCALE(tmp13 - tmp0, CONST_BITS-PASS1_BITS);
-    
-    inptr += DCTSIZE;		/* advance pointers to next row */
-    outptr += DCTSIZE;
-  }
-  
-  /* Pass 2: process columns.  This works entirely in the output array. */
-  /* Note that we must descale the results by a factor of 8 == 2**3, */
-  /* and also undo the PASS1_BITS scaling. */
-  
-  outptr = output;
-  for (rowctr = DCTSIZE; rowctr > 0; rowctr--) {
-    /* Columns of zeroes can be exploited in the same way as we did with rows.
-     * However, the row calculation has created many nonzero AC terms, so the
-     * simplification applies less often (typically 5% to 10% of the time).
-     * On machines with very fast multiplication, it's possible that the
-     * test takes more time than it's worth.  In that case this section
-     * may be commented out.
-     */
-    
-#ifndef NO_ZERO_COLUMN_TEST
-    if ((outptr[DCTSIZE*1] | outptr[DCTSIZE*2] | outptr[DCTSIZE*3] |
-	 outptr[DCTSIZE*4] | outptr[DCTSIZE*5] | outptr[DCTSIZE*6] |
-	 outptr[DCTSIZE*7]) == 0) {
-      /* AC terms all zero */
-      int dcval = (int) DESCALE((INT32) outptr[0], PASS1_BITS+3);
-      
-      outptr[DCTSIZE*0] = dcval;
-      outptr[DCTSIZE*1] = dcval;
-      outptr[DCTSIZE*2] = dcval;
-      outptr[DCTSIZE*3] = dcval;
-      outptr[DCTSIZE*4] = dcval;
-      outptr[DCTSIZE*5] = dcval;
-      outptr[DCTSIZE*6] = dcval;
-      outptr[DCTSIZE*7] = dcval;
-      
-      outptr++;			/* advance pointer to next column */
-      continue;
-    }
-#endif
-    
-    /* Even part: reverse the even part of the forward DCT. */
-    /* The rotator is sqrt(2)*c(-6). */
-    
-    z2 = (INT32) outptr[DCTSIZE*2];
-    z3 = (INT32) outptr[DCTSIZE*6];
-    
-    z1 = MULTIPLY(z2 + z3, FIX_0_541196100);
-    tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065);
-    tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865);
-    
-    tmp0 = ((INT32) outptr[DCTSIZE*0] + (INT32) outptr[DCTSIZE*4]) << CONST_BITS;
-    tmp1 = ((INT32) outptr[DCTSIZE*0] - (INT32) outptr[DCTSIZE*4]) << CONST_BITS;
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    /* Odd part per figure 8; the matrix is unitary and hence its
-     * transpose is its inverse.  i0..i3 are y7,y5,y3,y1 respectively.
-     */
-    
-    tmp0 = (INT32) outptr[DCTSIZE*7];
-    tmp1 = (INT32) outptr[DCTSIZE*5];
-    tmp2 = (INT32) outptr[DCTSIZE*3];
-    tmp3 = (INT32) outptr[DCTSIZE*1];
-    
-    z1 = tmp0 + tmp3;
-    z2 = tmp1 + tmp2;
-    z3 = tmp0 + tmp2;
-    z4 = tmp1 + tmp3;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    tmp0 += z1 + z3;
-    tmp1 += z2 + z4;
-    tmp2 += z2 + z3;
-    tmp3 += z1 + z4;
-    
-    /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */
-    
-    outptr[DCTSIZE*0] = (int) DESCALE(tmp10 + tmp3,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*7] = (int) DESCALE(tmp10 - tmp3,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*1] = (int) DESCALE(tmp11 + tmp2,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*6] = (int) DESCALE(tmp11 - tmp2,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*2] = (int) DESCALE(tmp12 + tmp1,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*5] = (int) DESCALE(tmp12 - tmp1,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*3] = (int) DESCALE(tmp13 + tmp0,
-				      CONST_BITS+PASS1_BITS+3);
-    outptr[DCTSIZE*4] = (int) DESCALE(tmp13 - tmp0,
-				      CONST_BITS+PASS1_BITS+3);
-    
-    outptr++;			/* advance pointer to next column */
-  }
-}
diff --git a/jpeg/jutils.c b/jpeg/jutils.c
deleted file mode 100644
index ef1017406956c9f15b708f92c27c35a660618f58..0000000000000000000000000000000000000000
--- a/jpeg/jutils.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * jutils.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains miscellaneous utility routines needed for both
- * compression and decompression.
- * Note we prefix all global names with "j" to minimize conflicts with
- * a surrounding application.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Arithmetic utilities
- */
-
-GLOBAL long
-jdiv_round_up (long a, long b)
-/* Compute a/b rounded up to next integer, ie, ceil(a/b) */
-/* Assumes a >= 0, b > 0 */
-{
-  return (a + b - 1L) / b;
-}
-
-
-GLOBAL long
-jround_up (long a, long b)
-/* Compute a rounded up to next multiple of b, ie, ceil(a/b)*b */
-/* Assumes a >= 0, b > 0 */
-{
-  a += b - 1L;
-  return a - (a % b);
-}
-
-
-/* On normal machines we can apply MEMCOPY() and MEMZERO() to sample arrays
- * and coefficient-block arrays.  This won't work on 80x86 because the arrays
- * are FAR and we're assuming a small-pointer memory model.  However, some
- * DOS compilers provide far-pointer versions of memcpy() and memset() even
- * in the small-model libraries.  These will be used if USE_FMEM is defined.
- * Otherwise, the routines below do it the hard way.  (The performance cost
- * is not all that great, because these routines aren't very heavily used.)
- */
-
-#ifndef NEED_FAR_POINTERS	/* normal case, same as regular macros */
-#define FMEMCOPY(dest,src,size)	MEMCOPY(dest,src,size)
-#define FMEMZERO(target,size)	MEMZERO(target,size)
-#else				/* 80x86 case, define if we can */
-#ifdef USE_FMEM
-#define FMEMCOPY(dest,src,size)	_fmemcpy((void FAR *)(dest), (const void FAR *)(src), (size_t)(size))
-#define FMEMZERO(target,size)	_fmemset((void FAR *)(target), 0, (size_t)(size))
-#endif
-#endif
-
-
-GLOBAL void
-jcopy_sample_rows (JSAMPARRAY input_array, int source_row,
-		   JSAMPARRAY output_array, int dest_row,
-		   int num_rows, JDIMENSION num_cols)
-/* Copy some rows of samples from one place to another.
- * num_rows rows are copied from input_array[source_row++]
- * to output_array[dest_row++]; these areas may overlap for duplication.
- * The source and destination arrays must be at least as wide as num_cols.
- */
-{
-  register JSAMPROW inptr, outptr;
-#ifdef FMEMCOPY
-  register size_t count = (size_t) (num_cols * SIZEOF(JSAMPLE));
-#else
-  register JDIMENSION count;
-#endif
-  register int row;
-
-  input_array += source_row;
-  output_array += dest_row;
-
-  for (row = num_rows; row > 0; row--) {
-    inptr = *input_array++;
-    outptr = *output_array++;
-#ifdef FMEMCOPY
-    FMEMCOPY(outptr, inptr, count);
-#else
-    for (count = num_cols; count > 0; count--)
-      *outptr++ = *inptr++;	/* needn't bother with GETJSAMPLE() here */
-#endif
-  }
-}
-
-
-GLOBAL void
-jcopy_block_row (JBLOCKROW input_row, JBLOCKROW output_row,
-		 JDIMENSION num_blocks)
-/* Copy a row of coefficient blocks from one place to another. */
-{
-#ifdef FMEMCOPY
-  FMEMCOPY(output_row, input_row, num_blocks * (DCTSIZE2 * SIZEOF(JCOEF)));
-#else
-  register JCOEFPTR inptr, outptr;
-  register long count;
-
-  inptr = (JCOEFPTR) input_row;
-  outptr = (JCOEFPTR) output_row;
-  for (count = (long) num_blocks * DCTSIZE2; count > 0; count--) {
-    *outptr++ = *inptr++;
-  }
-#endif
-}
-
-
-GLOBAL void
-jzero_far (void FAR * target, size_t bytestozero)
-/* Zero out a chunk of FAR memory. */
-/* This might be sample-array data, block-array data, or alloc_medium data. */
-{
-#ifdef FMEMZERO
-  FMEMZERO(target, bytestozero);
-#else
-  register char FAR * ptr = (char FAR *) target;
-  register size_t count;
-
-  for (count = bytestozero; count > 0; count--) {
-    *ptr++ = 0;
-  }
-#endif
-}
diff --git a/jpeg/jversion.h b/jpeg/jversion.h
deleted file mode 100644
index 4bc19876053402194edc19509eba766cc848aac9..0000000000000000000000000000000000000000
--- a/jpeg/jversion.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * jversion.h
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains software version identification.
- */
-
-
-#define JVERSION	"5  24-Sep-94"
-
-#define JCOPYRIGHT	"Copyright (C) 1994, Thomas G. Lane"
diff --git a/lib/Makefile b/lib/Makefile
deleted file mode 100644
index 63144f4277307aa2f1946ec48c8bdfb5debb98f0..0000000000000000000000000000000000000000
--- a/lib/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# $Id: Makefile,v 1.3 2000-11-25 15:26:12 geuzaine Exp $
-
-RM        = rm
-RMFLAGS   = -f
-
-
-clean:
-	$(RM) $(RMFLAGS) *.a
-
diff --git a/tutorial/README b/tutorial/README
deleted file mode 100644
index e239e6056c72a069a39c687b2207b5c3c55f8561..0000000000000000000000000000000000000000
--- a/tutorial/README
+++ /dev/null
@@ -1,105 +0,0 @@
-$Id: README,v 1.13 2001-08-04 01:16:58 geuzaine Exp $
-
-Here are the examples in the Gmsh tutorial. These examples are
-commented (both C and C++-style comments can be used in Gmsh input
-files) and should introduce new features gradually, starting with
-t1.geo.
-
-[NOTE: This tutorial does not explain the mesh and post-processing
-file formats. See the FORMATS file for this.]
-
-There are two ways to actually run these examples with Gmsh. (The
-operations to run Gmsh may vary according to your operating system. In
-the folowing examples, we will assume that you're working with a
-UNIX-like shell.) The first working mode of Gmsh is the interactive
-graphical mode. To launch Gmsh in interactive mode, just type
-
-> gmsh
-
-at the prompt on the command line. This will open two windows: the
-graphic window (with a status bar at the bottom) and the menu window
-(with a menu bar and some context dependent buttons). To open the
-first tutorial file, select the 'File->Open' menu, and choose 't1.geo'
-in the input field. To perform the mesh generation, go to the mesh
-module (by selecting 'Mesh' in the module menu) and choose the
-required dimension in the context-dependent buttons ('1D' will mesh
-all the curves; '2D' will mesh all the surfaces ---as well as all the
-curves if '1D' was not called before; '3D' will mesh all the volumes
----and all the surfaces if '2D' was not called before). To save the
-resulting mesh in the current mesh format, choose 'Save' in the
-context-dependent buttons, or select the appropriate format with the
-'File->Save as' menu. The default mesh file name is based on the name
-of the first input file on the command line (or 'unnamed' if there
-wasn't any input file given), with an appended extension depending on
-the mesh format.
-
-[NOTE: Nearly all the interactive commands have shortcuts. Select
-'Help->Shortcuts' in the menu bar to learn about these shortcuts.]
-
-Instead of opening the tutorial with the 'File->Open' menu, it is
-often more convenient to put the file name on the command line, for
-example with:
-
-> gmsh t1.geo
-
-[NOTE: The '.geo' extension can also be omitted.]
-
-[NOTE: Even if it is often handy to define the variables and the points
-directly in the input files (you may use any text editor for this
-purpose, e.g. Wordpad on Windows, or Emacs on Unix), it is almost
-always more simple to define the curves, the surfaces and the volumes
-interactively. To do so, just follow the context dependent buttons in
-the Geometry module. For example, to create a line, select 'Geometry'
-in the module menu, and then select 'Elementary, Add, Create,
-Line'. You will then be asked (in the status bar of the graphic
-window) to select a list of points, and to click 'e' to finish the
-selection (or 'q' to abort it). Once the interactive command is
-completed, a string is automatically added at the end of the currently
-opened project file.]
-
-The second operating mode for Gmsh is the non-interactive mode. In
-this mode, there is no graphical user interface, and all operations
-are performed without any interaction. To mesh the first tutorial in
-non-interactive mode, just type:
-
-> gmsh t1.geo -2
-
-To mesh the same example, but with the backgound mesh available in the
-file 'bgmesh.pos', just type:
-
-> gmsh t1.geo -2 -bgm bgmesh.pos
-
-[NOTE: You should read the notes in the file 'bgmesh.pos' if you
-intend to use background meshes.]
-
-Several files can be loaded simultaneously in Gmsh. The first one
-defines the project, while the others are appended ("merged") to this
-project. You can merge such files with the 'File->Merge' menu, or by
-directly specifying the names of the files on the command line. This
-is most useful for post-processing purposes. For example, to merge the
-post-processing views contained in the files 'view1.pos' and
-'view2.pos' together with the first tutorial 't1.geo', you can type
-the following line on the command line:
-
-> gmsh t1.geo view1.pos view2.pos
-
-In the Post-Processing module (select 'Post_Processing' in the module
-menu), two view buttons will appear, respectively labeled "a scalar
-map" and "a vector map". A left mouse click toggles the visibility of
-the selected view. A right mouse click provides access to the view's
-options. If you want the modifications made to one view to affect also
-all the other views, select the 'Apply next changes to all views' or
-'Force same options for all views' option in the
-'Options->Post-processing' menu.
-
-[NOTE: All the options specified interactively can also be directly
-specified in the ascii input files. All available options, with their
-current values, can be saved into a file by selecting 'File->Save
-as->GEO complete options', or simply viewed by pressing the '?' button
-in the status bar. To save the current options as your default
-preferences for all future Gmsh sessions, use the 'Options->Save
-options now' menu.]
-
-
-OK, that's all, folks. Enjoy the tutorial.
-
diff --git a/tutorial/bgmesh.pos b/tutorial/bgmesh.pos
deleted file mode 100644
index 7125b2ba2d5575f95f1f17d0fc85eabf3a9ab75e..0000000000000000000000000000000000000000
--- a/tutorial/bgmesh.pos
+++ /dev/null
@@ -1,1401 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 1 - appendix 3
- * 
- *  2D background mesh
- *
- *********************************************************************/
-
-// This post-processing view contains scalar triangles. The values
-// represent the target characteristic mesh sizes to be applied to the
-// first tutorial, t1.geo.
-//
-// There are two ways to use this view as a background mesh:
-//
-// 1) open t1.geo, merge bgmesh.pos, select 'Apply as background mesh'
-//    in the view's options (by right mouse clicking on the view's
-//    button), and mesh the problem.
-//
-// 2) launch Gmsh with 'gmsh t1.geo -bgm bgmesh.pos' and mesh the 
-//    problem.
-
-View "background mesh" {
-ST(0.077999455,0.23524011,0,0.068887619,0.23816425,0,0.069899638,0.22912552,0){0.01189957,0.011832084,0.0079913397};
-ST(0.010825671,0.099590532,0,0.017290659,0.10415759,0,0.0069230724,0.10599149,0){0.004016107,0.005360028,0.0033428238};
-ST(0.090008104,0.28998113,0,0.085714286,0.3,0,0.081687843,0.29203932,0){0.016147484,0.018964149,0.015803058};
-ST(0.017290659,0.10415759,0,0.012784661,0.11066528,0,0.0069230724,0.10599149,0){0.005360028,0.0045452747,0.0033428238};
-ST(0.090008104,0.28998113,0,0.082630752,0.28262165,0,0.093083753,0.28331412,0){0.016147484,0.010973814,0.01260174};
-ST(0.049952063,0.1787418,0,0.042689804,0.18635753,0,0.04131315,0.17777431,0){0.0098216119,0.0097748212,0.0082407056};
-ST(0.03069513,0.26894688,0,0.031975417,0.25926175,0,0.03870412,0.26169066,0){0.0068303314,0.0083004448,0.0094231843};
-ST(0.089406716,0.20396751,0,0.093260637,0.21041677,0,0.082328401,0.21016288,0){0.019494326,0.018844578,0.016915435};
-ST(0.031727435,0.080354054,0,0.026085268,0.073876802,0,0.031467861,0.069797289,0){0.0070919301,0.0058065079,0.006435259};
-ST(0.08910917,0.098496512,0,0.093000475,0.1047961,0,0.082067363,0.10446681,0){0.01901377,0.020272382,0.01810119};
-ST(0.093260637,0.21041677,0,0.087181126,0.21483096,0,0.082328401,0.21016288,0){0.018844578,0.016308886,0.016915435};
-ST(0.049993928,0.12587718,0,0.042328752,0.13293246,0,0.041543317,0.12438759,0){0.011673871,0.009694753,0.010099467};
-ST(0.063624353,0.22254194,0,0.073845419,0.2209308,0,0.069899638,0.22912552,0){0.0098145667,0.011831692,0.0079913397};
-ST(0.093000475,0.1047961,0,0.087157047,0.10934378,0,0.082067363,0.10446681,0){0.020272382,0.019341606,0.01810119};
-ST(0.1,0.27142857,0,0.1,0.27857143,0,0.090371277,0.27649128,0){0.017019935,0.01232876,0.012591106};
-ST(0.036904468,0.073804537,0,0.031727435,0.080354054,0,0.031467861,0.069797289,0){0.0075426679,0.0070919301,0.006435259};
-ST(0.08966753,0.048486622,0,0.087298598,0.058683388,0,0.081684953,0.055147379,0){0.012741374,0.013637256,0.012440745};
-ST(0.063624353,0.22254194,0,0.060721208,0.21210696,0,0.068257319,0.21507018,0){0.0098145667,0.012543826,0.013061516};
-ST(0.0086756768,0.036899292,0,0,0.031797718,0,0.0055959319,0.028632452,0){0.0021713487,0.0011210343,0.0017127759};
-ST(0.021553482,0.081174183,0,0.025886934,0.08860133,0,0.016263823,0.084450562,0){0.0053983383,0.0064910537,0.0046096007};
-ST(0.025886934,0.08860133,0,0.017510909,0.090546457,0,0.016263823,0.084450562,0){0.0064910537,0.0050417352,0.0046096007};
-ST(0,0.038198556,0,0,0.031797718,0,0.0086756768,0.036899292,0){0.0011742026,0.0011210343,0.0021713487};
-ST(0.036329714,0.11757216,0,0.044718386,0.11394827,0,0.046632264,0.12023287,0){0.0092480093,0.010943235,0.011250538};
-ST(0.052562678,0.20392294,0,0.061970306,0.20134793,0,0.054994472,0.20965729,0){0.012272703,0.01431047,0.011998039};
-ST(0.085714286,0.3,0,0.090008104,0.28998113,0,0.094208762,0.29420256,0){0.018964149,0.016147484,0.018972662};
-ST(0.053583525,0.11616451,0,0.063913425,0.11688174,0,0.055297829,0.12231774,0){0.012709223,0.014765299,0.012895552};
-ST(0.068887619,0.23816425,0,0.06251245,0.23827584,0,0.063977145,0.22848817,0){0.011832084,0.01091156,0.0073732166};
-ST(0.060721208,0.21210696,0,0.063624353,0.22254194,0,0.055853935,0.21726741,0){0.012543826,0.0098145667,0.010404133};
-ST(0.0088859191,0.14145589,0,0,0.13607591,0,0.0053512079,0.13276494,0){0.0031626243,0.0017953562,0.0028483266};
-ST(0.033568202,0.044135264,0,0.024359349,0.045685236,0,0.026665403,0.037799711,0){0.0053659814,0.0042875226,0.0042921244};
-ST(0.090008104,0.28998113,0,0.1,0.28571429,0,0.094208762,0.29420256,0){0.016147484,0.014962161,0.018972662};
-ST(0.082630752,0.28262165,0,0.090008104,0.28998113,0,0.081687843,0.29203932,0){0.010973814,0.016147484,0.015803058};
-ST(0.060533545,0.055251798,0,0.062787056,0.044920338,0,0.067714741,0.05140667,0){0.0095798189,0.0090240074,0.010194849};
-ST(0.062787056,0.044920338,0,0.060533545,0.055251798,0,0.05563397,0.050831549,0){0.0090240074,0.0095798189,0.0085660039};
-ST(0,0.14272272,0,0,0.13607591,0,0.0088859191,0.14145589,0){0.0016420471,0.0017953562,0.0031626243};
-ST(0.041543317,0.12438759,0,0.036329714,0.11757216,0,0.046632264,0.12023287,0){0.010099467,0.0092480093,0.011250538};
-ST(0.01511463,0.2393591,0,0.024913192,0.2415392,0,0.016666559,0.24707082,0){0.003913276,0.0057883538,0.0049690135};
-ST(0.1,0.27142857,0,0.090371277,0.27649128,0,0.093179303,0.2678908,0){0.017019935,0.012591106,0.017810421};
-ST(0.054994472,0.20965729,0,0.061970306,0.20134793,0,0.064084929,0.20704546,0){0.011998039,0.01431047,0.014136837};
-ST(0.063913425,0.11688174,0,0.06020365,0.12640845,0,0.055297829,0.12231774,0){0.014765299,0.013623005,0.012895552};
-ST(0.082630752,0.28262165,0,0.073416465,0.27934608,0,0.083774702,0.27611409,0){0.010973814,0.0088333373,0.011867254};
-ST(0.064553118,0.015646957,0,0.068927504,0.0060918646,0,0.07060324,0.015557736,0){0.0076743125,0.0079278993,0.0082944052};
-ST(0.026088282,0.11662569,0,0.024878246,0.10641205,0,0.031699447,0.11078243,0){0.0072108519,0.0068975847,0.0083198518};
-ST(0.029469652,0.005642048,0,0.035472349,0.0074078563,0,0.029473654,0.015232311,0){0.0039620423,0.004577179,0.0040572572};
-ST(0.026404382,0.1403628,0,0.021768928,0.13185708,0,0.027097286,0.12998702,0){0.0061938225,0.0059408379,0.0070390802};
-ST(0.06020365,0.12640845,0,0.063913425,0.11688174,0,0.065548757,0.12300421,0){0.013623005,0.014765299,0.014884473};
-ST(0.068083985,0.13292159,0,0.06020365,0.12640845,0,0.065548757,0.12300421,0){0.014467744,0.013623005,0.014884473};
-ST(0.090756854,0.23190656,0,0.082404782,0.22674486,0,0.091139261,0.22291429,0){0.012032973,0.010486323,0.013217271};
-ST(0.091442458,0.17596857,0,0.088897881,0.18581252,0,0.083403881,0.18288957,0){0.01565701,0.01821991,0.016492804};
-ST(0.056202721,0.28169173,0,0.059957664,0.27407069,0,0.066334221,0.27760857,0){0.0071383318,0.0097471839,0.0092000449};
-ST(0.045608803,0.090081762,0,0.052243848,0.09708824,0,0.043535837,0.098689724,0){0.010159785,0.011856809,0.010280302};
-ST(0.063593879,0.28436636,0,0.056202721,0.28169173,0,0.066334221,0.27760857,0){0.0093505769,0.0071383318,0.0092000449};
-ST(0.078003603,0.24394837,0,0.080764352,0.25370675,0,0.074546647,0.25397984,0){0.015457416,0.018075953,0.0168549};
-ST(0.082630752,0.28262165,0,0.090371277,0.27649128,0,0.093083753,0.28331412,0){0.010973814,0.012591106,0.01260174};
-ST(0.069899638,0.22912552,0,0.068887619,0.23816425,0,0.063977145,0.22848817,0){0.0079913397,0.011832084,0.0073732166};
-ST(0.1,0.28571429,0,0.090008104,0.28998113,0,0.093083753,0.28331412,0){0.014962161,0.016147484,0.01260174};
-ST(0.014905173,0.28510008,0,0.010287914,0.27534428,0,0.018023907,0.27765349,0){0.0033226234,0.0027159036,0.0033417499};
-ST(0.021768928,0.13185708,0,0.026404382,0.1403628,0,0.017146751,0.13667282,0){0.0059408379,0.0061938225,0.0048412481};
-ST(0.010988582,0.15262774,0,0.017270897,0.15739381,0,0.0069940321,0.15907843,0){0.0028106617,0.0031824437,0.001901441};
-ST(0.023581972,0.097370644,0,0.017510909,0.090546457,0,0.025886934,0.08860133,0){0.006406371,0.0050417352,0.0064910537};
-ST(0.017270897,0.15739381,0,0.012839023,0.16391618,0,0.0069940321,0.15907843,0){0.0031824437,0.0025080878,0.001901441};
-ST(0.010287914,0.27534428,0,0.014905173,0.28510008,0,0.0072882997,0.28273448,0){0.0027159036,0.0033226234,0.0020641429};
-ST(0.032166514,0.1863502,0,0.042689804,0.18635753,0,0.037423894,0.19247533,0){0.0078219415,0.0097748212,0.0093169769};
-ST(0.064553118,0.015646957,0,0.062145045,0.0076586897,0,0.068927504,0.0060918646,0){0.0076743125,0.0072652846,0.0079278993};
-ST(0.038361486,0.26932975,0,0.03069513,0.26894688,0,0.03870412,0.26169066,0){0.0080129566,0.0068303314,0.0094231843};
-ST(0.034829369,0.02335383,0,0.030599619,0.030587128,0,0.025374297,0.027198867,0){0.004776128,0.0045148124,0.0038510471};
-ST(0.069592365,0.2044761,0,0.075044373,0.21065322,0,0.068257319,0.21507018,0){0.015550958,0.015462793,0.013061516};
-ST(0.027245934,0.021259063,0,0.034829369,0.02335383,0,0.025374297,0.027198867,0){0.0039264931,0.004776128,0.0038510471};
-ST(0.024913192,0.2415392,0,0.01511463,0.2393591,0,0.020771052,0.23704614,0){0.0057883538,0.003913276,0.0044321473};
-ST(0.031910893,0.1329396,0,0.026404382,0.1403628,0,0.027097286,0.12998702,0){0.0077641922,0.0061938225,0.0070390802};
-ST(0.032223949,0.094413692,0,0.023581972,0.097370644,0,0.025886934,0.08860133,0){0.0079256222,0.006406371,0.0064910537};
-ST(0.014285714,0.3,0,0.0086856391,0.29134398,0,0.017895429,0.29268335,0){0.0048122771,0.0031515581,0.0048907512};
-ST(0.06020365,0.12640845,0,0.068083985,0.13292159,0,0.061700615,0.13262108,0){0.013623005,0.014467744,0.013320597};
-ST(0.073416465,0.27934608,0,0.078294484,0.27242298,0,0.083774702,0.27611409,0){0.0088333373,0.01320473,0.011867254};
-ST(0.026085268,0.073876802,0,0.01667016,0.076996579,0,0.022758147,0.069506288,0){0.0058065079,0.0044083295,0.0050703118};
-ST(0.0097873579,0.21453362,0,0.012217264,0.2047927,0,0.017536395,0.20823956,0){0.0033423208,0.004330336,0.0051815338};
-ST(0.07511088,0.16072173,0,0.077093289,0.16951597,0,0.068059877,0.16458271,0){0.0087749301,0.011325245,0.0087794571};
-ST(0.042689804,0.18635753,0,0.032166514,0.1863502,0,0.035632482,0.1808812,0){0.0097748212,0.0078219415,0.0077875372};
-ST(0.023785868,0.1502414,0,0.024892413,0.15941751,0,0.017270897,0.15739381,0){0.0047927965,0.0038380393,0.0031824437};
-ST(0.091262725,0.14644758,0,0.087150461,0.15605115,0,0.082655945,0.15094656,0){0.01557235,0.011826762,0.012939286};
-ST(0.042689804,0.18635753,0,0.049952063,0.1787418,0,0.049745249,0.18581505,0){0.0097748212,0.0098216119,0.011007309};
-ST(0.024878246,0.10641205,0,0.026088282,0.11662569,0,0.020103716,0.1121562,0){0.0068975847,0.0072108519,0.006015088};
-ST(0.043421277,0.070486317,0,0.036645028,0.065460046,0,0.04109467,0.060492019,0){0.0083417443,0.0069586979,0.0072817007};
-ST(0.033568202,0.044135264,0,0.026665403,0.037799711,0,0.032234088,0.038660634,0){0.0053659814,0.0042921244,0.0049768543};
-ST(0.021114997,0.031742287,0,0.030599619,0.030587128,0,0.026665403,0.037799711,0){0.0034867915,0.0045148124,0.0042921244};
-ST(0.025388465,0.21882491,0,0.015882078,0.22251136,0,0.018022534,0.21455918,0){0.0053446137,0.0034527378,0.0047312007};
-ST(0.069592365,0.2044761,0,0.068257319,0.21507018,0,0.064084929,0.20704546,0){0.015550958,0.013061516,0.014136837};
-ST(0.063357463,0.065442129,0,0.072251719,0.070805738,0,0.066454746,0.074006402,0){0.010941973,0.01288041,0.012316324};
-ST(0.073845419,0.2209308,0,0.063624353,0.22254194,0,0.068257319,0.21507018,0){0.011831692,0.0098145667,0.013061516};
-ST(0.01667016,0.076996579,0,0.017377178,0.070609144,0,0.022758147,0.069506288,0){0.0044083295,0.0042796585,0.0050703118};
-ST(0.045236581,0.26460649,0,0.053554762,0.26522616,0,0.045177088,0.27188516,0){0.0102386,0.01164797,0.0084113388};
-ST(0.04677464,0.063987522,0,0.043421277,0.070486317,0,0.04109467,0.060492019,0){0.0083560787,0.0083417443,0.0072817007};
-ST(0.024953134,0.05500472,0,0.024359349,0.045685236,0,0.031526637,0.051365987,0){0.0047366364,0.0042875226,0.005445607};
-ST(0.030550045,0.12422927,0,0.036329714,0.11757216,0,0.035995823,0.12783992,0){0.007950786,0.0092480093,0.0088531158};
-ST(0.045177088,0.27188516,0,0.053554762,0.26522616,0,0.053293432,0.27215527,0){0.0084113388,0.01164797,0.0095317783};
-ST(0.025933861,0.16956771,0,0.024892413,0.15941751,0,0.031586673,0.16385918,0){0.0046706454,0.0038380393,0.0045180602};
-ST(0.024359349,0.045685236,0,0.033568202,0.044135264,0,0.031526637,0.051365987,0){0.0042875226,0.0053659814,0.005445607};
-ST(0.075863318,0.15128967,0,0.071665053,0.14281002,0,0.077226062,0.14082844,0){0.011891738,0.013390699,0.01474222};
-ST(0,0.12282405,0,0,0.1162249,0,0.0089155203,0.11918733,0){0.0019714567,0.0019987419,0.0037661726};
-ST(0.035581831,0.21858705,0,0.025388465,0.21882491,0,0.026946825,0.21343101,0){0.0069414214,0.0053446137,0.006387962};
-ST(0.042328752,0.13293246,0,0.049993928,0.12587718,0,0.049672348,0.13321934,0){0.009694753,0.011673871,0.011026506};
-ST(0.082093837,0.14416854,0,0.075863318,0.15128967,0,0.077226062,0.14082844,0){0.014763534,0.011891738,0.01474222};
-ST(0.026404382,0.1403628,0,0.017650615,0.14332879,0,0.017146751,0.13667282,0){0.0061938225,0.0044959748,0.0048412481};
-ST(0,0.070445097,0,0,0.063964486,0,0.0087536517,0.067121195,0){0.0015609243,0.0014714865,0.0028405718};
-ST(0.023581972,0.097370644,0,0.024878246,0.10641205,0,0.017290659,0.10415759,0){0.006406371,0.0068975847,0.005360028};
-ST(0.008891087,0.24587871,0,0,0.24433157,0,0.0076308335,0.23791294,0){0.0034490262,0.0017709859,0.002622712};
-ST(0.0071428571,0.3,0,0,0.29298695,0,0.0086856391,0.29134398,0){0.0033959644,0.0017698682,0.0031515581};
-ST(0.036329714,0.11757216,0,0.041543317,0.12438759,0,0.035995823,0.12783992,0){0.0092480093,0.010099467,0.0088531158};
-ST(0.016706021,0.19335173,0,0.0087251496,0.19682156,0,0.0070329053,0.19002058,0){0.0052731674,0.0037412176,0.0032854097};
-ST(0.062978572,0.26385631,0,0.067812422,0.25459576,0,0.068748354,0.26449609,0){0.013699793,0.015539601,0.014627562};
-ST(0.072627499,0.040727625,0,0.063732547,0.036638377,0,0.073594736,0.034812751,0){0.0098966022,0.0085558446,0.0095709225};
-ST(0.024124839,0.26497814,0,0.031975417,0.25926175,0,0.03069513,0.26894688,0){0.0062836381,0.0083004448,0.0068303314};
-ST(0.082495291,0.1767331,0,0.091442458,0.17596857,0,0.083403881,0.18288957,0){0.01452089,0.01565701,0.016492804};
-ST(0.062978572,0.26385631,0,0.061392472,0.25446647,0,0.067812422,0.25459576,0){0.013699793,0.014253572,0.015539601};
-ST(0.072251719,0.070805738,0,0.063357463,0.065442129,0,0.071294356,0.064744402,0){0.01288041,0.010941973,0.012048426};
-ST(0.081893484,0.0078002118,0,0.082286996,0.017839369,0,0.076551438,0.016154114,0){0.0092564415,0.009581051,0.0089261328};
-ST(0.068059877,0.16458271,0,0.077093289,0.16951597,0,0.070593417,0.17068076,0){0.0087794571,0.011325245,0.010855202};
-ST(0.063134362,0.14896083,0,0.063566128,0.14056854,0,0.069692704,0.14906563,0){0.010684357,0.012479942,0.01161516};
-ST(0.088948357,0.079796263,0,0.091920476,0.089306354,0,0.083812176,0.083170737,0){0.016740913,0.018524169,0.016304455};
-ST(0.071872871,0.196559,0,0.063123076,0.1931948,0,0.073017129,0.19015646,0){0.016350779,0.014426164,0.016031824};
-ST(0.063566128,0.14056854,0,0.071665053,0.14281002,0,0.069692704,0.14906563,0){0.012479942,0.013390699,0.01161516};
-ST(0.070877084,0.24895303,0,0.078003603,0.24394837,0,0.074546647,0.25397984,0){0.015483539,0.015457416,0.0168549};
-ST(0.026085268,0.073876802,0,0.021553482,0.081174183,0,0.01667016,0.076996579,0){0.0058065079,0.0053983383,0.0044083295};
-ST(0.015882078,0.22251136,0,0.0097873579,0.21453362,0,0.018022534,0.21455918,0){0.0034527378,0.0033423208,0.0047312007};
-ST(0.068887619,0.23816425,0,0.077999455,0.23524011,0,0.074372203,0.23959597,0){0.011832084,0.01189957,0.013237082};
-ST(0.088897881,0.18581252,0,0.091581209,0.19542497,0,0.083669222,0.1890156,0){0.01821991,0.020231089,0.017899958};
-ST(0.063913425,0.11688174,0,0.053583525,0.11616451,0,0.060886949,0.1120001,0){0.014765299,0.012709223,0.014162182};
-ST(0.08274919,0.16255857,0,0.087150461,0.15605115,0,0.09314271,0.16086327,0){0.0094335589,0.011826762,0.010567692};
-ST(0.088990194,0.16733012,0,0.08274919,0.16255857,0,0.09314271,0.16086327,0){0.012031194,0.0094335589,0.010567692};
-ST(0.052903,0.044824368,0,0.062787056,0.044920338,0,0.05563397,0.050831549,0){0.0077922845,0.0090240074,0.0085660039};
-ST(0.033876205,0.27672463,0,0.038361486,0.26932975,0,0.041478584,0.27908417,0){0.0054941796,0.0080129566,0.0055491609};
-ST(0.025782343,0.010697164,0,0.029469652,0.005642048,0,0.029473654,0.015232311,0){0.0036273673,0.0039620423,0.0040572572};
-ST(0.024359349,0.045685236,0,0.024953134,0.05500472,0,0.018018822,0.050767877,0){0.0042875226,0.0047366364,0.0036547138};
-ST(0.075044373,0.21065322,0,0.073845419,0.2209308,0,0.068257319,0.21507018,0){0.015462793,0.011831692,0.013061516};
-ST(0.05534208,0.16725107,0,0.045860229,0.163357,0,0.055152673,0.16162804,0){0.007927676,0.0059728166,0.0064983066};
-ST(0.075053667,0.054941461,0,0.07730725,0.063519068,0,0.06842362,0.059320823,0){0.011519318,0.012794591,0.011056454};
-ST(0.016706021,0.19335173,0,0.0070329053,0.19002058,0,0.015545644,0.18763273,0){0.0052731674,0.0032854097,0.0048113533};
-ST(0.087298598,0.058683388,0,0.08966753,0.048486622,0,0.09327093,0.054697331,0){0.013637256,0.012741374,0.013955554};
-ST(0.0086856391,0.29134398,0,0,0.28598845,0,0.0072882997,0.28273448,0){0.0031515581,0.0013741411,0.0020641429};
-ST(0.080964027,0.048552182,0,0.08966753,0.048486622,0,0.081684953,0.055147379,0){0.011635394,0.012741374,0.012440745};
-ST(0.024124839,0.26497814,0,0.01442164,0.26537398,0,0.016971899,0.25850458,0){0.0062836381,0.0044630286,0.0053575659};
-ST(0.043024015,0.24149425,0,0.034146712,0.24547706,0,0.035671381,0.23699067,0){0.0087794072,0.0080003212,0.0065861258};
-ST(0.024892413,0.15941751,0,0.025933861,0.16956771,0,0.020122959,0.1650354,0){0.0038380393,0.0046706454,0.0034385995};
-ST(0.05534208,0.16725107,0,0.046260124,0.1690627,0,0.045860229,0.163357,0){0.007927676,0.0072155439,0.0059728166};
-ST(0.092857143,0.3,0,0.085714286,0.3,0,0.094208762,0.29420256,0){0.020373327,0.018964149,0.018972662};
-ST(0,0.12282405,0,0.0089155203,0.11918733,0,0.0071724145,0.1266659,0){0.0019714567,0.0037661726,0.0033276957};
-ST(0.066109726,0.17987248,0,0.063664382,0.17131349,0,0.070593417,0.17068076,0){0.012748621,0.010100304,0.010855202};
-ST(0,0.17619703,0,0,0.16946933,0,0.0088492442,0.17282653,0){0.0015510887,0.0012995201,0.002692894};
-ST(0.063732547,0.036638377,0,0.072627499,0.040727625,0,0.068656382,0.045051564,0){0.0085558446,0.0098966022,0.0097624898};
-ST(0.072198327,0.17708617,0,0.066109726,0.17987248,0,0.070593417,0.17068076,0){0.013008194,0.012748621,0.010855202};
-ST(0.067812422,0.25459576,0,0.071849852,0.25958891,0,0.068748354,0.26449609,0){0.015539601,0.016149584,0.014627562};
-ST(0.1,0.28571429,0,0.1,0.29285714,0,0.094208762,0.29420256,0){0.014962161,0.019388115,0.018972662};
-ST(0.035472349,0.0074078563,0,0.035314966,0.015501396,0,0.029473654,0.015232311,0){0.004577179,0.0046621453,0.0040572572};
-ST(0.0097873579,0.21453362,0,0.015882078,0.22251136,0,0.0078882173,0.22230145,0){0.0033423208,0.0034527378,0.0024001814};
-ST(0.063357463,0.065442129,0,0.05987551,0.074756595,0,0.055460475,0.069248829,0){0.010941973,0.011330154,0.010108481};
-ST(0.05987551,0.074756595,0,0.063357463,0.065442129,0,0.066454746,0.074006402,0){0.011330154,0.010941973,0.012316324};
-ST(0.068083985,0.13292159,0,0.065548757,0.12300421,0,0.072428856,0.1291202,0){0.014467744,0.014884473,0.015735892};
-ST(0,0.070445097,0,0.0087536517,0.067121195,0,0.0071026462,0.074440872,0){0.0015609243,0.0028405718,0.0027655645};
-ST(0.082286996,0.017839369,0,0.081893484,0.0078002118,0,0.087635132,0.015594151,0){0.009581051,0.0092564415,0.010048385};
-ST(0.030060203,0.17758385,0,0.036056327,0.17085097,0,0.035632482,0.1808812,0){0.0064082769,0.0062254059,0.0077875372};
-ST(0.025388465,0.21882491,0,0.035581831,0.21858705,0,0.030623557,0.22463729,0){0.0053446137,0.0069414214,0.0049656049};
-ST(0.077999455,0.23524011,0,0.069899638,0.22912552,0,0.076354388,0.22899719,0){0.01189957,0.0079913397,0.0086224438};
-ST(0.015882078,0.22251136,0,0.025388465,0.21882491,0,0.023684336,0.22562355,0){0.0034527378,0.0053446137,0.0039829742};
-ST(0.014285714,0.3,0,0.0071428571,0.3,0,0.0086856391,0.29134398,0){0.0048122771,0.0033959644,0.0031515581};
-ST(0.087150461,0.15605115,0,0.091262725,0.14644758,0,0.093845023,0.15358209,0){0.011826762,0.01557235,0.013567056};
-ST(0.045860229,0.163357,0,0.04998761,0.15939724,0,0.055152673,0.16162804,0){0.0059728166,0.0065496788,0.0064983066};
-ST(0.053121914,0.14984683,0,0.063134362,0.14896083,0,0.061430891,0.15444473,0){0.0090412706,0.010684357,0.009109847};
-ST(0.063123076,0.1931948,0,0.067729338,0.18636951,0,0.073017129,0.19015646,0){0.014426164,0.014422352,0.016031824};
-ST(0.017650615,0.14332879,0,0.026404382,0.1403628,0,0.023011439,0.14474978,0){0.0044959748,0.0061938225,0.0052386146};
-ST(0.06842362,0.059320823,0,0.07730725,0.063519068,0,0.071294356,0.064744402,0){0.011056454,0.012794591,0.012048426};
-ST(0.1,0.11428571,0,0.1,0.12142857,0,0.091003968,0.11814039,0){0.021999929,0.02178379,0.020146139};
-ST(0.077999455,0.23524011,0,0.085997557,0.2404943,0,0.078003603,0.24394837,0){0.01189957,0.015461976,0.015457416};
-ST(0.073416465,0.27934608,0,0.082630752,0.28262165,0,0.076893993,0.2841615,0){0.0088333373,0.010973814,0.010943662};
-ST(0.0072786063,0.26188216,0,0.010704963,0.2547075,0,0.016971899,0.25850458,0){0.0033349743,0.0041360758,0.0053575659};
-ST(0.01442164,0.26537398,0,0.0072786063,0.26188216,0,0.016971899,0.25850458,0){0.0044630286,0.0033349743,0.0053575659};
-ST(0.0088859191,0.14145589,0,0.011625116,0.13292217,0,0.017146751,0.13667282,0){0.0031626243,0.0040067754,0.0048412481};
-ST(0.024913192,0.2415392,0,0.034146712,0.24547706,0,0.02496255,0.24770535,0){0.0057883538,0.0080003212,0.0065793383};
-ST(0.062787056,0.044920338,0,0.052903,0.044824368,0,0.056980445,0.038962171,0){0.0090240074,0.0077922845,0.007911465};
-ST(0.063134362,0.14896083,0,0.053121914,0.14984683,0,0.056840174,0.14351487,0){0.010684357,0.0090412706,0.010834582};
-ST(0.067897561,0.29362967,0,0.063593879,0.28436636,0,0.069762333,0.28431595,0){0.013998657,0.0093505769,0.010105067};
-ST(0.073845419,0.2209308,0,0.075044373,0.21065322,0,0.079846013,0.21642209,0){0.011831692,0.015462793,0.014513645};
-ST(0.017650615,0.14332879,0,0.0088859191,0.14145589,0,0.017146751,0.13667282,0){0.0044959748,0.0031626243,0.0048412481};
-ST(0.021087268,0.20067351,0,0.016706021,0.19335173,0,0.02166044,0.19054668,0){0.0061950348,0.0052731674,0.006134172};
-ST(0.026266704,0.19389286,0,0.021087268,0.20067351,0,0.02166044,0.19054668,0){0.0071802403,0.0061950348,0.006134172};
-ST(0.087770529,0.028777226,0,0.078794748,0.031832626,0,0.079360922,0.024541521,0){0.010747054,0.0099565426,0.0095813814};
-ST(0.036056327,0.17085097,0,0.04131315,0.17777431,0,0.035632482,0.1808812,0){0.0062254059,0.0082407056,0.0077875372};
-ST(0.1,0.23571429,0,0.090756854,0.23190656,0,0.094415701,0.22755789,0){0.015025256,0.012032973,0.011061458};
-ST(0.06251245,0.23827584,0,0.059647761,0.23257945,0,0.063977145,0.22848817,0){0.01091156,0.0083760198,0.0073732166};
-ST(0.026404382,0.1403628,0,0.032539635,0.14727541,0,0.023011439,0.14474978,0){0.0061938225,0.0064374803,0.0052386146};
-ST(0.016765854,0.040249778,0,0.024359349,0.045685236,0,0.015246202,0.045764486,0){0.0031936572,0.0042875226,0.0031524656};
-ST(0.032539635,0.14727541,0,0.023785868,0.1502414,0,0.023011439,0.14474978,0){0.0064374803,0.0047927965,0.0052386146};
-ST(0.034829369,0.02335383,0,0.027245934,0.021259063,0,0.029473654,0.015232311,0){0.004776128,0.0039264931,0.0040572572};
-ST(0.090371277,0.27649128,0,0.085467713,0.26792084,0,0.093179303,0.2678908,0){0.012591106,0.016469437,0.017810421};
-ST(0,0.29298695,0,0,0.28598845,0,0.0086856391,0.29134398,0){0.0017698682,0.0013741411,0.0031515581};
-ST(0.061245673,0.24452488,0,0.051467941,0.24632844,0,0.054926517,0.23907834,0){0.012669907,0.011312523,0.01002412};
-ST(0.0059292545,0.014766706,0,0,0.012676601,0,0.0060844024,0.0061076692,0){0.0016346023,0.0010192824,0.0016156403};
-ST(0.091003968,0.11814039,0,0.081934846,0.12129159,0,0.082229882,0.11430537,0){0.020146139,0.018213432,0.018445934};
-ST(0.061718685,0.09526012,0,0.052243848,0.09708824,0,0.058666695,0.090099436,0){0.013527119,0.011856809,0.012546942};
-ST(0.0055959319,0.028632452,0,0.0090763502,0.020172771,0,0.013134683,0.023608073,0){0.0017127759,0.0020007534,0.0024680799};
-ST(0.075863318,0.15128967,0,0.07511088,0.16072173,0,0.068410214,0.15556675,0){0.011891738,0.0087749301,0.009640753};
-ST(0.087157047,0.10934378,0,0.091003968,0.11814039,0,0.082229882,0.11430537,0){0.019341606,0.020146139,0.018445934};
-ST(0.030599619,0.030587128,0,0.021114997,0.031742287,0,0.025374297,0.027198867,0){0.0045148124,0.0034867915,0.0038510471};
-ST(0.073416465,0.27934608,0,0.070141314,0.27013164,0,0.078294484,0.27242298,0){0.0088333373,0.012960708,0.01320473};
-ST(0.091003968,0.11814039,0,0.1,0.12142857,0,0.092325542,0.12610752,0){0.020146139,0.02178379,0.019887567};
-ST(0.041478584,0.27908417,0,0.038361486,0.26932975,0,0.045177088,0.27188516,0){0.0055491609,0.0080129566,0.0084113388};
-ST(0.081934846,0.12129159,0,0.091003968,0.11814039,0,0.085850588,0.12646039,0){0.018213432,0.020146139,0.018594654};
-ST(0.088897881,0.18581252,0,0.091442458,0.17596857,0,0.094303462,0.18195896,0){0.01821991,0.01565701,0.018137636};
-ST(0.035314966,0.015501396,0,0.034829369,0.02335383,0,0.029473654,0.015232311,0){0.0046621453,0.004776128,0.0040572572};
-ST(0.012217264,0.2047927,0,0.0097873579,0.21453362,0,0.0065980308,0.2085645,0){0.004330336,0.0033423208,0.0031103455};
-ST(0.024878246,0.10641205,0,0.023581972,0.097370644,0,0.030986562,0.10190392,0){0.0068975847,0.006406371,0.0079831878};
-ST(0.023581972,0.097370644,0,0.032223949,0.094413692,0,0.030986562,0.10190392,0){0.006406371,0.0079256222,0.0079831878};
-ST(0.060722814,0.29233598,0,0.063593879,0.28436636,0,0.067897561,0.29362967,0){0.012292123,0.0093505769,0.013998657};
-ST(0.091920476,0.089306354,0,0.088948357,0.079796263,0,0.094143629,0.083392096,0){0.018524169,0.016740913,0.018131068};
-ST(0.075019178,0.10458001,0,0.075237497,0.11427639,0,0.068497018,0.1095775,0){0.016721658,0.017047438,0.015633235};
-ST(0.072016645,0.090906146,0,0.064022129,0.087403768,0,0.073518975,0.084426062,0){0.015065982,0.013276737,0.014655813};
-ST(0.026266704,0.19389286,0,0.033865226,0.19972054,0,0.027679574,0.20292337,0){0.0071802403,0.008760944,0.00743754};
-ST(0.064553118,0.015646957,0,0.059002427,0.022914684,0,0.055286521,0.017504737,0){0.0076743125,0.0073347399,0.0067686563};
-ST(0.063732547,0.036638377,0,0.069403265,0.030528728,0,0.073594736,0.034812751,0){0.0085558446,0.0088265259,0.0095709225};
-ST(0.026404382,0.1403628,0,0.031910893,0.1329396,0,0.031694548,0.13853307,0){0.0061938225,0.0077641922,0.0072703146};
-ST(0.091920476,0.089306354,0,0.083077166,0.089272145,0,0.083812176,0.083170737,0){0.018524169,0.016912942,0.016304455};
-ST(0.024359349,0.045685236,0,0.016765854,0.040249778,0,0.021259451,0.03718155,0){0.0042875226,0.0031936572,0.0036421529};
-ST(0.082093837,0.14416854,0,0.091262725,0.14644758,0,0.082655945,0.15094656,0){0.014763534,0.01557235,0.012939286};
-ST(0.055287343,0.062192056,0,0.046279621,0.058429349,0,0.055098786,0.05659657,0){0.0094513626,0.0078696625,0.0089509863};
-ST(0.010401748,0.010393316,0,0.018141403,0.008046786,0,0.012634798,0.015675501,0){0.0020666199,0.0028360063,0.0023302125};
-ST(0.011625116,0.13292217,0,0.0088859191,0.14145589,0,0.0053512079,0.13276494,0){0.0040067754,0.0031626243,0.0028483266};
-ST(0.091581209,0.19542497,0,0.082772947,0.19508151,0,0.083669222,0.1890156,0){0.020231089,0.018456454,0.017899958};
-ST(0.072198327,0.17708617,0,0.077093289,0.16951597,0,0.077439796,0.17962153,0){0.013008194,0.011325245,0.014576515};
-ST(0.075237497,0.11427639,0,0.075019178,0.10458001,0,0.078753785,0.10944217,0){0.017047438,0.016721658,0.0176718};
-ST(0.077093289,0.16951597,0,0.082495291,0.1767331,0,0.077439796,0.17962153,0){0.011325245,0.01452089,0.014576515};
-ST(0.087298598,0.058683388,0,0.091481478,0.06789356,0,0.083796981,0.064188207,0){0.013637256,0.01547964,0.01383053};
-ST(0.018022534,0.21455918,0,0.0097873579,0.21453362,0,0.017536395,0.20823956,0){0.0047312007,0.0033423208,0.0051815338};
-ST(0.0087251496,0.19682156,0,0,0.19646877,0,0.0070329053,0.19002058,0){0.0037412176,0.001996753,0.0032854097};
-ST(0.012022181,0.028807467,0,0.0086756768,0.036899292,0,0.0055959319,0.028632452,0){0.0024211626,0.0021713487,0.0017127759};
-ST(0.049672348,0.13321934,0,0.051719407,0.14014665,0,0.042474964,0.13846746,0){0.011026506,0.010532948,0.009157817};
-ST(0.1,0.05,0,0.09327093,0.054697331,0,0.094358182,0.044786011,0){0.014250726,0.013955554,0.012923485};
-ST(0.031988636,0.21096061,0,0.035581831,0.21858705,0,0.026946825,0.21343101,0){0.0075960493,0.0069414214,0.006387962};
-ST(0.012634798,0.015675501,0,0.018141403,0.008046786,0,0.01972947,0.013018635,0){0.0023302125,0.0028360063,0.0030334072};
-ST(0.064022129,0.087403768,0,0.06823576,0.080384264,0,0.073518975,0.084426062,0){0.013276737,0.01330007,0.014655813};
-ST(0.063123076,0.1931948,0,0.071872871,0.196559,0,0.06636951,0.19781188,0){0.014426164,0.016350779,0.015272818};
-ST(0.055287343,0.062192056,0,0.04677464,0.063987522,0,0.046279621,0.058429349,0){0.0094513626,0.0083560787,0.0078696625};
-ST(0.046741278,0.20737056,0,0.049958331,0.21332249,0,0.040972633,0.21505187,0){0.010788495,0.010389004,0.0085096617};
-ST(0.080764352,0.25370675,0,0.078003603,0.24394837,0,0.08378138,0.24758349,0){0.018075953,0.015457416,0.017616529};
-ST(0.012022181,0.028807467,0,0.018230931,0.025124521,0,0.015319473,0.034144954,0){0.0024211626,0.0030367355,0.0028850261};
-ST(0.018230931,0.025124521,0,0.021114997,0.031742287,0,0.015319473,0.034144954,0){0.0030367355,0.0034867915,0.0028850261};
-ST(0.023785868,0.1502414,0,0.032539635,0.14727541,0,0.03097928,0.15477188,0){0.0047927965,0.0064374803,0.0051663091};
-ST(0.024892413,0.15941751,0,0.023785868,0.1502414,0,0.03097928,0.15477188,0){0.0038380393,0.0047927965,0.0051663091};
-ST(0.010704963,0.2547075,0,0.008891087,0.24587871,0,0.016097677,0.25277203,0){0.0041360758,0.0034490262,0.0051741925};
-ST(0.091481478,0.06789356,0,0.087298598,0.058683388,0,0.093812493,0.061490211,0){0.01547964,0.013637256,0.014931531};
-ST(0.034146712,0.24547706,0,0.024913192,0.2415392,0,0.029770914,0.23803179,0){0.0080003212,0.0057883538,0.0059362425};
-ST(0.1,0.14285714,0,0.1,0.15,0,0.091262725,0.14644758,0){0.01802413,0.015699503,0.01557235};
-ST(0.038812872,0.29456049,0,0.036211214,0.28505229,0,0.041784558,0.28543344,0){0.0089597215,0.0060722216,0.0069568789};
-ST(0.0086856391,0.29134398,0,0.014905173,0.28510008,0,0.017895429,0.29268335,0){0.0031515581,0.0033226234,0.0048907512};
-ST(0.089822961,0.25859451,0,0.093179303,0.2678908,0,0.085458809,0.2622366,0){0.019819525,0.017810421,0.018345062};
-ST(0,0.24433157,0,0,0.23744837,0,0.0076308335,0.23791294,0){0.0017709859,0.0014645348,0.002622712};
-ST(0.061970306,0.20134793,0,0.052562678,0.20392294,0,0.055630617,0.19665887,0){0.01431047,0.012272703,0.013109344};
-ST(0.0090763502,0.020172771,0,0.0055959319,0.028632452,0,0.0042261279,0.022248036,0){0.0020007534,0.0017127759,0.0015070621};
-ST(0.051467941,0.24632844,0,0.061245673,0.24452488,0,0.057118803,0.2495577,0){0.011312523,0.012669907,0.01294362};
-ST(0.059957664,0.27407069,0,0.056202721,0.28169173,0,0.053293432,0.27215527,0){0.0097471839,0.0071383318,0.0095317783};
-ST(0.031988636,0.21096061,0,0.040100466,0.20866457,0,0.040972633,0.21505187,0){0.0075960493,0.0093763376,0.0085096617};
-ST(0.0078882173,0.22230145,0,0,0.21688641,0,0.0043931952,0.21357915,0){0.0024001814,0.0015962363,0.0024813618};
-ST(0.035581831,0.21858705,0,0.031988636,0.21096061,0,0.040972633,0.21505187,0){0.0069414214,0.0075960493,0.0085096617};
-ST(0.1,0.17142857,0,0.1,0.17857143,0,0.091442458,0.17596857,0){0.015132575,0.017958284,0.01565701};
-ST(0.090756854,0.23190656,0,0.1,0.23571429,0,0.093408348,0.23929044,0){0.012032973,0.015025256,0.016078078};
-ST(0.07730725,0.063519068,0,0.081684953,0.055147379,0,0.083796981,0.064188207,0){0.012794591,0.012440745,0.01383053};
-ST(0.063664382,0.17131349,0,0.059413957,0.17983771,0,0.055269447,0.17422653,0){0.010100304,0.011618873,0.0096616545};
-ST(0.074170803,0.010670566,0,0.081893484,0.0078002118,0,0.076551438,0.016154114,0){0.008532082,0.0092564415,0.0089261328};
-ST(0.052243848,0.09708824,0,0.061718685,0.09526012,0,0.060554433,0.1007053,0){0.011856809,0.013527119,0.013673871};
-ST(0.090457694,0.24900602,0,0.085997557,0.2404943,0,0.094605269,0.2449598,0){0.019245042,0.015461976,0.018767685};
-ST(0.008891087,0.24587871,0,0.016666559,0.24707082,0,0.016097677,0.25277203,0){0.0034490262,0.0049690135,0.0051741925};
-ST(0.091581209,0.19542497,0,0.088897881,0.18581252,0,0.094374666,0.18946442,0){0.020231089,0.01821991,0.02003149};
-ST(0.049987111,0.073706442,0,0.049011257,0.083339476,0,0.044925733,0.07572266,0){0.009638201,0.010269497,0.0089806243};
-ST(0.043729981,0.29067011,0,0.038812872,0.29456049,0,0.041784558,0.28543344,0){0.0088969473,0.0089597215,0.0069568789};
-ST(0.051719407,0.14014665,0,0.046118705,0.14263648,0,0.042474964,0.13846746,0){0.010532948,0.0092278734,0.009157817};
-ST(0.041289591,0.20119015,0,0.037423894,0.19247533,0,0.042998409,0.19194838,0){0.010204072,0.0093169769,0.010376684};
-ST(0.09327093,0.054697331,0,0.08966753,0.048486622,0,0.094358182,0.044786011,0){0.013955554,0.012741374,0.012923485};
-ST(0.090371277,0.27649128,0,0.1,0.27857143,0,0.093083753,0.28331412,0){0.012591106,0.01232876,0.01260174};
-ST(0.016666559,0.24707082,0,0.024913192,0.2415392,0,0.02496255,0.24770535,0){0.0049690135,0.0057883538,0.0065793383};
-ST(0.1,0.22857143,0,0.1,0.23571429,0,0.094415701,0.22755789,0){0.010969952,0.015025256,0.011061458};
-ST(0.025933861,0.16956771,0,0.030060203,0.17758385,0,0.023665586,0.1785779,0){0.0046706454,0.0064082769,0.0054977511};
-ST(0.026088282,0.11662569,0,0.030550045,0.12422927,0,0.023840623,0.12537371,0){0.0072108519,0.007950786,0.0066011582};
-ST(0.085467713,0.26792084,0,0.078294484,0.27242298,0,0.075512736,0.26666994,0){0.016469437,0.01320473,0.015202563};
-ST(0.077093289,0.16951597,0,0.07511088,0.16072173,0,0.08274919,0.16255857,0){0.011325245,0.0087749301,0.0094335589};
-ST(0.034146712,0.24547706,0,0.043024015,0.24149425,0,0.041079184,0.24904413,0){0.0080003212,0.0087794072,0.0097899948};
-ST(0.062787056,0.044920338,0,0.063732547,0.036638377,0,0.068656382,0.045051564,0){0.0090240074,0.0085558446,0.0097624898};
-ST(0.051719407,0.14014665,0,0.053121914,0.14984683,0,0.047950771,0.14786323,0){0.010532948,0.0090412706,0.0086642634};
-ST(0.033865226,0.19972054,0,0.037423894,0.19247533,0,0.041289591,0.20119015,0){0.008760944,0.0093169769,0.010204072};
-ST(0.023785868,0.1502414,0,0.017270897,0.15739381,0,0.017116349,0.14998193,0){0.0047927965,0.0031824437,0.0038725238};
-ST(0.091442458,0.17596857,0,0.082495291,0.1767331,0,0.083408518,0.1704193,0){0.01565701,0.01452089,0.012492447};
-ST(0.059413957,0.17983771,0,0.063664382,0.17131349,0,0.066109726,0.17987248,0){0.011618873,0.010100304,0.012748621};
-ST(0.088990194,0.16733012,0,0.091442458,0.17596857,0,0.083408518,0.1704193,0){0.012031194,0.01565701,0.012492447};
-ST(0.078003603,0.24394837,0,0.070877084,0.24895303,0,0.074372203,0.23959597,0){0.015457416,0.015483539,0.013237082};
-ST(0.059002427,0.022914684,0,0.064553118,0.015646957,0,0.066186294,0.024012302,0){0.0073347399,0.0076743125,0.0081453494};
-ST(0.079783584,0.26191648,0,0.085467713,0.26792084,0,0.075512736,0.26666994,0){0.017322357,0.016469437,0.015202563};
-ST(0.049011257,0.083339476,0,0.049987111,0.073706442,0,0.054518411,0.078119445,0){0.010269497,0.009638201,0.010765513};
-ST(0.070877084,0.24895303,0,0.067305062,0.2440339,0,0.074372203,0.23959597,0){0.015483539,0.013605878,0.013237082};
-ST(0.056840174,0.14351487,0,0.053121914,0.14984683,0,0.051719407,0.14014665,0){0.010834582,0.0090412706,0.010532948};
-ST(0.1,0.064285714,0,0.1,0.071428571,0,0.091481478,0.06789356,0){0.016234238,0.017321771,0.01547964};
-ST(0.0087536517,0.067121195,0,0,0.063964486,0,0.0059238649,0.061251643,0){0.0028405718,0.0014714865,0.002285324};
-ST(0.070141314,0.27013164,0,0.073416465,0.27934608,0,0.066334221,0.27760857,0){0.012960708,0.0088333373,0.0092000449};
-ST(0.064553118,0.015646957,0,0.055286521,0.017504737,0,0.059697637,0.012753556,0){0.0076743125,0.0067686563,0.0071057936};
-ST(0.056202721,0.28169173,0,0.049343079,0.277854,0,0.053293432,0.27215527,0){0.0071383318,0.0070287375,0.0095317783};
-ST(0.012022181,0.028807467,0,0.0055959319,0.028632452,0,0.013134683,0.023608073,0){0.0024211626,0.0017127759,0.0024680799};
-ST(0.025567113,0.28905289,0,0.017895429,0.29268335,0,0.02153935,0.28356134,0){0.0055567337,0.0048907512,0.0039435902};
-ST(0.0088081659,0.089068546,0,0.011361659,0.080618598,0,0.016263823,0.084450562,0){0.0034128678,0.0036383706,0.0046096007};
-ST(0.078794748,0.031832626,0,0.087770529,0.028777226,0,0.087198716,0.035123314,0){0.0099565426,0.010747054,0.01115353};
-ST(0.1,0.19285714,0,0.1,0.2,0,0.091581209,0.19542497,0){0.021660378,0.021957739,0.020231089};
-ST(0.07730725,0.063519068,0,0.075053667,0.054941461,0,0.081684953,0.055147379,0){0.012794591,0.011519318,0.012440745};
-ST(0.1,0.0071428571,0,0.09386735,0.014826529,0,0.094091634,0.0059624358,0){0.011067347,0.010660697,0.01045357};
-ST(0.1,0.14285714,0,0.091262725,0.14644758,0,0.092733018,0.13870795,0){0.01802413,0.01557235,0.017873716};
-ST(0,0.3,0,0,0.29298695,0,0.0071428571,0.3,0){0.0019804025,0.0017698682,0.0033959644};
-ST(0.052243848,0.09708824,0,0.045608803,0.090081762,0,0.052671398,0.090038465,0){0.011856809,0.010159785,0.011446826};
-ST(0.05534208,0.16725107,0,0.063664382,0.17131349,0,0.055269447,0.17422653,0){0.007927676,0.010100304,0.0096616545};
-ST(0.017510909,0.090546457,0,0.0088081659,0.089068546,0,0.016263823,0.084450562,0){0.0050417352,0.0034128678,0.0046096007};
-ST(0.046828703,0.19603271,0,0.055630617,0.19665887,0,0.047317985,0.20170575,0){0.011336809,0.013109344,0.011381113};
-ST(0.066186294,0.024012302,0,0.064553118,0.015646957,0,0.07060324,0.015557736,0){0.0081453494,0.0076743125,0.0082944052};
-ST(0.061329737,0.16018623,0,0.068410214,0.15556675,0,0.068059877,0.16458271,0){0.0076429651,0.009640753,0.0087794571};
-ST(0.085997557,0.2404943,0,0.090756854,0.23190656,0,0.093408348,0.23929044,0){0.015461976,0.012032973,0.016078078};
-ST(0.035472349,0.0074078563,0,0.044093146,0.010189996,0,0.040745998,0.014567719,0){0.004577179,0.0054767147,0.0052038167};
-ST(0,0.038198556,0,0.0086756768,0.036899292,0,0.0064196609,0.043098201,0){0.0011742026,0.0021713487,0.0020049288};
-ST(0.025494351,0.27459236,0,0.024124839,0.26497814,0,0.03069513,0.26894688,0){0.0048210135,0.0062836381,0.0068303314};
-ST(0.068410214,0.15556675,0,0.07511088,0.16072173,0,0.068059877,0.16458271,0){0.009640753,0.0087749301,0.0087794571};
-ST(0.031699447,0.11078243,0,0.024878246,0.10641205,0,0.030986562,0.10190392,0){0.0083198518,0.0068975847,0.0079831878};
-ST(0.085467713,0.26792084,0,0.090371277,0.27649128,0,0.083774702,0.27611409,0){0.016469437,0.012591106,0.011867254};
-ST(0.018023907,0.27765349,0,0.025494351,0.27459236,0,0.02153935,0.28356134,0){0.0033417499,0.0048210135,0.0039435902};
-ST(0.0089155203,0.11918733,0,0,0.1162249,0,0.0061293251,0.11285968,0){0.0037661726,0.0019987419,0.0032244208};
-ST(0.049952063,0.1787418,0,0.04131315,0.17777431,0,0.049852622,0.17323607,0){0.0098216119,0.0082407056,0.0086421223};
-ST(0.036645028,0.065460046,0,0.03202369,0.058862937,0,0.04109467,0.060492019,0){0.0069586979,0.0058997278,0.0072817007};
-ST(0.03202369,0.058862937,0,0.03865178,0.054286144,0,0.04109467,0.060492019,0){0.0058997278,0.006550054,0.0072817007};
-ST(0.017895429,0.29268335,0,0.014905173,0.28510008,0,0.02153935,0.28356134,0){0.0048907512,0.0033226234,0.0039435902};
-ST(0.037735929,0.10537966,0,0.031699447,0.11078243,0,0.030986562,0.10190392,0){0.0094123836,0.0083198518,0.0079831878};
-ST(0.030060203,0.17758385,0,0.025933861,0.16956771,0,0.030747828,0.1721598,0){0.0064082769,0.0046706454,0.0057172032};
-ST(0.029557505,0.25181754,0,0.034146712,0.24547706,0,0.03695895,0.25453753,0){0.0077937721,0.0080003212,0.0093769691};
-ST(0.031586673,0.16385918,0,0.024892413,0.15941751,0,0.03097928,0.15477188,0){0.0045180602,0.0038380393,0.0051663091};
-ST(0,0.22372386,0,0,0.21688641,0,0.0078882173,0.22230145,0){0.0012703225,0.0015962363,0.0024001814};
-ST(0.068927504,0.0060918646,0,0.074170803,0.010670566,0,0.07060324,0.015557736,0){0.0079278993,0.008532082,0.0082944052};
-ST(0.012784661,0.11066528,0,0.0089155203,0.11918733,0,0.0061293251,0.11285968,0){0.0045452747,0.0037661726,0.0032244208};
-ST(0.024124839,0.26497814,0,0.016971899,0.25850458,0,0.025430513,0.25852231,0){0.0062836381,0.0053575659,0.0070372425};
-ST(0.037630266,0.15856612,0,0.031586673,0.16385918,0,0.03097928,0.15477188,0){0.005390121,0.0045180602,0.0051663091};
-ST(0.090371277,0.27649128,0,0.082630752,0.28262165,0,0.083774702,0.27611409,0){0.012591106,0.010973814,0.011867254};
-ST(0.04131315,0.17777431,0,0.041541458,0.17214356,0,0.049852622,0.17323607,0){0.0082407056,0.0072276425,0.0086421223};
-ST(0.0193219,0.2311094,0,0.028521342,0.23217192,0,0.020771052,0.23704614,0){0.0033259199,0.004622157,0.0044321473};
-ST(0.060533545,0.055251798,0,0.067714741,0.05140667,0,0.06842362,0.059320823,0){0.0095798189,0.010194849,0.011056454};
-ST(0.036056327,0.17085097,0,0.030060203,0.17758385,0,0.030747828,0.1721598,0){0.0062254059,0.0064082769,0.0057172032};
-ST(0.091262725,0.14644758,0,0.082093837,0.14416854,0,0.086199215,0.13907252,0){0.01557235,0.014763534,0.016657803};
-ST(0.0088492442,0.17282653,0,0,0.16946933,0,0.0061825315,0.16615776,0){0.002692894,0.0012995201,0.0018871004};
-ST(0.0089155203,0.11918733,0,0.012784661,0.11066528,0,0.014854991,0.11674459,0){0.0037661726,0.0045452747,0.0049657919};
-ST(0.063566128,0.14056854,0,0.068083985,0.13292159,0,0.072358306,0.13696631,0){0.012479942,0.014467744,0.014637908};
-ST(0.032913158,0.29243767,0,0.036211214,0.28505229,0,0.038812872,0.29456049,0){0.0074810533,0.0060722216,0.0089597215};
-ST(0.093179303,0.2678908,0,0.089822961,0.25859451,0,0.095319273,0.26073379,0){0.017810421,0.019819525,0.020580735};
-ST(0.055853935,0.21726741,0,0.063624353,0.22254194,0,0.058567138,0.22596146,0){0.010404133,0.0098145667,0.0079955342};
-ST(0.037735929,0.10537966,0,0.043535837,0.098689724,0,0.043696053,0.10764168,0){0.0094123836,0.010280302,0.010652083};
-ST(0.024359349,0.045685236,0,0.018018822,0.050767877,0,0.015246202,0.045764486,0){0.0042875226,0.0036547138,0.0031524656};
-ST(0.1,0.17142857,0,0.091442458,0.17596857,0,0.095064283,0.16787532,0){0.015132575,0.01565701,0.012983793};
-ST(0.091003968,0.11814039,0,0.092325542,0.12610752,0,0.085850588,0.12646039,0){0.020146139,0.019887567,0.018594654};
-ST(0.1,0.0071428571,0,0.1,0.014285714,0,0.09386735,0.014826529,0){0.011067347,0.011269361,0.010660697};
-ST(0.025494351,0.27459236,0,0.028120489,0.2818096,0,0.02153935,0.28356134,0){0.0048210135,0.0042507092,0.0039435902};
-ST(0.080532481,0.2036733,0,0.089406716,0.20396751,0,0.082328401,0.21016288,0){0.017789172,0.019494326,0.016915435};
-ST(0.072251719,0.070805738,0,0.07730725,0.063519068,0,0.077488341,0.073041111,0){0.01288041,0.012794591,0.013975013};
-ST(0.080374191,0.097624086,0,0.08910917,0.098496512,0,0.082067363,0.10446681,0){0.01726286,0.01901377,0.01810119};
-ST(0.082404782,0.22674486,0,0.090756854,0.23190656,0,0.084252623,0.23309293,0){0.010486323,0.012032973,0.011556838};
-ST(0,0.19646877,0,0,0.18969717,0,0.0070329053,0.19002058,0){0.001996753,0.001923296,0.0032854097};
-ST(0.021087268,0.20067351,0,0.026266704,0.19389286,0,0.027679574,0.20292337,0){0.0061950348,0.0071802403,0.00743754};
-ST(0.014905173,0.28510008,0,0.0086856391,0.29134398,0,0.0072882997,0.28273448,0){0.0033226234,0.0031515581,0.0020641429};
-ST(0.055630617,0.19665887,0,0.052562678,0.20392294,0,0.047317985,0.20170575,0){0.013109344,0.012272703,0.011381113};
-ST(0.07730725,0.063519068,0,0.082636182,0.070608246,0,0.077488341,0.073041111,0){0.012794591,0.014480965,0.013975013};
-ST(0,0.012676601,0,0,0.0063325984,0,0.0060844024,0.0061076692,0){0.0010192824,0.0010048122,0.0016156403};
-ST(0.080764352,0.25370675,0,0.086685255,0.25357155,0,0.085458809,0.2622366,0){0.018075953,0.019244658,0.018345062};
-ST(0.049958331,0.21332249,0,0.044431549,0.22049192,0,0.040972633,0.21505187,0){0.010389004,0.0078092733,0.0085096617};
-ST(0.01442164,0.26537398,0,0.024124839,0.26497814,0,0.019479015,0.2705585,0){0.0044630286,0.0062836381,0.0047057288};
-ST(0.032539635,0.14727541,0,0.026404382,0.1403628,0,0.031694548,0.13853307,0){0.0064374803,0.0061938225,0.0072703146};
-ST(0.055287343,0.062192056,0,0.063357463,0.065442129,0,0.055460475,0.069248829,0){0.0094513626,0.010941973,0.010108481};
-ST(0.082630752,0.28262165,0,0.081687843,0.29203932,0,0.076893993,0.2841615,0){0.010973814,0.015803058,0.010943662};
-ST(0.081893484,0.0078002118,0,0.089774267,0.010202707,0,0.087635132,0.015594151,0){0.0092564415,0.010102056,0.010048385};
-ST(0,0.17619703,0,0.0088492442,0.17282653,0,0.0062141227,0.17913624,0){0.0015510887,0.002692894,0.0026772087};
-ST(0.090756854,0.23190656,0,0.085997557,0.2404943,0,0.084252623,0.23309293,0){0.012032973,0.015461976,0.011556838};
-ST(0.024124839,0.26497814,0,0.025494351,0.27459236,0,0.019479015,0.2705585,0){0.0062836381,0.0048210135,0.0047057288};
-ST(0.091581209,0.19542497,0,0.1,0.2,0,0.095307299,0.20359445,0){0.020231089,0.021957739,0.020702797};
-ST(0.072873195,0.02116659,0,0.066186294,0.024012302,0,0.07060324,0.015557736,0){0.0087326558,0.0081453494,0.0082944052};
-ST(0.031975417,0.25926175,0,0.024124839,0.26497814,0,0.025430513,0.25852231,0){0.0083004448,0.0062836381,0.0070372425};
-ST(0.1,0.11428571,0,0.091003968,0.11814039,0,0.093650276,0.11165907,0){0.021999929,0.020146139,0.020701173};
-ST(0,0.14272272,0,0.0088859191,0.14145589,0,0.0064726641,0.14769389,0){0.0016420471,0.0031626243,0.0024715601};
-ST(0.046279621,0.058429349,0,0.050004445,0.054274349,0,0.055098786,0.05659657,0){0.0078696625,0.0080776129,0.0089509863};
-ST(0,0.089973101,0,0.0088081659,0.089068546,0,0.0062739213,0.09500888,0){0.0018256894,0.0034128678,0.0030651339};
-ST(0.060981097,0.10625719,0,0.067492619,0.10117066,0,0.068497018,0.1095775,0){0.01403139,0.015048339,0.015633235};
-ST(0.033865226,0.19972054,0,0.026266704,0.19389286,0,0.031703323,0.19206661,0){0.008760944,0.0071802403,0.0081716788};
-ST(0.026665403,0.037799711,0,0.024359349,0.045685236,0,0.021259451,0.03718155,0){0.0042921244,0.0042875226,0.0036421529};
-ST(0.07789134,0.13496254,0,0.086199215,0.13907252,0,0.077226062,0.14082844,0){0.015967895,0.016657803,0.01474222};
-ST(0.031988636,0.21096061,0,0.023854517,0.20874482,0,0.027679574,0.20292337,0){0.0075960493,0.0063291573,0.00743754};
-ST(0.078794748,0.031832626,0,0.087198716,0.035123314,0,0.078343312,0.037688751,0){0.0099565426,0.01115353,0.010332889};
-ST(0.023581972,0.097370644,0,0.017290659,0.10415759,0,0.016970501,0.097139845,0){0.006406371,0.005360028,0.0051389794};
-ST(0.052243848,0.09708824,0,0.052671398,0.090038465,0,0.058666695,0.090099436,0){0.011856809,0.011446826,0.012546942};
-ST(0.0088492442,0.17282653,0,0.0061825315,0.16615776,0,0.014716796,0.17010542,0){0.002692894,0.0018871004,0.0032674718};
-ST(0.020771052,0.23704614,0,0.028521342,0.23217192,0,0.029770914,0.23803179,0){0.0044321473,0.004622157,0.0059362425};
-ST(0.021553482,0.081174183,0,0.026085268,0.073876802,0,0.026804876,0.082803766,0){0.0053983383,0.0058065079,0.0063784224};
-ST(0.067492619,0.10117066,0,0.075019178,0.10458001,0,0.068497018,0.1095775,0){0.015048339,0.016721658,0.015633235};
-ST(0.0061825315,0.16615776,0,0.012839023,0.16391618,0,0.014716796,0.17010542,0){0.0018871004,0.0025080878,0.0032674718};
-ST(0.055918666,0.15605421,0,0.053121914,0.14984683,0,0.061430891,0.15444473,0){0.0080267163,0.0090412706,0.009109847};
-ST(0.040100466,0.20866457,0,0.046741278,0.20737056,0,0.040972633,0.21505187,0){0.0093763376,0.010788495,0.0085096617};
-ST(0.036904468,0.073804537,0,0.036645028,0.065460046,0,0.043421277,0.070486317,0){0.0075426679,0.0069586979,0.0083417443};
-ST(0.071665053,0.14281002,0,0.063566128,0.14056854,0,0.072358306,0.13696631,0){0.013390699,0.012479942,0.014637908};
-ST(0.025933861,0.16956771,0,0.023665586,0.1785779,0,0.020376181,0.170702,0){0.0046706454,0.0054977511,0.0040946903};
-ST(0.026085268,0.073876802,0,0.031727435,0.080354054,0,0.026804876,0.082803766,0){0.0058065079,0.0070919301,0.0063784224};
-ST(0.079783584,0.26191648,0,0.080764352,0.25370675,0,0.085458809,0.2622366,0){0.017322357,0.018075953,0.018345062};
-ST(0.035314966,0.015501396,0,0.042058405,0.019919863,0,0.034829369,0.02335383,0){0.0046621453,0.005453629,0.004776128};
-ST(0.028521342,0.23217192,0,0.0193219,0.2311094,0,0.023684336,0.22562355,0){0.004622157,0.0033259199,0.0039829742};
-ST(0.01511463,0.2393591,0,0.008891087,0.24587871,0,0.0076308335,0.23791294,0){0.003913276,0.0034490262,0.002622712};
-ST(0.008891087,0.24587871,0,0.01511463,0.2393591,0,0.016666559,0.24707082,0){0.0034490262,0.003913276,0.0049690135};
-ST(0.021087268,0.20067351,0,0.017536395,0.20823956,0,0.015061448,0.19930754,0){0.0061950348,0.0051815338,0.0050085568};
-ST(0.042058405,0.019919863,0,0.041222898,0.027938513,0,0.034829369,0.02335383,0){0.005453629,0.0056013798,0.004776128};
-ST(0.060721208,0.21210696,0,0.054994472,0.20965729,0,0.064084929,0.20704546,0){0.012543826,0.011998039,0.014136837};
-ST(0.012784661,0.11066528,0,0.017290659,0.10415759,0,0.020103716,0.1121562,0){0.0045452747,0.005360028,0.006015088};
-ST(0.033876205,0.27672463,0,0.036211214,0.28505229,0,0.028120489,0.2818096,0){0.0054941796,0.0060722216,0.0042507092};
-ST(0.042857143,0.3,0,0.043729981,0.29067011,0,0.049141897,0.29382693,0){0.010468963,0.0088969473,0.010673071};
-ST(0.063664382,0.17131349,0,0.05534208,0.16725107,0,0.061082675,0.16604661,0){0.010100304,0.007927676,0.0082458925};
-ST(0.030550045,0.12422927,0,0.026088282,0.11662569,0,0.031049449,0.11882536,0){0.007950786,0.0072108519,0.0081786012};
-ST(0.034146712,0.24547706,0,0.041079184,0.24904413,0,0.03695895,0.25453753,0){0.0080003212,0.0097899948,0.0093769691};
-ST(0.085997557,0.2404943,0,0.093408348,0.23929044,0,0.094605269,0.2449598,0){0.015461976,0.016078078,0.018767685};
-ST(0.017290659,0.10415759,0,0.024878246,0.10641205,0,0.020103716,0.1121562,0){0.005360028,0.0068975847,0.006015088};
-ST(0.0060844024,0.0061076692,0,0.0063441985,0,0,0.013164233,0.0055676569,0){0.0016156403,0.0016344198,0.0023250401};
-ST(0,0.24433157,0,0.008891087,0.24587871,0,0.0059669022,0.25108021,0){0.0017709859,0.0034490262,0.003127184};
-ST(0.04131315,0.17777431,0,0.042689804,0.18635753,0,0.035632482,0.1808812,0){0.0082407056,0.0097748212,0.0077875372};
-ST(0.036056327,0.17085097,0,0.031586673,0.16385918,0,0.040316423,0.16515352,0){0.0062254059,0.0045180602,0.0057431286};
-ST(0.091481478,0.06789356,0,0.082636182,0.070608246,0,0.083796981,0.064188207,0){0.01547964,0.014480965,0.01383053};
-ST(0.1,0.085714286,0,0.1,0.092857143,0,0.091920476,0.089306354,0){0.019489559,0.020456772,0.018524169};
-ST(0.056929375,0.031821563,0,0.059002427,0.022914684,0,0.06300662,0.02963429,0){0.0075042202,0.0073347399,0.0080686047};
-ST(0.036329714,0.11757216,0,0.030550045,0.12422927,0,0.031049449,0.11882536,0){0.0092480093,0.007950786,0.0081786012};
-ST(0.091003968,0.11814039,0,0.087157047,0.10934378,0,0.093650276,0.11165907,0){0.020146139,0.019341606,0.020701173};
-ST(0.0063441985,0,0,0.012733243,0,0,0.013164233,0.0055676569,0){0.0016344198,0.0022733243,0.0023250401};
-ST(0.085997557,0.2404943,0,0.090457694,0.24900602,0,0.08378138,0.24758349,0){0.015461976,0.019245042,0.017616529};
-ST(0.1,0.021428571,0,0.091018613,0.020305374,0,0.09386735,0.014826529,0){0.011605817,0.010601467,0.010660697};
-ST(0.017510909,0.090546457,0,0.023581972,0.097370644,0,0.016970501,0.097139845,0){0.0050417352,0.006406371,0.0051389794};
-ST(0.087770529,0.028777226,0,0.079360922,0.024541521,0,0.085527033,0.023058497,0){0.010747054,0.0095813814,0.010161784};
-ST(0.0097873579,0.21453362,0,0.0078882173,0.22230145,0,0.0043931952,0.21357915,0){0.0033423208,0.0024001814,0.0024813618};
-ST(0.01667016,0.076996579,0,0.011361659,0.080618598,0,0.011925798,0.071682732,0){0.0044083295,0.0036383706,0.0034604908};
-ST(0.079783584,0.26191648,0,0.071849852,0.25958891,0,0.074546647,0.25397984,0){0.017322357,0.016149584,0.0168549};
-ST(0.080764352,0.25370675,0,0.079783584,0.26191648,0,0.074546647,0.25397984,0){0.018075953,0.017322357,0.0168549};
-ST(0.026088282,0.11662569,0,0.023840623,0.12537371,0,0.020593251,0.11774208,0){0.0072108519,0.0066011582,0.0061054898};
-ST(0.085997557,0.2404943,0,0.077999455,0.23524011,0,0.084252623,0.23309293,0){0.015461976,0.01189957,0.011556838};
-ST(0.057118803,0.2495577,0,0.052565911,0.25627138,0,0.047977922,0.25174593,0){0.01294362,0.012510711,0.011417018};
-ST(0.033876205,0.27672463,0,0.025494351,0.27459236,0,0.03069513,0.26894688,0){0.0054941796,0.0048210135,0.0068303314};
-ST(0.034146712,0.24547706,0,0.029557505,0.25181754,0,0.02496255,0.24770535,0){0.0080003212,0.0077937721,0.0065793383};
-ST(0.091262725,0.14644758,0,0.1,0.15,0,0.093845023,0.15358209,0){0.01557235,0.015699503,0.013567056};
-ST(0.011361659,0.080618598,0,0.0071026462,0.074440872,0,0.011925798,0.071682732,0){0.0036383706,0.0027655645,0.0034604908};
-ST(0.0086756768,0.036899292,0,0.012022181,0.028807467,0,0.015319473,0.034144954,0){0.0021713487,0.0024211626,0.0028850261};
-ST(0.035314966,0.015501396,0,0.035472349,0.0074078563,0,0.040745998,0.014567719,0){0.0046621453,0.004577179,0.0052038167};
-ST(0.038361486,0.26932975,0,0.033876205,0.27672463,0,0.03069513,0.26894688,0){0.0080129566,0.0054941796,0.0068303314};
-ST(0.091139261,0.22291429,0,0.082404782,0.22674486,0,0.08504359,0.22088839,0){0.013217271,0.010486323,0.013444316};
-ST(0.031586673,0.16385918,0,0.037630266,0.15856612,0,0.040316423,0.16515352,0){0.0045180602,0.005390121,0.0057431286};
-ST(0.1,0.035714286,0,0.1,0.042857143,0,0.092021896,0.039287055,0){0.012677109,0.013404909,0.012081021};
-ST(0.011361659,0.080618598,0,0.0088081659,0.089068546,0,0.0048810442,0.085538046,0){0.0036383706,0.0034128678,0.0026331542};
-ST(0.044093146,0.010189996,0,0.035472349,0.0074078563,0,0.042065894,0.0047615469,0){0.0054767147,0.004577179,0.0052207549};
-ST(0.049343079,0.277854,0,0.056202721,0.28169173,0,0.047308417,0.28460012,0){0.0070287375,0.0071383318,0.0073520502};
-ST(0.061392472,0.25446647,0,0.062978572,0.26385631,0,0.057902634,0.25988484,0){0.014253572,0.013699793,0.013366799};
-ST(0.056202721,0.28169173,0,0.052935715,0.28884082,0,0.047308417,0.28460012,0){0.0071383318,0.0097788527,0.0073520502};
-ST(0.086199215,0.13907252,0,0.07789134,0.13496254,0,0.082184623,0.13131431,0){0.016657803,0.015967895,0.017315387};
-ST(0.044431549,0.22049192,0,0.049958331,0.21332249,0,0.049857944,0.21896006,0){0.0078092733,0.010389004,0.0090150594};
-ST(0.051715879,0.035807649,0,0.052903,0.044824368,0,0.047793904,0.042940806,0){0.0071174241,0.0077922845,0.0070477847};
-ST(0.085714286,0.3,0,0.078571429,0.3,0,0.081687843,0.29203932,0){0.018964149,0.017545614,0.015803058};
-ST(0.071665053,0.14281002,0,0.075863318,0.15128967,0,0.069692704,0.14906563,0){0.013390699,0.011891738,0.01161516};
-ST(0.030599619,0.030587128,0,0.037310958,0.036215878,0,0.032234088,0.038660634,0){0.0045148124,0.0054726568,0.0049768543};
-ST(0.011625116,0.13292217,0,0.0071724145,0.1266659,0,0.012134612,0.12388006,0){0.0040067754,0.0033276957,0.0043462782};
-ST(0.046828703,0.19603271,0,0.041289591,0.20119015,0,0.042998409,0.19194838,0){0.011336809,0.010204072,0.010376684};
-ST(0.082636182,0.070608246,0,0.091481478,0.06789356,0,0.088095049,0.072803473,0){0.014480965,0.01547964,0.015636506};
-ST(0.07511088,0.16072173,0,0.075863318,0.15128967,0,0.080100366,0.15677346,0){0.0087749301,0.011891738,0.010731672};
-ST(0.043535837,0.098689724,0,0.052243848,0.09708824,0,0.04848764,0.10113949,0){0.010280302,0.011856809,0.011356258};
-ST(0.093179303,0.2678908,0,0.085467713,0.26792084,0,0.085458809,0.2622366,0){0.017810421,0.016469437,0.018345062};
-ST(0.017536395,0.20823956,0,0.012217264,0.2047927,0,0.015061448,0.19930754,0){0.0051815338,0.004330336,0.0050085568};
-ST(0.075863318,0.15128967,0,0.082093837,0.14416854,0,0.082655945,0.15094656,0){0.011891738,0.014763534,0.012939286};
-ST(0.037124591,0.13989263,0,0.032539635,0.14727541,0,0.031694548,0.13853307,0){0.0080703973,0.0064374803,0.0072703146};
-ST(0.087198716,0.035123314,0,0.083309384,0.040170382,0,0.078343312,0.037688751,0){0.01115353,0.011126505,0.010332889};
-ST(0.016308386,0.12868827,0,0.011625116,0.13292217,0,0.012134612,0.12388006,0){0.0050367798,0.0040067754,0.0043462782};
-ST(0.063732547,0.036638377,0,0.062787056,0.044920338,0,0.056980445,0.038962171,0){0.0085558446,0.0090240074,0.007911465};
-ST(0.069899638,0.22912552,0,0.073845419,0.2209308,0,0.076354388,0.22899719,0){0.0079913397,0.011831692,0.0086224438};
-ST(0.036211214,0.28505229,0,0.033876205,0.27672463,0,0.041478584,0.27908417,0){0.0060722216,0.0054941796,0.0055491609};
-ST(0.049987625,0.021377356,0,0.042058405,0.019919863,0,0.04886699,0.014821261,0){0.0063275637,0.005453629,0.0060418568};
-ST(0.091442458,0.17596857,0,0.088990194,0.16733012,0,0.095064283,0.16787532,0){0.01565701,0.012031194,0.012983793};
-ST(0,0.0063325984,0,0,0,0,0.0060844024,0.0061076692,0){0.0010048122,0.001,0.0016156403};
-ST(0.046260124,0.1690627,0,0.05534208,0.16725107,0,0.049852622,0.17323607,0){0.0072155439,0.007927676,0.0086421223};
-ST(0,0,0,0.0063441985,0,0,0.0060844024,0.0061076692,0){0.001,0.0016344198,0.0016156403};
-ST(0.056165025,0.18879164,0,0.063123076,0.1931948,0,0.055630617,0.19665887,0){0.012615914,0.014426164,0.013109344};
-ST(0.059002427,0.022914684,0,0.056929375,0.031821563,0,0.05377987,0.026339649,0){0.0073347399,0.0075042202,0.0069083627};
-ST(0.079152804,0,0,0.086053667,0,0,0.081893484,0.0078002118,0){0.0089152804,0.0096053667,0.0092564415};
-ST(0,0.19646877,0,0.0087251496,0.19682156,0,0.0061278576,0.20241521,0){0.001996753,0.0037412176,0.003192052};
-ST(0.010401748,0.010393316,0,0.0059292545,0.014766706,0,0.0060844024,0.0061076692,0){0.0020666199,0.0016346023,0.0016156403};
-ST(0.023737369,0.060388613,0,0.03202369,0.058862937,0,0.031481235,0.064160132,0){0.0048034585,0.0058997278,0.0061148995};
-ST(0.063123076,0.1931948,0,0.061970306,0.20134793,0,0.055630617,0.19665887,0){0.014426164,0.01431047,0.013109344};
-ST(0.0088081659,0.089068546,0,0,0.089973101,0,0.0048810442,0.085538046,0){0.0034128678,0.0018256894,0.0026331542};
-ST(0.015882078,0.22251136,0,0.023684336,0.22562355,0,0.014825475,0.22792118,0){0.0034527378,0.0039829742,0.0025937878};
-ST(0.056980445,0.038962171,0,0.052903,0.044824368,0,0.051715879,0.035807649,0){0.007911465,0.0077922845,0.0071174241};
-ST(0.073628203,0.28912297,0,0.067897561,0.29362967,0,0.069762333,0.28431595,0){0.013138961,0.013998657,0.010105067};
-ST(0.046632264,0.12023287,0,0.053583525,0.11616451,0,0.055297829,0.12231774,0){0.011250538,0.012709223,0.012895552};
-ST(0.063566128,0.14056854,0,0.063134362,0.14896083,0,0.056840174,0.14351487,0){0.012479942,0.010684357,0.010834582};
-ST(0.065548757,0.12300421,0,0.071875088,0.12337373,0,0.072428856,0.1291202,0){0.014884473,0.016108744,0.015735892};
-ST(0.045608803,0.090081762,0,0.043535837,0.098689724,0,0.038968939,0.093670726,0){0.010159785,0.010280302,0.0091516332};
-ST(0.032223949,0.094413692,0,0.025886934,0.08860133,0,0.031168111,0.086149637,0){0.0079256222,0.0064910537,0.0073174534};
-ST(0.067714741,0.05140667,0,0.075053667,0.054941461,0,0.06842362,0.059320823,0){0.010194849,0.011519318,0.011056454};
-ST(0.044718386,0.11394827,0,0.036329714,0.11757216,0,0.038759258,0.11167503,0){0.010943235,0.0092480093,0.0097384206};
-ST(0.037310958,0.036215878,0,0.030599619,0.030587128,0,0.036258451,0.030655369,0){0.0054726568,0.0045148124,0.005146398};
-ST(0.051467941,0.24632844,0,0.057118803,0.2495577,0,0.047977922,0.25174593,0){0.011312523,0.01294362,0.011417018};
-ST(0.081687843,0.29203932,0,0.073628203,0.28912297,0,0.076893993,0.2841615,0){0.015803058,0.013138961,0.010943662};
-ST(0.058736373,0,0,0.065494415,0,0,0.062145045,0.0076586897,0){0.0068736373,0.0075494415,0.0072652846};
-ST(0.010057812,0.23068741,0,0.0078882173,0.22230145,0,0.014825475,0.22792118,0){0.0022253758,0.0024001814,0.0025937878};
-ST(0.03865178,0.054286144,0,0.03202369,0.058862937,0,0.031526637,0.051365987,0){0.006550054,0.0058997278,0.005445607};
-ST(0.054926517,0.23907834,0,0.048914928,0.23375044,0,0.053928421,0.22993019,0){0.01002412,0.0074706102,0.0067705286};
-ST(0.037310958,0.036215878,0,0.045920614,0.037827936,0,0.039602446,0.042142971,0){0.0054726568,0.0065475869,0.0060094056};
-ST(0.05289152,0.22371293,0,0.045884216,0.22738799,0,0.049857944,0.21896006,0){0.0079980598,0.0060154955,0.0090150594};
-ST(0.025388465,0.21882491,0,0.018022534,0.21455918,0,0.026946825,0.21343101,0){0.0053446137,0.0047312007,0.006387962};
-ST(0.059647761,0.23257945,0,0.054926517,0.23907834,0,0.053928421,0.22993019,0){0.0083760198,0.01002412,0.0067705286};
-ST(0.1,0.12142857,0,0.1,0.12857143,0,0.092325542,0.12610752,0){0.02178379,0.021075659,0.019887567};
-ST(0.026277351,0.065288906,0,0.023737369,0.060388613,0,0.031481235,0.064160132,0){0.0054035144,0.0048034585,0.0061148995};
-ST(0.045884216,0.22738799,0,0.044431549,0.22049192,0,0.049857944,0.21896006,0){0.0060154955,0.0078092733,0.0090150594};
-ST(0.089406716,0.20396751,0,0.091581209,0.19542497,0,0.095307299,0.20359445,0){0.019494326,0.020231089,0.020702797};
-ST(0.032172362,0,0,0.038743683,0,0,0.035472349,0.0074078563,0){0.0042172362,0.0048743683,0.004577179};
-ST(0.036893214,0.087210211,0,0.032223949,0.094413692,0,0.031168111,0.086149637,0){0.0083992423,0.0079256222,0.0073174534};
-ST(0.064022129,0.087403768,0,0.072016645,0.090906146,0,0.067742128,0.095151401,0){0.013276737,0.015065982,0.014654254};
-ST(0.03202369,0.058862937,0,0.024953134,0.05500472,0,0.031526637,0.051365987,0){0.0058997278,0.0047366364,0.005445607};
-ST(0.043696053,0.10764168,0,0.043535837,0.098689724,0,0.04848764,0.10113949,0){0.010652083,0.010280302,0.011356258};
-ST(0.0088859191,0.14145589,0,0.017650615,0.14332879,0,0.0123246,0.14637199,0){0.0031626243,0.0044959748,0.0034383019};
-ST(0.049745249,0.18581505,0,0.050927036,0.19167746,0,0.042998409,0.19194838,0){0.011007309,0.011906838,0.010376684};
-ST(0.043729981,0.29067011,0,0.047308417,0.28460012,0,0.049141897,0.29382693,0){0.0088969473,0.0073520502,0.010673071};
-ST(0.047308417,0.28460012,0,0.052935715,0.28884082,0,0.049141897,0.29382693,0){0.0073520502,0.0097788527,0.010673071};
-ST(0.019167426,0,0,0.018141403,0.008046786,0,0.013164233,0.0055676569,0){0.0029167426,0.0028360063,0.0023250401};
-ST(0.068083985,0.13292159,0,0.063566128,0.14056854,0,0.061700615,0.13262108,0){0.014467744,0.012479942,0.013320597};
-ST(0.081684953,0.055147379,0,0.087298598,0.058683388,0,0.083796981,0.064188207,0){0.012440745,0.013637256,0.01383053};
-ST(0.045920614,0.037827936,0,0.037310958,0.036215878,0,0.042275405,0.033499023,0){0.0065475869,0.0054726568,0.0059293669};
-ST(0.041543317,0.12438759,0,0.042328752,0.13293246,0,0.035995823,0.12783992,0){0.010099467,0.009694753,0.0088531158};
-ST(0.0088081659,0.089068546,0,0.017510909,0.090546457,0,0.012113002,0.093889284,0){0.0034128678,0.0050417352,0.0041379831};
-ST(0.080964027,0.048552182,0,0.083309384,0.040170382,0,0.088013761,0.043162337,0){0.011635394,0.011126505,0.011974352};
-ST(0.031988636,0.21096061,0,0.027679574,0.20292337,0,0.034870605,0.20566508,0){0.0075960493,0.00743754,0.0086811083};
-ST(0.043729981,0.29067011,0,0.042857143,0.3,0,0.038812872,0.29456049,0){0.0088969473,0.010468963,0.0089597215};
-ST(0.055404807,0.10282352,0,0.052243848,0.09708824,0,0.060554433,0.1007053,0){0.012784817,0.011856809,0.013673871};
-ST(0.036825174,0.15225095,0,0.04397778,0.15172209,0,0.043875453,0.15799271,0){0.0063271993,0.0073960532,0.0061743039};
-ST(0.018022534,0.21455918,0,0.023854517,0.20874482,0,0.026946825,0.21343101,0){0.0047312007,0.0063291573,0.006387962};
-ST(0.012839023,0.16391618,0,0.017270897,0.15739381,0,0.020122959,0.1650354,0){0.0025080878,0.0031824437,0.0034385995};
-ST(0.08966753,0.048486622,0,0.080964027,0.048552182,0,0.088013761,0.043162337,0){0.012741374,0.011635394,0.011974352};
-ST(0.061392472,0.25446647,0,0.052565911,0.25627138,0,0.057118803,0.2495577,0){0.014253572,0.012510711,0.01294362};
-ST(0.017270897,0.15739381,0,0.024892413,0.15941751,0,0.020122959,0.1650354,0){0.0031824437,0.0038380393,0.0034385995};
-ST(0.091481478,0.06789356,0,0.1,0.071428571,0,0.093701939,0.074587016,0){0.01547964,0.017321771,0.016790312};
-ST(0.037630266,0.15856612,0,0.036825174,0.15225095,0,0.043875453,0.15799271,0){0.005390121,0.0063271993,0.0061743039};
-ST(0.049987625,0.021377356,0,0.055286521,0.017504737,0,0.05377987,0.026339649,0){0.0063275637,0.0067686563,0.0069083627};
-ST(0.081893484,0.0078002118,0,0.086053667,0,0,0.086908462,0.0054765496,0){0.0092564415,0.0096053667,0.0097257245};
-ST(0.025494351,0.27459236,0,0.033876205,0.27672463,0,0.028120489,0.2818096,0){0.0048210135,0.0054941796,0.0042507092};
-ST(0.055286521,0.017504737,0,0.059002427,0.022914684,0,0.05377987,0.026339649,0){0.0067686563,0.0073347399,0.0069083627};
-ST(0.0072786063,0.26188216,0,0.01442164,0.26537398,0,0.0066221519,0.26909631,0){0.0033349743,0.0044630286,0.0027778017};
-ST(0.023684336,0.22562355,0,0.0193219,0.2311094,0,0.014825475,0.22792118,0){0.0039829742,0.0033259199,0.0025937878};
-ST(0.068257319,0.21507018,0,0.060721208,0.21210696,0,0.064084929,0.20704546,0){0.013061516,0.012543826,0.014136837};
-ST(0.021087268,0.20067351,0,0.023854517,0.20874482,0,0.017536395,0.20823956,0){0.0061950348,0.0063291573,0.0051815338};
-ST(0.069592365,0.2044761,0,0.071872871,0.196559,0,0.075136028,0.20507776,0){0.015550958,0.016350779,0.016555444};
-ST(0.064285714,0.3,0,0.057142857,0.3,0,0.060722814,0.29233598,0){0.01471425,0.013300462,0.012292123};
-ST(0.090756854,0.23190656,0,0.091139261,0.22291429,0,0.094415701,0.22755789,0){0.012032973,0.013217271,0.011061458};
-ST(0.093701939,0.074587016,0,0.1,0.078571429,0,0.094143629,0.083392096,0){0.016790312,0.018423801,0.018131068};
-ST(0.035671381,0.23699067,0,0.034146712,0.24547706,0,0.029770914,0.23803179,0){0.0065861258,0.0080003212,0.0059362425};
-ST(0.035714286,0.3,0,0.028571429,0.3,0,0.032913158,0.29243767,0){0.0090547386,0.0076400532,0.0074810533};
-ST(0.026665403,0.037799711,0,0.030599619,0.030587128,0,0.032234088,0.038660634,0){0.0042921244,0.0045148124,0.0049768543};
-ST(0.053583525,0.11616451,0,0.046632264,0.12023287,0,0.049912889,0.1120086,0){0.012709223,0.011250538,0.01196981};
-ST(0.1,0.064285714,0,0.091481478,0.06789356,0,0.093812493,0.061490211,0){0.016234238,0.01547964,0.014931531};
-ST(0.063357463,0.065442129,0,0.055287343,0.062192056,0,0.060565964,0.060729258,0){0.010941973,0.0094513626,0.010078647};
-ST(0.04886699,0.014821261,0,0.042058405,0.019919863,0,0.040745998,0.014567719,0){0.0060418568,0.005453629,0.0052038167};
-ST(0.1,0.25,0,0.094387819,0.25408144,0,0.094605269,0.2449598,0){0.021317208,0.020817593,0.018767685};
-ST(0.024953134,0.05500472,0,0.03202369,0.058862937,0,0.023737369,0.060388613,0){0.0047366364,0.0058997278,0.0048034585};
-ST(0.042689804,0.18635753,0,0.049745249,0.18581505,0,0.042998409,0.19194838,0){0.0097748212,0.011007309,0.010376684};
-ST(0.030623557,0.22463729,0,0.039227544,0.22315927,0,0.033439845,0.22948364,0){0.0049656049,0.0064036567,0.004415165};
-ST(0.063624353,0.22254194,0,0.069899638,0.22912552,0,0.063977145,0.22848817,0){0.0098145667,0.0079913397,0.0073732166};
-ST(0.049987111,0.073706442,0,0.055460475,0.069248829,0,0.054518411,0.078119445,0){0.009638201,0.010108481,0.010765513};
-ST(0,0.076937883,0,0,0.070445097,0,0.0071026462,0.074440872,0){0.0016520865,0.0015609243,0.0027655645};
-ST(0.055460475,0.069248829,0,0.05987551,0.074756595,0,0.054518411,0.078119445,0){0.010108481,0.011330154,0.010765513};
-ST(0.060533545,0.055251798,0,0.06842362,0.059320823,0,0.060565964,0.060729258,0){0.0095798189,0.011056454,0.010078647};
-ST(0.077093289,0.16951597,0,0.08274919,0.16255857,0,0.083408518,0.1704193,0){0.011325245,0.0094335589,0.012492447};
-ST(0.080374191,0.097624086,0,0.083077166,0.089272145,0,0.087484565,0.092974465,0){0.01726286,0.016912942,0.018142262};
-ST(0.092733018,0.13870795,0,0.091262725,0.14644758,0,0.086199215,0.13907252,0){0.017873716,0.01557235,0.016657803};
-ST(0.08910917,0.098496512,0,0.080374191,0.097624086,0,0.087484565,0.092974465,0){0.01901377,0.01726286,0.018142262};
-ST(0.086199215,0.13907252,0,0.082093837,0.14416854,0,0.077226062,0.14082844,0){0.016657803,0.014763534,0.01474222};
-ST(0.024913192,0.2415392,0,0.020771052,0.23704614,0,0.029770914,0.23803179,0){0.0057883538,0.0044321473,0.0059362425};
-ST(0.0078882173,0.22230145,0,0.015882078,0.22251136,0,0.014825475,0.22792118,0){0.0024001814,0.0034527378,0.0025937878};
-ST(0.043535837,0.098689724,0,0.037735929,0.10537966,0,0.036577437,0.099338278,0){0.010280302,0.0094123836,0.0089716861};
-ST(0.008891087,0.24587871,0,0.010704963,0.2547075,0,0.0059669022,0.25108021,0){0.0034490262,0.0041360758,0.003127184};
-ST(0.04677464,0.063987522,0,0.055287343,0.062192056,0,0.05011462,0.068273913,0){0.0083560787,0.0094513626,0.0092014028};
-ST(0.091018613,0.020305374,0,0.1,0.021428571,0,0.094084599,0.025998463,0){0.010601467,0.011605817,0.011251769};
-ST(0.061718685,0.09526012,0,0.064022129,0.087403768,0,0.067742128,0.095151401,0){0.013527119,0.013276737,0.014654254};
-ST(0.026277351,0.065288906,0,0.031467861,0.069797289,0,0.022758147,0.069506288,0){0.0054035144,0.006435259,0.0050703118};
-ST(0,0.129442,0,0,0.12282405,0,0.0071724145,0.1266659,0){0.0019048233,0.0019714567,0.0033276957};
-ST(0.031467861,0.069797289,0,0.026085268,0.073876802,0,0.022758147,0.069506288,0){0.006435259,0.0058065079,0.0050703118};
-ST(0.091139261,0.22291429,0,0.1,0.22142857,0,0.094415701,0.22755789,0){0.013217271,0.015316378,0.011061458};
-ST(0.05289152,0.22371293,0,0.055853935,0.21726741,0,0.058567138,0.22596146,0){0.0079980598,0.010404133,0.0079955342};
-ST(0.080964027,0.048552182,0,0.075053667,0.054941461,0,0.073862352,0.047765251,0){0.011635394,0.011519318,0.010653664};
-ST(0.071872871,0.196559,0,0.077664091,0.1983373,0,0.075136028,0.20507776,0){0.016350779,0.017532477,0.016555444};
-ST(0.032539635,0.14727541,0,0.037124591,0.13989263,0,0.039444525,0.14644848,0){0.0064374803,0.0080703973,0.0076040741};
-ST(0.031910893,0.1329396,0,0.030550045,0.12422927,0,0.035995823,0.12783992,0){0.0077641922,0.007950786,0.0088531158};
-ST(0.042328752,0.13293246,0,0.049672348,0.13321934,0,0.042474964,0.13846746,0){0.009694753,0.011026506,0.009157817};
-ST(0.063913425,0.11688174,0,0.068497018,0.1095775,0,0.070021709,0.11751867,0){0.014765299,0.015633235,0.015974435};
-ST(0.025886934,0.08860133,0,0.021553482,0.081174183,0,0.026804876,0.082803766,0){0.0064910537,0.0053983383,0.0063784224};
-ST(0.049993928,0.12587718,0,0.046632264,0.12023287,0,0.055297829,0.12231774,0){0.011673871,0.011250538,0.012895552};
-ST(0.094387819,0.25408144,0,0.090457694,0.24900602,0,0.094605269,0.2449598,0){0.020817593,0.019245042,0.018767685};
-ST(0.042070498,0.080362737,0,0.036904468,0.073804537,0,0.044925733,0.07572266,0){0.0088504368,0.0075426679,0.0089806243};
-ST(0.1,0.1,0,0.093000475,0.1047961,0,0.09495489,0.096461405,0){0.021252429,0.020272382,0.019926776};
-ST(0.063566128,0.14056854,0,0.056396465,0.13618531,0,0.061700615,0.13262108,0){0.012479942,0.01190613,0.013320597};
-ST(0.1,0.22142857,0,0.091139261,0.22291429,0,0.09397747,0.21696725,0){0.015316378,0.013217271,0.016558656};
-ST(0.030550045,0.12422927,0,0.031910893,0.1329396,0,0.027097286,0.12998702,0){0.007950786,0.0077641922,0.0070390802};
-ST(0.032223949,0.094413692,0,0.036893214,0.087210211,0,0.038968939,0.093670726,0){0.0079256222,0.0083992423,0.0091516332};
-ST(0.044093146,0.010189996,0,0.049555855,0.0062621576,0,0.04886699,0.014821261,0){0.0054767147,0.005983611,0.0060418568};
-ST(0.032913158,0.29243767,0,0.028571429,0.3,0,0.025005027,0.29510367,0){0.0074810533,0.0076400532,0.0064954414};
-ST(0.049555855,0.0062621576,0,0.054320068,0.011013092,0,0.04886699,0.014821261,0){0.005983611,0.0065256187,0.0060418568};
-ST(0.046632264,0.12023287,0,0.044718386,0.11394827,0,0.049912889,0.1120086,0){0.011250538,0.010943235,0.01196981};
-ST(0.0070329053,0.19002058,0,0.01086253,0.18415108,0,0.015545644,0.18763273,0){0.0032854097,0.0037558824,0.0048113533};
-ST(0.079360922,0.024541521,0,0.072873195,0.02116659,0,0.076551438,0.016154114,0){0.0095813814,0.0087326558,0.0089261328};
-ST(0.056396465,0.13618531,0,0.063566128,0.14056854,0,0.056840174,0.14351487,0){0.01190613,0.012479942,0.010834582};
-ST(0,0.25123488,0,0,0.24433157,0,0.0059669022,0.25108021,0){0.0019611328,0.0017709859,0.003127184};
-ST(0.078294484,0.27242298,0,0.085467713,0.26792084,0,0.083774702,0.27611409,0){0.01320473,0.016469437,0.011867254};
-ST(0.094084599,0.025998463,0,0.087770529,0.028777226,0,0.085527033,0.023058497,0){0.011251769,0.010747054,0.010161784};
-ST(0.089406716,0.20396751,0,0.080532481,0.2036733,0,0.085087205,0.20027301,0){0.019494326,0.017789172,0.018969225};
-ST(0.091018613,0.020305374,0,0.094084599,0.025998463,0,0.085527033,0.023058497,0){0.010601467,0.011251769,0.010161784};
-ST(0.075019178,0.10458001,0,0.080374191,0.097624086,0,0.082067363,0.10446681,0){0.016721658,0.01726286,0.01810119};
-ST(0.077093289,0.16951597,0,0.072198327,0.17708617,0,0.070593417,0.17068076,0){0.011325245,0.013008194,0.010855202};
-ST(0.052565911,0.25627138,0,0.053554762,0.26522616,0,0.048124177,0.25975563,0){0.012510711,0.01164797,0.011453901};
-ST(0.080374191,0.097624086,0,0.075019178,0.10458001,0,0.073457999,0.097670639,0){0.01726286,0.016721658,0.015945532};
-ST(0.056929375,0.031821563,0,0.063732547,0.036638377,0,0.056980445,0.038962171,0){0.0075042202,0.0085558446,0.007911465};
-ST(0.031727435,0.080354054,0,0.036904468,0.073804537,0,0.036897729,0.08183265,0){0.0070919301,0.0075426679,0.0080657189};
-ST(0.091139261,0.22291429,0,0.087181126,0.21483096,0,0.09397747,0.21696725,0){0.013217271,0.016308886,0.016558656};
-ST(0.082286996,0.017839369,0,0.079360922,0.024541521,0,0.076551438,0.016154114,0){0.009581051,0.0095813814,0.0089261328};
-ST(0.053554762,0.26522616,0,0.052565911,0.25627138,0,0.057902634,0.25988484,0){0.01164797,0.012510711,0.013366799};
-ST(0.036904468,0.073804537,0,0.042070498,0.080362737,0,0.036897729,0.08183265,0){0.0075426679,0.0088504368,0.0080657189};
-ST(0.030599619,0.030587128,0,0.034829369,0.02335383,0,0.036258451,0.030655369,0){0.0045148124,0.004776128,0.005146398};
-ST(0.1,0.014285714,0,0.1,0.021428571,0,0.09386735,0.014826529,0){0.011269361,0.011605817,0.010660697};
-ST(0.068497018,0.1095775,0,0.063913425,0.11688174,0,0.060886949,0.1120001,0){0.015633235,0.014765299,0.014162182};
-ST(0.049011257,0.083339476,0,0.042070498,0.080362737,0,0.044925733,0.07572266,0){0.010269497,0.0088504368,0.0089806243};
-ST(0.082495291,0.1767331,0,0.077093289,0.16951597,0,0.083408518,0.1704193,0){0.01452089,0.011325245,0.012492447};
-ST(0.04131315,0.17777431,0,0.036056327,0.17085097,0,0.041541458,0.17214356,0){0.0082407056,0.0062254059,0.0072276425};
-ST(0.1,0.13571429,0,0.1,0.14285714,0,0.092733018,0.13870795,0){0.019826901,0.01802413,0.017873716};
-ST(0.091920476,0.089306354,0,0.1,0.092857143,0,0.09495489,0.096461405,0){0.018524169,0.020456772,0.019926776};
-ST(0.030623557,0.22463729,0,0.035581831,0.21858705,0,0.039227544,0.22315927,0){0.0049656049,0.0069414214,0.0064036567};
-ST(0.082772947,0.19508151,0,0.091581209,0.19542497,0,0.085087205,0.20027301,0){0.018456454,0.020231089,0.018969225};
-ST(0.031586673,0.16385918,0,0.036056327,0.17085097,0,0.030747828,0.1721598,0){0.0045180602,0.0062254059,0.0057172032};
-ST(0.021428571,0.3,0,0.014285714,0.3,0,0.017895429,0.29268335,0){0.0062259487,0.0048122771,0.0048907512};
-ST(0.083077166,0.089272145,0,0.091920476,0.089306354,0,0.087484565,0.092974465,0){0.016912942,0.018524169,0.018142262};
-ST(0.091581209,0.19542497,0,0.089406716,0.20396751,0,0.085087205,0.20027301,0){0.020231089,0.019494326,0.018969225};
-ST(0.052565911,0.25627138,0,0.061392472,0.25446647,0,0.057902634,0.25988484,0){0.012510711,0.014253572,0.013366799};
-ST(0,0.10963845,0,0,0.10306461,0,0.0069230724,0.10599149,0){0.0019917765,0.0019564772,0.0033428238};
-ST(0.07730725,0.063519068,0,0.072251719,0.070805738,0,0.071294356,0.064744402,0){0.012794591,0.01288041,0.012048426};
-ST(0.049343079,0.277854,0,0.041478584,0.27908417,0,0.045177088,0.27188516,0){0.0070287375,0.0055491609,0.0084113388};
-ST(0.030623557,0.22463729,0,0.028521342,0.23217192,0,0.023684336,0.22562355,0){0.0049656049,0.004622157,0.0039829742};
-ST(0,0.044618955,0,0,0.038198556,0,0.0064196609,0.043098201,0){0.0012366363,0.0011742026,0.0020049288};
-ST(0,0.26508755,0,0,0.25815412,0,0.0072786063,0.26188216,0){0.0018369147,0.0019897884,0.0033349743};
-ST(0.078003603,0.24394837,0,0.085997557,0.2404943,0,0.08378138,0.24758349,0){0.015457416,0.015461976,0.017616529};
-ST(0.1,0.035714286,0,0.092021896,0.039287055,0,0.093788043,0.032457843,0){0.012677109,0.012081021,0.011687416};
-ST(0.036645028,0.065460046,0,0.036904468,0.073804537,0,0.031467861,0.069797289,0){0.0069586979,0.0075426679,0.006435259};
-ST(0.023854517,0.20874482,0,0.021087268,0.20067351,0,0.027679574,0.20292337,0){0.0063291573,0.0061950348,0.00743754};
-ST(0.082636182,0.070608246,0,0.07730725,0.063519068,0,0.083796981,0.064188207,0){0.014480965,0.012794591,0.01383053};
-ST(0.012634798,0.015675501,0,0.017915306,0.017912514,0,0.013134683,0.023608073,0){0.0023302125,0.0028989864,0.0024680799};
-ST(0.087181126,0.21483096,0,0.091139261,0.22291429,0,0.08504359,0.22088839,0){0.016308886,0.013217271,0.013444316};
-ST(0.091442458,0.17596857,0,0.1,0.17857143,0,0.094303462,0.18195896,0){0.01565701,0.017958284,0.018137636};
-ST(0.045236581,0.26460649,0,0.038361486,0.26932975,0,0.03870412,0.26169066,0){0.0102386,0.0080129566,0.0094231843};
-ST(0.0087251496,0.19682156,0,0.016706021,0.19335173,0,0.015061448,0.19930754,0){0.0037412176,0.0052731674,0.0050085568};
-ST(0.039444525,0.14644848,0,0.046118705,0.14263648,0,0.047950771,0.14786323,0){0.0076040741,0.0092278734,0.0086642634};
-ST(0.062145045,0.0076586897,0,0.054320068,0.011013092,0,0.055476524,0.0050891727,0){0.0072652846,0.0065256187,0.0065680022};
-ST(0.0086756768,0.036899292,0,0.015319473,0.034144954,0,0.01153062,0.041448292,0){0.0021713487,0.0028850261,0.00259379};
-ST(0.012217264,0.2047927,0,0.0087251496,0.19682156,0,0.015061448,0.19930754,0){0.004330336,0.0037412176,0.0050085568};
-ST(0.062145045,0.0076586897,0,0.065494415,0,0,0.068927504,0.0060918646,0){0.0072652846,0.0075494415,0.0079278993};
-ST(0.031699447,0.11078243,0,0.036329714,0.11757216,0,0.031049449,0.11882536,0){0.0083198518,0.0092480093,0.0081786012};
-ST(0,0.28598845,0,0,0.27900442,0,0.0072882997,0.28273448,0){0.0013741411,0.0010819588,0.0020641429};
-ST(0,0.16276123,0,0,0.15606634,0,0.0069940321,0.15907843,0){0.0010316,0.0012140034,0.001901441};
-ST(0.045884216,0.22738799,0,0.05289152,0.22371293,0,0.053928421,0.22993019,0){0.0060154955,0.0079980598,0.0067705286};
-ST(0.055630617,0.19665887,0,0.046828703,0.19603271,0,0.050927036,0.19167746,0){0.013109344,0.011336809,0.011906838};
-ST(0.045608803,0.090081762,0,0.038968939,0.093670726,0,0.042179961,0.085826476,0){0.010159785,0.0091516332,0.0092527823};
-ST(0.0087251496,0.19682156,0,0.012217264,0.2047927,0,0.0061278576,0.20241521,0){0.0037412176,0.004330336,0.003192052};
-ST(0.1,0.1,0,0.1,0.10714286,0,0.093000475,0.1047961,0){0.021252429,0.021795245,0.020272382};
-ST(0.046118705,0.14263648,0,0.039444525,0.14644848,0,0.042474964,0.13846746,0){0.0092278734,0.0076040741,0.009157817};
-ST(0.0059238649,0.061251643,0,0.012733045,0.058713138,0,0.013497928,0.064220863,0){0.002285324,0.0031871065,0.0034658513};
-ST(0.03902447,0.22900351,0,0.035671381,0.23699067,0,0.033439845,0.22948364,0){0.004919465,0.0065861258,0.004415165};
-ST(0.064285714,0.3,0,0.060722814,0.29233598,0,0.067897561,0.29362967,0){0.01471425,0.012292123,0.013998657};
-ST(0.026088282,0.11662569,0,0.031699447,0.11078243,0,0.031049449,0.11882536,0){0.0072108519,0.0083198518,0.0081786012};
-ST(0.025933861,0.16956771,0,0.031586673,0.16385918,0,0.030747828,0.1721598,0){0.0046706454,0.0045180602,0.0057172032};
-ST(0.068497018,0.1095775,0,0.075237497,0.11427639,0,0.070021709,0.11751867,0){0.015633235,0.017047438,0.015974435};
-ST(0,0.057500186,0,0,0.051053592,0,0.0066877577,0.054780491,0){0.0013864255,0.001307702,0.002256812};
-ST(0.054320068,0.011013092,0,0.062145045,0.0076586897,0,0.059697637,0.012753556,0){0.0065256187,0.0072652846,0.0071057936};
-ST(0.035671381,0.23699067,0,0.03902447,0.22900351,0,0.042308788,0.23483757,0){0.0065861258,0.004919465,0.0069239308};
-ST(0.084252623,0.23309293,0,0.077999455,0.23524011,0,0.076354388,0.22899719,0){0.011556838,0.01189957,0.0086224438};
-ST(0.049993928,0.12587718,0,0.041543317,0.12438759,0,0.046632264,0.12023287,0){0.011673871,0.010099467,0.011250538};
-ST(0.082404782,0.22674486,0,0.084252623,0.23309293,0,0.076354388,0.22899719,0){0.010486323,0.011556838,0.0086224438};
-ST(0.035671381,0.23699067,0,0.028521342,0.23217192,0,0.033439845,0.22948364,0){0.0065861258,0.004622157,0.004415165};
-ST(0.075053667,0.054941461,0,0.080964027,0.048552182,0,0.081684953,0.055147379,0){0.011519318,0.011635394,0.012440745};
-ST(0.075053667,0.054941461,0,0.067714741,0.05140667,0,0.073862352,0.047765251,0){0.011519318,0.010194849,0.010653664};
-ST(0.018141403,0.008046786,0,0.019167426,0,0,0.023343368,0.0053891764,0){0.0028360063,0.0029167426,0.0033459576};
-ST(0.012733243,0,0,0.019167426,0,0,0.013164233,0.0055676569,0){0.0022733243,0.0029167426,0.0023250401};
-ST(0.041478584,0.27908417,0,0.049343079,0.277854,0,0.047308417,0.28460012,0){0.0055491609,0.0070287375,0.0073520502};
-ST(0.088948357,0.079796263,0,0.093701939,0.074587016,0,0.094143629,0.083392096,0){0.016740913,0.016790312,0.018131068};
-ST(0.038361486,0.26932975,0,0.045236581,0.26460649,0,0.045177088,0.27188516,0){0.0080129566,0.0102386,0.0084113388};
-ST(0,0.26508755,0,0.0072786063,0.26188216,0,0.0066221519,0.26909631,0){0.0018369147,0.0033349743,0.0027778017};
-ST(0,0.21006685,0,0,0.20326101,0,0.0065980308,0.2085645,0){0.0018346987,0.0019700422,0.0031103455};
-ST(0.040100466,0.20866457,0,0.041289591,0.20119015,0,0.046741278,0.20737056,0){0.0093763376,0.010204072,0.010788495};
-ST(0.09386735,0.014826529,0,0.089774267,0.010202707,0,0.094091634,0.0059624358,0){0.010660697,0.010102056,0.01045357};
-ST(0,0.10963845,0,0.0069230724,0.10599149,0,0.0061293251,0.11285968,0){0.0019917765,0.0033428238,0.0032244208};
-ST(0.043024015,0.24149425,0,0.035671381,0.23699067,0,0.042308788,0.23483757,0){0.0087794072,0.0065861258,0.0069239308};
-ST(0.04109467,0.060492019,0,0.03865178,0.054286144,0,0.044326443,0.052673868,0){0.0072817007,0.006550054,0.007208181};
-ST(0.039602446,0.042142971,0,0.045920614,0.037827936,0,0.047793904,0.042940806,0){0.0060094056,0.0065475869,0.0070477847};
-ST(0,0.16276123,0,0.0069940321,0.15907843,0,0.0061825315,0.16615776,0){0.0010316,0.001901441,0.0018871004};
-ST(0.083077166,0.089272145,0,0.080374191,0.097624086,0,0.077858227,0.092196475,0){0.016912942,0.01726286,0.016272399};
-ST(0.05,0.3,0,0.042857143,0.3,0,0.049141897,0.29382693,0){0.011885664,0.010468963,0.010673071};
-ST(0.028120489,0.2818096,0,0.036211214,0.28505229,0,0.030804552,0.28682747,0){0.0042507092,0.0060722216,0.0058319124};
-ST(0.063732547,0.036638377,0,0.056929375,0.031821563,0,0.06300662,0.02963429,0){0.0085558446,0.0075042202,0.0080686047};
-ST(0.082328401,0.21016288,0,0.075044373,0.21065322,0,0.075136028,0.20507776,0){0.016915435,0.015462793,0.016555444};
-ST(0.045608803,0.090081762,0,0.049011257,0.083339476,0,0.052671398,0.090038465,0){0.010159785,0.010269497,0.011446826};
-ST(0.077999455,0.23524011,0,0.078003603,0.24394837,0,0.074372203,0.23959597,0){0.01189957,0.015457416,0.013237082};
-ST(0.021822163,0.25301211,0,0.016666559,0.24707082,0,0.02496255,0.24770535,0){0.0063174014,0.0049690135,0.0065793383};
-ST(0.04397778,0.15172209,0,0.039444525,0.14644848,0,0.047950771,0.14786323,0){0.0073960532,0.0076040741,0.0086642634};
-ST(0.058736373,0,0,0.062145045,0.0076586897,0,0.055476524,0.0050891727,0){0.0068736373,0.0072652846,0.0065680022};
-ST(0.04109467,0.060492019,0,0.044326443,0.052673868,0,0.046279621,0.058429349,0){0.0072817007,0.007208181,0.0078696625};
-ST(0.1,0.27857143,0,0.1,0.28571429,0,0.093083753,0.28331412,0){0.01232876,0.014962161,0.01260174};
-ST(0.015319473,0.034144954,0,0.016765854,0.040249778,0,0.01153062,0.041448292,0){0.0028850261,0.0031936572,0.00259379};
-ST(0.0078882173,0.22230145,0,0.010057812,0.23068741,0,0.0050703794,0.22750411,0){0.0024001814,0.0022253758,0.0016282327};
-ST(0.017270897,0.15739381,0,0.010988582,0.15262774,0,0.017116349,0.14998193,0){0.0031824437,0.0028106617,0.0038725238};
-ST(0.017290659,0.10415759,0,0.010825671,0.099590532,0,0.016970501,0.097139845,0){0.005360028,0.004016107,0.0051389794};
-ST(0.021114997,0.031742287,0,0.026665403,0.037799711,0,0.021259451,0.03718155,0){0.0034867915,0.0042921244,0.0036421529};
-ST(0.049011257,0.083339476,0,0.056523131,0.084118476,0,0.052671398,0.090038465,0){0.010269497,0.011646159,0.011446826};
-ST(0.1,0.19285714,0,0.091581209,0.19542497,0,0.094374666,0.18946442,0){0.021660378,0.020231089,0.02003149};
-ST(0.036329714,0.11757216,0,0.031699447,0.11078243,0,0.038759258,0.11167503,0){0.0092480093,0.0083198518,0.0097384206};
-ST(0.016971899,0.25850458,0,0.021822163,0.25301211,0,0.025430513,0.25852231,0){0.0053575659,0.0063174014,0.0070372425};
-ST(0.043558202,0.25643586,0,0.045236581,0.26460649,0,0.03870412,0.26169066,0){0.0107076,0.0102386,0.0094231843};
-ST(0.025567113,0.28905289,0,0.032913158,0.29243767,0,0.025005027,0.29510367,0){0.0055567337,0.0074810533,0.0064954414};
-ST(0.060981097,0.10625719,0,0.068497018,0.1095775,0,0.060886949,0.1120001,0){0.01403139,0.015633235,0.014162182};
-ST(0.1,0.085714286,0,0.091920476,0.089306354,0,0.094143629,0.083392096,0){0.019489559,0.018524169,0.018131068};
-ST(0,0.20326101,0,0,0.19646877,0,0.0061278576,0.20241521,0){0.0019700422,0.001996753,0.003192052};
-ST(0.080532481,0.2036733,0,0.082328401,0.21016288,0,0.075136028,0.20507776,0){0.017789172,0.016915435,0.016555444};
-ST(0.069403265,0.030528728,0,0.063732547,0.036638377,0,0.06300662,0.02963429,0){0.0088265259,0.0085558446,0.0080686047};
-ST(0,0.14938457,0,0,0.14272272,0,0.0064726641,0.14769389,0){0.0014478061,0.0016420471,0.0024715601};
-ST(0,0.096512506,0,0,0.089973101,0,0.0062739213,0.09500888,0){0.0018991232,0.0018256894,0.0030651339};
-ST(0.038968939,0.093670726,0,0.036893214,0.087210211,0,0.042179961,0.085826476,0){0.0091516332,0.0083992423,0.0092527823};
-ST(0.071849852,0.25958891,0,0.079783584,0.26191648,0,0.075512736,0.26666994,0){0.016149584,0.017322357,0.015202563};
-ST(0.063357463,0.065442129,0,0.06842362,0.059320823,0,0.071294356,0.064744402,0){0.010941973,0.011056454,0.012048426};
-ST(0.083309384,0.040170382,0,0.080964027,0.048552182,0,0.078113811,0.043235614,0){0.011126505,0.011635394,0.0107714};
-ST(0.035472349,0.0074078563,0,0.038743683,0,0,0.042065894,0.0047615469,0){0.004577179,0.0048743683,0.0052207549};
-ST(0.086685255,0.25357155,0,0.089822961,0.25859451,0,0.085458809,0.2622366,0){0.019244658,0.019819525,0.018345062};
-ST(0.046118705,0.14263648,0,0.051719407,0.14014665,0,0.047950771,0.14786323,0){0.0092278734,0.010532948,0.0086642634};
-ST(0.0066221519,0.26909631,0,0.01442164,0.26537398,0,0.013858257,0.27098248,0){0.0027778017,0.0044630286,0.0037443109};
-ST(0.039444525,0.14644848,0,0.037124591,0.13989263,0,0.042474964,0.13846746,0){0.0076040741,0.0080703973,0.009157817};
-ST(0.017660768,0.12252143,0,0.023840623,0.12537371,0,0.016308386,0.12868827,0){0.0054589438,0.0066011582,0.0050367798};
-ST(0.075019178,0.10458001,0,0.067492619,0.10117066,0,0.073457999,0.097670639,0){0.016721658,0.015048339,0.015945532};
-ST(0.018141403,0.008046786,0,0.010401748,0.010393316,0,0.013164233,0.0055676569,0){0.0028360063,0.0020666199,0.0023250401};
-ST(0.023840623,0.12537371,0,0.021768928,0.13185708,0,0.016308386,0.12868827,0){0.0066011582,0.0059408379,0.0050367798};
-ST(0.031975417,0.25926175,0,0.029557505,0.25181754,0,0.03695895,0.25453753,0){0.0083004448,0.0077937721,0.0093769691};
-ST(0.061245673,0.24452488,0,0.054926517,0.23907834,0,0.06251245,0.23827584,0){0.012669907,0.01002412,0.01091156};
-ST(0.023665586,0.1785779,0,0.017833823,0.17577258,0,0.020376181,0.170702,0){0.0054977511,0.0042763177,0.0040946903};
-ST(0.087647844,0.13269091,0,0.086199215,0.13907252,0,0.082184623,0.13131431,0){0.018129897,0.016657803,0.017315387};
-ST(0.092021896,0.039287055,0,0.1,0.042857143,0,0.094358182,0.044786011,0){0.012081021,0.013404909,0.012923485};
-ST(0.075863318,0.15128967,0,0.068410214,0.15556675,0,0.069692704,0.14906563,0){0.011891738,0.009640753,0.01161516};
-ST(0.093000475,0.1047961,0,0.08910917,0.098496512,0,0.09495489,0.096461405,0){0.020272382,0.01901377,0.019926776};
-ST(0,0.019032121,0,0.0059292545,0.014766706,0,0.0042261279,0.022248036,0){0.0010434529,0.0016346023,0.0015070621};
-ST(0.041222898,0.027938513,0,0.048967316,0.030320203,0,0.042275405,0.033499023,0){0.0056013798,0.0065459276,0.0059293669};
-ST(0.077858227,0.092196475,0,0.072016645,0.090906146,0,0.078894228,0.085673269,0){0.016272399,0.015065982,0.015745314};
-ST(0.031699447,0.11078243,0,0.037735929,0.10537966,0,0.038759258,0.11167503,0){0.0083198518,0.0094123836,0.0097384206};
-ST(0.0087536517,0.067121195,0,0.0059238649,0.061251643,0,0.013497928,0.064220863,0){0.0028405718,0.002285324,0.0034658513};
-ST(0.025494351,0.27459236,0,0.018023907,0.27765349,0,0.019479015,0.2705585,0){0.0048210135,0.0033417499,0.0047057288};
-ST(0.063123076,0.1931948,0,0.056165025,0.18879164,0,0.061548848,0.18567875,0){0.014426164,0.012615914,0.013158388};
-ST(0.072016645,0.090906146,0,0.073518975,0.084426062,0,0.078894228,0.085673269,0){0.015065982,0.014655813,0.015745314};
-ST(0.048967316,0.030320203,0,0.045920614,0.037827936,0,0.042275405,0.033499023,0){0.0065459276,0.0065475869,0.0059293669};
-ST(0.018018822,0.050767877,0,0.024953134,0.05500472,0,0.019025664,0.05691302,0){0.0036547138,0.0047366364,0.0040025741};
-ST(0.016706021,0.19335173,0,0.021087268,0.20067351,0,0.015061448,0.19930754,0){0.0052731674,0.0061950348,0.0050085568};
-ST(0.036904468,0.073804537,0,0.043421277,0.070486317,0,0.044925733,0.07572266,0){0.0075426679,0.0083417443,0.0089806243};
-ST(0.067729338,0.18636951,0,0.063123076,0.1931948,0,0.061548848,0.18567875,0){0.014422352,0.014426164,0.013158388};
-ST(0.037423894,0.19247533,0,0.033865226,0.19972054,0,0.031703323,0.19206661,0){0.0093169769,0.008760944,0.0081716788};
-ST(0.032172362,0,0,0.035472349,0.0074078563,0,0.029469652,0.005642048,0){0.0042172362,0.004577179,0.0039620423};
-ST(0.069403265,0.030528728,0,0.066186294,0.024012302,0,0.07400672,0.026910821,0){0.0088265259,0.0081453494,0.0091297985};
-ST(0.039227544,0.22315927,0,0.03902447,0.22900351,0,0.033439845,0.22948364,0){0.0064036567,0.004919465,0.004415165};
-ST(0.066186294,0.024012302,0,0.072873195,0.02116659,0,0.07400672,0.026910821,0){0.0081453494,0.0087326558,0.0091297985};
-ST(0.046741278,0.20737056,0,0.052562678,0.20392294,0,0.054994472,0.20965729,0){0.010788495,0.012272703,0.011998039};
-ST(0.049958331,0.21332249,0,0.046741278,0.20737056,0,0.054994472,0.20965729,0){0.010389004,0.010788495,0.011998039};
-ST(0.0069230724,0.10599149,0,0.012784661,0.11066528,0,0.0061293251,0.11285968,0){0.0033428238,0.0045452747,0.0032244208};
-ST(0.023840623,0.12537371,0,0.017660768,0.12252143,0,0.020593251,0.11774208,0){0.0066011582,0.0054589438,0.0061054898};
-ST(0.028521342,0.23217192,0,0.035671381,0.23699067,0,0.029770914,0.23803179,0){0.004622157,0.0065861258,0.0059362425};
-ST(0.018141403,0.008046786,0,0.025782343,0.010697164,0,0.01972947,0.013018635,0){0.0028360063,0.0036273673,0.0030334072};
-ST(0.1,0.05,0,0.1,0.057142857,0,0.09327093,0.054697331,0){0.014250726,0.015200755,0.013955554};
-ST(0.0066877577,0.054780491,0,0.012733045,0.058713138,0,0.0059238649,0.061251643,0){0.002256812,0.0031871065,0.002285324};
-ST(0.017895429,0.29268335,0,0.025567113,0.28905289,0,0.025005027,0.29510367,0){0.0048907512,0.0055567337,0.0064954414};
-ST(0.025782343,0.010697164,0,0.018141403,0.008046786,0,0.023343368,0.0053891764,0){0.0036273673,0.0028360063,0.0033459576};
-ST(0.021822163,0.25301211,0,0.029557505,0.25181754,0,0.025430513,0.25852231,0){0.0063174014,0.0077937721,0.0070372425};
-ST(0.0069940321,0.15907843,0,0.012839023,0.16391618,0,0.0061825315,0.16615776,0){0.001901441,0.0025080878,0.0018871004};
-ST(0.034829369,0.02335383,0,0.041222898,0.027938513,0,0.036258451,0.030655369,0){0.004776128,0.0056013798,0.005146398};
-ST(0.029557505,0.25181754,0,0.031975417,0.25926175,0,0.025430513,0.25852231,0){0.0077937721,0.0083004448,0.0070372425};
-ST(0.1,0.15714286,0,0.1,0.16428571,0,0.09314271,0.16086327,0){0.012897594,0.012266282,0.010567692};
-ST(0.081687843,0.29203932,0,0.078571429,0.3,0,0.075014719,0.29506761,0){0.015803058,0.017545614,0.015757805};
-ST(0.073628203,0.28912297,0,0.081687843,0.29203932,0,0.075014719,0.29506761,0){0.013138961,0.015803058,0.015757805};
-ST(0.068410214,0.15556675,0,0.063134362,0.14896083,0,0.069692704,0.14906563,0){0.009640753,0.010684357,0.01161516};
-ST(0.06842362,0.059320823,0,0.063357463,0.065442129,0,0.060565964,0.060729258,0){0.011056454,0.010941973,0.010078647};
-ST(0.048914928,0.23375044,0,0.045884216,0.22738799,0,0.053928421,0.22993019,0){0.0074706102,0.0060154955,0.0067705286};
-ST(0.0065980308,0.2085645,0,0,0.20326101,0,0.0061278576,0.20241521,0){0.0031103455,0.0019700422,0.003192052};
-ST(0.03902447,0.22900351,0,0.045884216,0.22738799,0,0.042308788,0.23483757,0){0.004919465,0.0060154955,0.0069239308};
-ST(0.0052564808,0.080270621,0,0.011361659,0.080618598,0,0.0048810442,0.085538046,0){0.00259121,0.0036383706,0.0026331542};
-ST(0.045884216,0.22738799,0,0.048914928,0.23375044,0,0.042308788,0.23483757,0){0.0060154955,0.0074706102,0.0069239308};
-ST(0.070141314,0.27013164,0,0.066334221,0.27760857,0,0.064295402,0.27015162,0){0.012960708,0.0092000449,0.012021911};
-ST(0.021114997,0.031742287,0,0.018230931,0.025124521,0,0.025374297,0.027198867,0){0.0034867915,0.0030367355,0.0038510471};
-ST(0.1,0.26428571,0,0.1,0.27142857,0,0.093179303,0.2678908,0){0.020507244,0.017019935,0.017810421};
-ST(0.049343079,0.277854,0,0.045177088,0.27188516,0,0.053293432,0.27215527,0){0.0070287375,0.0084113388,0.0095317783};
-ST(0.013497928,0.064220863,0,0.017377178,0.070609144,0,0.011925798,0.071682732,0){0.0034658513,0.0042796585,0.0034604908};
-ST(0.064022129,0.087403768,0,0.056523131,0.084118476,0,0.061905453,0.080764658,0){0.013276737,0.011646159,0.012261556};
-ST(0.076354388,0.22899719,0,0.073845419,0.2209308,0,0.079358983,0.22202133,0){0.0086224438,0.011831692,0.012140385};
-ST(0.062145045,0.0076586897,0,0.064553118,0.015646957,0,0.059697637,0.012753556,0){0.0072652846,0.0076743125,0.0071057936};
-ST(0.018952385,0.063139668,0,0.017377178,0.070609144,0,0.013497928,0.064220863,0){0.004228076,0.0042796585,0.0034658513};
-ST(0.023854517,0.20874482,0,0.031988636,0.21096061,0,0.026946825,0.21343101,0){0.0063291573,0.0075960493,0.006387962};
-ST(0.068410214,0.15556675,0,0.061329737,0.16018623,0,0.061430891,0.15444473,0){0.009640753,0.0076429651,0.009109847};
-ST(0.063134362,0.14896083,0,0.068410214,0.15556675,0,0.061430891,0.15444473,0){0.010684357,0.009640753,0.009109847};
-ST(0.059002427,0.022914684,0,0.066186294,0.024012302,0,0.06300662,0.02963429,0){0.0073347399,0.0081453494,0.0080686047};
-ST(0.017146751,0.13667282,0,0.011625116,0.13292217,0,0.016308386,0.12868827,0){0.0048412481,0.0040067754,0.0050367798};
-ST(0.08274919,0.16255857,0,0.088990194,0.16733012,0,0.083408518,0.1704193,0){0.0094335589,0.012031194,0.012492447};
-ST(0.053554762,0.26522616,0,0.045236581,0.26460649,0,0.048124177,0.25975563,0){0.01164797,0.0102386,0.011453901};
-ST(0,0.057500186,0,0.0066877577,0.054780491,0,0.0059238649,0.061251643,0){0.0013864255,0.002256812,0.002285324};
-ST(0.06823576,0.080384264,0,0.064022129,0.087403768,0,0.061905453,0.080764658,0){0.01330007,0.013276737,0.012261556};
-ST(0.1,0.20714286,0,0.1,0.21428571,0,0.093260637,0.21041677,0){0.020968343,0.01867813,0.018844578};
-ST(0.021768928,0.13185708,0,0.017146751,0.13667282,0,0.016308386,0.12868827,0){0.0059408379,0.0048412481,0.0050367798};
-ST(0.07789134,0.13496254,0,0.072358306,0.13696631,0,0.072428856,0.1291202,0){0.015967895,0.014637908,0.015735892};
-ST(0.054926517,0.23907834,0,0.059647761,0.23257945,0,0.06251245,0.23827584,0){0.01002412,0.0083760198,0.01091156};
-ST(0.053583525,0.11616451,0,0.055537747,0.10990822,0,0.060886949,0.1120001,0){0.012709223,0.013059457,0.014162182};
-ST(0.045361276,0,0,0.049555855,0.0062621576,0,0.042065894,0.0047615469,0){0.0055361276,0.005983611,0.0052207549};
-ST(0.041541458,0.17214356,0,0.046260124,0.1690627,0,0.049852622,0.17323607,0){0.0072276425,0.0072155439,0.0086421223};
-ST(0.041222898,0.027938513,0,0.042058405,0.019919863,0,0.046218358,0.02547694,0){0.0056013798,0.005453629,0.0060592722};
-ST(0.091920476,0.089306354,0,0.09495489,0.096461405,0,0.087484565,0.092974465,0){0.018524169,0.019926776,0.018142262};
-ST(0.039602446,0.042142971,0,0.033568202,0.044135264,0,0.032234088,0.038660634,0){0.0060094056,0.0053659814,0.0049768543};
-ST(0.04393967,0.046787303,0,0.039602446,0.042142971,0,0.047793904,0.042940806,0){0.0067946488,0.0060094056,0.0070477847};
-ST(0.037310958,0.036215878,0,0.039602446,0.042142971,0,0.032234088,0.038660634,0){0.0054726568,0.0060094056,0.0049768543};
-ST(0.03865178,0.054286144,0,0.031526637,0.051365987,0,0.038042686,0.048242807,0){0.006550054,0.005445607,0.0061286509};
-ST(0.0090763502,0.020172771,0,0.012634798,0.015675501,0,0.013134683,0.023608073,0){0.0020007534,0.0023302125,0.0024680799};
-ST(0.042058405,0.019919863,0,0.049987625,0.021377356,0,0.046218358,0.02547694,0){0.005453629,0.0063275637,0.0060592722};
-ST(0.082067363,0.10446681,0,0.087157047,0.10934378,0,0.078753785,0.10944217,0){0.01810119,0.019341606,0.0176718};
-ST(0.044093146,0.010189996,0,0.04886699,0.014821261,0,0.040745998,0.014567719,0){0.0054767147,0.0060418568,0.0052038167};
-ST(0.017377178,0.070609144,0,0.018952385,0.063139668,0,0.022758147,0.069506288,0){0.0042796585,0.004228076,0.0050703118};
-ST(0.056523131,0.084118476,0,0.049011257,0.083339476,0,0.054518411,0.078119445,0){0.011646159,0.010269497,0.010765513};
-ST(0.087157047,0.10934378,0,0.082229882,0.11430537,0,0.078753785,0.10944217,0){0.019341606,0.018445934,0.0176718};
-ST(0.0088492442,0.17282653,0,0.014716796,0.17010542,0,0.012144819,0.17790797,0){0.002692894,0.0032674718,0.0035663748};
-ST(0.048967316,0.030320203,0,0.056929375,0.031821563,0,0.051715879,0.035807649,0){0.0065459276,0.0075042202,0.0071174241};
-ST(0.014716796,0.17010542,0,0.017833823,0.17577258,0,0.012144819,0.17790797,0){0.0032674718,0.0042763177,0.0035663748};
-ST(0.018952385,0.063139668,0,0.026277351,0.065288906,0,0.022758147,0.069506288,0){0.004228076,0.0054035144,0.0050703118};
-ST(0.025388465,0.21882491,0,0.030623557,0.22463729,0,0.023684336,0.22562355,0){0.0053446137,0.0049656049,0.0039829742};
-ST(0.1,0.15714286,0,0.09314271,0.16086327,0,0.093845023,0.15358209,0){0.012897594,0.010567692,0.013567056};
-ST(0.040100466,0.20866457,0,0.031988636,0.21096061,0,0.034870605,0.20566508,0){0.0093763376,0.0075960493,0.0086811083};
-ST(0.018023907,0.27765349,0,0.010287914,0.27534428,0,0.013858257,0.27098248,0){0.0033417499,0.0027159036,0.0037443109};
-ST(0.040316423,0.16515352,0,0.037630266,0.15856612,0,0.043875453,0.15799271,0){0.0057431286,0.005390121,0.0061743039};
-ST(0.1,0,0,0.1,0.0071428571,0,0.094091634,0.0059624358,0){0.011,0.011067347,0.01045357};
-ST(0.0072882997,0.28273448,0,0,0.27900442,0,0.004564662,0.27552118,0){0.0020641429,0.0010819588,0.0018975573};
-ST(0.03202369,0.058862937,0,0.036645028,0.065460046,0,0.031481235,0.064160132,0){0.0058997278,0.0069586979,0.0061148995};
-ST(0.056929375,0.031821563,0,0.048967316,0.030320203,0,0.05377987,0.026339649,0){0.0075042202,0.0065459276,0.0069083627};
-ST(0.077986326,0.12755717,0,0.081934846,0.12129159,0,0.085850588,0.12646039,0){0.016964028,0.018213432,0.018594654};
-ST(0.09314271,0.16086327,0,0.087150461,0.15605115,0,0.093845023,0.15358209,0){0.010567692,0.011826762,0.013567056};
-ST(0.031526637,0.051365987,0,0.033568202,0.044135264,0,0.038042686,0.048242807,0){0.005445607,0.0053659814,0.0061286509};
-ST(0.05987551,0.074756595,0,0.066454746,0.074006402,0,0.061905453,0.080764658,0){0.011330154,0.012316324,0.012261556};
-ST(0.093002649,0,0,0.1,0,0,0.094091634,0.0059624358,0){0.010300265,0.011,0.01045357};
-ST(0.042058405,0.019919863,0,0.035314966,0.015501396,0,0.040745998,0.014567719,0){0.005453629,0.0046621453,0.0052038167};
-ST(0.045920614,0.037827936,0,0.048967316,0.030320203,0,0.051715879,0.035807649,0){0.0065475869,0.0065459276,0.0071174241};
-ST(0.081893484,0.0078002118,0,0.074170803,0.010670566,0,0.075713015,0.0049037107,0){0.0092564415,0.008532082,0.0085960345};
-ST(0.066454746,0.074006402,0,0.06823576,0.080384264,0,0.061905453,0.080764658,0){0.012316324,0.01330007,0.012261556};
-ST(0.061718685,0.09526012,0,0.067492619,0.10117066,0,0.060554433,0.1007053,0){0.013527119,0.015048339,0.013673871};
-ST(0.093000475,0.1047961,0,0.1,0.10714286,0,0.093650276,0.11165907,0){0.020272382,0.021795245,0.020701173};
-ST(0.067492619,0.10117066,0,0.060981097,0.10625719,0,0.060554433,0.1007053,0){0.015048339,0.01403139,0.013673871};
-ST(0.069592365,0.2044761,0,0.061970306,0.20134793,0,0.06636951,0.19781188,0){0.015550958,0.01431047,0.015272818};
-ST(0.063664382,0.17131349,0,0.068059877,0.16458271,0,0.070593417,0.17068076,0){0.010100304,0.0087794571,0.010855202};
-ST(0.033865226,0.19972054,0,0.041289591,0.20119015,0,0.034870605,0.20566508,0){0.008760944,0.010204072,0.0086811083};
-ST(0.021428571,0.3,0,0.017895429,0.29268335,0,0.025005027,0.29510367,0){0.0062259487,0.0048907512,0.0064954414};
-ST(0.079152804,0,0,0.081893484,0.0078002118,0,0.075713015,0.0049037107,0){0.0089152804,0.0092564415,0.0085960345};
-ST(0.030060203,0.17758385,0,0.035632482,0.1808812,0,0.027586782,0.18282418,0){0.0064082769,0.0077875372,0.0066297552};
-ST(0.071872871,0.196559,0,0.069592365,0.2044761,0,0.06636951,0.19781188,0){0.016350779,0.015550958,0.015272818};
-ST(0,0.27203526,0,0,0.26508755,0,0.0066221519,0.26909631,0){0.001517686,0.0018369147,0.0027778017};
-ST(0.023854517,0.20874482,0,0.018022534,0.21455918,0,0.017536395,0.20823956,0){0.0063291573,0.0047312007,0.0051815338};
-ST(0.018952385,0.063139668,0,0.012733045,0.058713138,0,0.019025664,0.05691302,0){0.004228076,0.0031871065,0.0040025741};
-ST(0.078294484,0.27242298,0,0.070141314,0.27013164,0,0.075512736,0.26666994,0){0.01320473,0.012960708,0.015202563};
-ST(0.035632482,0.1808812,0,0.032166514,0.1863502,0,0.027586782,0.18282418,0){0.0077875372,0.0078219415,0.0066297552};
-ST(0.041289591,0.20119015,0,0.040100466,0.20866457,0,0.034870605,0.20566508,0){0.010204072,0.0093763376,0.0086811083};
-ST(0.012839023,0.16391618,0,0.020122959,0.1650354,0,0.014716796,0.17010542,0){0.0025080878,0.0034385995,0.0032674718};
-ST(0.0076308335,0.23791294,0,0.010057812,0.23068741,0,0.014554238,0.23387563,0){0.002622712,0.0022253758,0.003134429};
-ST(0.048967316,0.030320203,0,0.041222898,0.027938513,0,0.046218358,0.02547694,0){0.0065459276,0.0056013798,0.0060592722};
-ST(0.1,0.23571429,0,0.1,0.24285714,0,0.093408348,0.23929044,0){0.015025256,0.018857211,0.016078078};
-ST(0.093002649,0,0,0.094091634,0.0059624358,0,0.086908462,0.0054765496,0){0.010300265,0.01045357,0.0097257245};
-ST(0.0066877577,0.054780491,0,0,0.051053592,0,0.0047428148,0.048313235,0){0.002256812,0.001307702,0.0018818499};
-ST(0.01511463,0.2393591,0,0.0076308335,0.23791294,0,0.014554238,0.23387563,0){0.003913276,0.002622712,0.003134429};
-ST(0,0.019032121,0,0,0.012676601,0,0.0059292545,0.014766706,0){0.0010434529,0.0010192824,0.0016346023};
-ST(0.014905173,0.28510008,0,0.018023907,0.27765349,0,0.02153935,0.28356134,0){0.0033226234,0.0033417499,0.0039435902};
-ST(0.012784661,0.11066528,0,0.020103716,0.1121562,0,0.014854991,0.11674459,0){0.0045452747,0.006015088,0.0049657919};
-ST(0.045361276,0,0,0.052025416,0,0,0.049555855,0.0062621576,0){0.0055361276,0.0062025416,0.005983611};
-ST(0.017915306,0.017912514,0,0.018230931,0.025124521,0,0.013134683,0.023608073,0){0.0028989864,0.0030367355,0.0024680799};
-ST(0.049952063,0.1787418,0,0.055269447,0.17422653,0,0.054321705,0.18240921,0){0.0098216119,0.0096616545,0.011269583};
-ST(0.045920614,0.037827936,0,0.051715879,0.035807649,0,0.047793904,0.042940806,0){0.0065475869,0.0071174241,0.0070477847};
-ST(0.055269447,0.17422653,0,0.059413957,0.17983771,0,0.054321705,0.18240921,0){0.0096616545,0.011618873,0.011269583};
-ST(0.053554762,0.26522616,0,0.057902634,0.25988484,0,0.058794554,0.26817279,0){0.01164797,0.013366799,0.01180084};
-ST(0.010287914,0.27534428,0,0.0072882997,0.28273448,0,0.004564662,0.27552118,0){0.0027159036,0.0020641429,0.0018975573};
-ST(0.063593879,0.28436636,0,0.060722814,0.29233598,0,0.058426811,0.28702912,0){0.0093505769,0.012292123,0.0098865151};
-ST(0.056523131,0.084118476,0,0.064022129,0.087403768,0,0.058666695,0.090099436,0){0.011646159,0.013276737,0.012546942};
-ST(0.067492619,0.10117066,0,0.061718685,0.09526012,0,0.067742128,0.095151401,0){0.015048339,0.013527119,0.014654254};
-ST(0.0059292545,0.014766706,0,0.0090763502,0.020172771,0,0.0042261279,0.022248036,0){0.0016346023,0.0020007534,0.0015070621};
-ST(0.043558202,0.25643586,0,0.041079184,0.24904413,0,0.047977922,0.25174593,0){0.0107076,0.0097899948,0.011417018};
-ST(0.035995823,0.12783992,0,0.042328752,0.13293246,0,0.03712087,0.13446417,0){0.0088531158,0.009694753,0.0086041419};
-ST(0.043024015,0.24149425,0,0.042308788,0.23483757,0,0.048884684,0.23984002,0){0.0087794072,0.0069239308,0.0093142721};
-ST(0.042308788,0.23483757,0,0.048914928,0.23375044,0,0.048884684,0.23984002,0){0.0069239308,0.0074706102,0.0093142721};
-ST(0.060722814,0.29233598,0,0.057142857,0.3,0,0.05511543,0.29440677,0){0.012292123,0.013300462,0.011904677};
-ST(0.035581831,0.21858705,0,0.040972633,0.21505187,0,0.039227544,0.22315927,0){0.0069414214,0.0085096617,0.0064036567};
-ST(0.040972633,0.21505187,0,0.044431549,0.22049192,0,0.039227544,0.22315927,0){0.0085096617,0.0078092733,0.0064036567};
-ST(0.077664091,0.1983373,0,0.071872871,0.196559,0,0.078432808,0.19155374,0){0.017532477,0.016350779,0.017267031};
-ST(0.055287343,0.062192056,0,0.055460475,0.069248829,0,0.05011462,0.068273913,0){0.0094513626,0.010108481,0.0092014028};
-ST(0.077986326,0.12755717,0,0.07789134,0.13496254,0,0.072428856,0.1291202,0){0.016964028,0.015967895,0.015735892};
-ST(0.067714741,0.05140667,0,0.062787056,0.044920338,0,0.068656382,0.045051564,0){0.010194849,0.0090240074,0.0097624898};
-ST(0.1,0.22142857,0,0.1,0.22857143,0,0.094415701,0.22755789,0){0.015316378,0.010969952,0.011061458};
-ST(0.1,0.10714286,0,0.1,0.11428571,0,0.093650276,0.11165907,0){0.021795245,0.021999929,0.020701173};
-ST(0.1,0.3,0,0.092857143,0.3,0,0.094208762,0.29420256,0){0.021789129,0.020373327,0.018972662};
-ST(0.045236581,0.26460649,0,0.043558202,0.25643586,0,0.048124177,0.25975563,0){0.0102386,0.0107076,0.011453901};
-ST(0.061329737,0.16018623,0,0.068059877,0.16458271,0,0.061082675,0.16604661,0){0.0076429651,0.0087794571,0.0082458925};
-ST(0.1,0.29285714,0,0.1,0.3,0,0.094208762,0.29420256,0){0.019388115,0.021789129,0.018972662};
-ST(0.064022129,0.087403768,0,0.061718685,0.09526012,0,0.058666695,0.090099436,0){0.013276737,0.013527119,0.012546942};
-ST(0.068059877,0.16458271,0,0.063664382,0.17131349,0,0.061082675,0.16604661,0){0.0087794571,0.010100304,0.0082458925};
-ST(0.087647844,0.13269091,0,0.092325542,0.12610752,0,0.094396223,0.13234736,0){0.018129897,0.019887567,0.019441171};
-ST(0.057902634,0.25988484,0,0.062978572,0.26385631,0,0.058794554,0.26817279,0){0.013366799,0.013699793,0.01180084};
-ST(0.041079184,0.24904413,0,0.043558202,0.25643586,0,0.03695895,0.25453753,0){0.0097899948,0.0107076,0.0093769691};
-ST(0,0.129442,0,0.0071724145,0.1266659,0,0.0053512079,0.13276494,0){0.0019048233,0.0033276957,0.0028483266};
-ST(0.05534208,0.16725107,0,0.055269447,0.17422653,0,0.049852622,0.17323607,0){0.007927676,0.0096616545,0.0086421223};
-ST(0.089774267,0.010202707,0,0.081893484,0.0078002118,0,0.086908462,0.0054765496,0){0.010102056,0.0092564415,0.0097257245};
-ST(0,0.1162249,0,0,0.10963845,0,0.0061293251,0.11285968,0){0.0019987419,0.0019917765,0.0032244208};
-ST(0.049961259,0.10646397,0,0.043696053,0.10764168,0,0.04848764,0.10113949,0){0.011859712,0.010652083,0.011356258};
-ST(0.092325542,0.12610752,0,0.1,0.12857143,0,0.094396223,0.13234736,0){0.019887567,0.021075659,0.019441171};
-ST(0.067305062,0.2440339,0,0.068887619,0.23816425,0,0.074372203,0.23959597,0){0.013605878,0.011832084,0.013237082};
-ST(0.046741278,0.20737056,0,0.041289591,0.20119015,0,0.047317985,0.20170575,0){0.010788495,0.010204072,0.011381113};
-ST(0.0071724145,0.1266659,0,0.011625116,0.13292217,0,0.0053512079,0.13276494,0){0.0033276957,0.0040067754,0.0028483266};
-ST(0.071428571,0.3,0,0.064285714,0.3,0,0.067897561,0.29362967,0){0.016130092,0.01471425,0.013998657};
-ST(0.054926517,0.23907834,0,0.051467941,0.24632844,0,0.048884684,0.23984002,0){0.01002412,0.011312523,0.0093142721};
-ST(0.086053667,0,0,0.093002649,0,0,0.086908462,0.0054765496,0){0.0096053667,0.010300265,0.0097257245};
-ST(0.078794748,0.031832626,0,0.073594736,0.034812751,0,0.07400672,0.026910821,0){0.0099565426,0.0095709225,0.0091297985};
-ST(0,0.18294039,0,0,0.17619703,0,0.0062141227,0.17913624,0){0.0017672234,0.0015510887,0.0026772087};
-ST(0.079846013,0.21642209,0,0.075044373,0.21065322,0,0.082328401,0.21016288,0){0.014513645,0.015462793,0.016915435};
-ST(0.1,0.071428571,0,0.1,0.078571429,0,0.093701939,0.074587016,0){0.017321771,0.018423801,0.016790312};
-ST(0,0.076937883,0,0.0071026462,0.074440872,0,0.0052564808,0.080270621,0){0.0016520865,0.0027655645,0.00259121};
-ST(0.010217899,0.048491667,0,0.015246202,0.045764486,0,0.013073967,0.053209069,0){0.0025847442,0.0031524656,0.0030763285};
-ST(0.077986326,0.12755717,0,0.071875088,0.12337373,0,0.076396225,0.11987471,0){0.016964028,0.016108744,0.017177524};
-ST(0,0.16946933,0,0,0.16276123,0,0.0061825315,0.16615776,0){0.0012995201,0.0010316,0.0018871004};
-ST(0.061970306,0.20134793,0,0.063123076,0.1931948,0,0.06636951,0.19781188,0){0.01431047,0.014426164,0.015272818};
-ST(0.015246202,0.045764486,0,0.018018822,0.050767877,0,0.013073967,0.053209069,0){0.0031524656,0.0036547138,0.0030763285};
-ST(0.061970306,0.20134793,0,0.069592365,0.2044761,0,0.064084929,0.20704546,0){0.01431047,0.015550958,0.014136837};
-ST(0.087150461,0.15605115,0,0.08274919,0.16255857,0,0.080100366,0.15677346,0){0.011826762,0.0094335589,0.010731672};
-ST(0.049555855,0.0062621576,0,0.044093146,0.010189996,0,0.042065894,0.0047615469,0){0.005983611,0.0054767147,0.0052207549};
-ST(0.075237497,0.11427639,0,0.082229882,0.11430537,0,0.076396225,0.11987471,0){0.017047438,0.018445934,0.017177524};
-ST(0.011361659,0.080618598,0,0.01667016,0.076996579,0,0.016263823,0.084450562,0){0.0036383706,0.0044083295,0.0046096007};
-ST(0.017116349,0.14998193,0,0.017650615,0.14332879,0,0.023011439,0.14474978,0){0.0038725238,0.0044959748,0.0052386146};
-ST(0.081934846,0.12129159,0,0.077986326,0.12755717,0,0.076396225,0.11987471,0){0.018213432,0.016964028,0.017177524};
-ST(0.071872871,0.196559,0,0.073017129,0.19015646,0,0.078432808,0.19155374,0){0.016350779,0.016031824,0.017267031};
-ST(0.082229882,0.11430537,0,0.081934846,0.12129159,0,0.076396225,0.11987471,0){0.018445934,0.018213432,0.017177524};
-ST(0.09327093,0.054697331,0,0.1,0.057142857,0,0.093812493,0.061490211,0){0.013955554,0.015200755,0.014931531};
-ST(0,0.063964486,0,0,0.057500186,0,0.0059238649,0.061251643,0){0.0014714865,0.0013864255,0.002285324};
-ST(0.075044373,0.21065322,0,0.069592365,0.2044761,0,0.075136028,0.20507776,0){0.015462793,0.015550958,0.016555444};
-ST(0.023785868,0.1502414,0,0.017116349,0.14998193,0,0.023011439,0.14474978,0){0.0047927965,0.0038725238,0.0052386146};
-ST(0.092325542,0.12610752,0,0.087647844,0.13269091,0,0.085850588,0.12646039,0){0.019887567,0.018129897,0.018594654};
-ST(0.01667016,0.076996579,0,0.021553482,0.081174183,0,0.016263823,0.084450562,0){0.0044083295,0.0053983383,0.0046096007};
-ST(0.054518411,0.078119445,0,0.05987551,0.074756595,0,0.061905453,0.080764658,0){0.010765513,0.011330154,0.012261556};
-ST(0.056523131,0.084118476,0,0.054518411,0.078119445,0,0.061905453,0.080764658,0){0.011646159,0.010765513,0.012261556};
-ST(0.1,0.057142857,0,0.1,0.064285714,0,0.093812493,0.061490211,0){0.015200755,0.016234238,0.014931531};
-ST(0.03870412,0.26169066,0,0.031975417,0.25926175,0,0.03695895,0.25453753,0){0.0094231843,0.0083004448,0.0093769691};
-ST(0.043558202,0.25643586,0,0.03870412,0.26169066,0,0.03695895,0.25453753,0){0.0107076,0.0094231843,0.0093769691};
-ST(0.042070498,0.080362737,0,0.049011257,0.083339476,0,0.042179961,0.085826476,0){0.0088504368,0.010269497,0.0092527823};
-ST(0.061548848,0.18567875,0,0.056165025,0.18879164,0,0.054321705,0.18240921,0){0.013158388,0.012615914,0.011269583};
-ST(0.030986562,0.10190392,0,0.032223949,0.094413692,0,0.036577437,0.099338278,0){0.0079831878,0.0079256222,0.0089716861};
-ST(0.0071026462,0.074440872,0,0.011361659,0.080618598,0,0.0052564808,0.080270621,0){0.0027655645,0.0036383706,0.00259121};
-ST(0.092733018,0.13870795,0,0.087647844,0.13269091,0,0.094396223,0.13234736,0){0.017873716,0.018129897,0.019441171};
-ST(0.09495489,0.096461405,0,0.08910917,0.098496512,0,0.087484565,0.092974465,0){0.019926776,0.01901377,0.018142262};
-ST(0.049993928,0.12587718,0,0.055297829,0.12231774,0,0.055088213,0.13004616,0){0.011673871,0.012895552,0.012344969};
-ST(0.1,0.028571429,0,0.1,0.035714286,0,0.093788043,0.032457843,0){0.012075829,0.012677109,0.011687416};
-ST(0.03097928,0.15477188,0,0.032539635,0.14727541,0,0.036825174,0.15225095,0){0.0051663091,0.0064374803,0.0063271993};
-ST(0.049011257,0.083339476,0,0.045608803,0.090081762,0,0.042179961,0.085826476,0){0.010269497,0.010159785,0.0092527823};
-ST(0.045884216,0.22738799,0,0.03902447,0.22900351,0,0.039227544,0.22315927,0){0.0060154955,0.004919465,0.0064036567};
-ST(0.044431549,0.22049192,0,0.045884216,0.22738799,0,0.039227544,0.22315927,0){0.0078092733,0.0060154955,0.0064036567};
-ST(0.0072786063,0.26188216,0,0,0.25815412,0,0.0053741268,0.25663281,0){0.0033349743,0.0019897884,0.0030729489};
-ST(0.028120489,0.2818096,0,0.025567113,0.28905289,0,0.02153935,0.28356134,0){0.0042507092,0.0055567337,0.0039435902};
-ST(0.085467713,0.26792084,0,0.079783584,0.26191648,0,0.085458809,0.2622366,0){0.016469437,0.017322357,0.018345062};
-ST(0,0.22372386,0,0.0078882173,0.22230145,0,0.0050703794,0.22750411,0){0.0012703225,0.0024001814,0.0016282327};
-ST(0.025374297,0.027198867,0,0.018230931,0.025124521,0,0.021948797,0.021350207,0){0.0038510471,0.0030367355,0.0033695518};
-ST(0.056165025,0.18879164,0,0.055630617,0.19665887,0,0.050927036,0.19167746,0){0.012615914,0.013109344,0.011906838};
-ST(0.017833823,0.17577258,0,0.023665586,0.1785779,0,0.016690266,0.18191056,0){0.0042763177,0.0054977511,0.0046373261};
-ST(0.032166514,0.1863502,0,0.037423894,0.19247533,0,0.031703323,0.19206661,0){0.0078219415,0.0093169769,0.0081716788};
-ST(0.055853935,0.21726741,0,0.049958331,0.21332249,0,0.054994472,0.20965729,0){0.010404133,0.010389004,0.011998039};
-ST(0.023665586,0.1785779,0,0.022183918,0.18487742,0,0.016690266,0.18191056,0){0.0054977511,0.0058547995,0.0046373261};
-ST(0.027679574,0.20292337,0,0.033865226,0.19972054,0,0.034870605,0.20566508,0){0.00743754,0.008760944,0.0086811083};
-ST(0.060721208,0.21210696,0,0.055853935,0.21726741,0,0.054994472,0.20965729,0){0.012543826,0.010404133,0.011998039};
-ST(0.037423894,0.19247533,0,0.042689804,0.18635753,0,0.042998409,0.19194838,0){0.0093169769,0.0097748212,0.010376684};
-ST(0.1,0.15,0,0.1,0.15714286,0,0.093845023,0.15358209,0){0.015699503,0.012897594,0.013567056};
-ST(0.071849852,0.25958891,0,0.075512736,0.26666994,0,0.068748354,0.26449609,0){0.016149584,0.015202563,0.014627562};
-ST(0.019479015,0.2705585,0,0.018023907,0.27765349,0,0.013858257,0.27098248,0){0.0047057288,0.0033417499,0.0037443109};
-ST(0.049672348,0.13321934,0,0.056396465,0.13618531,0,0.051719407,0.14014665,0){0.011026506,0.01190613,0.010532948};
-ST(0.010217899,0.048491667,0,0.0066877577,0.054780491,0,0.0047428148,0.048313235,0){0.0025847442,0.002256812,0.0018818499};
-ST(0.087647844,0.13269091,0,0.092733018,0.13870795,0,0.086199215,0.13907252,0){0.018129897,0.017873716,0.016657803};
-ST(0.1,0.26428571,0,0.093179303,0.2678908,0,0.095319273,0.26073379,0){0.020507244,0.017810421,0.020580735};
-ST(0.0089155203,0.11918733,0,0.014854991,0.11674459,0,0.012134612,0.12388006,0){0.0037661726,0.0049657919,0.0043462782};
-ST(0.017915306,0.017912514,0,0.012634798,0.015675501,0,0.01972947,0.013018635,0){0.0028989864,0.0023302125,0.0030334072};
-ST(0.014854991,0.11674459,0,0.017660768,0.12252143,0,0.012134612,0.12388006,0){0.0049657919,0.0054589438,0.0043462782};
-ST(0.065494415,0,0,0.072299805,0,0,0.068927504,0.0060918646,0){0.0075494415,0.0082299805,0.0079278993};
-ST(0.088990194,0.16733012,0,0.09314271,0.16086327,0,0.095064283,0.16787532,0){0.012031194,0.010567692,0.012983793};
-ST(0.1,0.13571429,0,0.092733018,0.13870795,0,0.094396223,0.13234736,0){0.019826901,0.017873716,0.019441171};
-ST(0.087181126,0.21483096,0,0.093260637,0.21041677,0,0.09397747,0.21696725,0){0.016308886,0.018844578,0.016558656};
-ST(0.037630266,0.15856612,0,0.03097928,0.15477188,0,0.036825174,0.15225095,0){0.005390121,0.0051663091,0.0063271993};
-ST(0.040316423,0.16515352,0,0.043875453,0.15799271,0,0.045860229,0.163357,0){0.0057431286,0.0061743039,0.0059728166};
-ST(0.087157047,0.10934378,0,0.093000475,0.1047961,0,0.093650276,0.11165907,0){0.019341606,0.020272382,0.020701173};
-ST(0.09314271,0.16086327,0,0.1,0.16428571,0,0.095064283,0.16787532,0){0.010567692,0.012266282,0.012983793};
-ST(0.035714286,0.3,0,0.032913158,0.29243767,0,0.038812872,0.29456049,0){0.0090547386,0.0074810533,0.0089597215};
-ST(0.083309384,0.040170382,0,0.087198716,0.035123314,0,0.088013761,0.043162337,0){0.011126505,0.01115353,0.011974352};
-ST(0.03865178,0.054286144,0,0.038042686,0.048242807,0,0.044326443,0.052673868,0){0.006550054,0.0061286509,0.007208181};
-ST(0.087198716,0.035123314,0,0.092021896,0.039287055,0,0.088013761,0.043162337,0){0.01115353,0.012081021,0.011974352};
-ST(0.038042686,0.048242807,0,0.04393967,0.046787303,0,0.044326443,0.052673868,0){0.0061286509,0.0067946488,0.007208181};
-ST(0.1,0.21428571,0,0.1,0.22142857,0,0.09397747,0.21696725,0){0.01867813,0.015316378,0.016558656};
-ST(0.055297829,0.12231774,0,0.06020365,0.12640845,0,0.055088213,0.13004616,0){0.012895552,0.013623005,0.012344969};
-ST(0.012733045,0.058713138,0,0.018952385,0.063139668,0,0.013497928,0.064220863,0){0.0031871065,0.004228076,0.0034658513};
-ST(0.0087536517,0.067121195,0,0.013497928,0.064220863,0,0.011925798,0.071682732,0){0.0028405718,0.0034658513,0.0034604908};
-ST(0.066334221,0.27760857,0,0.059957664,0.27407069,0,0.064295402,0.27015162,0){0.0092000449,0.0097471839,0.012021911};
-ST(0.048914928,0.23375044,0,0.054926517,0.23907834,0,0.048884684,0.23984002,0){0.0074706102,0.01002412,0.0093142721};
-ST(0.1,0.078571429,0,0.1,0.085714286,0,0.094143629,0.083392096,0){0.018423801,0.019489559,0.018131068};
-ST(0.1,0.021428571,0,0.1,0.028571429,0,0.094084599,0.025998463,0){0.011605817,0.012075829,0.011251769};
-ST(0.087298598,0.058683388,0,0.09327093,0.054697331,0,0.093812493,0.061490211,0){0.013637256,0.013955554,0.014931531};
-ST(0.093260637,0.21041677,0,0.1,0.21428571,0,0.09397747,0.21696725,0){0.018844578,0.01867813,0.016558656};
-ST(0.0066877577,0.054780491,0,0.010217899,0.048491667,0,0.013073967,0.053209069,0){0.002256812,0.0025847442,0.0030763285};
-ST(0.037735929,0.10537966,0,0.030986562,0.10190392,0,0.036577437,0.099338278,0){0.0094123836,0.0079831878,0.0089716861};
-ST(0.094303462,0.18195896,0,0.1,0.18571429,0,0.094374666,0.18946442,0){0.018137636,0.020239442,0.02003149};
-ST(0.08274919,0.16255857,0,0.07511088,0.16072173,0,0.080100366,0.15677346,0){0.0094335589,0.0087749301,0.010731672};
-ST(0.073594736,0.034812751,0,0.069403265,0.030528728,0,0.07400672,0.026910821,0){0.0095709225,0.0088265259,0.0091297985};
-ST(0.1,0.042857143,0,0.1,0.05,0,0.094358182,0.044786011,0){0.013404909,0.014250726,0.012923485};
-ST(0.063593879,0.28436636,0,0.066334221,0.27760857,0,0.069762333,0.28431595,0){0.0093505769,0.0092000449,0.010105067};
-ST(0.039444525,0.14644848,0,0.04397778,0.15172209,0,0.036825174,0.15225095,0){0.0076040741,0.0073960532,0.0063271993};
-ST(0.066334221,0.27760857,0,0.073416465,0.27934608,0,0.069762333,0.28431595,0){0.0092000449,0.0088333373,0.010105067};
-ST(0.012733045,0.058713138,0,0.0066877577,0.054780491,0,0.013073967,0.053209069,0){0.0031871065,0.002256812,0.0030763285};
-ST(0.0071724145,0.1266659,0,0.0089155203,0.11918733,0,0.012134612,0.12388006,0){0.0033276957,0.0037661726,0.0043462782};
-ST(0.087181126,0.21483096,0,0.079846013,0.21642209,0,0.082328401,0.21016288,0){0.016308886,0.014513645,0.016915435};
-ST(0.049987625,0.021377356,0,0.04886699,0.014821261,0,0.055286521,0.017504737,0){0.0063275637,0.0060418568,0.0067686563};
-ST(0.043558202,0.25643586,0,0.047977922,0.25174593,0,0.048124177,0.25975563,0){0.0107076,0.011417018,0.011453901};
-ST(0.04886699,0.014821261,0,0.054320068,0.011013092,0,0.055286521,0.017504737,0){0.0060418568,0.0065256187,0.0067686563};
-ST(0.047977922,0.25174593,0,0.052565911,0.25627138,0,0.048124177,0.25975563,0){0.011417018,0.012510711,0.011453901};
-ST(0.026277351,0.065288906,0,0.018952385,0.063139668,0,0.023737369,0.060388613,0){0.0054035144,0.004228076,0.0048034585};
-ST(0.036211214,0.28505229,0,0.032913158,0.29243767,0,0.030804552,0.28682747,0){0.0060722216,0.0074810533,0.0058319124};
-ST(0.025647037,0,0,0.032172362,0,0,0.029469652,0.005642048,0){0.0035647037,0.0042172362,0.0039620423};
-ST(0.032913158,0.29243767,0,0.025567113,0.28905289,0,0.030804552,0.28682747,0){0.0074810533,0.0055567337,0.0058319124};
-ST(0.059413957,0.17983771,0,0.061548848,0.18567875,0,0.054321705,0.18240921,0){0.011618873,0.013158388,0.011269583};
-ST(0,0.031797718,0,0,0.02540862,0,0.0055959319,0.028632452,0){0.0011210343,0.0010773942,0.0017127759};
-ST(0.010217899,0.048491667,0,0.0064196609,0.043098201,0,0.01153062,0.041448292,0){0.0025847442,0.0020049288,0.00259379};
-ST(0.050927036,0.19167746,0,0.046828703,0.19603271,0,0.042998409,0.19194838,0){0.011906838,0.011336809,0.010376684};
-ST(0.05511543,0.29440677,0,0.052935715,0.28884082,0,0.058426811,0.28702912,0){0.011904677,0.0097788527,0.0098865151};
-ST(0.060722814,0.29233598,0,0.05511543,0.29440677,0,0.058426811,0.28702912,0){0.012292123,0.011904677,0.0098865151};
-ST(0.073518975,0.084426062,0,0.06823576,0.080384264,0,0.073267771,0.076862877,0){0.014655813,0.01330007,0.01374781};
-ST(0.0071026462,0.074440872,0,0.0087536517,0.067121195,0,0.011925798,0.071682732,0){0.0027655645,0.0028405718,0.0034604908};
-ST(0.041478584,0.27908417,0,0.047308417,0.28460012,0,0.041784558,0.28543344,0){0.0055491609,0.0073520502,0.0069568789};
-ST(0.043421277,0.070486317,0,0.04677464,0.063987522,0,0.05011462,0.068273913,0){0.0083417443,0.0083560787,0.0092014028};
-ST(0.049987625,0.021377356,0,0.05377987,0.026339649,0,0.046218358,0.02547694,0){0.0063275637,0.0069083627,0.0060592722};
-ST(0.05377987,0.026339649,0,0.048967316,0.030320203,0,0.046218358,0.02547694,0){0.0069083627,0.0065459276,0.0060592722};
-ST(0.049987111,0.073706442,0,0.043421277,0.070486317,0,0.05011462,0.068273913,0){0.009638201,0.0083417443,0.0092014028};
-ST(0.079846013,0.21642209,0,0.087181126,0.21483096,0,0.08504359,0.22088839,0){0.014513645,0.016308886,0.013444316};
-ST(0.078522353,0.080042605,0,0.073518975,0.084426062,0,0.073267771,0.076862877,0){0.015007077,0.014655813,0.01374781};
-ST(0.029557505,0.25181754,0,0.021822163,0.25301211,0,0.02496255,0.24770535,0){0.0077937721,0.0063174014,0.0065793383};
-ST(0.0069940321,0.15907843,0,0,0.15606634,0,0.0051979642,0.15339423,0){0.001901441,0.0012140034,0.0019946537};
-ST(0.0069230724,0.10599149,0,0,0.10306461,0,0.0051398286,0.1005864,0){0.0033428238,0.0019564772,0.0029326773};
-ST(0.057142857,0.3,0,0.05,0.3,0,0.05511543,0.29440677,0){0.013300462,0.011885664,0.011904677};
-ST(0.066186294,0.024012302,0,0.069403265,0.030528728,0,0.06300662,0.02963429,0){0.0081453494,0.0088265259,0.0080686047};
-ST(0.010825671,0.099590532,0,0.0069230724,0.10599149,0,0.0051398286,0.1005864,0){0.004016107,0.0033428238,0.0029326773};
-ST(0.049672348,0.13321934,0,0.049993928,0.12587718,0,0.055088213,0.13004616,0){0.011026506,0.011673871,0.012344969};
-ST(0.010401748,0.010393316,0,0.0060844024,0.0061076692,0,0.013164233,0.0055676569,0){0.0020666199,0.0016156403,0.0023250401};
-ST(0.010704963,0.2547075,0,0.0072786063,0.26188216,0,0.0053741268,0.25663281,0){0.0041360758,0.0033349743,0.0030729489};
-ST(0.010988582,0.15262774,0,0.0069940321,0.15907843,0,0.0051979642,0.15339423,0){0.0028106617,0.001901441,0.0019946537};
-ST(0.0070329053,0.19002058,0,0,0.18969717,0,0.0053183831,0.18471783,0){0.0032854097,0.001923296,0.0027804293};
-ST(0.077986326,0.12755717,0,0.085850588,0.12646039,0,0.082184623,0.13131431,0){0.016964028,0.018594654,0.017315387};
-ST(0.036211214,0.28505229,0,0.041478584,0.27908417,0,0.041784558,0.28543344,0){0.0060722216,0.0055491609,0.0069568789};
-ST(0.088897881,0.18581252,0,0.094303462,0.18195896,0,0.094374666,0.18946442,0){0.01821991,0.018137636,0.02003149};
-ST(0.010287914,0.27534428,0,0.0066221519,0.26909631,0,0.013858257,0.27098248,0){0.0027159036,0.0027778017,0.0037443109};
-ST(0.093260637,0.21041677,0,0.089406716,0.20396751,0,0.095307299,0.20359445,0){0.018844578,0.019494326,0.020702797};
-ST(0.049961259,0.10646397,0,0.055404807,0.10282352,0,0.055537747,0.10990822,0){0.011859712,0.012784817,0.013059457};
-ST(0,0.25815412,0,0,0.25123488,0,0.0053741268,0.25663281,0){0.0019897884,0.0019611328,0.0030729489};
-ST(0.038968939,0.093670726,0,0.043535837,0.098689724,0,0.036577437,0.099338278,0){0.0091516332,0.010280302,0.0089716861};
-ST(0.1,0.20714286,0,0.093260637,0.21041677,0,0.095307299,0.20359445,0){0.020968343,0.018844578,0.020702797};
-ST(0.044718386,0.11394827,0,0.043696053,0.10764168,0,0.049912889,0.1120086,0){0.010943235,0.010652083,0.01196981};
-ST(0.019167426,0,0,0.025647037,0,0,0.023343368,0.0053891764,0){0.0029167426,0.0035647037,0.0033459576};
-ST(0.071428571,0.3,0,0.067897561,0.29362967,0,0.075014719,0.29506761,0){0.016130092,0.013998657,0.015757805};
-ST(0.067897561,0.29362967,0,0.073628203,0.28912297,0,0.075014719,0.29506761,0){0.013998657,0.013138961,0.015757805};
-ST(0.06823576,0.080384264,0,0.066454746,0.074006402,0,0.073267771,0.076862877,0){0.01330007,0.012316324,0.01374781};
-ST(0.055404807,0.10282352,0,0.060981097,0.10625719,0,0.055537747,0.10990822,0){0.012784817,0.01403139,0.013059457};
-ST(0.083658535,0.076668132,0,0.078522353,0.080042605,0,0.077488341,0.073041111,0){0.015437813,0.015007077,0.013975013};
-ST(0.043696053,0.10764168,0,0.049961259,0.10646397,0,0.049912889,0.1120086,0){0.010652083,0.011859712,0.01196981};
-ST(0.087770529,0.028777226,0,0.093788043,0.032457843,0,0.087198716,0.035123314,0){0.010747054,0.011687416,0.01115353};
-ST(0.072358306,0.13696631,0,0.068083985,0.13292159,0,0.072428856,0.1291202,0){0.014637908,0.014467744,0.015735892};
-ST(0.066454746,0.074006402,0,0.072251719,0.070805738,0,0.073267771,0.076862877,0){0.012316324,0.01288041,0.01374781};
-ST(0.093788043,0.032457843,0,0.092021896,0.039287055,0,0.087198716,0.035123314,0){0.011687416,0.012081021,0.01115353};
-ST(0.056929375,0.031821563,0,0.056980445,0.038962171,0,0.051715879,0.035807649,0){0.0075042202,0.007911465,0.0071174241};
-ST(0.059413957,0.17983771,0,0.066109726,0.17987248,0,0.061548848,0.18567875,0){0.011618873,0.012748621,0.013158388};
-ST(0.0076308335,0.23791294,0,0,0.23744837,0,0.0049857357,0.23304427,0){0.002622712,0.0014645348,0.0018422485};
-ST(0.019025664,0.05691302,0,0.012733045,0.058713138,0,0.013073967,0.053209069,0){0.0040025741,0.0031871065,0.0030763285};
-ST(0.016666559,0.24707082,0,0.021822163,0.25301211,0,0.016097677,0.25277203,0){0.0049690135,0.0063174014,0.0051741925};
-ST(0.066109726,0.17987248,0,0.067729338,0.18636951,0,0.061548848,0.18567875,0){0.012748621,0.014422352,0.013158388};
-ST(0.017377178,0.070609144,0,0.01667016,0.076996579,0,0.011925798,0.071682732,0){0.0042796585,0.0044083295,0.0034604908};
-ST(0.079360922,0.024541521,0,0.078794748,0.031832626,0,0.07400672,0.026910821,0){0.0095813814,0.0099565426,0.0091297985};
-ST(0.085527033,0.023058497,0,0.082286996,0.017839369,0,0.087635132,0.015594151,0){0.010161784,0.009581051,0.010048385};
-ST(0,0.18969717,0,0,0.18294039,0,0.0053183831,0.18471783,0){0.001923296,0.0017672234,0.0027804293};
-ST(0.028521342,0.23217192,0,0.030623557,0.22463729,0,0.033439845,0.22948364,0){0.004622157,0.0049656049,0.004415165};
-ST(0.1,0.17857143,0,0.1,0.18571429,0,0.094303462,0.18195896,0){0.017958284,0.020239442,0.018137636};
-ST(0.091018613,0.020305374,0,0.085527033,0.023058497,0,0.087635132,0.015594151,0){0.010601467,0.010161784,0.010048385};
-ST(0.0059292545,0.014766706,0,0.010401748,0.010393316,0,0.012634798,0.015675501,0){0.0016346023,0.0020666199,0.0023302125};
-ST(0.056396465,0.13618531,0,0.049672348,0.13321934,0,0.055088213,0.13004616,0){0.01190613,0.011026506,0.012344969};
-ST(0.036056327,0.17085097,0,0.040316423,0.16515352,0,0.041541458,0.17214356,0){0.0062254059,0.0057431286,0.0072276425};
-ST(0.0090763502,0.020172771,0,0.0059292545,0.014766706,0,0.012634798,0.015675501,0){0.0020007534,0.0016346023,0.0023302125};
-ST(0.1,0.24285714,0,0.1,0.25,0,0.094605269,0.2449598,0){0.018857211,0.021317208,0.018767685};
-ST(0.093788043,0.032457843,0,0.087770529,0.028777226,0,0.094084599,0.025998463,0){0.011687416,0.010747054,0.011251769};
-ST(0.040316423,0.16515352,0,0.046260124,0.1690627,0,0.041541458,0.17214356,0){0.0057431286,0.0072155439,0.0072276425};
-ST(0.057118803,0.2495577,0,0.061245673,0.24452488,0,0.064704731,0.24945193,0){0.01294362,0.012669907,0.014388857};
-ST(0.032539635,0.14727541,0,0.039444525,0.14644848,0,0.036825174,0.15225095,0){0.0064374803,0.0076040741,0.0063271993};
-ST(0.061392472,0.25446647,0,0.057118803,0.2495577,0,0.064704731,0.24945193,0){0.014253572,0.01294362,0.014388857};
-ST(0.090457694,0.24900602,0,0.094387819,0.25408144,0,0.086685255,0.25357155,0){0.019245042,0.020817593,0.019244658};
-ST(0.015246202,0.045764486,0,0.010217899,0.048491667,0,0.01153062,0.041448292,0){0.0031524656,0.0025847442,0.00259379};
-ST(0.094387819,0.25408144,0,0.089822961,0.25859451,0,0.086685255,0.25357155,0){0.020817593,0.019819525,0.019244658};
-ST(0.1,0.25,0,0.1,0.25714286,0,0.094387819,0.25408144,0){0.021317208,0.021963976,0.020817593};
-ST(0.067729338,0.18636951,0,0.066109726,0.17987248,0,0.072746524,0.18306742,0){0.014422352,0.012748621,0.014652211};
-ST(0.1,0.12857143,0,0.1,0.13571429,0,0.094396223,0.13234736,0){0.021075659,0.019826901,0.019441171};
-ST(0.066109726,0.17987248,0,0.072198327,0.17708617,0,0.072746524,0.18306742,0){0.012748621,0.013008194,0.014652211};
-ST(0.015545644,0.18763273,0,0.022183918,0.18487742,0,0.02166044,0.19054668,0){0.0048113533,0.0058547995,0.006134172};
-ST(0.052935715,0.28884082,0,0.056202721,0.28169173,0,0.058426811,0.28702912,0){0.0097788527,0.0071383318,0.0098865151};
-ST(0.068927504,0.0060918646,0,0.072299805,0,0,0.075713015,0.0049037107,0){0.0079278993,0.0082299805,0.0085960345};
-ST(0.056202721,0.28169173,0,0.063593879,0.28436636,0,0.058426811,0.28702912,0){0.0071383318,0.0093505769,0.0098865151};
-ST(0.020103716,0.1121562,0,0.026088282,0.11662569,0,0.020593251,0.11774208,0){0.006015088,0.0072108519,0.0061054898};
-ST(0.074170803,0.010670566,0,0.068927504,0.0060918646,0,0.075713015,0.0049037107,0){0.008532082,0.0079278993,0.0085960345};
-ST(0.1,0.18571429,0,0.1,0.19285714,0,0.094374666,0.18946442,0){0.020239442,0.021660378,0.02003149};
-ST(0.041079184,0.24904413,0,0.043024015,0.24149425,0,0.045900921,0.24626076,0){0.0097899948,0.0087794072,0.010275455};
-ST(0.082655945,0.15094656,0,0.087150461,0.15605115,0,0.080100366,0.15677346,0){0.012939286,0.011826762,0.010731672};
-ST(0.1,0.028571429,0,0.093788043,0.032457843,0,0.094084599,0.025998463,0){0.012075829,0.011687416,0.011251769};
-ST(0.032223949,0.094413692,0,0.038968939,0.093670726,0,0.036577437,0.099338278,0){0.0079256222,0.0091516332,0.0089716861};
-ST(0.018018822,0.050767877,0,0.019025664,0.05691302,0,0.013073967,0.053209069,0){0.0036547138,0.0040025741,0.0030763285};
-ST(0.073457999,0.097670639,0,0.072016645,0.090906146,0,0.077858227,0.092196475,0){0.015945532,0.015065982,0.016272399};
-ST(0.061245673,0.24452488,0,0.06251245,0.23827584,0,0.067305062,0.2440339,0){0.012669907,0.01091156,0.013605878};
-ST(0.06251245,0.23827584,0,0.068887619,0.23816425,0,0.067305062,0.2440339,0){0.01091156,0.011832084,0.013605878};
-ST(0.056396465,0.13618531,0,0.056840174,0.14351487,0,0.051719407,0.14014665,0){0.01190613,0.010834582,0.010532948};
-ST(0.079360922,0.024541521,0,0.082286996,0.017839369,0,0.085527033,0.023058497,0){0.0095813814,0.009581051,0.010161784};
-ST(0.080374191,0.097624086,0,0.073457999,0.097670639,0,0.077858227,0.092196475,0){0.01726286,0.015945532,0.016272399};
-ST(0.025647037,0,0,0.029469652,0.005642048,0,0.023343368,0.0053891764,0){0.0035647037,0.0039620423,0.0033459576};
-ST(0.018230931,0.025124521,0,0.012022181,0.028807467,0,0.013134683,0.023608073,0){0.0030367355,0.0024211626,0.0024680799};
-ST(0.061700615,0.13262108,0,0.056396465,0.13618531,0,0.055088213,0.13004616,0){0.013320597,0.01190613,0.012344969};
-ST(0.06020365,0.12640845,0,0.061700615,0.13262108,0,0.055088213,0.13004616,0){0.013623005,0.013320597,0.012344969};
-ST(0.041289591,0.20119015,0,0.046828703,0.19603271,0,0.047317985,0.20170575,0){0.010204072,0.011336809,0.011381113};
-ST(0.075863318,0.15128967,0,0.082655945,0.15094656,0,0.080100366,0.15677346,0){0.011891738,0.012939286,0.010731672};
-ST(0.061329737,0.16018623,0,0.061082675,0.16604661,0,0.055152673,0.16162804,0){0.0076429651,0.0082458925,0.0064983066};
-ST(0.018230931,0.025124521,0,0.017915306,0.017912514,0,0.021948797,0.021350207,0){0.0030367355,0.0028989864,0.0033695518};
-ST(0.082404782,0.22674486,0,0.076354388,0.22899719,0,0.079358983,0.22202133,0){0.010486323,0.0086224438,0.012140385};
-ST(0,0.13607591,0,0,0.129442,0,0.0053512079,0.13276494,0){0.0017953562,0.0019048233,0.0028483266};
-ST(0,0.083446083,0,0,0.076937883,0,0.0052564808,0.080270621,0){0.0017416923,0.0016520865,0.00259121};
-ST(0.042857143,0.3,0,0.035714286,0.3,0,0.038812872,0.29456049,0){0.010468963,0.0090547386,0.0089597215};
-ST(0.093701939,0.074587016,0,0.088948357,0.079796263,0,0.088095049,0.072803473,0){0.016790312,0.016740913,0.015636506};
-ST(0.077664091,0.1983373,0,0.082772947,0.19508151,0,0.085087205,0.20027301,0){0.017532477,0.018456454,0.018969225};
-ST(0.080532481,0.2036733,0,0.077664091,0.1983373,0,0.085087205,0.20027301,0){0.017789172,0.017532477,0.018969225};
-ST(0.05,0.3,0,0.049141897,0.29382693,0,0.05511543,0.29440677,0){0.011885664,0.010673071,0.011904677};
-ST(0.010057812,0.23068741,0,0.0076308335,0.23791294,0,0.0049857357,0.23304427,0){0.0022253758,0.002622712,0.0018422485};
-ST(0,0.25123488,0,0.0059669022,0.25108021,0,0.0053741268,0.25663281,0){0.0019611328,0.003127184,0.0030729489};
-ST(0.055918666,0.15605421,0,0.04998761,0.15939724,0,0.049176801,0.15384163,0){0.0080267163,0.0065496788,0.0076766851};
-ST(0.053121914,0.14984683,0,0.055918666,0.15605421,0,0.049176801,0.15384163,0){0.0090412706,0.0080267163,0.0076766851};
-ST(0.0055959319,0.028632452,0,0,0.02540862,0,0.0042261279,0.022248036,0){0.0017127759,0.0010773942,0.0015070621};
-ST(0.014716796,0.17010542,0,0.020122959,0.1650354,0,0.020376181,0.170702,0){0.0032674718,0.0034385995,0.0040946903};
-ST(0.052671398,0.090038465,0,0.056523131,0.084118476,0,0.058666695,0.090099436,0){0.011446826,0.011646159,0.012546942};
-ST(0,0.10306461,0,0,0.096512506,0,0.0051398286,0.1005864,0){0.0019564772,0.0018991232,0.0029326773};
-ST(0.023840623,0.12537371,0,0.030550045,0.12422927,0,0.027097286,0.12998702,0){0.0066011582,0.007950786,0.0070390802};
-ST(0.016690266,0.18191056,0,0.022183918,0.18487742,0,0.015545644,0.18763273,0){0.0046373261,0.0058547995,0.0048113533};
-ST(0,0.27203526,0,0.0066221519,0.26909631,0,0.004564662,0.27552118,0){0.001517686,0.0027778017,0.0018975573};
-ST(0.0066221519,0.26909631,0,0.010287914,0.27534428,0,0.004564662,0.27552118,0){0.0027778017,0.0027159036,0.0018975573};
-ST(0.073862352,0.047765251,0,0.067714741,0.05140667,0,0.068656382,0.045051564,0){0.010653664,0.010194849,0.0097624898};
-ST(0.025567113,0.28905289,0,0.028120489,0.2818096,0,0.030804552,0.28682747,0){0.0055567337,0.0042507092,0.0058319124};
-ST(0,0.14938457,0,0.0064726641,0.14769389,0,0.0051979642,0.15339423,0){0.0014478061,0.0024715601,0.0019946537};
-ST(0.055404807,0.10282352,0,0.049961259,0.10646397,0,0.04848764,0.10113949,0){0.012784817,0.011859712,0.011356258};
-ST(0.052243848,0.09708824,0,0.055404807,0.10282352,0,0.04848764,0.10113949,0){0.011856809,0.012784817,0.011356258};
-ST(0,0.15606634,0,0,0.14938457,0,0.0051979642,0.15339423,0){0.0012140034,0.0014478061,0.0019946537};
-ST(0.065548757,0.12300421,0,0.063913425,0.11688174,0,0.070021709,0.11751867,0){0.014884473,0.014765299,0.015974435};
-ST(0.012217264,0.2047927,0,0.0065980308,0.2085645,0,0.0061278576,0.20241521,0){0.004330336,0.0031103455,0.003192052};
-ST(0,0.096512506,0,0.0062739213,0.09500888,0,0.0051398286,0.1005864,0){0.0018991232,0.0030651339,0.0029326773};
-ST(0.048884684,0.23984002,0,0.051467941,0.24632844,0,0.045900921,0.24626076,0){0.0093142721,0.011312523,0.010275455};
-ST(0.01086253,0.18415108,0,0.0062141227,0.17913624,0,0.012144819,0.17790797,0){0.0037558824,0.0026772087,0.0035663748};
-ST(0.020122959,0.1650354,0,0.025933861,0.16956771,0,0.020376181,0.170702,0){0.0034385995,0.0046706454,0.0040946903};
-ST(0.071875088,0.12337373,0,0.065548757,0.12300421,0,0.070021709,0.11751867,0){0.016108744,0.014884473,0.015974435};
-ST(0.010988582,0.15262774,0,0.0064726641,0.14769389,0,0.0123246,0.14637199,0){0.0028106617,0.0024715601,0.0034383019};
-ST(0.017510909,0.090546457,0,0.016970501,0.097139845,0,0.012113002,0.093889284,0){0.0050417352,0.0051389794,0.0041379831};
-ST(0.073862352,0.047765251,0,0.072627499,0.040727625,0,0.078113811,0.043235614,0){0.010653664,0.0098966022,0.0107714};
-ST(0,0.089973101,0,0,0.083446083,0,0.0048810442,0.085538046,0){0.0018256894,0.0017416923,0.0026331542};
-ST(0.017116349,0.14998193,0,0.010988582,0.15262774,0,0.0123246,0.14637199,0){0.0038725238,0.0028106617,0.0034383019};
-ST(0.056165025,0.18879164,0,0.049745249,0.18581505,0,0.054321705,0.18240921,0){0.012615914,0.011007309,0.011269583};
-ST(0.05563397,0.050831549,0,0.050004445,0.054274349,0,0.049081828,0.048821836,0){0.0085660039,0.0080776129,0.0075751441};
-ST(0.016765854,0.040249778,0,0.015319473,0.034144954,0,0.021259451,0.03718155,0){0.0031936572,0.0028850261,0.0036421529};
-ST(0.052903,0.044824368,0,0.05563397,0.050831549,0,0.049081828,0.048821836,0){0.0077922845,0.0085660039,0.0075751441};
-ST(0.080964027,0.048552182,0,0.073862352,0.047765251,0,0.078113811,0.043235614,0){0.011635394,0.010653664,0.0107714};
-ST(0.015319473,0.034144954,0,0.021114997,0.031742287,0,0.021259451,0.03718155,0){0.0028850261,0.0034867915,0.0036421529};
-ST(0.072873195,0.02116659,0,0.079360922,0.024541521,0,0.07400672,0.026910821,0){0.0087326558,0.0095813814,0.0091297985};
-ST(0.073017129,0.19015646,0,0.067729338,0.18636951,0,0.072746524,0.18306742,0){0.016031824,0.014422352,0.014652211};
-ST(0.078000839,0.18597742,0,0.073017129,0.19015646,0,0.072746524,0.18306742,0){0.016247188,0.016031824,0.014652211};
-ST(0.053293432,0.27215527,0,0.053554762,0.26522616,0,0.058794554,0.26817279,0){0.0095317783,0.01164797,0.01180084};
-ST(0.027245934,0.021259063,0,0.025374297,0.027198867,0,0.021948797,0.021350207,0){0.0039264931,0.0038510471,0.0033695518};
-ST(0,0.18294039,0,0.0062141227,0.17913624,0,0.0053183831,0.18471783,0){0.0017672234,0.0026772087,0.0027804293};
-ST(0.049555855,0.0062621576,0,0.052025416,0,0,0.055476524,0.0050891727,0){0.005983611,0.0062025416,0.0065680022};
-ST(0.059957664,0.27407069,0,0.053293432,0.27215527,0,0.058794554,0.26817279,0){0.0097471839,0.0095317783,0.01180084};
-ST(0.031168111,0.086149637,0,0.031727435,0.080354054,0,0.036897729,0.08183265,0){0.0073174534,0.0070919301,0.0080657189};
-ST(0.043421277,0.070486317,0,0.049987111,0.073706442,0,0.044925733,0.07572266,0){0.0083417443,0.009638201,0.0089806243};
-ST(0.036893214,0.087210211,0,0.031168111,0.086149637,0,0.036897729,0.08183265,0){0.0083992423,0.0073174534,0.0080657189};
-ST(0.038759258,0.11167503,0,0.037735929,0.10537966,0,0.043696053,0.10764168,0){0.0097384206,0.0094123836,0.010652083};
-ST(0.061082675,0.16604661,0,0.05534208,0.16725107,0,0.055152673,0.16162804,0){0.0082458925,0.007927676,0.0064983066};
-ST(0.044718386,0.11394827,0,0.038759258,0.11167503,0,0.043696053,0.10764168,0){0.010943235,0.0097384206,0.010652083};
-ST(0,0.044618955,0,0.0064196609,0.043098201,0,0.0047428148,0.048313235,0){0.0012366363,0.0020049288,0.0018818499};
-ST(0.071875088,0.12337373,0,0.077986326,0.12755717,0,0.072428856,0.1291202,0){0.016108744,0.016964028,0.015735892};
-ST(0.052025416,0,0,0.058736373,0,0,0.055476524,0.0050891727,0){0.0062025416,0.0068736373,0.0065680022};
-ST(0.0062141227,0.17913624,0,0.0088492442,0.17282653,0,0.012144819,0.17790797,0){0.0026772087,0.002692894,0.0035663748};
-ST(0.054320068,0.011013092,0,0.049555855,0.0062621576,0,0.055476524,0.0050891727,0){0.0065256187,0.005983611,0.0065680022};
-ST(0.033568202,0.044135264,0,0.039602446,0.042142971,0,0.038042686,0.048242807,0){0.0053659814,0.0060094056,0.0061286509};
-ST(0.093408348,0.23929044,0,0.1,0.24285714,0,0.094605269,0.2449598,0){0.016078078,0.018857211,0.018767685};
-ST(0.073845419,0.2209308,0,0.079846013,0.21642209,0,0.079358983,0.22202133,0){0.011831692,0.014513645,0.012140385};
-ST(0.064295402,0.27015162,0,0.062978572,0.26385631,0,0.068748354,0.26449609,0){0.012021911,0.013699793,0.014627562};
-ST(0.014854991,0.11674459,0,0.020103716,0.1121562,0,0.020593251,0.11774208,0){0.0049657919,0.006015088,0.0061054898};
-ST(0.039602446,0.042142971,0,0.04393967,0.046787303,0,0.038042686,0.048242807,0){0.0060094056,0.0067946488,0.0061286509};
-ST(0.017650615,0.14332879,0,0.017116349,0.14998193,0,0.0123246,0.14637199,0){0.0044959748,0.0038725238,0.0034383019};
-ST(0.073457999,0.097670639,0,0.067492619,0.10117066,0,0.067742128,0.095151401,0){0.015945532,0.015048339,0.014654254};
-ST(0.0064726641,0.14769389,0,0.0088859191,0.14145589,0,0.0123246,0.14637199,0){0.0024715601,0.0031626243,0.0034383019};
-ST(0.072627499,0.040727625,0,0.073862352,0.047765251,0,0.068656382,0.045051564,0){0.0098966022,0.010653664,0.0097624898};
-ST(0,0.051053592,0,0,0.044618955,0,0.0047428148,0.048313235,0){0.001307702,0.0012366363,0.0018818499};
-ST(0,0.23744837,0,0,0.23057917,0,0.0049857357,0.23304427,0){0.0014645348,0.0011094321,0.0018422485};
-ST(0.047977922,0.25174593,0,0.041079184,0.24904413,0,0.045900921,0.24626076,0){0.011417018,0.0097899948,0.010275455};
-ST(0.072016645,0.090906146,0,0.073457999,0.097670639,0,0.067742128,0.095151401,0){0.015065982,0.015945532,0.014654254};
-ST(0.1,0.092857143,0,0.1,0.1,0,0.09495489,0.096461405,0){0.020456772,0.021252429,0.019926776};
-ST(0.07789134,0.13496254,0,0.077986326,0.12755717,0,0.082184623,0.13131431,0){0.015967895,0.016964028,0.017315387};
-ST(0.027245934,0.021259063,0,0.023736508,0.016363017,0,0.029473654,0.015232311,0){0.0039264931,0.0034820269,0.0040572572};
-ST(0,0.23057917,0,0,0.22372386,0,0.0050703794,0.22750411,0){0.0011094321,0.0012703225,0.0016282327};
-ST(0.016971899,0.25850458,0,0.010704963,0.2547075,0,0.016097677,0.25277203,0){0.0053575659,0.0041360758,0.0051741925};
-ST(0.029469652,0.005642048,0,0.025782343,0.010697164,0,0.023343368,0.0053891764,0){0.0039620423,0.0036273673,0.0033459576};
-ST(0.021822163,0.25301211,0,0.016971899,0.25850458,0,0.016097677,0.25277203,0){0.0063174014,0.0053575659,0.0051741925};
-ST(0.055286521,0.017504737,0,0.054320068,0.011013092,0,0.059697637,0.012753556,0){0.0067686563,0.0065256187,0.0071057936};
-ST(0.075019178,0.10458001,0,0.082067363,0.10446681,0,0.078753785,0.10944217,0){0.016721658,0.01810119,0.0176718};
-ST(0.049745249,0.18581505,0,0.056165025,0.18879164,0,0.050927036,0.19167746,0){0.011007309,0.012615914,0.011906838};
-ST(0.083403881,0.18288957,0,0.078000839,0.18597742,0,0.077439796,0.17962153,0){0.016492804,0.016247188,0.014576515};
-ST(0.031910893,0.1329396,0,0.035995823,0.12783992,0,0.03712087,0.13446417,0){0.0077641922,0.0088531158,0.0086041419};
-ST(0.082636182,0.070608246,0,0.083658535,0.076668132,0,0.077488341,0.073041111,0){0.014480965,0.015437813,0.013975013};
-ST(0.016970501,0.097139845,0,0.010825671,0.099590532,0,0.012113002,0.093889284,0){0.0051389794,0.004016107,0.0041379831};
-ST(0.078571429,0.3,0,0.071428571,0.3,0,0.075014719,0.29506761,0){0.017545614,0.016130092,0.015757805};
-ST(0.075512736,0.26666994,0,0.070141314,0.27013164,0,0.068748354,0.26449609,0){0.015202563,0.012960708,0.014627562};
-ST(0.080764352,0.25370675,0,0.08378138,0.24758349,0,0.086685255,0.25357155,0){0.018075953,0.017616529,0.019244658};
-ST(0.1,0.16428571,0,0.1,0.17142857,0,0.095064283,0.16787532,0){0.012266282,0.015132575,0.012983793};
-ST(0.08378138,0.24758349,0,0.090457694,0.24900602,0,0.086685255,0.25357155,0){0.017616529,0.019245042,0.019244658};
-ST(0.0062739213,0.09500888,0,0.0088081659,0.089068546,0,0.012113002,0.093889284,0){0.0030651339,0.0034128678,0.0041379831};
-ST(0.078522353,0.080042605,0,0.073267771,0.076862877,0,0.077488341,0.073041111,0){0.015007077,0.01374781,0.013975013};
-ST(0.067812422,0.25459576,0,0.070877084,0.24895303,0,0.074546647,0.25397984,0){0.015539601,0.015483539,0.0168549};
-ST(0.046260124,0.1690627,0,0.040316423,0.16515352,0,0.045860229,0.163357,0){0.0072155439,0.0057431286,0.0059728166};
-ST(0.028571429,0.3,0,0.021428571,0.3,0,0.025005027,0.29510367,0){0.0076400532,0.0062259487,0.0064954414};
-ST(0.071849852,0.25958891,0,0.067812422,0.25459576,0,0.074546647,0.25397984,0){0.016149584,0.015539601,0.0168549};
-ST(0.049958331,0.21332249,0,0.055853935,0.21726741,0,0.049857944,0.21896006,0){0.010389004,0.010404133,0.0090150594};
-ST(0.010825671,0.099590532,0,0.0062739213,0.09500888,0,0.012113002,0.093889284,0){0.004016107,0.0030651339,0.0041379831};
-ST(0.055853935,0.21726741,0,0.05289152,0.22371293,0,0.049857944,0.21896006,0){0.010404133,0.0079980598,0.0090150594};
-ST(0.038743683,0,0,0.045361276,0,0,0.042065894,0.0047615469,0){0.0048743683,0.0055361276,0.0052207549};
-ST(0.073628203,0.28912297,0,0.069762333,0.28431595,0,0.076893993,0.2841615,0){0.013138961,0.010105067,0.010943662};
-ST(0.069762333,0.28431595,0,0.073416465,0.27934608,0,0.076893993,0.2841615,0){0.010105067,0.0088333373,0.010943662};
-ST(0.088948357,0.079796263,0,0.083658535,0.076668132,0,0.088095049,0.072803473,0){0.016740913,0.015437813,0.015636506};
-ST(0.072299805,0,0,0.079152804,0,0,0.075713015,0.0049037107,0){0.0082299805,0.0089152804,0.0085960345};
-ST(0.082229882,0.11430537,0,0.075237497,0.11427639,0,0.078753785,0.10944217,0){0.018445934,0.017047438,0.0176718};
-ST(0.094091634,0.0059624358,0,0.089774267,0.010202707,0,0.086908462,0.0054765496,0){0.01045357,0.010102056,0.0097257245};
-ST(0.0064726641,0.14769389,0,0.010988582,0.15262774,0,0.0051979642,0.15339423,0){0.0024715601,0.0028106617,0.0019946537};
-ST(0.017660768,0.12252143,0,0.016308386,0.12868827,0,0.012134612,0.12388006,0){0.0054589438,0.0050367798,0.0043462782};
-ST(0.077664091,0.1983373,0,0.080532481,0.2036733,0,0.075136028,0.20507776,0){0.017532477,0.017789172,0.016555444};
-ST(0.059647761,0.23257945,0,0.053928421,0.22993019,0,0.058567138,0.22596146,0){0.0083760198,0.0067705286,0.0079955342};
-ST(0.016690266,0.18191056,0,0.01086253,0.18415108,0,0.012144819,0.17790797,0){0.0046373261,0.0037558824,0.0035663748};
-ST(0.031467861,0.069797289,0,0.026277351,0.065288906,0,0.031481235,0.064160132,0){0.006435259,0.0054035144,0.0061148995};
-ST(0.025782343,0.010697164,0,0.023736508,0.016363017,0,0.01972947,0.013018635,0){0.0036273673,0.0034820269,0.0030334072};
-ST(0.0064196609,0.043098201,0,0.010217899,0.048491667,0,0.0047428148,0.048313235,0){0.0020049288,0.0025847442,0.0018818499};
-ST(0.055918666,0.15605421,0,0.061329737,0.16018623,0,0.055152673,0.16162804,0){0.0080267163,0.0076429651,0.0064983066};
-ST(0.01442164,0.26537398,0,0.019479015,0.2705585,0,0.013858257,0.27098248,0){0.0044630286,0.0047057288,0.0037443109};
-ST(0.1,0.2,0,0.1,0.20714286,0,0.095307299,0.20359445,0){0.021957739,0.020968343,0.020702797};
-ST(0.070141314,0.27013164,0,0.064295402,0.27015162,0,0.068748354,0.26449609,0){0.012960708,0.012021911,0.014627562};
-ST(0.01086253,0.18415108,0,0.0070329053,0.19002058,0,0.0053183831,0.18471783,0){0.0037558824,0.0032854097,0.0027804293};
-ST(0.091481478,0.06789356,0,0.093701939,0.074587016,0,0.088095049,0.072803473,0){0.01547964,0.016790312,0.015636506};
-ST(0.043024015,0.24149425,0,0.048884684,0.23984002,0,0.045900921,0.24626076,0){0.0087794072,0.0093142721,0.010275455};
-ST(0.043875453,0.15799271,0,0.04397778,0.15172209,0,0.049176801,0.15384163,0){0.0061743039,0.0073960532,0.0076766851};
-ST(0.055460475,0.069248829,0,0.049987111,0.073706442,0,0.05011462,0.068273913,0){0.010108481,0.009638201,0.0092014028};
-ST(0.049745249,0.18581505,0,0.049952063,0.1787418,0,0.054321705,0.18240921,0){0.011007309,0.0098216119,0.011269583};
-ST(0.1,0.25714286,0,0.1,0.26428571,0,0.095319273,0.26073379,0){0.021963976,0.020507244,0.020580735};
-ST(0.04998761,0.15939724,0,0.043875453,0.15799271,0,0.049176801,0.15384163,0){0.0065496788,0.0061743039,0.0076766851};
-ST(0.0193219,0.2311094,0,0.020771052,0.23704614,0,0.014554238,0.23387563,0){0.0033259199,0.0044321473,0.003134429};
-ST(0.020771052,0.23704614,0,0.01511463,0.2393591,0,0.014554238,0.23387563,0){0.0044321473,0.003913276,0.003134429};
-ST(0.021768928,0.13185708,0,0.023840623,0.12537371,0,0.027097286,0.12998702,0){0.0059408379,0.0066011582,0.0070390802};
-ST(0.0062739213,0.09500888,0,0.010825671,0.099590532,0,0.0051398286,0.1005864,0){0.0030651339,0.004016107,0.0029326773};
-ST(0.037310958,0.036215878,0,0.036258451,0.030655369,0,0.042275405,0.033499023,0){0.0054726568,0.005146398,0.0059293669};
-ST(0.036258451,0.030655369,0,0.041222898,0.027938513,0,0.042275405,0.033499023,0){0.005146398,0.0056013798,0.0059293669};
-ST(0.0064196609,0.043098201,0,0.0086756768,0.036899292,0,0.01153062,0.041448292,0){0.0020049288,0.0021713487,0.00259379};
-ST(0.071875088,0.12337373,0,0.070021709,0.11751867,0,0.076396225,0.11987471,0){0.016108744,0.015974435,0.017177524};
-ST(0.070021709,0.11751867,0,0.075237497,0.11427639,0,0.076396225,0.11987471,0){0.015974435,0.017047438,0.017177524};
-ST(0.094387819,0.25408144,0,0.1,0.25714286,0,0.095319273,0.26073379,0){0.020817593,0.021963976,0.020580735};
-ST(0.089822961,0.25859451,0,0.094387819,0.25408144,0,0.095319273,0.26073379,0){0.019819525,0.020817593,0.020580735};
-ST(0.082495291,0.1767331,0,0.083403881,0.18288957,0,0.077439796,0.17962153,0){0.01452089,0.016492804,0.014576515};
-ST(0.016706021,0.19335173,0,0.015545644,0.18763273,0,0.02166044,0.19054668,0){0.0052731674,0.0048113533,0.006134172};
-ST(0.0062141227,0.17913624,0,0.01086253,0.18415108,0,0.0053183831,0.18471783,0){0.0026772087,0.0037558824,0.0027804293};
-ST(0.078522353,0.080042605,0,0.083658535,0.076668132,0,0.083812176,0.083170737,0){0.015007077,0.015437813,0.016304455};
-ST(0.036645028,0.065460046,0,0.031467861,0.069797289,0,0.031481235,0.064160132,0){0.0069586979,0.006435259,0.0061148995};
-ST(0.023736508,0.016363017,0,0.025782343,0.010697164,0,0.029473654,0.015232311,0){0.0034820269,0.0036273673,0.0040572572};
-ST(0.017833823,0.17577258,0,0.016690266,0.18191056,0,0.012144819,0.17790797,0){0.0042763177,0.0046373261,0.0035663748};
-ST(0.083658535,0.076668132,0,0.088948357,0.079796263,0,0.083812176,0.083170737,0){0.015437813,0.016740913,0.016304455};
-ST(0.055287343,0.062192056,0,0.055098786,0.05659657,0,0.060565964,0.060729258,0){0.0094513626,0.0089509863,0.010078647};
-ST(0.055098786,0.05659657,0,0.060533545,0.055251798,0,0.060565964,0.060729258,0){0.0089509863,0.0095798189,0.010078647};
-ST(0,0.02540862,0,0,0.019032121,0,0.0042261279,0.022248036,0){0.0010773942,0.0010434529,0.0015070621};
-ST(0.078000839,0.18597742,0,0.083403881,0.18288957,0,0.083669222,0.1890156,0){0.016247188,0.016492804,0.017899958};
-ST(0.04677464,0.063987522,0,0.04109467,0.060492019,0,0.046279621,0.058429349,0){0.0083560787,0.0072817007,0.0078696625};
-ST(0.059647761,0.23257945,0,0.058567138,0.22596146,0,0.063977145,0.22848817,0){0.0083760198,0.0079955342,0.0073732166};
-ST(0.017660768,0.12252143,0,0.014854991,0.11674459,0,0.020593251,0.11774208,0){0.0054589438,0.0049657919,0.0061054898};
-ST(0.061329737,0.16018623,0,0.055918666,0.15605421,0,0.061430891,0.15444473,0){0.0076429651,0.0080267163,0.009109847};
-ST(0.050004445,0.054274349,0,0.05563397,0.050831549,0,0.055098786,0.05659657,0){0.0080776129,0.0085660039,0.0089509863};
-ST(0,0.27900442,0,0,0.27203526,0,0.004564662,0.27552118,0){0.0010819588,0.001517686,0.0018975573};
-ST(0.018952385,0.063139668,0,0.019025664,0.05691302,0,0.023737369,0.060388613,0){0.004228076,0.0040025741,0.0048034585};
-ST(0.055269447,0.17422653,0,0.049952063,0.1787418,0,0.049852622,0.17323607,0){0.0096616545,0.0098216119,0.0086421223};
-ST(0.019025664,0.05691302,0,0.024953134,0.05500472,0,0.023737369,0.060388613,0){0.0040025741,0.0047366364,0.0048034585};
-ST(0.031694548,0.13853307,0,0.031910893,0.1329396,0,0.03712087,0.13446417,0){0.0072703146,0.0077641922,0.0086041419};
-ST(0.037124591,0.13989263,0,0.031694548,0.13853307,0,0.03712087,0.13446417,0){0.0080703973,0.0072703146,0.0086041419};
-ST(0.082772947,0.19508151,0,0.077664091,0.1983373,0,0.078432808,0.19155374,0){0.018456454,0.017532477,0.017267031};
-ST(0.05563397,0.050831549,0,0.060533545,0.055251798,0,0.055098786,0.05659657,0){0.0085660039,0.0095798189,0.0089509863};
-ST(0.049961259,0.10646397,0,0.055537747,0.10990822,0,0.049912889,0.1120086,0){0.011859712,0.013059457,0.01196981};
-ST(0.055537747,0.10990822,0,0.053583525,0.11616451,0,0.049912889,0.1120086,0){0.013059457,0.012709223,0.01196981};
-ST(0.04998761,0.15939724,0,0.055918666,0.15605421,0,0.055152673,0.16162804,0){0.0065496788,0.0080267163,0.0064983066};
-ST(0,0.21688641,0,0,0.21006685,0,0.0043931952,0.21357915,0){0.0015962363,0.0018346987,0.0024813618};
-ST(0.047308417,0.28460012,0,0.043729981,0.29067011,0,0.041784558,0.28543344,0){0.0073520502,0.0088969473,0.0069568789};
-ST(0.072873195,0.02116659,0,0.07060324,0.015557736,0,0.076551438,0.016154114,0){0.0087326558,0.0082944052,0.0089261328};
-ST(0.070877084,0.24895303,0,0.067812422,0.25459576,0,0.064704731,0.24945193,0){0.015483539,0.015539601,0.014388857};
-ST(0.053928421,0.22993019,0,0.05289152,0.22371293,0,0.058567138,0.22596146,0){0.0067705286,0.0079980598,0.0079955342};
-ST(0,0.21006685,0,0.0065980308,0.2085645,0,0.0043931952,0.21357915,0){0.0018346987,0.0031103455,0.0024813618};
-ST(0.052562678,0.20392294,0,0.046741278,0.20737056,0,0.047317985,0.20170575,0){0.012272703,0.010788495,0.011381113};
-ST(0.023665586,0.1785779,0,0.030060203,0.17758385,0,0.027586782,0.18282418,0){0.0054977511,0.0064082769,0.0066297552};
-ST(0.022183918,0.18487742,0,0.023665586,0.1785779,0,0.027586782,0.18282418,0){0.0058547995,0.0054977511,0.0066297552};
-ST(0.055537747,0.10990822,0,0.060981097,0.10625719,0,0.060886949,0.1120001,0){0.013059457,0.01403139,0.014162182};
-ST(0.079846013,0.21642209,0,0.08504359,0.22088839,0,0.079358983,0.22202133,0){0.014513645,0.013444316,0.012140385};
-ST(0.017833823,0.17577258,0,0.014716796,0.17010542,0,0.020376181,0.170702,0){0.0042763177,0.0032674718,0.0040946903};
-ST(0.042179961,0.085826476,0,0.036893214,0.087210211,0,0.036897729,0.08183265,0){0.0092527823,0.0083992423,0.0080657189};
-ST(0.0065980308,0.2085645,0,0.0097873579,0.21453362,0,0.0043931952,0.21357915,0){0.0031103455,0.0033423208,0.0024813618};
-ST(0.042070498,0.080362737,0,0.042179961,0.085826476,0,0.036897729,0.08183265,0){0.0088504368,0.0092527823,0.0080657189};
-ST(0.083403881,0.18288957,0,0.088897881,0.18581252,0,0.083669222,0.1890156,0){0.016492804,0.01821991,0.017899958};
-ST(0.042474964,0.13846746,0,0.037124591,0.13989263,0,0.03712087,0.13446417,0){0.009157817,0.0080703973,0.0086041419};
-ST(0.042328752,0.13293246,0,0.042474964,0.13846746,0,0.03712087,0.13446417,0){0.009694753,0.009157817,0.0086041419};
-ST(0.067812422,0.25459576,0,0.061392472,0.25446647,0,0.064704731,0.24945193,0){0.015539601,0.014253572,0.014388857};
-ST(0.078113811,0.043235614,0,0.072627499,0.040727625,0,0.078343312,0.037688751,0){0.0107714,0.0098966022,0.010332889};
-ST(0.01086253,0.18415108,0,0.016690266,0.18191056,0,0.015545644,0.18763273,0){0.0037558824,0.0046373261,0.0048113533};
-ST(0.072627499,0.040727625,0,0.073594736,0.034812751,0,0.078343312,0.037688751,0){0.0098966022,0.0095709225,0.010332889};
-ST(0.083077166,0.089272145,0,0.077858227,0.092196475,0,0.078894228,0.085673269,0){0.016912942,0.016272399,0.015745314};
-ST(0.07060324,0.015557736,0,0.074170803,0.010670566,0,0.076551438,0.016154114,0){0.0082944052,0.008532082,0.0089261328};
-ST(0.089774267,0.010202707,0,0.09386735,0.014826529,0,0.087635132,0.015594151,0){0.010102056,0.010660697,0.010048385};
-ST(0.09386735,0.014826529,0,0.091018613,0.020305374,0,0.087635132,0.015594151,0){0.010660697,0.010601467,0.010048385};
-ST(0.085850588,0.12646039,0,0.087647844,0.13269091,0,0.082184623,0.13131431,0){0.018594654,0.018129897,0.017315387};
-ST(0.044326443,0.052673868,0,0.04393967,0.046787303,0,0.049081828,0.048821836,0){0.007208181,0.0067946488,0.0075751441};
-ST(0.078000839,0.18597742,0,0.072746524,0.18306742,0,0.077439796,0.17962153,0){0.016247188,0.014652211,0.014576515};
-ST(0.058794554,0.26817279,0,0.062978572,0.26385631,0,0.064295402,0.27015162,0){0.01180084,0.013699793,0.012021911};
-ST(0.067305062,0.2440339,0,0.070877084,0.24895303,0,0.064704731,0.24945193,0){0.013605878,0.015483539,0.014388857};
-ST(0.044326443,0.052673868,0,0.050004445,0.054274349,0,0.046279621,0.058429349,0){0.007208181,0.0080776129,0.0078696625};
-ST(0.050004445,0.054274349,0,0.044326443,0.052673868,0,0.049081828,0.048821836,0){0.0080776129,0.007208181,0.0075751441};
-ST(0.060981097,0.10625719,0,0.055404807,0.10282352,0,0.060554433,0.1007053,0){0.01403139,0.012784817,0.013673871};
-ST(0.094358182,0.044786011,0,0.08966753,0.048486622,0,0.088013761,0.043162337,0){0.012923485,0.012741374,0.011974352};
-ST(0.092021896,0.039287055,0,0.094358182,0.044786011,0,0.088013761,0.043162337,0){0.012081021,0.012923485,0.011974352};
-ST(0.073518975,0.084426062,0,0.078522353,0.080042605,0,0.078894228,0.085673269,0){0.014655813,0.015007077,0.015745314};
-ST(0.077226062,0.14082844,0,0.071665053,0.14281002,0,0.072358306,0.13696631,0){0.01474222,0.013390699,0.014637908};
-ST(0.049141897,0.29382693,0,0.052935715,0.28884082,0,0.05511543,0.29440677,0){0.010673071,0.0097788527,0.011904677};
-ST(0.07789134,0.13496254,0,0.077226062,0.14082844,0,0.072358306,0.13696631,0){0.015967895,0.01474222,0.014637908};
-ST(0.061245673,0.24452488,0,0.067305062,0.2440339,0,0.064704731,0.24945193,0){0.012669907,0.013605878,0.014388857};
-ST(0.043875453,0.15799271,0,0.04998761,0.15939724,0,0.045860229,0.163357,0){0.0061743039,0.0065496788,0.0059728166};
-ST(0.058567138,0.22596146,0,0.063624353,0.22254194,0,0.063977145,0.22848817,0){0.0079955342,0.0098145667,0.0073732166};
-ST(0.051467941,0.24632844,0,0.047977922,0.25174593,0,0.045900921,0.24626076,0){0.011312523,0.011417018,0.010275455};
-ST(0.032166514,0.1863502,0,0.031703323,0.19206661,0,0.026781154,0.18834116,0){0.0078219415,0.0081716788,0.0069809105};
-ST(0.031168111,0.086149637,0,0.025886934,0.08860133,0,0.026804876,0.082803766,0){0.0073174534,0.0064910537,0.0063784224};
-ST(0.083658535,0.076668132,0,0.082636182,0.070608246,0,0.088095049,0.072803473,0){0.015437813,0.014480965,0.015636506};
-ST(0.016765854,0.040249778,0,0.015246202,0.045764486,0,0.01153062,0.041448292,0){0.0031936572,0.0031524656,0.00259379};
-ST(0,0.083446083,0,0.0052564808,0.080270621,0,0.0048810442,0.085538046,0){0.0017416923,0.00259121,0.0026331542};
-ST(0.078000839,0.18597742,0,0.083669222,0.1890156,0,0.078432808,0.19155374,0){0.016247188,0.017899958,0.017267031};
-ST(0.017915306,0.017912514,0,0.023736508,0.016363017,0,0.021948797,0.021350207,0){0.0028989864,0.0034820269,0.0033695518};
-ST(0.08504359,0.22088839,0,0.082404782,0.22674486,0,0.079358983,0.22202133,0){0.013444316,0.010486323,0.012140385};
-ST(0.073017129,0.19015646,0,0.078000839,0.18597742,0,0.078432808,0.19155374,0){0.016031824,0.016247188,0.017267031};
-ST(0.031703323,0.19206661,0,0.026266704,0.19389286,0,0.026781154,0.18834116,0){0.0081716788,0.0071802403,0.0069809105};
-ST(0.023736508,0.016363017,0,0.027245934,0.021259063,0,0.021948797,0.021350207,0){0.0034820269,0.0039264931,0.0033695518};
-ST(0.023736508,0.016363017,0,0.017915306,0.017912514,0,0.01972947,0.013018635,0){0.0034820269,0.0028989864,0.0030334072};
-ST(0.073267771,0.076862877,0,0.072251719,0.070805738,0,0.077488341,0.073041111,0){0.01374781,0.01288041,0.013975013};
-ST(0.049081828,0.048821836,0,0.04393967,0.046787303,0,0.047793904,0.042940806,0){0.0075751441,0.0067946488,0.0070477847};
-ST(0.072746524,0.18306742,0,0.072198327,0.17708617,0,0.077439796,0.17962153,0){0.014652211,0.013008194,0.014576515};
-ST(0.073594736,0.034812751,0,0.078794748,0.031832626,0,0.078343312,0.037688751,0){0.0095709225,0.0099565426,0.010332889};
-ST(0.052903,0.044824368,0,0.049081828,0.048821836,0,0.047793904,0.042940806,0){0.0077922845,0.0075751441,0.0070477847};
-ST(0.049176801,0.15384163,0,0.04397778,0.15172209,0,0.047950771,0.14786323,0){0.0076766851,0.0073960532,0.0086642634};
-ST(0.059957664,0.27407069,0,0.058794554,0.26817279,0,0.064295402,0.27015162,0){0.0097471839,0.01180084,0.012021911};
-ST(0.053121914,0.14984683,0,0.049176801,0.15384163,0,0.047950771,0.14786323,0){0.0090412706,0.0076766851,0.0086642634};
-ST(0.031727435,0.080354054,0,0.031168111,0.086149637,0,0.026804876,0.082803766,0){0.0070919301,0.0073174534,0.0063784224};
-ST(0.083669222,0.1890156,0,0.082772947,0.19508151,0,0.078432808,0.19155374,0){0.017899958,0.018456454,0.017267031};
-ST(0.022183918,0.18487742,0,0.027586782,0.18282418,0,0.026781154,0.18834116,0){0.0058547995,0.0066297552,0.0069809105};
-ST(0.078522353,0.080042605,0,0.083812176,0.083170737,0,0.078894228,0.085673269,0){0.015007077,0.016304455,0.015745314};
-ST(0.027586782,0.18282418,0,0.032166514,0.1863502,0,0.026781154,0.18834116,0){0.0066297552,0.0078219415,0.0069809105};
-ST(0.02166044,0.19054668,0,0.022183918,0.18487742,0,0.026781154,0.18834116,0){0.006134172,0.0058547995,0.0069809105};
-ST(0.083309384,0.040170382,0,0.078113811,0.043235614,0,0.078343312,0.037688751,0){0.011126505,0.0107714,0.010332889};
-ST(0.0059669022,0.25108021,0,0.010704963,0.2547075,0,0.0053741268,0.25663281,0){0.003127184,0.0041360758,0.0030729489};
-ST(0.083812176,0.083170737,0,0.083077166,0.089272145,0,0.078894228,0.085673269,0){0.016304455,0.016912942,0.015745314};
-ST(0.0050703794,0.22750411,0,0.010057812,0.23068741,0,0.0049857357,0.23304427,0){0.0016282327,0.0022253758,0.0018422485};
-ST(0,0.23057917,0,0.0050703794,0.22750411,0,0.0049857357,0.23304427,0){0.0011094321,0.0016282327,0.0018422485};
-ST(0.010057812,0.23068741,0,0.014825475,0.22792118,0,0.014554238,0.23387563,0){0.0022253758,0.0025937878,0.003134429};
-ST(0.014825475,0.22792118,0,0.0193219,0.2311094,0,0.014554238,0.23387563,0){0.0025937878,0.0033259199,0.003134429};
-ST(0.026266704,0.19389286,0,0.02166044,0.19054668,0,0.026781154,0.18834116,0){0.0071802403,0.006134172,0.0069809105};
-};
diff --git a/tutorial/t1.geo b/tutorial/t1.geo
deleted file mode 100644
index 818d1276494e846858a51897104412746b15e308..0000000000000000000000000000000000000000
--- a/tutorial/t1.geo
+++ /dev/null
@@ -1,106 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 1
- * 
- *  Variables, Elementary entities (Points, Lines, Surfaces), Physical
- *  entities (Points, Lines, Surfaces), Background mesh
- *
- *********************************************************************/
-
-// All geometry description in Gmsh is made by means of a special
-// language (looking somewhat similar to C). The simplest construction
-// of this language is the 'affectation'. 
-
-// The following command (all commands end with a semi colon) defines
-// a variable called 'lc' and affects the value 0.007 to 'lc':
-
-lc = 0.007 ;
-
-// This newly created variable can be used to define the first Gmsh
-// elementary entity, a 'Point'. A Point is defined by a list of four
-// numbers: its three coordinates (x, y and z), and a characteristic
-// length which sets the target mesh size at the point:
-
-Point(1) = {0,  0,  0, 9.e-1 * lc} ;
-
-// The mesh size is defined as the length of the segments for lines,
-// the radii of the circumscribed circles for triangles and the radii
-// of the circumscribed spheres for tetrahedra, respectively. The
-// actual distribution of the mesh sizes is obtained by interpolation
-// of the characteristic lengths prescribed at the points. There are
-// also other possibilities to specify characteristic lengths:
-// attractors (see t7.geo) and background meshes (see bgmesh.pos).
-
-// As can be seen in the previous definition, more complex expressions
-// can be constructed from variables. Here, the product of the
-// variable 'lc' by the constant 9.e-1 is given as the fourth argument
-// of the list defining the point.
-//
-// The following general syntax rule is applied for the definition of
-// all geometrical entities:
-//
-//    "If a number defines a new entity, it is enclosed between
-//    parentheses. If a number refers to a previously defined entity,
-//    it is enclosed between braces."
-//
-// Three additional points are then defined:
-
-Point(2) = {.1, 0,  0, lc} ;
-Point(3) = {.1, .3, 0, lc} ;
-Point(4) = {0,  .3, 0, lc} ;
-
-// The second elementary geometrical entity in Gmsh is the
-// curve. Amongst curves, straight lines are the simplest. A straight
-// line is defined by a list of point numbers. For example, line 1
-// starts at point 1 and ends at point 2:
-
-Line(1) = {1,2} ;
-Line(2) = {3,2} ;
-Line(3) = {3,4} ;
-Line(4) = {4,1} ;
-
-// The third elementary entity is the surface. In order to define a
-// simple rectangular surface from the four lines defined above, a
-// line loop has first to be defined. A line loop is a list of
-// connected lines, a sign being associated with each line (depending
-// on the orientation of the line).
-
-Line Loop(5) = {4,1,-2,3} ;
-
-// The surface is then defined as a list of line loops (only one
-// here):
-
-Plane Surface(6) = {5} ;
-
-// At this level, Gmsh knows everything to display the rectangular
-// surface 6 and to mesh it. But a supplementary step is needed in
-// order to assign region numbers to the various elements in the mesh
-// (the points, the lines and the triangles discretizing points 1 to
-// 4, lines 1 to 4 and surface 6). This is achieved by the definition
-// of Physical entities. Physical entities will group elements
-// belonging to several elementary entities by giving them a common
-// number (a region number), and specifying their orientation.
-//
-// For example, the two points 1 and 2 can be grouped into the
-// physical entity 1:
-
-Physical Point(1) = {1,2} ;
-
-// Consequently, two punctual elements will be saved in the output
-// files, both with the region number 1. The mechanism is identical
-// for line or surface elements:
-
-Physical Line(10) = {1,2,4} ;
-Physical Surface(100) = {6} ;
-
-// All the line elements which will be created during the mesh of
-// lines 1, 2 and 4 will be saved in the output file with the region
-// number 10; and all the triangular elements resulting from the
-// discretization of surface 6 will be given the region number 100.
-
-// It is important to notice that only those elements which belong to
-// physical groups will be saved in the output file if the file format
-// is the msh format (the native mesh file format for Gmsh). For a
-// description of the mesh and post-processing formats, see the
-// FORMATS file.
-
diff --git a/tutorial/t2.geo b/tutorial/t2.geo
deleted file mode 100644
index 2284aa9b1a7dfb7c08cb084c367b682f18de7cbc..0000000000000000000000000000000000000000
--- a/tutorial/t2.geo
+++ /dev/null
@@ -1,86 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 2
- * 
- *  Includes, Geometrical transformations, Elementary entities
- *  (Volumes), Physical entities (Volumes)
- *
- *********************************************************************/
-
-// The first tutorial file will serve as a basis to construct this
-// one. It can be included with:
-
-Include "t1.geo" ;
-
-// There are several possibilities to build a more complex geometry
-// from the one previously defined in 't1.geo'.
-//
-// New points, lines and surfaces can first be directly defined in the
-// same way as in 't1.geo':
-
-Point(5) = {0, .4, 0, lc} ;
-Line(5) = {4, 5} ;
-
-// But Gmsh also provides geometrical transformation mechanisms to
-// move (translate, rotate, ...), add (translate, rotate, ...) or
-// extrude (translate, rotate) elementary geometrical entities. For
-// example, the point 3 can be moved by 0.05 units on the left with:
-
-Translate {-0.05,0,0} { Point{3} ; }
-
-// The resulting point can also be duplicated and translated by 0.1
-// along the y axis:
-
-Translate {0,0.1,0} { Duplicata{ Point{3} ; } }
-
-// Of course, translation, rotation and extrusion commands not only
-// apply to points, but also to lines and surfaces. The following
-// command extrudes surface 6 defined in 't1.geo', as well as a new
-// surface 11, along the z axis by 'h':
-
-h = 0.12 ;
-Extrude Surface { 6, {0, 0, h} } ;
-
-Line(7) = {3, 6} ; Line(8) = {6,5} ; Line Loop(10) = {5,-8,-7,3};
-
-Plane Surface(11) = {10};
-
-Extrude Surface { 11, {0, 0, h} } ;
-
-// All these geometrical transformations automatically generate new
-// elementary entities. The following commands permit to specify
-// manually a characteristic length for some of the automatically
-// created points:
-
-Characteristic Length{6,22,2,3,16,12} = lc * 3 ;
-
-// If the transformation tools are handy to create complex geometries,
-// it is sometimes useful to generate the flat geometry, consisting
-// only of the explicit list elementary entities. This can be achieved
-// by selecting the 'File->Save as->GEO flattened geometry' menu or 
-// by typing
-//
-// > gmsh t2.geo -0
-//
-// on the command line.
-
-// Volumes are the fourth type of elementary entities in Gmsh. In the
-// same way one defines line loops to build surfaces, one has to
-// define surface loops to build volumes. The following volumes are
-// very simple, without holes (and thus consist of only one surface
-// loop):
-
-Surface Loop(145) = {121,11,131,135,139,144};
-Volume(146) = {145};
-
-Surface Loop(146) = {121,6,109,113,117,122};
-Volume(147) = {146};
-
-// To save all volumic (tetrahedral) elements of volume 146 and 147
-// with the associate region number 1, a Physical Volume must be
-// defined:
-
-Physical Volume (1) = {146,147} ;
-
-// Congratulations! You've created your first fully unstructured
-// tetrahedral 3D mesh!
diff --git a/tutorial/t3.geo b/tutorial/t3.geo
deleted file mode 100644
index d0ec626bc05463a77effbb4048f6b18bb8b64ac3..0000000000000000000000000000000000000000
--- a/tutorial/t3.geo
+++ /dev/null
@@ -1,71 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 3
- * 
- *  Extruded meshes, Options
- *
- *********************************************************************/
-
-// Again, the first tutorial example is included:
-
-Include "t1.geo" ;
-
-// As in 't2.geo', an extrusion along the z axis will be performed:
-
-h = 0.1 ;
-
-// But contrary to 't2.geo', not only the geometry will be extruded,
-// but also the 2D mesh. This is done with the same Extrude command,
-// but by specifying the number of layers (here, there will be four
-// layers, of respectively 8, 4, 2 and 1 elements in depth), with
-// volume numbers 9000 to 9003 and respective heights equal to h/4:
-
-Extrude Surface { 6, {0,0,h} } { 
-  Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} } ; 
-} ;
-
-// The extrusion can also be combined with a rotation, and the
-// extruded 3D mesh can be recombined into prisms (wedges). All
-// rotations are specified by an axis direction ({0,1,0}), an axis
-// point ({0,0,0}) and a rotation angle (Pi/2):
-
-Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { 
-  Recombine ; Layers { 7, 9004, 1 } ; 
-};
-
-Physical Volume(101) = {9000:9004};
-
-// All interactive options can also be set directly in the input file.
-// For example, the following lines define a global characteristic
-// length factor, redefine some background colors, disable the display
-// of the axes, and select an initial viewpoint in XYZ mode (disabling
-// the interactive trackball-like rotation mode):
-
-Mesh.CharacteristicLengthFactor = 4;
-General.Color.Background = {120,120,120};
-General.Color.Foreground = {255,255,255};
-General.Color.Text = White;
-Geometry.Color.Points = Orange;
-General.Axes = 0;
-General.Trackball = 0;
-General.RotationX = 10;
-General.RotationY = 70;
-General.TranslationX = -0.1;
-
-// Note: all colors can be defined literally or numerically, i.e.
-// 'General.Color.Background = Red' is equivalent to
-// 'General.Color.Background = {255,0,0}'. As with user-defined
-// variables, the options can be used either as right hand or left
-// hand sides, so that
-
-Geometry.Color.Surfaces = Geometry.Color.Points;
-
-// will assign the color of the surfaces in the geometry to the same
-// color as the points.
-
-// A click on the '?'  button in the status bar of the graphic window
-// will dump all current options to the terminal. To save all
-// available options to a file, use the 'File->Save as->GEO complete
-// options' menu. To save the current options as the default options
-// for all future Gmsh sessions, use the 'Options->Save options now'
-// menu.
diff --git a/tutorial/t4.geo b/tutorial/t4.geo
deleted file mode 100644
index c03610acc556d1a640cc36954c4f479f317e8f3c..0000000000000000000000000000000000000000
--- a/tutorial/t4.geo
+++ /dev/null
@@ -1,144 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 4
- * 
- *  Built-in functions, Holes
- *
- *********************************************************************/
-
-cm = 1e-02 ;
-
-e1 = 4.5*cm ; e2 = 6*cm / 2 ; e3 =  5*cm / 2 ;
-
-h1 = 5*cm ; h2 = 10*cm ; h3 = 5*cm ; h4 = 2*cm ; h5 = 4.5*cm ;
-
-R1 = 1*cm ; R2 = 1.5*cm ; r = 1*cm ;
-
-ccos = ( -h5*R1 + e2 * Hypot(h5,Hypot(e2,R1)) ) / (h5^2 + e2^2) ;
-ssin = Sqrt(1-ccos^2) ;
-
-Lc1 = 0.01 ;
-Lc2 = 0.003 ;
-
-// A whole set of operators can be used, which can be combined in all
-// the expressions. These operators are defined in a similar way to
-// their C or C++ equivalents (with the exception of '^'):
-//
-//   '-' (in both unary and binary versions, i.e. as in '-1' and '1-2')
-//   '!' (the negation)
-//   '+'
-//   '*'
-//   '/'
-//   '%' (the rest of the integer division)
-//   '<'
-//   '>'
-//   '<='
-//   '>='
-//   '=='
-//   '!='
-//   '&&' (and)
-//   '||' (or)
-//   '||' (or)
-//   '^' (power)
-//   '?' ':' (the ternary operator)
-//
-// Grouping is done, as usual, with parentheses.
-//
-// In addition to these operators, all C mathematical functions can
-// also be used (note the first capital letter):
-// 
-//   Exp(x)
-//   Log(x)
-//   Log10(x)
-//   Sqrt(x)
-//   Sin(x)
-//   Asin(x)
-//   Cos(x)
-//   Acos(x)
-//   Tan(x)
-//   Atan(x)
-//   Atan2(x,y)
-//   Sinh(x)
-//   Cosh(x)
-//   Tanh(x)
-//   Fabs(x)
-//   Floor(x)
-//   Ceil(x)
-//   Fmod(x,y)
-//   Hypot(x,y)
-
-// An additional function 'Rand(x)' generates a random number in [0,x]
-//
-//   Rand(x)
-//
-// The only predefined constant in Gmsh is Pi.
-
-Point(1) = { -e1-e2, 0.0  , 0.0 , Lc1};
-Point(2) = { -e1-e2, h1   , 0.0 , Lc1};
-Point(3) = { -e3-r , h1   , 0.0 , Lc2};
-Point(4) = { -e3-r , h1+r , 0.0 , Lc2};
-Point(5) = { -e3   , h1+r , 0.0 , Lc2};
-Point(6) = { -e3   , h1+h2, 0.0 , Lc1};
-Point(7) = {  e3   , h1+h2, 0.0 , Lc1};
-Point(8) = {  e3   , h1+r , 0.0 , Lc2};
-Point(9) = {  e3+r , h1+r , 0.0 , Lc2};
-Point(10)= {  e3+r , h1   , 0.0 , Lc2};
-Point(11)= {  e1+e2, h1   , 0.0 , Lc1};
-Point(12)= {  e1+e2, 0.0  , 0.0 , Lc1};
-Point(13)= {  e2   , 0.0  , 0.0 , Lc1};
-
-Point(14)= {  R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(15)= {  0.0       , h5        , 0.0 , Lc2};
-Point(16)= { -R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(17)= { -e2        , 0.0       , 0.0 , Lc1};
-
-Point(18)= { -R2  , h1+h3   , 0.0 , Lc2};
-Point(19)= { -R2  , h1+h3+h4, 0.0 , Lc2};
-Point(20)= {  0.0 , h1+h3+h4, 0.0 , Lc2};
-Point(21)= {  R2  , h1+h3+h4, 0.0 , Lc2};
-Point(22)= {  R2  , h1+h3   , 0.0 , Lc2};
-Point(23)= {  0.0 , h1+h3   , 0.0 , Lc2};
-
-Point(24)= {  0 , h1+h3+h4+R2, 0.0 , Lc2};
-Point(25)= {  0 , h1+h3-R2,    0.0 , Lc2};
-
-Line(1)  = {1 ,17};
-Line(2)  = {17,16};
-
-// All curves are not straight lines... Circles are defined by a list
-// of three point numbers, which represent the starting point, the
-// center and the end point, respectively. All circles have to be
-// defined in the trigonometric (counter-clockwise) sense.  Note that
-// the 3 points should not be aligned (otherwise the plane in which
-// the circle lies has to be defined, by 'Circle(num) =
-// {start,center,end} Plane {nx,ny,nz}').
-
-Circle(3) = {14,15,16};
-Line(4)  = {14,13};
-Line(5)  = {13,12};
-Line(6)  = {12,11};
-Line(7)  = {11,10};
-Circle(8) = { 8, 9,10};
-Line(9)  = { 8, 7};
-Line(10) = { 7, 6};
-Line(11) = { 6, 5};
-Circle(12) = { 3, 4, 5};
-Line(13) = { 3, 2};
-Line(14) = { 2, 1};
-Line(15) = {18,19};
-Circle(16) = {21,20,24};
-Circle(17) = {24,20,19};
-Circle(18) = {18,23,25};
-Circle(19) = {25,23,22};
-Line(20) = {21,22};
-
-Line Loop(21) = {17,-15,18,19,-20,16};
-Plane Surface(22) = {21};
-
-// The surface is made of two line loops, i.e. it has one hole:
-
-Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10};
-Plane Surface(24) = {23,21};
-
-Physical Surface(1) = {22};
-Physical Surface(2) = {24};
diff --git a/tutorial/t5.geo b/tutorial/t5.geo
deleted file mode 100644
index d29929551b92d2528a86caa6b2c0ac53d736d108..0000000000000000000000000000000000000000
--- a/tutorial/t5.geo
+++ /dev/null
@@ -1,170 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 5
- * 
- *  Characteristic lengths, Arrays of variables, Functions, Loops
- *
- *********************************************************************/
-
-// This defines some characteristic lengths:
-
-lcar1 = .1;
-lcar2 = .0005;
-lcar3 = .075;
-
-// In order to change these lengths globally (without changing the
-// file), a global scaling factor for all characteristic lengths can
-// be specified on the command line with the option '-clscale'. For
-// example, with:
-//
-// > gmsh t5 -clscale 1
-//
-// this example produces a mesh of approximately 2000 nodes and
-// 10,000 tetrahedra (in 3 seconds on an alpha workstation running at
-// 666MHz). With 
-//
-// > gmsh t5 -clscale 0.2
-//
-// (i.e. with all characteristic lengths divided by 5), the mesh
-// counts approximately 170,000 nodes and one million tetrahedra
-// (and the computation takes 16 minutes on the same machine :-( So
-// there is still a lot of work to do to achieve decent performance
-// with Gmsh...)
-
-Point(1) = {0.5,0.5,0.5,lcar2}; Point(2) = {0.5,0.5,0,lcar1};
-Point(3) = {0,0.5,0.5,lcar1};   Point(4) = {0,0,0.5,lcar1}; 
-Point(5) = {0.5,0,0.5,lcar1};   Point(6) = {0.5,0,0,lcar1};
-Point(7) = {0,0.5,0,lcar1};     Point(8) = {0,1,0,lcar1};
-Point(9) = {1,1,0,lcar1};       Point(10) = {0,0,1,lcar1};
-Point(11) = {0,1,1,lcar1};      Point(12) = {1,1,1,lcar1};
-Point(13) = {1,0,1,lcar1};      Point(14) = {1,0,0,lcar1};
-
-Line(1) = {8,9};    Line(2) = {9,12};  Line(3) = {12,11};
-Line(4) = {11,8};   Line(5) = {9,14};  Line(6) = {14,13};
-Line(7) = {13,12};  Line(8) = {11,10}; Line(9) = {10,13};
-Line(10) = {10,4};  Line(11) = {4,5};  Line(12) = {5,6};
-Line(13) = {6,2};   Line(14) = {2,1};  Line(15) = {1,3};
-Line(16) = {3,7};   Line(17) = {7,2};  Line(18) = {3,4};
-Line(19) = {5,1};   Line(20) = {7,8};  Line(21) = {6,14};
-
-Line Loop(22) = {11,19,15,18};       Plane Surface(23) = {22};
-Line Loop(24) = {16,17,14,15};       Plane Surface(25) = {24};
-Line Loop(26) = {-17,20,1,5,-21,13}; Plane Surface(27) = {26};
-Line Loop(28) = {4,1,2,3};           Plane Surface(29) = {28};
-Line Loop(30) = {7,-2,5,6};          Plane Surface(31) = {30};
-Line Loop(32) = {6,-9,10,11,12,21};  Plane Surface(33) = {32};
-Line Loop(34) = {7,3,8,9};           Plane Surface(35) = {34};
-Line Loop(36) = {10,-18,16,20,-4,8}; Plane Surface(37) = {36};
-Line Loop(38) = {-14,-13,-12,19};    Plane Surface(39) = {38};
-
-// Instead of using included files, one can also define functions. In
-// the following function, the reserved variable 'newp' is used, which
-// automatically selects a new point number. This number is chosen as
-// the highest current point number, plus one. Analogously to 'newp',
-// there exists a variable 'newreg' which selects the highest number
-// of all entities other than points, plus one.
-
-// Note: there are no local variables. This will be changed in a
-// future version of Gmsh.
-
-Function CheeseHole 
-
-  p1 = newp; Point(p1) = {x,  y,  z,  lcar3} ;
-  p2 = newp; Point(p2) = {x+r,y,  z,  lcar3} ;
-  p3 = newp; Point(p3) = {x,  y+r,z,  lcar3} ;
-  p4 = newp; Point(p4) = {x,  y,  z+r,lcar3} ;
-  p5 = newp; Point(p5) = {x-r,y,  z,  lcar3} ;
-  p6 = newp; Point(p6) = {x,  y-r,z,  lcar3} ;
-  p7 = newp; Point(p7) = {x,  y,  z-r,lcar3} ;
-
-  c1 = newreg; Circle(c1) = {p2,p1,p7};
-  c2 = newreg; Circle(c2) = {p7,p1,p5};
-  c3 = newreg; Circle(c3) = {p5,p1,p4};
-  c4 = newreg; Circle(c4) = {p4,p1,p2};
-  c5 = newreg; Circle(c5) = {p2,p1,p3};
-  c6 = newreg; Circle(c6) = {p3,p1,p5};
-  c7 = newreg; Circle(c7) = {p5,p1,p6};
-  c8 = newreg; Circle(c8) = {p6,p1,p2};
-  c9 = newreg; Circle(c9) = {p7,p1,p3};
-  c10 = newreg; Circle(c10) = {p3,p1,p4};
-  c11 = newreg; Circle(c11) = {p4,p1,p6};
-  c12 = newreg; Circle(c12) = {p6,p1,p7};
-
-// All surfaces are not plane... Here is the way to define ruled
-// surfaces (which have 3 or 4 borders):
-
-  l1 = newreg; Line Loop(l1) = {c5,c10,c4};   Ruled Surface(newreg) = {l1};
-  l2 = newreg; Line Loop(l2) = {c9,-c5,c1};   Ruled Surface(newreg) = {l2};
-  l3 = newreg; Line Loop(l3) = {-c12,c8,c1};  Ruled Surface(newreg) = {l3};
-  l4 = newreg; Line Loop(l4) = {c8,-c4,c11};  Ruled Surface(newreg) = {l4};
-  l5 = newreg; Line Loop(l5) = {-c10,c6,c3};  Ruled Surface(newreg) = {l5};
-  l6 = newreg; Line Loop(l6) = {-c11,-c3,c7}; Ruled Surface(newreg) = {l6};
-  l7 = newreg; Line Loop(l7) = {c2,c7,c12};   Ruled Surface(newreg) = {l7};
-  l8 = newreg; Line Loop(l8) = {-c6,-c9,c2};  Ruled Surface(newreg) = {l8};
-
-// Arrays of variables can be manipulated in the same way as classical
-// variables. Warning: accessing an uninitialized element in an array
-// will produce an unpredictable result. Note that whole arrays can
-// also be instantly initialized (e.g. l[]={1,2,7} is valid).
-
-  theloops[t] = newreg ; 
-
-  Surface Loop(theloops[t]) = {l8+1, l5+1, l1+1, l2+1, -(l3+1), -(l7+1), l6+1, l4+1};
-
-  thehole = newreg ; 
-  Volume(thehole) = theloops[t] ;
-
-Return
-
-
-x = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ;
-
-// A For loop is used to generate five holes in the cube:
-
-For t In {1:5}
-
-  x += 0.166 ; 
-  z += 0.166 ; 
-
-// This command calls the function CheeseHole. Note that, instead of
-// defining a function, we could have defined a file containing the
-// same code, and used the Include command to include this file.
-
-  Call CheeseHole ;
-
-// A physical volume is defined for each cheese hole
-
-  Physical Volume (t) = thehole ;
- 
-// The Printf function permits to print the value of variables on the
-// terminal, in a way similar to the 'printf' C function:
-
-  Printf("The cheese hole %g (center = {%g,%g,%g}, radius = %g) has number %g!",
-	 t, x, y, z, r, thehole) ;
-
-// Note: All Gmsh variables are treated internally as double precision
-// numbers. The format string should thus only contain valid double
-// precision number format specifiers (see the C or C++ language
-// reference for more details).
-
-EndFor
-
-// This is the surface loop for the exterior surface of the cube:
-
-theloops[0] = newreg ;
-
-Surface Loop(theloops[0]) = {35,31,29,37,33,23,39,25,27} ;
-
-// The volume of the cube, without the 5 cheese holes, is defined by 6
-// surface loops (the exterior surface and the five interior loops).
-// To reference an array of variables, its identifier is followed by
-// '[]':
-
-Volume(186) = {theloops[]} ;
-
-// This physical volume assigns the region number 10 to the tetrahedra
-// paving the cube (but not the holes, whose elements were tagged from
-// 1 to 5 in the 'For' loop)
-
-Physical Volume (10) = 186 ;
-
diff --git a/tutorial/t6.geo b/tutorial/t6.geo
deleted file mode 100644
index 8396da920aa4613758353efc774c57718656dd1c..0000000000000000000000000000000000000000
--- a/tutorial/t6.geo
+++ /dev/null
@@ -1,240 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 6
- * 
- *  Transfinite meshes
- *
- *********************************************************************/
-
-r_int  = 0.05 ;
-r_ext  = 0.051 ;
-r_far  = 0.125 ;
-r_inf  = 0.4 ;
-phi1   = 30. * (Pi/180.) ;
-angl   = 45. * (Pi/180.) ;
-
-nbpt_phi   = 5 ; nbpt_int   = 20 ;
-nbpt_arc1  = 10 ; nbpt_arc2  = 10 ;
-nbpt_shell = 10 ; nbpt_far   = 25 ; nbpt_inf = 15 ;
-
-lc0 = 0.1 ; lc1 = 0.1 ; lc2 = 0.3 ;
-
-Point(1) = {0,     0, 0, lc0} ;
-Point(2) = {r_int, 0, 0, lc0} ;
-Point(3) = {r_ext, 0, 0, lc1} ;
-Point(4) = {r_far, 0, 0, lc2} ;
-Point(5) = {r_inf, 0, 0, lc2} ;
-Point(6) = {0, 0,  r_int, lc0} ;
-Point(7) = {0, 0,  r_ext, lc1} ;
-Point(8) = {0, 0,  r_far, lc2} ;
-Point(9) = {0, 0,  r_inf, lc2} ;
-
-Point(10) = {r_int*Cos(phi1), r_int*Sin(phi1), 0, lc0} ;
-Point(11) = {r_ext*Cos(phi1), r_ext*Sin(phi1), 0, lc1} ;
-Point(12) = {r_far*Cos(phi1), r_far*Sin(phi1), 0, lc2} ;
-Point(13) = {r_inf*Cos(phi1), r_inf*Sin(phi1), 0, lc2} ;
-
-Point(14) = {r_int/2,           0,   0,               lc2} ;
-Point(15) = {r_int/2*Cos(phi1), r_int/2*Sin(phi1), 0, lc2} ;
-Point(16) = {r_int/2,           0,                 r_int/2, lc2} ;
-Point(17) = {r_int/2*Cos(phi1), r_int/2*Sin(phi1), r_int/2, lc2} ;
-Point(18) = {0, 0,  r_int/2, lc2} ;
-Point(19) = {r_int*Cos(angl),           0,                         r_int*Sin(angl), lc2} ;
-Point(20) = {r_int*Cos(angl)*Cos(phi1), r_int*Cos(angl)*Sin(phi1), r_int*Sin(angl), lc2} ;
-Point(21) = {r_ext*Cos(angl),           0,                         r_ext*Sin(angl), lc2} ;
-Point(22) = {r_ext*Cos(angl)*Cos(phi1), r_ext*Cos(angl)*Sin(phi1), r_ext*Sin(angl), lc2} ;
-Point(23) = {r_far*Cos(angl),           0,                         r_far*Sin(angl), lc2} ;
-Point(24) = {r_far*Cos(angl)*Cos(phi1), r_far*Cos(angl)*Sin(phi1), r_far*Sin(angl), lc2} ;
-Point(25) = {r_inf,           0,                r_inf, lc2} ;
-Point(26) = {r_inf*Cos(phi1), r_inf*Sin(phi1),  r_inf, lc2} ;
-
-Circle(1) = {2,1,19};   Circle(2) = {19,1,6};   Circle(3) = {3,1,21};
-Circle(4) = {21,1,7};   Circle(5) = {4,1,23};   Circle(6) = {23,1,8};   
-Line(7) = {5,25};   Line(8) = {25,9};
-Circle(9) = {10,1,20};  Circle(10) = {20,1,6};  Circle(11) = {11,1,22};
-Circle(12) = {22,1,7};  Circle(13) = {12,1,24}; Circle(14) = {24,1,8};
-Line(15) = {13,26}; Line(16) = {26,9};
-Circle(17) = {19,1,20}; Circle(18) = {21,1,22}; Circle(19) = {23,1,24};
-Circle(20) = {25,1,26}; Circle(21) = {2,1,10};  Circle(22) = {3,1,11};  
-Circle(23) = {4,1,12};  Circle(24) = {5,1,13};
-
-Line(25) = {1,14};  Line(26) = {14,2};  Line(27) = {2,3};   Line(28) = {3,4};
-Line(29) = {4,5};   Line(30) = {1,15};  Line(31) = {15,10}; Line(32) = {10,11};
-Line(33) = {11,12}; Line(34) = {12,13}; Line(35) = {14,15}; Line(36) = {14,16};
-Line(37) = {15,17}; Line(38) = {16,17}; Line(39) = {18,16}; Line(40) = {18,17};
-Line(41) = {1,18};  Line(42) = {18,6};  Line(43) = {6,7};   Line(44) = {16,19};
-Line(45) = {19,21}; Line(46) = {21,23}; Line(47) = {23,25}; Line(48) = {17,20};
-Line(49) = {20,22}; Line(50) = {22,24}; Line(51) = {24,26}; Line(52) = {7,8};
-Line(53) = {8,9};
-
-Line Loop(54) = {39,-36,-25,41};  Ruled Surface(55) = {54};
-Line Loop(56) = {44,-1,-26,36};   Ruled Surface(57) = {56};
-Line Loop(58) = {3,-45,-1,27};    Ruled Surface(59) = {58};
-Line Loop(60) = {5,-46,-3,28};    Ruled Surface(61) = {60};
-Line Loop(62) = {7,-47,-5,29};    Ruled Surface(63) = {62};
-Line Loop(64) = {-2,-44,-39,42};  Ruled Surface(65) = {64};
-Line Loop(66) = {-4,-45,2,43};    Ruled Surface(67) = {66};
-Line Loop(68) = {-6,-46,4,52};    Ruled Surface(69) = {68};
-Line Loop(70) = {-8,-47,6,53};    Ruled Surface(71) = {70};
-Line Loop(72) = {-40,-41,30,37};  Ruled Surface(73) = {72};
-Line Loop(74) = {48,-9,-31,37};   Ruled Surface(75) = {74};
-Line Loop(76) = {49,-11,-32,9};   Ruled Surface(77) = {76};
-Line Loop(78) = {-50,-11,33,13};  Ruled Surface(79) = {78};
-Line Loop(80) = {-51,-13,34,15};  Ruled Surface(81) = {80};
-Line Loop(82) = {10,-42,40,48};   Ruled Surface(83) = {82};
-Line Loop(84) = {12,-43,-10,49};  Ruled Surface(85) = {84};
-Line Loop(86) = {14,-52,-12,50};  Ruled Surface(87) = {86};
-Line Loop(88) = {16,-53,-14,51};  Ruled Surface(89) = {88};
-Line Loop(90) = {-30,25,35};      Ruled Surface(91) = {90};
-Line Loop(92) = {-40,39,38};      Ruled Surface(93) = {92};
-Line Loop(94) = {37,-38,-36,35};  Ruled Surface(95) = {94};
-Line Loop(96) = {-48,-38,44,17};  Ruled Surface(97) = {96};
-Line Loop(98) = {18,-49,-17,45};  Ruled Surface(99) = {98};
-Line Loop(100) = {19,-50,-18,46}; Ruled Surface(101) = {100};
-Line Loop(102) = {20,-51,-19,47}; Ruled Surface(103) = {102};
-Line Loop(104) = {-2,17,10};      Ruled Surface(105) = {104};
-Line Loop(106) = {-9,-21,1,17};   Ruled Surface(107) = {106};
-Line Loop(108) = {-4,18,12};      Ruled Surface(109) = {108};
-Line Loop(110) = {-11,-22,3,18};  Ruled Surface(111) = {110};
-Line Loop(112) = {-13,-23,5,19};  Ruled Surface(113) = {112};
-Line Loop(114) = {-6,19,14};      Ruled Surface(115) = {114};
-Line Loop(116) = {-15,-24,7,20};  Ruled Surface(117) = {116};
-Line Loop(118) = {-8,20,16};      Ruled Surface(119) = {118};
-Line Loop(120) = {-31,-35,26,21}; Ruled Surface(121) = {120};
-Line Loop(122) = {32,-22,-27,21}; Ruled Surface(123) = {122};
-Line Loop(124) = {33,-23,-28,22}; Ruled Surface(125) = {124};
-Line Loop(126) = {34,-24,-29,23}; Ruled Surface(127) = {126};
-
-Surface Loop(128) = {93,-73,-55,95,-91};         Volume(129) = {128}; // int
-Surface Loop(130) = {107,-75,-97,95,57,121};     Volume(131) = {130}; // int b
-Surface Loop(132) = {105,-65,-97,-83,-93};       Volume(133) = {132}; // int h
-Surface Loop(134) = {99,-111,77,123,59,107};     Volume(135) = {134}; // shell b
-Surface Loop(136) = {99,-109,67,105,85};         Volume(137) = {136}; // shell h
-Surface Loop(138) = {113,79,-101,-111,-125,-61}; Volume(139) = {138}; // ext b
-Surface Loop(140) = {115,-69,-101,-87,-109};     Volume(141) = {140}; // ext h
-Surface Loop(142) = {103,-117,-81,113,127,63};   Volume(143) = {142}; // inf b
-Surface Loop(144) = {89,-119,71,103,115};        Volume(145) = {144}; // inf h
-
-// Transfinite line commands explicitly specify the number of points
-// and their distribution. A minus sign in the argument list of the
-// transfinite command will produce the reversed mesh.
-
-Transfinite Line{35,21,22,23,24,38,17,18,19,20}   = nbpt_phi ;
-Transfinite Line{31,26,48,44,42}                  = nbpt_int Using Progression 0.95;
-Transfinite Line{41,37,36,9,11,1,3,13,5,15,7}     = nbpt_arc1 ;
-Transfinite Line{30,25,40,39,10,2,12,4,14,6,16,8} = nbpt_arc2 ;
-Transfinite Line{32,27,49,45,43}                  = nbpt_shell ;
-Transfinite Line{33,28,46,50,52}                  = nbpt_far Using Progression 1.05 ;
-Transfinite Line{34,29,51,47,53}                  = nbpt_inf Using Progression 0.01;
-
-// *All* 2D and 3D transfinite entities are defined in respect to
-// points. The ordering of the points defines the ordering of the mesh
-// elements.
-
-Transfinite Surface{55} = {1,14,16,18};
-Transfinite Surface{57} = {14,2,19,16};
-Transfinite Surface{59} = {2,3,21,19};
-Transfinite Surface{61} = {3,4,23,21};
-Transfinite Surface{63} = {4,5,25,23};
-Transfinite Surface{73} = {1,15,17,18};
-Transfinite Surface{75} = {15,10,20,17};
-Transfinite Surface{77} = {10,11,22,20};
-Transfinite Surface{79} = {11,12,24,22};
-Transfinite Surface{81} = {12,13,26,24};
-Transfinite Surface{65} = {18,16,19,6};
-Transfinite Surface{67} = {6,19,21,7};
-Transfinite Surface{69} = {7,21,23,8};
-Transfinite Surface{71} = {8,23,25,9};
-Transfinite Surface{83} = {17,18,6,20};
-Transfinite Surface{85} = {20,6,7,22};
-Transfinite Surface{87} = {22,7,8,24};
-Transfinite Surface{89} = {24,8,9,26};
-Transfinite Surface{91} = {1,14,15};
-Transfinite Surface{95} = {15,14,16,17};
-Transfinite Surface{93} = {18,16,17};
-Transfinite Surface{121} = {15,14,2,10};
-Transfinite Surface{97} = {17,16,19,20};
-Transfinite Surface{123} = {10,2,3,11};
-Transfinite Surface{99} = {20,19,21,22};
-Transfinite Surface{107} = {10,2,19,20};
-Transfinite Surface{105} = {6,20,19};
-Transfinite Surface{109} = {7,22,21};
-Transfinite Surface{111} = {11,3,21,22};
-Transfinite Surface{101} = {22,21,23,24};
-Transfinite Surface{125} = {11,3,4,12};
-Transfinite Surface{115} = {8,24,23};
-Transfinite Surface{113} = {24,12,4,23};
-Transfinite Surface{127} = {12,13,5,4};
-Transfinite Surface{103} = {24,23,25,26};
-Transfinite Surface{119} = {9,26,25};
-Transfinite Surface{117} = {13,5,25,26};
-
-// As with Extruded meshes, the Recombine command tells Gmsh to
-// recombine the simplices into quadrangles, prisms or hexahedra when
-// possible. A colon in a list acts as in the 'For' loop: all surfaces
-// having numbers between 55 and 127 are considered.
-
-Recombine Surface {55:127};
-
-// *All* 2D and 3D transfinite entities are defined in respect to
-// points. The ordering of the points defines the ordering of the mesh
-// elements.
-
-Transfinite Volume{129} = {1,14,15,18,16,17};
-Transfinite Volume{131} = {17,16,14,15,20,19,2,10};
-Transfinite Volume{133} = {18,17,16,6,20,19};
-Transfinite Volume{135} = {10,2,19,20,11,3,21,22};
-Transfinite Volume{137} = {6,20,19,7,22,21};
-Transfinite Volume{139} = {11,3,4,12,22,21,23,24};
-Transfinite Volume{141} = {7,22,21,8,24,23};
-Transfinite Volume{143} = {12,4,5,13,24,23,25,26};
-Transfinite Volume{145} = {8,24,23,9,26,25};
-
-VolInt           = 1000 ;
-SurfIntPhi0      = 1001 ;
-SurfIntPhi1      = 1002 ;
-SurfIntZ0        = 1003 ;
-
-VolShell         = 2000 ;
-SurfShellInt     = 2001 ;
-SurfShellExt     = 2002 ;
-SurfShellPhi0    = 2003 ;
-SurfShellPhi1    = 2004 ;
-SurfShellZ0      = 2005 ;
-LineShellIntPhi0 = 2006 ;
-LineShellIntPhi1 = 2007 ;
-LineShellIntZ0   = 2008 ;
-PointShellInt    = 2009 ;
-
-VolExt           = 3000 ;
-VolInf           = 3001 ;
-SurfInf          = 3002 ;
-SurfExtInfPhi0   = 3003 ;
-SurfExtInfPhi1   = 3004 ;
-SurfExtInfZ0     = 3005 ;
-SurfInfRight     = 3006 ;
-SurfInfTop       = 3007 ;
-
-Physical Volume  (VolInt)           = {129,131,133} ;
-Physical Surface (SurfIntPhi0)      = {55,57,65} ;
-Physical Surface (SurfIntPhi1)      = {73,75,83} ;
-Physical Surface (SurfIntZ0)        = {91,121} ;
-
-Physical Volume  (VolShell)         = {135,137} ;
-Physical Surface (SurfShellInt)     = {105,107} ;
-Physical Surface (SurfShellExt)     = {109,111} ;
-Physical Surface (SurfShellPhi0)    = {59,67} ;
-Physical Surface (SurfShellPhi1)    = {77,85} ;
-Physical Surface (SurfShellZ0)      = {123} ;
-Physical Line    (LineShellIntPhi0) = {1,2} ;
-Physical Line    (LineShellIntPhi1) = {9,10} ;
-Physical Line    (LineShellIntZ0)   = 21 ;
-Physical Point   (PointShellInt)    = 6 ;
-
-Physical Volume  (VolExt)           = {139,141} ;
-Physical Volume  (VolInf)           = {143,145} ;
-Physical Surface (SurfExtInfPhi0)   = {61,63,69,71} ;
-Physical Surface (SurfExtInfPhi1)   = {79,87,81,89} ;
-Physical Surface (SurfExtInfZ0)     = {125,127} ;
-Physical Surface (SurfInfRight)     = {117} ;
-Physical Surface (SurfInfTop)       = {119} ;
diff --git a/tutorial/t7.geo b/tutorial/t7.geo
deleted file mode 100644
index fba2dadcd7e5c0499f10577274682895b02e3ee6..0000000000000000000000000000000000000000
--- a/tutorial/t7.geo
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 7
- * 
- *  Anisotropic meshes, Attractors
- *
- *********************************************************************/
-
-// The new anisotropic 2D mesh generator can be selected with:
-
-Mesh.Algorithm = 2 ;
-
-// One can force a 4 step Laplacian smoothing of the mesh with:
-
-Mesh.Smoothing = 4 ;
-
-lc = .1;
-
-Point(1) = {0.0,0.0,0,lc};
-Point(2) = {1,0.0,0,lc};
-Point(3) = {1,1,0,lc};
-Point(4) = {0,1,0,lc};
-
-Line(1) = {3,2};
-Line(2) = {2,1};
-Line(3) = {1,4};
-Line(4) = {4,3};
-
-Line Loop(5) = {1,2,3,4};
-Plane Surface(6) = {5};
-
-Point(5) = {0.1,0.2,0,lc};
-Point(11) = {0.5,0.5,-1,lc};
-Point(22) = {0.6,0.6,1,lc};
-
-Line(5) = {11,22};
-
-// Anisotropic attractors can be defined on points and lines:
-
-Attractor Line{5} = {.1, 0.01, 17};
-
-Attractor Line{1,2} = {0.1, 0.005, 3};
diff --git a/tutorial/t8.geo b/tutorial/t8.geo
deleted file mode 100644
index fe7dff2cf382f5ef2c1774b70e3f8faf2c073c39..0000000000000000000000000000000000000000
--- a/tutorial/t8.geo
+++ /dev/null
@@ -1,109 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 8
- * 
- *  Post-Processing, Scripting, Animations, Options
- *
- *********************************************************************/
-
-// The first example is included, as well as two post-processing maps
-// (for the format of the post-processing maps, see the FORMATS file):
-
-Include "t1.geo" ;
-Include "view1.pos" ;
-Include "view1.pos" ;
-
-// Some general options are set (all the options specified
-// interactively can be directly specified in the ascii input
-// files. The current options can be saved into a file by selecting
-// 'File->Save as->GEO complete options')...
-
-General.Trackball = 0 ;
-General.RotationX = 0 ;
-General.RotationY = 0 ;
-General.RotationZ = 0 ;
-General.Color.Background = White ;
-General.Color.Text = Black ;
-General.Orthographic = 0 ;
-General.Axes = 0 ;
-
-// ...as well as some options for each post-processing view...
-
-View[0].Name = "This is a very stupid demonstration..." ;
-View[0].IntervalsType = 2 ;
-View[0].OffsetZ = 0.05 ;
-View[0].RaiseZ = 0 ;
-View[0].Light = 1 ;
-
-View[1].Name = "...of Gmsh's scripting capabilities" ;
-View[1].IntervalsType = 1 ;
-View[1].ColorTable = { Green, Blue } ;
-View[1].NbIso = 10 ;
-
-// ...and loop from 1 to 255 with a step of 1 is performed (to use a
-// step different from 1, just add a third argument in the list,
-// e.g. 'For num In {0.5:1.5:0.1}' increments num from 0.5 to 1.5 with
-// a step of 0.1):
-
-t = 0 ;
-
-For num In {1:255}
-
-  View[0].TimeStep = t ;
-  View[1].TimeStep = t ;
-
-  t = (View[0].TimeStep < View[0].NbTimeStep-1) ? t+1 : 0 ;
-  
-  View[0].RaiseZ += 0.01*t ;
-
-  If (num == 3)
-    // We want to use mpeg_encode to create a nice 320x240 animation
-    // for all frames when num==3:
-    General.GraphicsWidth = 320 ; 
-    General.GraphicsHeight = 240 ;
-  EndIf
-
-  // It is possible to nest loops:
-
-  For num2 In {1:50}
-
-    General.RotationX += 10 ;
-    General.RotationY = General.RotationX / 3 ;
-    General.RotationZ += 0.1 ;
- 
-    Sleep 0.01; // sleep for 0.01 second
-    Draw; // draw the scene
-
-    If ((num == 3) && (num2 < 10))
-      // The Sprintf function permits to create complex strings using
-      // variables (since all Gmsh variables are treated internally as
-      // double precision numbers, the format should only contain valid
-      // double precision number format specifiers):
-      Print Sprintf("t8-0%g.jpg", num2);
-    EndIf
-
-    If ((num == 3) && (num2 >= 10))
-      Print Sprintf("t8-%g.jpg", num2);
-    EndIf
-
-  EndFor
-
-  If(num == 3)
-    // We make a system call to generate the mpeg
-    System "mpeg_encode t8.par" ;    
-  EndIf
-
-EndFor
-
-
-// Here is the list of available scripting commands:
-//  
-//  Merge string;     (to merge a file)
-//  Draw;             (to draw the scene)
-//  Mesh int;         (to perform the mesh generation; 'int' = 0, 1, 2 or 3)
-//  Save string;      (to save the mesh)
-//  Print string;     (to print the graphic window)
-//  Sleep expr;       (to sleep during expr seconds)
-//  Delete View[int]; (to free the view int)
-//  Delete Meshes;    (to free all meshes)
-//  System string;    (to execute a system call)
diff --git a/tutorial/t8.par b/tutorial/t8.par
deleted file mode 100644
index b557546775f6b4b8717883cb41cf6dc731818ca0..0000000000000000000000000000000000000000
--- a/tutorial/t8.par
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# parameter file for mpeg_encode 
-#
-
-PATTERN          I
-# PATTERN          IB
-# PATTERN          IBBBP
-# PATTERN          IBBPBBPBBPBBPBB
-
-BASE_FILE_FORMAT JPEG
-# BASE_FILE_FORMAT PPM
-# BASE_FILE_FORMAT YUV
-# YUV_SIZE         320x240
-
-GOP_SIZE         30
-SLICES_PER_FRAME 1
-PIXEL            HALF
-RANGE            10
-PSEARCH_ALG      TWOLEVEL
-# PSEARCH_ALG      LOGARITHMIC
-BSEARCH_ALG      CROSS2
-IQSCALE          8
-PQSCALE          10
-BQSCALE          25
-REFERENCE_FRAME  ORIGINAL
-
-OUTPUT           t8.mpg
-
-INPUT_CONVERT   *
-INPUT_DIR       .
-INPUT
-t8-*.jpg [01-50]
-# t8-*.ppm [01-50]
-# t8-*.yuv [01-50]
-END_INPUT
-
diff --git a/tutorial/t9.geo b/tutorial/t9.geo
deleted file mode 100644
index b038d3b9d50f80203ff0a2612a58e5bc405720e4..0000000000000000000000000000000000000000
--- a/tutorial/t9.geo
+++ /dev/null
@@ -1,49 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 9
- * 
- *  Post-Processing, Plugins
- *
- *********************************************************************/
-
-// Plugins can be added to Gmsh in order to extend its
-// capabilities. For example, post-processing plugins can modify a
-// view, or create a new view based on previously loaded
-// views. Several default plugins are statically linked into Gmsh,
-// e.g. CutMap, CutPlane, CutSphere, Skin, Transform or Smooth.
-
-// Let's load a three-dimensional scalar view
-
-Include "view3.pos" ;
-
-// Plugins can be controlled as other options in Gmsh. For example,
-// the CutMap plugin extracts an isovalue surface from a 3D scalar
-// view. The plugin can either be called from the graphical interface
-// (right click on the view button, then Plugins->CutMap), or from
-// the command file, as is shown below.
-
-// This sets the optional parameter A of the CutMap plugin to the
-// value 0.67 (see the About in the graphical interface for the
-// documentation of each plugin), and runs the plugin:
-
-Plugin(CutMap).A = 0.67 ; 
-Plugin(CutMap).iView = 0 ; //select View[0] as the working view
-Plugin(CutMap).Run ; 
-
-// The following runs the CutPlane plugin:
-
-Plugin(CutPlane).A = 0 ; 
-Plugin(CutPlane).B = 0.2 ; 
-Plugin(CutPlane).C = 1 ; 
-Plugin(CutPlane).D = 0 ; 
-Plugin(CutPlane).Run ; 
-
-View[0].Light = 1;
-View[0].IntervalsType = 2;
-View[0].NbIso = 6;
-View[0].SmoothNormals = 1;
-
-View[1].IntervalsType = 2;
-
-View[2].IntervalsType = 2;
-Draw;
diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html
deleted file mode 100644
index 26551762a2d81578ac10526944f43c7749f703ca..0000000000000000000000000000000000000000
--- a/tutorial/tutorial.html
+++ /dev/null
@@ -1,1206 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Enscript Output</TITLE>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD">
-<A NAME="top">
-<H1>Contents</H1>
-<OL>
-  <LI><A HREF="#file1">README</A>
-  <LI><A HREF="#file2">t1.geo</A>
-  <LI><A HREF="#file3">t2.geo</A>
-  <LI><A HREF="#file4">t3.geo</A>
-  <LI><A HREF="#file5">t4.geo</A>
-  <LI><A HREF="#file6">t5.geo</A>
-  <LI><A HREF="#file7">t6.geo</A>
-  <LI><A HREF="#file8">t7.geo</A>
-  <LI><A HREF="#file9">t8.geo</A>
-  <LI><A HREF="#file10">t9.geo</A>
-</OL>
-<HR>
-<A NAME="file1">
-<H1>README 1/10</H1>
-[<A HREF="#top">top</A>][prev][<A HREF="#file2">next</A>]
-<PRE>
-$Id: tutorial.html,v 1.18 2001-08-12 12:31:38 geuzaine Exp $
-
-Here are the examples in the Gmsh tutorial. These examples are
-commented (both C and C++-style comments can be used in Gmsh input
-files) and should introduce new features gradually, starting with
-t1.geo.
-
-[NOTE: This tutorial does not explain the mesh and post-processing
-file formats. See the FORMATS file for this.]
-
-There are two ways to actually run these examples with Gmsh. (The
-operations to run Gmsh may vary according to your operating system. In
-the folowing examples, we will assume that you're working with a
-UNIX-like shell.) The first working mode of Gmsh is the interactive
-graphical mode. To launch Gmsh in interactive mode, just type
-
-&gt; gmsh
-
-at the prompt on the command line. This will open two windows: the
-graphic window (with a status bar at the bottom) and the menu window
-(with a menu bar and some context dependent buttons). To open the
-first tutorial file, select the 'File-&gt;Open' menu, and choose 't1.geo'
-in the input field. To perform the mesh generation, go to the mesh
-module (by selecting 'Mesh' in the module menu) and choose the
-required dimension in the context-dependent buttons ('1D' will mesh
-all the curves; '2D' will mesh all the surfaces ---as well as all the
-curves if '1D' was not called before; '3D' will mesh all the volumes
----and all the surfaces if '2D' was not called before). To save the
-resulting mesh in the current mesh format, choose 'Save' in the
-context-dependent buttons, or select the appropriate format with the
-'File-&gt;Save as' menu. The default mesh file name is based on the name
-of the first input file on the command line (or 'unnamed' if there
-wasn't any input file given), with an appended extension depending on
-the mesh format.
-
-[NOTE: Nearly all the interactive commands have shortcuts. Select
-'Help-&gt;Shortcuts' in the menu bar to learn about these shortcuts.]
-
-Instead of opening the tutorial with the 'File-&gt;Open' menu, it is
-often more convenient to put the file name on the command line, for
-example with:
-
-&gt; gmsh t1.geo
-
-[NOTE: The '.geo' extension can also be omitted.]
-
-[NOTE: Even if it is often handy to define the variables and the points
-directly in the input files (you may use any text editor for this
-purpose, e.g. Wordpad on Windows, or Emacs on Unix), it is almost
-always more simple to define the curves, the surfaces and the volumes
-interactively. To do so, just follow the context dependent buttons in
-the Geometry module. For example, to create a line, select 'Geometry'
-in the module menu, and then select 'Elementary, Add, Create,
-Line'. You will then be asked (in the status bar of the graphic
-window) to select a list of points, and to click 'e' to finish the
-selection (or 'q' to abort it). Once the interactive command is
-completed, a string is automatically added at the end of the currently
-opened project file.]
-
-The second operating mode for Gmsh is the non-interactive mode. In
-this mode, there is no graphical user interface, and all operations
-are performed without any interaction. To mesh the first tutorial in
-non-interactive mode, just type:
-
-&gt; gmsh t1.geo -2
-
-To mesh the same example, but with the backgound mesh available in the
-file 'bgmesh.pos', just type:
-
-&gt; gmsh t1.geo -2 -bgm bgmesh.pos
-
-[NOTE: You should read the notes in the file 'bgmesh.pos' if you
-intend to use background meshes.]
-
-Several files can be loaded simultaneously in Gmsh. The first one
-defines the project, while the others are appended (&quot;merged&quot;) to this
-project. You can merge such files with the 'File-&gt;Merge' menu, or by
-directly specifying the names of the files on the command line. This
-is most useful for post-processing purposes. For example, to merge the
-post-processing views contained in the files 'view1.pos' and
-'view2.pos' together with the first tutorial 't1.geo', you can type
-the following line on the command line:
-
-&gt; gmsh t1.geo view1.pos view2.pos
-
-In the Post-Processing module (select 'Post_Processing' in the module
-menu), two view buttons will appear, respectively labeled &quot;a scalar
-map&quot; and &quot;a vector map&quot;. A left mouse click toggles the visibility of
-the selected view. A right mouse click provides access to the view's
-options. If you want the modifications made to one view to affect also
-all the other views, select the 'Apply next changes to all views' or
-'Force same options for all views' option in the
-'Options-&gt;Post-processing' menu.
-
-[NOTE: All the options specified interactively can also be directly
-specified in the ascii input files. All available options, with their
-current values, can be saved into a file by selecting 'File-&gt;Save
-as-&gt;GEO complete options', or simply viewed by pressing the '?' button
-in the status bar. To save the current options as your default
-preferences for all future Gmsh sessions, use the 'Options-&gt;Save
-options now' menu.]
-
-
-OK, that's all, folks. Enjoy the tutorial.
-
-</PRE>
-<HR>
-<A NAME="file2">
-<H1>t1.geo 2/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file1">prev</A>][<A HREF="#file3">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 1
- * 
- *  Variables, Elementary entities (Points, Lines, Surfaces), Physical
- *  entities (Points, Lines, Surfaces), Background mesh
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// All geometry description in Gmsh is made by means of a special
-</FONT></I><I><FONT COLOR="#B22222">// language (looking somewhat similar to C). The simplest construction
-</FONT></I><I><FONT COLOR="#B22222">// of this language is the 'affectation'. 
-</FONT></I>
-<I><FONT COLOR="#B22222">// The following command (all commands end with a semi colon) defines
-</FONT></I><I><FONT COLOR="#B22222">// a variable called 'lc' and affects the value 0.007 to 'lc':
-</FONT></I>
-lc = 0.007 ;
-
-<I><FONT COLOR="#B22222">// This newly created variable can be used to define the first Gmsh
-</FONT></I><I><FONT COLOR="#B22222">// elementary entity, a 'Point'. A Point is defined by a list of four
-</FONT></I><I><FONT COLOR="#B22222">// numbers: its three coordinates (x, y and z), and a characteristic
-</FONT></I><I><FONT COLOR="#B22222">// length which sets the target mesh size at the point:
-</FONT></I>
-Point(1) = {0,  0,  0, 9.e-1 * lc} ;
-
-<I><FONT COLOR="#B22222">// The mesh size is defined as the length of the segments for lines,
-</FONT></I><I><FONT COLOR="#B22222">// the radii of the circumscribed circles for triangles and the radii
-</FONT></I><I><FONT COLOR="#B22222">// of the circumscribed spheres for tetrahedra, respectively. The
-</FONT></I><I><FONT COLOR="#B22222">// actual distribution of the mesh sizes is obtained by interpolation
-</FONT></I><I><FONT COLOR="#B22222">// of the characteristic lengths prescribed at the points. There are
-</FONT></I><I><FONT COLOR="#B22222">// also other possibilities to specify characteristic lengths:
-</FONT></I><I><FONT COLOR="#B22222">// attractors (see t7.geo) and background meshes (see bgmesh.pos).
-</FONT></I>
-<I><FONT COLOR="#B22222">// As can be seen in the previous definition, more complex expressions
-</FONT></I><I><FONT COLOR="#B22222">// can be constructed from variables. Here, the product of the
-</FONT></I><I><FONT COLOR="#B22222">// variable 'lc' by the constant 9.e-1 is given as the fourth argument
-</FONT></I><I><FONT COLOR="#B22222">// of the list defining the point.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// The following general syntax rule is applied for the definition of
-</FONT></I><I><FONT COLOR="#B22222">// all geometrical entities:
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">//    &quot;If a number defines a new entity, it is enclosed between
-</FONT></I><I><FONT COLOR="#B22222">//    parentheses. If a number refers to a previously defined entity,
-</FONT></I><I><FONT COLOR="#B22222">//    it is enclosed between braces.&quot;
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// Three additional points are then defined:
-</FONT></I>
-Point(2) = {.1, 0,  0, lc} ;
-Point(3) = {.1, .3, 0, lc} ;
-Point(4) = {0,  .3, 0, lc} ;
-
-<I><FONT COLOR="#B22222">// The second elementary geometrical entity in Gmsh is the
-</FONT></I><I><FONT COLOR="#B22222">// curve. Amongst curves, straight lines are the simplest. A straight
-</FONT></I><I><FONT COLOR="#B22222">// line is defined by a list of point numbers. For example, line 1
-</FONT></I><I><FONT COLOR="#B22222">// starts at point 1 and ends at point 2:
-</FONT></I>
-Line(1) = {1,2} ;
-Line(2) = {3,2} ;
-Line(3) = {3,4} ;
-Line(4) = {4,1} ;
-
-<I><FONT COLOR="#B22222">// The third elementary entity is the surface. In order to define a
-</FONT></I><I><FONT COLOR="#B22222">// simple rectangular surface from the four lines defined above, a
-</FONT></I><I><FONT COLOR="#B22222">// line loop has first to be defined. A line loop is a list of
-</FONT></I><I><FONT COLOR="#B22222">// connected lines, a sign being associated with each line (depending
-</FONT></I><I><FONT COLOR="#B22222">// on the orientation of the line).
-</FONT></I>
-Line Loop(5) = {4,1,-2,3} ;
-
-<I><FONT COLOR="#B22222">// The surface is then defined as a list of line loops (only one
-</FONT></I><I><FONT COLOR="#B22222">// here):
-</FONT></I>
-Plane Surface(6) = {5} ;
-
-<I><FONT COLOR="#B22222">// At this level, Gmsh knows everything to display the rectangular
-</FONT></I><I><FONT COLOR="#B22222">// surface 6 and to mesh it. But a supplementary step is needed in
-</FONT></I><I><FONT COLOR="#B22222">// order to assign region numbers to the various elements in the mesh
-</FONT></I><I><FONT COLOR="#B22222">// (the points, the lines and the triangles discretizing points 1 to
-</FONT></I><I><FONT COLOR="#B22222">// 4, lines 1 to 4 and surface 6). This is achieved by the definition
-</FONT></I><I><FONT COLOR="#B22222">// of Physical entities. Physical entities will group elements
-</FONT></I><I><FONT COLOR="#B22222">// belonging to several elementary entities by giving them a common
-</FONT></I><I><FONT COLOR="#B22222">// number (a region number), and specifying their orientation.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// For example, the two points 1 and 2 can be grouped into the
-</FONT></I><I><FONT COLOR="#B22222">// physical entity 1:
-</FONT></I>
-Physical Point(1) = {1,2} ;
-
-<I><FONT COLOR="#B22222">// Consequently, two punctual elements will be saved in the output
-</FONT></I><I><FONT COLOR="#B22222">// files, both with the region number 1. The mechanism is identical
-</FONT></I><I><FONT COLOR="#B22222">// for line or surface elements:
-</FONT></I>
-Physical Line(10) = {1,2,4} ;
-Physical Surface(100) = {6} ;
-
-<I><FONT COLOR="#B22222">// All the line elements which will be created during the mesh of
-</FONT></I><I><FONT COLOR="#B22222">// lines 1, 2 and 4 will be saved in the output file with the region
-</FONT></I><I><FONT COLOR="#B22222">// number 10; and all the triangular elements resulting from the
-</FONT></I><I><FONT COLOR="#B22222">// discretization of surface 6 will be given the region number 100.
-</FONT></I>
-<I><FONT COLOR="#B22222">// It is important to notice that only those elements which belong to
-</FONT></I><I><FONT COLOR="#B22222">// physical groups will be saved in the output file if the file format
-</FONT></I><I><FONT COLOR="#B22222">// is the msh format (the native mesh file format for Gmsh). For a
-</FONT></I><I><FONT COLOR="#B22222">// description of the mesh and post-processing formats, see the
-</FONT></I><I><FONT COLOR="#B22222">// FORMATS file.
-</FONT></I>
-</PRE>
-<HR>
-<A NAME="file3">
-<H1>t2.geo 3/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file2">prev</A>][<A HREF="#file4">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 2
- * 
- *  Includes, Geometrical transformations, Elementary entities
- *  (Volumes), Physical entities (Volumes)
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// The first tutorial file will serve as a basis to construct this
-</FONT></I><I><FONT COLOR="#B22222">// one. It can be included with:
-</FONT></I>
-Include &quot;t1.geo&quot; ;
-
-<I><FONT COLOR="#B22222">// There are several possibilities to build a more complex geometry
-</FONT></I><I><FONT COLOR="#B22222">// from the one previously defined in 't1.geo'.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// New points, lines and surfaces can first be directly defined in the
-</FONT></I><I><FONT COLOR="#B22222">// same way as in 't1.geo':
-</FONT></I>
-Point(5) = {0, .4, 0, lc} ;
-Line(5) = {4, 5} ;
-
-<I><FONT COLOR="#B22222">// But Gmsh also provides geometrical transformation mechanisms to
-</FONT></I><I><FONT COLOR="#B22222">// move (translate, rotate, ...), add (translate, rotate, ...) or
-</FONT></I><I><FONT COLOR="#B22222">// extrude (translate, rotate) elementary geometrical entities. For
-</FONT></I><I><FONT COLOR="#B22222">// example, the point 3 can be moved by 0.05 units on the left with:
-</FONT></I>
-Translate {-0.05,0,0} { Point{3} ; }
-
-<I><FONT COLOR="#B22222">// The resulting point can also be duplicated and translated by 0.1
-</FONT></I><I><FONT COLOR="#B22222">// along the y axis:
-</FONT></I>
-Translate {0,0.1,0} { Duplicata{ Point{3} ; } }
-
-<I><FONT COLOR="#B22222">// Of course, translation, rotation and extrusion commands not only
-</FONT></I><I><FONT COLOR="#B22222">// apply to points, but also to lines and surfaces. The following
-</FONT></I><I><FONT COLOR="#B22222">// command extrudes surface 6 defined in 't1.geo', as well as a new
-</FONT></I><I><FONT COLOR="#B22222">// surface 11, along the z axis by 'h':
-</FONT></I>
-h = 0.12 ;
-Extrude Surface { 6, {0, 0, h} } ;
-
-Line(7) = {3, 6} ; Line(8) = {6,5} ; Line Loop(10) = {5,-8,-7,3};
-
-Plane Surface(11) = {10};
-
-Extrude Surface { 11, {0, 0, h} } ;
-
-<I><FONT COLOR="#B22222">// All these geometrical transformations automatically generate new
-</FONT></I><I><FONT COLOR="#B22222">// elementary entities. The following commands permit to specify
-</FONT></I><I><FONT COLOR="#B22222">// manually a characteristic length for some of the automatically
-</FONT></I><I><FONT COLOR="#B22222">// created points:
-</FONT></I>
-Characteristic Length{6,22,2,3,16,12} = lc * 3 ;
-
-<I><FONT COLOR="#B22222">// If the transformation tools are handy to create complex geometries,
-</FONT></I><I><FONT COLOR="#B22222">// it is sometimes useful to generate the flat geometry, consisting
-</FONT></I><I><FONT COLOR="#B22222">// only of the explicit list elementary entities. This can be achieved
-</FONT></I><I><FONT COLOR="#B22222">// by selecting the 'File-&gt;Save as-&gt;GEO flattened geometry' menu or 
-</FONT></I><I><FONT COLOR="#B22222">// by typing
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// &gt; gmsh t2.geo -0
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// on the command line.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Volumes are the fourth type of elementary entities in Gmsh. In the
-</FONT></I><I><FONT COLOR="#B22222">// same way one defines line loops to build surfaces, one has to
-</FONT></I><I><FONT COLOR="#B22222">// define surface loops to build volumes. The following volumes are
-</FONT></I><I><FONT COLOR="#B22222">// very simple, without holes (and thus consist of only one surface
-</FONT></I><I><FONT COLOR="#B22222">// loop):
-</FONT></I>
-Surface Loop(145) = {121,11,131,135,139,144};
-Volume(146) = {145};
-
-Surface Loop(146) = {121,6,109,113,117,122};
-Volume(147) = {146};
-
-<I><FONT COLOR="#B22222">// To save all volumic (tetrahedral) elements of volume 146 and 147
-</FONT></I><I><FONT COLOR="#B22222">// with the associate region number 1, a Physical Volume must be
-</FONT></I><I><FONT COLOR="#B22222">// defined:
-</FONT></I>
-Physical Volume (1) = {146,147} ;
-
-<I><FONT COLOR="#B22222">// Congratulations! You've created your first fully unstructured
-</FONT></I><I><FONT COLOR="#B22222">// tetrahedral 3D mesh!
-</FONT></I></PRE>
-<HR>
-<A NAME="file4">
-<H1>t3.geo 4/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file3">prev</A>][<A HREF="#file5">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 3
- * 
- *  Extruded meshes, Options
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// Again, the first tutorial example is included:
-</FONT></I>
-Include &quot;t1.geo&quot; ;
-
-<I><FONT COLOR="#B22222">// As in 't2.geo', an extrusion along the z axis will be performed:
-</FONT></I>
-h = 0.1 ;
-
-<I><FONT COLOR="#B22222">// But contrary to 't2.geo', not only the geometry will be extruded,
-</FONT></I><I><FONT COLOR="#B22222">// but also the 2D mesh. This is done with the same Extrude command,
-</FONT></I><I><FONT COLOR="#B22222">// but by specifying the number of layers (here, there will be four
-</FONT></I><I><FONT COLOR="#B22222">// layers, of respectively 8, 4, 2 and 1 elements in depth), with
-</FONT></I><I><FONT COLOR="#B22222">// volume numbers 9000 to 9003 and respective heights equal to h/4:
-</FONT></I>
-Extrude Surface { 6, {0,0,h} } { 
-  Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} } ; 
-} ;
-
-<I><FONT COLOR="#B22222">// The extrusion can also be combined with a rotation, and the
-</FONT></I><I><FONT COLOR="#B22222">// extruded 3D mesh can be recombined into prisms (wedges). All
-</FONT></I><I><FONT COLOR="#B22222">// rotations are specified by an axis direction ({0,1,0}), an axis
-</FONT></I><I><FONT COLOR="#B22222">// point ({0,0,0}) and a rotation angle (Pi/2):
-</FONT></I>
-Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { 
-  Recombine ; Layers { 7, 9004, 1 } ; 
-};
-
-Physical Volume(101) = {9000:9004};
-
-<I><FONT COLOR="#B22222">// All interactive options can also be set directly in the input file.
-</FONT></I><I><FONT COLOR="#B22222">// For example, the following lines define a global characteristic
-</FONT></I><I><FONT COLOR="#B22222">// length factor, redefine some background colors, disable the display
-</FONT></I><I><FONT COLOR="#B22222">// of the axes, and select an initial viewpoint in XYZ mode (disabling
-</FONT></I><I><FONT COLOR="#B22222">// the interactive trackball-like rotation mode):
-</FONT></I>
-Mesh.CharacteristicLengthFactor = 4;
-General.Color.Background = {120,120,120};
-General.Color.Foreground = {255,255,255};
-General.Color.Text = White;
-Geometry.Color.Points = Orange;
-General.Axes = 0;
-General.Trackball = 0;
-General.RotationX = 10;
-General.RotationY = 70;
-General.TranslationX = -0.1;
-
-<I><FONT COLOR="#B22222">// Note: all colors can be defined literally or numerically, i.e.
-</FONT></I><I><FONT COLOR="#B22222">// 'General.Color.Background = Red' is equivalent to
-</FONT></I><I><FONT COLOR="#B22222">// 'General.Color.Background = {255,0,0}'. As with user-defined
-</FONT></I><I><FONT COLOR="#B22222">// variables, the options can be used either as right hand or left
-</FONT></I><I><FONT COLOR="#B22222">// hand sides, so that
-</FONT></I>
-Geometry.Color.Surfaces = Geometry.Color.Points;
-
-<I><FONT COLOR="#B22222">// will assign the color of the surfaces in the geometry to the same
-</FONT></I><I><FONT COLOR="#B22222">// color as the points.
-</FONT></I>
-<I><FONT COLOR="#B22222">// A click on the '?'  button in the status bar of the graphic window
-</FONT></I><I><FONT COLOR="#B22222">// will dump all current options to the terminal. To save all
-</FONT></I><I><FONT COLOR="#B22222">// available options to a file, use the 'File-&gt;Save as-&gt;GEO complete
-</FONT></I><I><FONT COLOR="#B22222">// options' menu. To save the current options as the default options
-</FONT></I><I><FONT COLOR="#B22222">// for all future Gmsh sessions, use the 'Options-&gt;Save options now'
-</FONT></I><I><FONT COLOR="#B22222">// menu.
-</FONT></I></PRE>
-<HR>
-<A NAME="file5">
-<H1>t4.geo 5/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file4">prev</A>][<A HREF="#file6">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 4
- * 
- *  Built-in functions, Holes
- *
- *********************************************************************/</FONT></I>
-
-cm = 1e-02 ;
-
-e1 = 4.5*cm ; e2 = 6*cm / 2 ; e3 =  5*cm / 2 ;
-
-h1 = 5*cm ; h2 = 10*cm ; h3 = 5*cm ; h4 = 2*cm ; h5 = 4.5*cm ;
-
-R1 = 1*cm ; R2 = 1.5*cm ; r = 1*cm ;
-
-ccos = ( -h5*R1 + e2 * Hypot(h5,Hypot(e2,R1)) ) / (h5^2 + e2^2) ;
-ssin = Sqrt(1-ccos^2) ;
-
-Lc1 = 0.01 ;
-Lc2 = 0.003 ;
-
-<I><FONT COLOR="#B22222">// A whole set of operators can be used, which can be combined in all
-</FONT></I><I><FONT COLOR="#B22222">// the expressions. These operators are defined in a similar way to
-</FONT></I><I><FONT COLOR="#B22222">// their C or C++ equivalents (with the exception of '^'):
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">//   '-' (in both unary and binary versions, i.e. as in '-1' and '1-2')
-</FONT></I><I><FONT COLOR="#B22222">//   '!' (the negation)
-</FONT></I><I><FONT COLOR="#B22222">//   '+'
-</FONT></I><I><FONT COLOR="#B22222">//   '*'
-</FONT></I><I><FONT COLOR="#B22222">//   '/'
-</FONT></I><I><FONT COLOR="#B22222">//   '%' (the rest of the integer division)
-</FONT></I><I><FONT COLOR="#B22222">//   '&lt;'
-</FONT></I><I><FONT COLOR="#B22222">//   '&gt;'
-</FONT></I><I><FONT COLOR="#B22222">//   '&lt;='
-</FONT></I><I><FONT COLOR="#B22222">//   '&gt;='
-</FONT></I><I><FONT COLOR="#B22222">//   '=='
-</FONT></I><I><FONT COLOR="#B22222">//   '!='
-</FONT></I><I><FONT COLOR="#B22222">//   '&amp;&amp;' (and)
-</FONT></I><I><FONT COLOR="#B22222">//   '||' (or)
-</FONT></I><I><FONT COLOR="#B22222">//   '||' (or)
-</FONT></I><I><FONT COLOR="#B22222">//   '^' (power)
-</FONT></I><I><FONT COLOR="#B22222">//   '?' ':' (the ternary operator)
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// Grouping is done, as usual, with parentheses.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// In addition to these operators, all C mathematical functions can
-</FONT></I><I><FONT COLOR="#B22222">// also be used (note the first capital letter):
-</FONT></I><I><FONT COLOR="#B22222">// 
-</FONT></I><I><FONT COLOR="#B22222">//   Exp(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Log(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Log10(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Sqrt(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Sin(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Asin(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Cos(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Acos(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Tan(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Atan(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Atan2(x,y)
-</FONT></I><I><FONT COLOR="#B22222">//   Sinh(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Cosh(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Tanh(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Fabs(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Floor(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Ceil(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Fmod(x,y)
-</FONT></I><I><FONT COLOR="#B22222">//   Hypot(x,y)
-</FONT></I>
-<I><FONT COLOR="#B22222">// An additional function 'Rand(x)' generates a random number in [0,x]
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">//   Rand(x)
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// The only predefined constant in Gmsh is Pi.
-</FONT></I>
-Point(1) = { -e1-e2, 0.0  , 0.0 , Lc1};
-Point(2) = { -e1-e2, h1   , 0.0 , Lc1};
-Point(3) = { -e3-r , h1   , 0.0 , Lc2};
-Point(4) = { -e3-r , h1+r , 0.0 , Lc2};
-Point(5) = { -e3   , h1+r , 0.0 , Lc2};
-Point(6) = { -e3   , h1+h2, 0.0 , Lc1};
-Point(7) = {  e3   , h1+h2, 0.0 , Lc1};
-Point(8) = {  e3   , h1+r , 0.0 , Lc2};
-Point(9) = {  e3+r , h1+r , 0.0 , Lc2};
-Point(10)= {  e3+r , h1   , 0.0 , Lc2};
-Point(11)= {  e1+e2, h1   , 0.0 , Lc1};
-Point(12)= {  e1+e2, 0.0  , 0.0 , Lc1};
-Point(13)= {  e2   , 0.0  , 0.0 , Lc1};
-
-Point(14)= {  R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(15)= {  0.0       , h5        , 0.0 , Lc2};
-Point(16)= { -R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(17)= { -e2        , 0.0       , 0.0 , Lc1};
-
-Point(18)= { -R2  , h1+h3   , 0.0 , Lc2};
-Point(19)= { -R2  , h1+h3+h4, 0.0 , Lc2};
-Point(20)= {  0.0 , h1+h3+h4, 0.0 , Lc2};
-Point(21)= {  R2  , h1+h3+h4, 0.0 , Lc2};
-Point(22)= {  R2  , h1+h3   , 0.0 , Lc2};
-Point(23)= {  0.0 , h1+h3   , 0.0 , Lc2};
-
-Point(24)= {  0 , h1+h3+h4+R2, 0.0 , Lc2};
-Point(25)= {  0 , h1+h3-R2,    0.0 , Lc2};
-
-Line(1)  = {1 ,17};
-Line(2)  = {17,16};
-
-<I><FONT COLOR="#B22222">// All curves are not straight lines... Circles are defined by a list
-</FONT></I><I><FONT COLOR="#B22222">// of three point numbers, which represent the starting point, the
-</FONT></I><I><FONT COLOR="#B22222">// center and the end point, respectively. All circles have to be
-</FONT></I><I><FONT COLOR="#B22222">// defined in the trigonometric (counter-clockwise) sense.  Note that
-</FONT></I><I><FONT COLOR="#B22222">// the 3 points should not be aligned (otherwise the plane in which
-</FONT></I><I><FONT COLOR="#B22222">// the circle lies has to be defined, by 'Circle(num) =
-</FONT></I><I><FONT COLOR="#B22222">// {start,center,end} Plane {nx,ny,nz}').
-</FONT></I>
-Circle(3) = {14,15,16};
-Line(4)  = {14,13};
-Line(5)  = {13,12};
-Line(6)  = {12,11};
-Line(7)  = {11,10};
-Circle(8) = { 8, 9,10};
-Line(9)  = { 8, 7};
-Line(10) = { 7, 6};
-Line(11) = { 6, 5};
-Circle(12) = { 3, 4, 5};
-Line(13) = { 3, 2};
-Line(14) = { 2, 1};
-Line(15) = {18,19};
-Circle(16) = {21,20,24};
-Circle(17) = {24,20,19};
-Circle(18) = {18,23,25};
-Circle(19) = {25,23,22};
-Line(20) = {21,22};
-
-Line Loop(21) = {17,-15,18,19,-20,16};
-Plane Surface(22) = {21};
-
-<I><FONT COLOR="#B22222">// The surface is made of two line loops, i.e. it has one hole:
-</FONT></I>
-Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10};
-Plane Surface(24) = {23,21};
-
-Physical Surface(1) = {22};
-Physical Surface(2) = {24};
-</PRE>
-<HR>
-<A NAME="file6">
-<H1>t5.geo 6/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file5">prev</A>][<A HREF="#file7">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 5
- * 
- *  Characteristic lengths, Arrays of variables, Functions, Loops
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// This defines some characteristic lengths:
-</FONT></I>
-lcar1 = .1;
-lcar2 = .0005;
-lcar3 = .075;
-
-<I><FONT COLOR="#B22222">// In order to change these lengths globally (without changing the
-</FONT></I><I><FONT COLOR="#B22222">// file), a global scaling factor for all characteristic lengths can
-</FONT></I><I><FONT COLOR="#B22222">// be specified on the command line with the option '-clscale'. For
-</FONT></I><I><FONT COLOR="#B22222">// example, with:
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// &gt; gmsh t5 -clscale 1
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// this example produces a mesh of approximately 2000 nodes and
-</FONT></I><I><FONT COLOR="#B22222">// 10,000 tetrahedra (in 3 seconds on an alpha workstation running at
-</FONT></I><I><FONT COLOR="#B22222">// 666MHz). With 
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// &gt; gmsh t5 -clscale 0.2
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// (i.e. with all characteristic lengths divided by 5), the mesh
-</FONT></I><I><FONT COLOR="#B22222">// counts approximately 170,000 nodes and one million tetrahedra
-</FONT></I><I><FONT COLOR="#B22222">// (and the computation takes 16 minutes on the same machine :-( So
-</FONT></I><I><FONT COLOR="#B22222">// there is still a lot of work to do to achieve decent performance
-</FONT></I><I><FONT COLOR="#B22222">// with Gmsh...)
-</FONT></I>
-Point(1) = {0.5,0.5,0.5,lcar2}; Point(2) = {0.5,0.5,0,lcar1};
-Point(3) = {0,0.5,0.5,lcar1};   Point(4) = {0,0,0.5,lcar1}; 
-Point(5) = {0.5,0,0.5,lcar1};   Point(6) = {0.5,0,0,lcar1};
-Point(7) = {0,0.5,0,lcar1};     Point(8) = {0,1,0,lcar1};
-Point(9) = {1,1,0,lcar1};       Point(10) = {0,0,1,lcar1};
-Point(11) = {0,1,1,lcar1};      Point(12) = {1,1,1,lcar1};
-Point(13) = {1,0,1,lcar1};      Point(14) = {1,0,0,lcar1};
-
-Line(1) = {8,9};    Line(2) = {9,12};  Line(3) = {12,11};
-Line(4) = {11,8};   Line(5) = {9,14};  Line(6) = {14,13};
-Line(7) = {13,12};  Line(8) = {11,10}; Line(9) = {10,13};
-Line(10) = {10,4};  Line(11) = {4,5};  Line(12) = {5,6};
-Line(13) = {6,2};   Line(14) = {2,1};  Line(15) = {1,3};
-Line(16) = {3,7};   Line(17) = {7,2};  Line(18) = {3,4};
-Line(19) = {5,1};   Line(20) = {7,8};  Line(21) = {6,14};
-
-Line Loop(22) = {11,19,15,18};       Plane Surface(23) = {22};
-Line Loop(24) = {16,17,14,15};       Plane Surface(25) = {24};
-Line Loop(26) = {-17,20,1,5,-21,13}; Plane Surface(27) = {26};
-Line Loop(28) = {4,1,2,3};           Plane Surface(29) = {28};
-Line Loop(30) = {7,-2,5,6};          Plane Surface(31) = {30};
-Line Loop(32) = {6,-9,10,11,12,21};  Plane Surface(33) = {32};
-Line Loop(34) = {7,3,8,9};           Plane Surface(35) = {34};
-Line Loop(36) = {10,-18,16,20,-4,8}; Plane Surface(37) = {36};
-Line Loop(38) = {-14,-13,-12,19};    Plane Surface(39) = {38};
-
-<I><FONT COLOR="#B22222">// Instead of using included files, one can also define functions. In
-</FONT></I><I><FONT COLOR="#B22222">// the following function, the reserved variable 'newp' is used, which
-</FONT></I><I><FONT COLOR="#B22222">// automatically selects a new point number. This number is chosen as
-</FONT></I><I><FONT COLOR="#B22222">// the highest current point number, plus one. Analogously to 'newp',
-</FONT></I><I><FONT COLOR="#B22222">// there exists a variable 'newreg' which selects the highest number
-</FONT></I><I><FONT COLOR="#B22222">// of all entities other than points, plus one.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Note: there are no local variables. This will be changed in a
-</FONT></I><I><FONT COLOR="#B22222">// future version of Gmsh.
-</FONT></I>
-Function CheeseHole 
-
-  p1 = newp; Point(p1) = {x,  y,  z,  lcar3} ;
-  p2 = newp; Point(p2) = {x+r,y,  z,  lcar3} ;
-  p3 = newp; Point(p3) = {x,  y+r,z,  lcar3} ;
-  p4 = newp; Point(p4) = {x,  y,  z+r,lcar3} ;
-  p5 = newp; Point(p5) = {x-r,y,  z,  lcar3} ;
-  p6 = newp; Point(p6) = {x,  y-r,z,  lcar3} ;
-  p7 = newp; Point(p7) = {x,  y,  z-r,lcar3} ;
-
-  c1 = newreg; Circle(c1) = {p2,p1,p7};
-  c2 = newreg; Circle(c2) = {p7,p1,p5};
-  c3 = newreg; Circle(c3) = {p5,p1,p4};
-  c4 = newreg; Circle(c4) = {p4,p1,p2};
-  c5 = newreg; Circle(c5) = {p2,p1,p3};
-  c6 = newreg; Circle(c6) = {p3,p1,p5};
-  c7 = newreg; Circle(c7) = {p5,p1,p6};
-  c8 = newreg; Circle(c8) = {p6,p1,p2};
-  c9 = newreg; Circle(c9) = {p7,p1,p3};
-  c10 = newreg; Circle(c10) = {p3,p1,p4};
-  c11 = newreg; Circle(c11) = {p4,p1,p6};
-  c12 = newreg; Circle(c12) = {p6,p1,p7};
-
-<I><FONT COLOR="#B22222">// All surfaces are not plane... Here is the way to define ruled
-</FONT></I><I><FONT COLOR="#B22222">// surfaces (which have 3 or 4 borders):
-</FONT></I>
-  l1 = newreg; Line Loop(l1) = {c5,c10,c4};   Ruled Surface(newreg) = {l1};
-  l2 = newreg; Line Loop(l2) = {c9,-c5,c1};   Ruled Surface(newreg) = {l2};
-  l3 = newreg; Line Loop(l3) = {-c12,c8,c1};  Ruled Surface(newreg) = {l3};
-  l4 = newreg; Line Loop(l4) = {c8,-c4,c11};  Ruled Surface(newreg) = {l4};
-  l5 = newreg; Line Loop(l5) = {-c10,c6,c3};  Ruled Surface(newreg) = {l5};
-  l6 = newreg; Line Loop(l6) = {-c11,-c3,c7}; Ruled Surface(newreg) = {l6};
-  l7 = newreg; Line Loop(l7) = {c2,c7,c12};   Ruled Surface(newreg) = {l7};
-  l8 = newreg; Line Loop(l8) = {-c6,-c9,c2};  Ruled Surface(newreg) = {l8};
-
-<I><FONT COLOR="#B22222">// Arrays of variables can be manipulated in the same way as classical
-</FONT></I><I><FONT COLOR="#B22222">// variables. Warning: accessing an uninitialized element in an array
-</FONT></I><I><FONT COLOR="#B22222">// will produce an unpredictable result. Note that whole arrays can
-</FONT></I><I><FONT COLOR="#B22222">// also be instantly initialized (e.g. l[]={1,2,7} is valid).
-</FONT></I>
-  theloops[t] = newreg ; 
-
-  Surface Loop(theloops[t]) = {l8+1, l5+1, l1+1, l2+1, -(l3+1), -(l7+1), l6+1, l4+1};
-
-  thehole = newreg ; 
-  Volume(thehole) = theloops[t] ;
-
-Return
-
-
-x = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ;
-
-<I><FONT COLOR="#B22222">// A For loop is used to generate five holes in the cube:
-</FONT></I>
-For t In {1:5}
-
-  x += 0.166 ; 
-  z += 0.166 ; 
-
-<I><FONT COLOR="#B22222">// This command calls the function CheeseHole. Note that, instead of
-</FONT></I><I><FONT COLOR="#B22222">// defining a function, we could have defined a file containing the
-</FONT></I><I><FONT COLOR="#B22222">// same code, and used the Include command to include this file.
-</FONT></I>
-  Call CheeseHole ;
-
-<I><FONT COLOR="#B22222">// A physical volume is defined for each cheese hole
-</FONT></I>
-  Physical Volume (t) = thehole ;
- 
-<I><FONT COLOR="#B22222">// The Printf function permits to print the value of variables on the
-</FONT></I><I><FONT COLOR="#B22222">// terminal, in a way similar to the 'printf' C function:
-</FONT></I>
-  Printf(&quot;The cheese hole %g (center = {%g,%g,%g}, radius = %g) has number %g!&quot;,
-	 t, x, y, z, r, thehole) ;
-
-<I><FONT COLOR="#B22222">// Note: All Gmsh variables are treated internally as double precision
-</FONT></I><I><FONT COLOR="#B22222">// numbers. The format string should thus only contain valid double
-</FONT></I><I><FONT COLOR="#B22222">// precision number format specifiers (see the C or C++ language
-</FONT></I><I><FONT COLOR="#B22222">// reference for more details).
-</FONT></I>
-EndFor
-
-<I><FONT COLOR="#B22222">// This is the surface loop for the exterior surface of the cube:
-</FONT></I>
-theloops[0] = newreg ;
-
-Surface Loop(theloops[0]) = {35,31,29,37,33,23,39,25,27} ;
-
-<I><FONT COLOR="#B22222">// The volume of the cube, without the 5 cheese holes, is defined by 6
-</FONT></I><I><FONT COLOR="#B22222">// surface loops (the exterior surface and the five interior loops).
-</FONT></I><I><FONT COLOR="#B22222">// To reference an array of variables, its identifier is followed by
-</FONT></I><I><FONT COLOR="#B22222">// '[]':
-</FONT></I>
-Volume(186) = {theloops[]} ;
-
-<I><FONT COLOR="#B22222">// This physical volume assigns the region number 10 to the tetrahedra
-</FONT></I><I><FONT COLOR="#B22222">// paving the cube (but not the holes, whose elements were tagged from
-</FONT></I><I><FONT COLOR="#B22222">// 1 to 5 in the 'For' loop)
-</FONT></I>
-Physical Volume (10) = 186 ;
-
-</PRE>
-<HR>
-<A NAME="file7">
-<H1>t6.geo 7/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file6">prev</A>][<A HREF="#file8">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 6
- * 
- *  Transfinite meshes
- *
- *********************************************************************/</FONT></I>
-
-r_int  = 0.05 ;
-r_ext  = 0.051 ;
-r_far  = 0.125 ;
-r_inf  = 0.4 ;
-phi1   = 30. * (Pi/180.) ;
-angl   = 45. * (Pi/180.) ;
-
-nbpt_phi   = 5 ; nbpt_int   = 20 ;
-nbpt_arc1  = 10 ; nbpt_arc2  = 10 ;
-nbpt_shell = 10 ; nbpt_far   = 25 ; nbpt_inf = 15 ;
-
-lc0 = 0.1 ; lc1 = 0.1 ; lc2 = 0.3 ;
-
-Point(1) = {0,     0, 0, lc0} ;
-Point(2) = {r_int, 0, 0, lc0} ;
-Point(3) = {r_ext, 0, 0, lc1} ;
-Point(4) = {r_far, 0, 0, lc2} ;
-Point(5) = {r_inf, 0, 0, lc2} ;
-Point(6) = {0, 0,  r_int, lc0} ;
-Point(7) = {0, 0,  r_ext, lc1} ;
-Point(8) = {0, 0,  r_far, lc2} ;
-Point(9) = {0, 0,  r_inf, lc2} ;
-
-Point(10) = {r_int*Cos(phi1), r_int*Sin(phi1), 0, lc0} ;
-Point(11) = {r_ext*Cos(phi1), r_ext*Sin(phi1), 0, lc1} ;
-Point(12) = {r_far*Cos(phi1), r_far*Sin(phi1), 0, lc2} ;
-Point(13) = {r_inf*Cos(phi1), r_inf*Sin(phi1), 0, lc2} ;
-
-Point(14) = {r_int/2,           0,   0,               lc2} ;
-Point(15) = {r_int/2*Cos(phi1), r_int/2*Sin(phi1), 0, lc2} ;
-Point(16) = {r_int/2,           0,                 r_int/2, lc2} ;
-Point(17) = {r_int/2*Cos(phi1), r_int/2*Sin(phi1), r_int/2, lc2} ;
-Point(18) = {0, 0,  r_int/2, lc2} ;
-Point(19) = {r_int*Cos(angl),           0,                         r_int*Sin(angl), lc2} ;
-Point(20) = {r_int*Cos(angl)*Cos(phi1), r_int*Cos(angl)*Sin(phi1), r_int*Sin(angl), lc2} ;
-Point(21) = {r_ext*Cos(angl),           0,                         r_ext*Sin(angl), lc2} ;
-Point(22) = {r_ext*Cos(angl)*Cos(phi1), r_ext*Cos(angl)*Sin(phi1), r_ext*Sin(angl), lc2} ;
-Point(23) = {r_far*Cos(angl),           0,                         r_far*Sin(angl), lc2} ;
-Point(24) = {r_far*Cos(angl)*Cos(phi1), r_far*Cos(angl)*Sin(phi1), r_far*Sin(angl), lc2} ;
-Point(25) = {r_inf,           0,                r_inf, lc2} ;
-Point(26) = {r_inf*Cos(phi1), r_inf*Sin(phi1),  r_inf, lc2} ;
-
-Circle(1) = {2,1,19};   Circle(2) = {19,1,6};   Circle(3) = {3,1,21};
-Circle(4) = {21,1,7};   Circle(5) = {4,1,23};   Circle(6) = {23,1,8};   
-Line(7) = {5,25};   Line(8) = {25,9};
-Circle(9) = {10,1,20};  Circle(10) = {20,1,6};  Circle(11) = {11,1,22};
-Circle(12) = {22,1,7};  Circle(13) = {12,1,24}; Circle(14) = {24,1,8};
-Line(15) = {13,26}; Line(16) = {26,9};
-Circle(17) = {19,1,20}; Circle(18) = {21,1,22}; Circle(19) = {23,1,24};
-Circle(20) = {25,1,26}; Circle(21) = {2,1,10};  Circle(22) = {3,1,11};  
-Circle(23) = {4,1,12};  Circle(24) = {5,1,13};
-
-Line(25) = {1,14};  Line(26) = {14,2};  Line(27) = {2,3};   Line(28) = {3,4};
-Line(29) = {4,5};   Line(30) = {1,15};  Line(31) = {15,10}; Line(32) = {10,11};
-Line(33) = {11,12}; Line(34) = {12,13}; Line(35) = {14,15}; Line(36) = {14,16};
-Line(37) = {15,17}; Line(38) = {16,17}; Line(39) = {18,16}; Line(40) = {18,17};
-Line(41) = {1,18};  Line(42) = {18,6};  Line(43) = {6,7};   Line(44) = {16,19};
-Line(45) = {19,21}; Line(46) = {21,23}; Line(47) = {23,25}; Line(48) = {17,20};
-Line(49) = {20,22}; Line(50) = {22,24}; Line(51) = {24,26}; Line(52) = {7,8};
-Line(53) = {8,9};
-
-Line Loop(54) = {39,-36,-25,41};  Ruled Surface(55) = {54};
-Line Loop(56) = {44,-1,-26,36};   Ruled Surface(57) = {56};
-Line Loop(58) = {3,-45,-1,27};    Ruled Surface(59) = {58};
-Line Loop(60) = {5,-46,-3,28};    Ruled Surface(61) = {60};
-Line Loop(62) = {7,-47,-5,29};    Ruled Surface(63) = {62};
-Line Loop(64) = {-2,-44,-39,42};  Ruled Surface(65) = {64};
-Line Loop(66) = {-4,-45,2,43};    Ruled Surface(67) = {66};
-Line Loop(68) = {-6,-46,4,52};    Ruled Surface(69) = {68};
-Line Loop(70) = {-8,-47,6,53};    Ruled Surface(71) = {70};
-Line Loop(72) = {-40,-41,30,37};  Ruled Surface(73) = {72};
-Line Loop(74) = {48,-9,-31,37};   Ruled Surface(75) = {74};
-Line Loop(76) = {49,-11,-32,9};   Ruled Surface(77) = {76};
-Line Loop(78) = {-50,-11,33,13};  Ruled Surface(79) = {78};
-Line Loop(80) = {-51,-13,34,15};  Ruled Surface(81) = {80};
-Line Loop(82) = {10,-42,40,48};   Ruled Surface(83) = {82};
-Line Loop(84) = {12,-43,-10,49};  Ruled Surface(85) = {84};
-Line Loop(86) = {14,-52,-12,50};  Ruled Surface(87) = {86};
-Line Loop(88) = {16,-53,-14,51};  Ruled Surface(89) = {88};
-Line Loop(90) = {-30,25,35};      Ruled Surface(91) = {90};
-Line Loop(92) = {-40,39,38};      Ruled Surface(93) = {92};
-Line Loop(94) = {37,-38,-36,35};  Ruled Surface(95) = {94};
-Line Loop(96) = {-48,-38,44,17};  Ruled Surface(97) = {96};
-Line Loop(98) = {18,-49,-17,45};  Ruled Surface(99) = {98};
-Line Loop(100) = {19,-50,-18,46}; Ruled Surface(101) = {100};
-Line Loop(102) = {20,-51,-19,47}; Ruled Surface(103) = {102};
-Line Loop(104) = {-2,17,10};      Ruled Surface(105) = {104};
-Line Loop(106) = {-9,-21,1,17};   Ruled Surface(107) = {106};
-Line Loop(108) = {-4,18,12};      Ruled Surface(109) = {108};
-Line Loop(110) = {-11,-22,3,18};  Ruled Surface(111) = {110};
-Line Loop(112) = {-13,-23,5,19};  Ruled Surface(113) = {112};
-Line Loop(114) = {-6,19,14};      Ruled Surface(115) = {114};
-Line Loop(116) = {-15,-24,7,20};  Ruled Surface(117) = {116};
-Line Loop(118) = {-8,20,16};      Ruled Surface(119) = {118};
-Line Loop(120) = {-31,-35,26,21}; Ruled Surface(121) = {120};
-Line Loop(122) = {32,-22,-27,21}; Ruled Surface(123) = {122};
-Line Loop(124) = {33,-23,-28,22}; Ruled Surface(125) = {124};
-Line Loop(126) = {34,-24,-29,23}; Ruled Surface(127) = {126};
-
-Surface Loop(128) = {93,-73,-55,95,-91};         Volume(129) = {128}; <I><FONT COLOR="#B22222">// int
-</FONT></I>Surface Loop(130) = {107,-75,-97,95,57,121};     Volume(131) = {130}; <I><FONT COLOR="#B22222">// int b
-</FONT></I>Surface Loop(132) = {105,-65,-97,-83,-93};       Volume(133) = {132}; <I><FONT COLOR="#B22222">// int h
-</FONT></I>Surface Loop(134) = {99,-111,77,123,59,107};     Volume(135) = {134}; <I><FONT COLOR="#B22222">// shell b
-</FONT></I>Surface Loop(136) = {99,-109,67,105,85};         Volume(137) = {136}; <I><FONT COLOR="#B22222">// shell h
-</FONT></I>Surface Loop(138) = {113,79,-101,-111,-125,-61}; Volume(139) = {138}; <I><FONT COLOR="#B22222">// ext b
-</FONT></I>Surface Loop(140) = {115,-69,-101,-87,-109};     Volume(141) = {140}; <I><FONT COLOR="#B22222">// ext h
-</FONT></I>Surface Loop(142) = {103,-117,-81,113,127,63};   Volume(143) = {142}; <I><FONT COLOR="#B22222">// inf b
-</FONT></I>Surface Loop(144) = {89,-119,71,103,115};        Volume(145) = {144}; <I><FONT COLOR="#B22222">// inf h
-</FONT></I>
-<I><FONT COLOR="#B22222">// Transfinite line commands explicitly specify the number of points
-</FONT></I><I><FONT COLOR="#B22222">// and their distribution. A minus sign in the argument list of the
-</FONT></I><I><FONT COLOR="#B22222">// transfinite command will produce the reversed mesh.
-</FONT></I>
-Transfinite Line{35,21,22,23,24,38,17,18,19,20}   = nbpt_phi ;
-Transfinite Line{31,26,48,44,42}                  = nbpt_int Using Progression 0.95;
-Transfinite Line{41,37,36,9,11,1,3,13,5,15,7}     = nbpt_arc1 ;
-Transfinite Line{30,25,40,39,10,2,12,4,14,6,16,8} = nbpt_arc2 ;
-Transfinite Line{32,27,49,45,43}                  = nbpt_shell ;
-Transfinite Line{33,28,46,50,52}                  = nbpt_far Using Progression 1.05 ;
-Transfinite Line{34,29,51,47,53}                  = nbpt_inf Using Progression 0.01;
-
-<I><FONT COLOR="#B22222">// *All* 2D and 3D transfinite entities are defined in respect to
-</FONT></I><I><FONT COLOR="#B22222">// points. The ordering of the points defines the ordering of the mesh
-</FONT></I><I><FONT COLOR="#B22222">// elements.
-</FONT></I>
-Transfinite Surface{55} = {1,14,16,18};
-Transfinite Surface{57} = {14,2,19,16};
-Transfinite Surface{59} = {2,3,21,19};
-Transfinite Surface{61} = {3,4,23,21};
-Transfinite Surface{63} = {4,5,25,23};
-Transfinite Surface{73} = {1,15,17,18};
-Transfinite Surface{75} = {15,10,20,17};
-Transfinite Surface{77} = {10,11,22,20};
-Transfinite Surface{79} = {11,12,24,22};
-Transfinite Surface{81} = {12,13,26,24};
-Transfinite Surface{65} = {18,16,19,6};
-Transfinite Surface{67} = {6,19,21,7};
-Transfinite Surface{69} = {7,21,23,8};
-Transfinite Surface{71} = {8,23,25,9};
-Transfinite Surface{83} = {17,18,6,20};
-Transfinite Surface{85} = {20,6,7,22};
-Transfinite Surface{87} = {22,7,8,24};
-Transfinite Surface{89} = {24,8,9,26};
-Transfinite Surface{91} = {1,14,15};
-Transfinite Surface{95} = {15,14,16,17};
-Transfinite Surface{93} = {18,16,17};
-Transfinite Surface{121} = {15,14,2,10};
-Transfinite Surface{97} = {17,16,19,20};
-Transfinite Surface{123} = {10,2,3,11};
-Transfinite Surface{99} = {20,19,21,22};
-Transfinite Surface{107} = {10,2,19,20};
-Transfinite Surface{105} = {6,20,19};
-Transfinite Surface{109} = {7,22,21};
-Transfinite Surface{111} = {11,3,21,22};
-Transfinite Surface{101} = {22,21,23,24};
-Transfinite Surface{125} = {11,3,4,12};
-Transfinite Surface{115} = {8,24,23};
-Transfinite Surface{113} = {24,12,4,23};
-Transfinite Surface{127} = {12,13,5,4};
-Transfinite Surface{103} = {24,23,25,26};
-Transfinite Surface{119} = {9,26,25};
-Transfinite Surface{117} = {13,5,25,26};
-
-<I><FONT COLOR="#B22222">// As with Extruded meshes, the Recombine command tells Gmsh to
-</FONT></I><I><FONT COLOR="#B22222">// recombine the simplices into quadrangles, prisms or hexahedra when
-</FONT></I><I><FONT COLOR="#B22222">// possible. A colon in a list acts as in the 'For' loop: all surfaces
-</FONT></I><I><FONT COLOR="#B22222">// having numbers between 55 and 127 are considered.
-</FONT></I>
-Recombine Surface {55:127};
-
-<I><FONT COLOR="#B22222">// *All* 2D and 3D transfinite entities are defined in respect to
-</FONT></I><I><FONT COLOR="#B22222">// points. The ordering of the points defines the ordering of the mesh
-</FONT></I><I><FONT COLOR="#B22222">// elements.
-</FONT></I>
-Transfinite Volume{129} = {1,14,15,18,16,17};
-Transfinite Volume{131} = {17,16,14,15,20,19,2,10};
-Transfinite Volume{133} = {18,17,16,6,20,19};
-Transfinite Volume{135} = {10,2,19,20,11,3,21,22};
-Transfinite Volume{137} = {6,20,19,7,22,21};
-Transfinite Volume{139} = {11,3,4,12,22,21,23,24};
-Transfinite Volume{141} = {7,22,21,8,24,23};
-Transfinite Volume{143} = {12,4,5,13,24,23,25,26};
-Transfinite Volume{145} = {8,24,23,9,26,25};
-
-VolInt           = 1000 ;
-SurfIntPhi0      = 1001 ;
-SurfIntPhi1      = 1002 ;
-SurfIntZ0        = 1003 ;
-
-VolShell         = 2000 ;
-SurfShellInt     = 2001 ;
-SurfShellExt     = 2002 ;
-SurfShellPhi0    = 2003 ;
-SurfShellPhi1    = 2004 ;
-SurfShellZ0      = 2005 ;
-LineShellIntPhi0 = 2006 ;
-LineShellIntPhi1 = 2007 ;
-LineShellIntZ0   = 2008 ;
-PointShellInt    = 2009 ;
-
-VolExt           = 3000 ;
-VolInf           = 3001 ;
-SurfInf          = 3002 ;
-SurfExtInfPhi0   = 3003 ;
-SurfExtInfPhi1   = 3004 ;
-SurfExtInfZ0     = 3005 ;
-SurfInfRight     = 3006 ;
-SurfInfTop       = 3007 ;
-
-Physical Volume  (VolInt)           = {129,131,133} ;
-Physical Surface (SurfIntPhi0)      = {55,57,65} ;
-Physical Surface (SurfIntPhi1)      = {73,75,83} ;
-Physical Surface (SurfIntZ0)        = {91,121} ;
-
-Physical Volume  (VolShell)         = {135,137} ;
-Physical Surface (SurfShellInt)     = {105,107} ;
-Physical Surface (SurfShellExt)     = {109,111} ;
-Physical Surface (SurfShellPhi0)    = {59,67} ;
-Physical Surface (SurfShellPhi1)    = {77,85} ;
-Physical Surface (SurfShellZ0)      = {123} ;
-Physical Line    (LineShellIntPhi0) = {1,2} ;
-Physical Line    (LineShellIntPhi1) = {9,10} ;
-Physical Line    (LineShellIntZ0)   = 21 ;
-Physical Point   (PointShellInt)    = 6 ;
-
-Physical Volume  (VolExt)           = {139,141} ;
-Physical Volume  (VolInf)           = {143,145} ;
-Physical Surface (SurfExtInfPhi0)   = {61,63,69,71} ;
-Physical Surface (SurfExtInfPhi1)   = {79,87,81,89} ;
-Physical Surface (SurfExtInfZ0)     = {125,127} ;
-Physical Surface (SurfInfRight)     = {117} ;
-Physical Surface (SurfInfTop)       = {119} ;
-</PRE>
-<HR>
-<A NAME="file8">
-<H1>t7.geo 8/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file7">prev</A>][<A HREF="#file9">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 7
- * 
- *  Anisotropic meshes, Attractors
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// The new anisotropic 2D mesh generator can be selected with:
-</FONT></I>
-Mesh.Algorithm = 2 ;
-
-<I><FONT COLOR="#B22222">// One can force a 4 step Laplacian smoothing of the mesh with:
-</FONT></I>
-Mesh.Smoothing = 4 ;
-
-lc = .1;
-
-Point(1) = {0.0,0.0,0,lc};
-Point(2) = {1,0.0,0,lc};
-Point(3) = {1,1,0,lc};
-Point(4) = {0,1,0,lc};
-
-Line(1) = {3,2};
-Line(2) = {2,1};
-Line(3) = {1,4};
-Line(4) = {4,3};
-
-Line Loop(5) = {1,2,3,4};
-Plane Surface(6) = {5};
-
-Point(5) = {0.1,0.2,0,lc};
-Point(11) = {0.5,0.5,-1,lc};
-Point(22) = {0.6,0.6,1,lc};
-
-Line(5) = {11,22};
-
-<I><FONT COLOR="#B22222">// Anisotropic attractors can be defined on points and lines:
-</FONT></I>
-Attractor Line{5} = {.1, 0.01, 17};
-
-Attractor Line{1,2} = {0.1, 0.005, 3};
-</PRE>
-<HR>
-<A NAME="file9">
-<H1>t8.geo 9/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file8">prev</A>][<A HREF="#file10">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 8
- * 
- *  Post-Processing, Scripting, Animations, Options
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// The first example is included, as well as two post-processing maps
-</FONT></I><I><FONT COLOR="#B22222">// (for the format of the post-processing maps, see the FORMATS file):
-</FONT></I>
-Include &quot;t1.geo&quot; ;
-Include &quot;view1.pos&quot; ;
-Include &quot;view1.pos&quot; ;
-
-<I><FONT COLOR="#B22222">// Some general options are set (all the options specified
-</FONT></I><I><FONT COLOR="#B22222">// interactively can be directly specified in the ascii input
-</FONT></I><I><FONT COLOR="#B22222">// files. The current options can be saved into a file by selecting
-</FONT></I><I><FONT COLOR="#B22222">// 'File-&gt;Save as-&gt;GEO complete options')...
-</FONT></I>
-General.Trackball = 0 ;
-General.RotationX = 0 ;
-General.RotationY = 0 ;
-General.RotationZ = 0 ;
-General.Color.Background = White ;
-General.Color.Text = Black ;
-General.Orthographic = 0 ;
-General.Axes = 0 ;
-
-<I><FONT COLOR="#B22222">// ...as well as some options for each post-processing view...
-</FONT></I>
-View[0].Name = &quot;This is a very stupid demonstration...&quot; ;
-View[0].IntervalsType = 2 ;
-View[0].OffsetZ = 0.05 ;
-View[0].RaiseZ = 0 ;
-View[0].Light = 1 ;
-
-View[1].Name = &quot;...of Gmsh's scripting capabilities&quot; ;
-View[1].IntervalsType = 1 ;
-View[1].ColorTable = { Green, Blue } ;
-View[1].NbIso = 10 ;
-
-<I><FONT COLOR="#B22222">// ...and loop from 1 to 255 with a step of 1 is performed (to use a
-</FONT></I><I><FONT COLOR="#B22222">// step different from 1, just add a third argument in the list,
-</FONT></I><I><FONT COLOR="#B22222">// e.g. 'For num In {0.5:1.5:0.1}' increments num from 0.5 to 1.5 with
-</FONT></I><I><FONT COLOR="#B22222">// a step of 0.1):
-</FONT></I>
-t = 0 ;
-
-For num In {1:255}
-
-  View[0].TimeStep = t ;
-  View[1].TimeStep = t ;
-
-  t = (View[0].TimeStep &lt; View[0].NbTimeStep-1) ? t+1 : 0 ;
-  
-  View[0].RaiseZ += 0.01*t ;
-
-  If (num == 3)
-    <I><FONT COLOR="#B22222">// We want to use mpeg_encode to create a nice 320x240 animation
-</FONT></I>    <I><FONT COLOR="#B22222">// for all frames when num==3:
-</FONT></I>    General.GraphicsWidth = 320 ; 
-    General.GraphicsHeight = 240 ;
-  EndIf
-
-  <I><FONT COLOR="#B22222">// It is possible to nest loops:
-</FONT></I>
-  For num2 In {1:50}
-
-    General.RotationX += 10 ;
-    General.RotationY = General.RotationX / 3 ;
-    General.RotationZ += 0.1 ;
- 
-    Sleep 0.01; <I><FONT COLOR="#B22222">// sleep for 0.01 second
-</FONT></I>    Draw; <I><FONT COLOR="#B22222">// draw the scene
-</FONT></I>
-    If ((num == 3) &amp;&amp; (num2 &lt; 10))
-      <I><FONT COLOR="#B22222">// The Sprintf function permits to create complex strings using
-</FONT></I>      <I><FONT COLOR="#B22222">// variables (since all Gmsh variables are treated internally as
-</FONT></I>      <I><FONT COLOR="#B22222">// double precision numbers, the format should only contain valid
-</FONT></I>      <I><FONT COLOR="#B22222">// double precision number format specifiers):
-</FONT></I>      Print Sprintf(&quot;t8-0%g.jpg&quot;, num2);
-    EndIf
-
-    If ((num == 3) &amp;&amp; (num2 &gt;= 10))
-      Print Sprintf(&quot;t8-%g.jpg&quot;, num2);
-    EndIf
-
-  EndFor
-
-  If(num == 3)
-    <I><FONT COLOR="#B22222">// We make a system call to generate the mpeg
-</FONT></I>    System &quot;mpeg_encode t8.par&quot; ;    
-  EndIf
-
-EndFor
-
-
-<I><FONT COLOR="#B22222">// Here is the list of available scripting commands:
-</FONT></I><I><FONT COLOR="#B22222">//  
-</FONT></I><I><FONT COLOR="#B22222">//  Merge string;     (to merge a file)
-</FONT></I><I><FONT COLOR="#B22222">//  Draw;             (to draw the scene)
-</FONT></I><I><FONT COLOR="#B22222">//  Mesh int;         (to perform the mesh generation; 'int' = 0, 1, 2 or 3)
-</FONT></I><I><FONT COLOR="#B22222">//  Save string;      (to save the mesh)
-</FONT></I><I><FONT COLOR="#B22222">//  Print string;     (to print the graphic window)
-</FONT></I><I><FONT COLOR="#B22222">//  Sleep expr;       (to sleep during expr seconds)
-</FONT></I><I><FONT COLOR="#B22222">//  Delete View[int]; (to free the view int)
-</FONT></I><I><FONT COLOR="#B22222">//  Delete Meshes;    (to free all meshes)
-</FONT></I><I><FONT COLOR="#B22222">//  System string;    (to execute a system call)
-</FONT></I></PRE>
-<HR>
-<A NAME="file10">
-<H1>t9.geo 10/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file9">prev</A>][next]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 9
- * 
- *  Post-Processing, Plugins
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// Plugins can be added to Gmsh in order to extend its
-</FONT></I><I><FONT COLOR="#B22222">// capabilities. For example, post-processing plugins can modify a
-</FONT></I><I><FONT COLOR="#B22222">// view, or create a new view based on previously loaded
-</FONT></I><I><FONT COLOR="#B22222">// views. Several default plugins are statically linked into Gmsh,
-</FONT></I><I><FONT COLOR="#B22222">// e.g. CutMap, CutPlane, CutSphere, Skin, Transform or Smooth.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Let's load a three-dimensional scalar view
-</FONT></I>
-Include &quot;view3.pos&quot; ;
-
-<I><FONT COLOR="#B22222">// Plugins can be controlled as other options in Gmsh. For example,
-</FONT></I><I><FONT COLOR="#B22222">// the CutMap plugin extracts an isovalue surface from a 3D scalar
-</FONT></I><I><FONT COLOR="#B22222">// view. The plugin can either be called from the graphical interface
-</FONT></I><I><FONT COLOR="#B22222">// (right click on the view button, then Plugins-&gt;CutMap), or from
-</FONT></I><I><FONT COLOR="#B22222">// the command file, as is shown below.
-</FONT></I>
-<I><FONT COLOR="#B22222">// This sets the optional parameter A of the CutMap plugin to the
-</FONT></I><I><FONT COLOR="#B22222">// value 0.67 (see the About in the graphical interface for the
-</FONT></I><I><FONT COLOR="#B22222">// documentation of each plugin), and runs the plugin:
-</FONT></I>
-Plugin(CutMap).A = 0.67 ; 
-Plugin(CutMap).iView = 0 ; <I><FONT COLOR="#B22222">//select View[0] as the working view
-</FONT></I>Plugin(CutMap).Run ; 
-
-<I><FONT COLOR="#B22222">// The following runs the CutPlane plugin:
-</FONT></I>
-Plugin(CutPlane).A = 0 ; 
-Plugin(CutPlane).B = 0.2 ; 
-Plugin(CutPlane).C = 1 ; 
-Plugin(CutPlane).D = 0 ; 
-Plugin(CutPlane).Run ; 
-
-View[0].Light = 1;
-View[0].IntervalsType = 2;
-View[0].NbIso = 6;
-View[0].SmoothNormals = 1;
-
-View[1].IntervalsType = 2;
-
-View[2].IntervalsType = 2;
-Draw;
-</PRE>
-<HR>
-<ADDRESS>Generated by <A HREF="http://www.iki.fi/~mtr/genscript/">GNU enscript 1.6.1</A>.</ADDRESS>
-</BODY>
-</HTML>
diff --git a/tutorial/view1.pos b/tutorial/view1.pos
deleted file mode 100644
index 988ee3e42288b3cd82af963725da0a924e490b80..0000000000000000000000000000000000000000
--- a/tutorial/view1.pos
+++ /dev/null
@@ -1,1287 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 1 - appendix 1
- * 
- *  Scalar view
- *
- *********************************************************************/
-
-// In this view, there are only scalar triangles.
-// There are 5 time steps -> 3*5 = 15 values for each triangle.
-
-View "a scalar map" {
-ST(0.079090117,0.19794942,0,0.06966854,0.20076802,0,0.071449289,0.19423207,0){1206859.6,1570520.4,1594804.6,-2368529.7,-3162888.4,-3019964.8,1073015.3,1636334.6,1103926.4,1335740.9,1503948.1,2033518.7,-2359414.1,-3161601.9,-2921575.1};
-ST(0.056317057,0.058022103,0,0.045416206,0.061541227,0,0.048663579,0.053435419,0){3630316.8,3642820.9,3726394.8,2330872.5,2181474.8,2589713.3,197001.66,-155055.51,663071.82,-2007682.1,-2429600.5,-1465861.1,-3494460.7,-3730025.8,-3147918.6};
-ST(0.052494391,0.065958781,0,0.045416206,0.061541227,0,0.056317057,0.058022103,0){3640248,3642820.9,3630316.8,1971511.2,2181474.8,2330872.5,-601016.65,-155055.51,197001.66,-2898090,-2429600.5,-2007682.1,-3866942,-3730025.8,-3494460.7};
-ST(0.089437553,0.21298247,0,0.093706234,0.20596864,0,0.1,0.21428571,0){556322.48,360320.46,0,-1238115.4,-758974.46,0,961021.23,479351.87,0,60411.18,228803.73,0,-1035404.3,-732939.79,0};
-ST(0,0.021428571,0,0.0084994266,0.025462386,0,0,0.028571429,0){0,1014895.2,0,0,943121.65,0,0,804669.5,0,0,609367.99,0,0,370926.59,0};
-ST(0,0.27142857,0,0.0087746229,0.27470702,0,0,0.27857143,0){0,139476.7,0,0,-408686.72,0,0,649356.33,0,0,-844695.79,0,0,980930.37,0};
-ST(0.064352171,0.083117586,0,0.058212185,0.089881183,0,0.054828578,0.081464579,0){3167194.8,3344291.6,3492382.6,915483.69,593905.21,1101278.5,-1987167.2,-2645013.4,-2043909.2,-3477240.4,-3708817.1,-3789901.6,-2495770,-1722713.3,-2941538.5};
-ST(0.043491003,0.26677795,0,0.04563604,0.25694979,0,0.0528723,0.26429657,0){657627.62,859240.08,718299.05,-1894105.9,-2406042.8,-2055661.9,2903724.9,3472131.8,3109067.1,-3565612.1,-3844488.4,-3733060,3800401.2,3448330.3,3841282.5};
-ST(0.0528723,0.26429657,0,0.04563604,0.25694979,0,0.054010827,0.25507988,0){718299.05,859240.08,897184.36,-2055661.9,-2406042.8,-2496661.6,3109067.1,3472131.8,3553831.7,-3733060,-3844488.4,-3839088.9,3841282.5,3448330.3,3290330.5};
-ST(0.052748817,0.036292023,0,0.046341114,0.044942776,0,0.043838979,0.034579424,0){3796611.1,3748809.1,3745913.7,3254886.9,2933624.2,3260141.4,2248728.5,1480431.3,2351583.2,921690.78,-294933.53,1138042.7,-537197.11,-2006921.6,-223347.31};
-ST(0.054794838,0.043915046,0,0.046341114,0.044942776,0,0.052748817,0.036292023,0){3735662.6,3748809.1,3796611.1,2959425,2933624.2,3254886.9,1568238.5,1480431.3,2248728.5,-148813.91,-294933.53,921690.78,-1835117.4,-2006921.6,-537197.11};
-ST(0.064795861,0.023107998,0,0.057612168,0.01845715,0,0.064075209,0.013493001,0){3443592.1,3752599.8,3498581.2,3242943.8,3612875.5,3428890.3,2853338,3338613.5,3290906.4,2297494.4,2940029.2,3087427.7,1607540.9,2431782.4,2822154};
-ST(0.08812606,0.087328167,0,0.091953893,0.078440357,0,0.1,0.085714286,0){1269155.7,889726.23,0,279658.57,322434.75,0,-927894.68,-450550.32,0,-1412053.3,-936443.15,0,-795447.99,-825354.72,0};
-ST(0.1,0.21428571,0,0.091864029,0.22106993,0,0.089437553,0.21298247,0){0,394005.54,556322.48,0,-927852.61,-1238115.4,0,863120.02,961021.23,0,-241435.16,60411.18,0,-536498.87,-1035404.3};
-ST(0.091758141,0.11296708,0,0.08466046,0.11619385,0,0.082583958,0.10907049,0){824791.32,1475783,1698614.9,-201020.76,-452604.25,-286603.09,-976886.6,-1789662.1,-1936849,-537824.26,-788262.21,-1323464.6,570097.26,1243195.1,836522.31};
-ST(0.046341114,0.044942776,0,0.053426379,0.049768916,0,0.048663579,0.053435419,0){3748809.1,3727873.1,3726394.8,2933624.2,2738031.5,2589713.3,1480431.3,1021148,663071.82,-294933.53,-966926.63,-1465861.1,-2006921.6,-2698501,-3147918.6};
-ST(0.08596482,0.28314521,0,0.082516133,0.27647665,0,0.089232651,0.27618677,0){145967.81,248899.48,160151.6,-433371.98,-731674.12,-470555.02,707326.96,1170289.2,751874.95,-959333.22,-1538273.3,-986723.61,1181452.3,1813237.5,1160401.4};
-ST(0.089183466,0.023798504,0,0.082332164,0.023444943,0,0.085905658,0.016824409,0){1283383.3,2029600,1656238,1204105.7,1907886.4,1604967.9,1050439.6,1671751.1,1504009.2,831874.08,1335359.8,1356492.3,561630.79,918760.81,1166855};
-ST(0.051013063,0.11801667,0,0.052058531,0.12554764,0,0.045375723,0.12284566,0){3161388.4,3065498.6,3072436,-1083065.4,-1512626.5,-1348503.3,-3873486.3,-3831818,-3829159.4,-1463412.7,-428428.64,-800055.99,2911579,3614977.4,3380414.3};
-ST(0.076938259,0.060604721,0,0.080938662,0.054906318,0,0.08415119,0.061061125,0){2443533.2,2097661.4,1759442.9,1491930.8,1423084,1064240.3,-40674.57,290856.94,-51487.645,-1557435.8,-934922.56,-1146904.2,-2468002.6,-1860365.1,-1789550.6};
-ST(0.027903545,0.087518505,0,0.025411973,0.082310594,0,0.032911969,0.081185013,0){2674848,2525130.6,3037931.3,580994.77,762374.09,971274.35,-1967676.8,-1532614.6,-1756226.8,-2976106,-2757779.1,-3289165.4,-1655065.1,-2058136.4,-2584916.3};
-ST(0.045116599,0.21481108,0,0.053910411,0.21448753,0,0.049797208,0.2214244,0){1654487.5,1667429.4,1551864.2,-3731787.4,-3752161.8,-3662861.4,3030991.5,3023771,3430735.4,-73694.316,-28239.212,-1003918.8,-2938909.4,-2988983.1,-2065424.5};
-ST(0.064795861,0.023107998,0,0.057707972,0.025075094,0,0.057612168,0.01845715,0){3443592.1,3734947.8,3752599.8,3242943.8,3478918.2,3612875.5,2853338,2984396.6,3338613.5,2297494.4,2285289.9,2940029.2,1607540.9,1429238.8,2431782.4};
-ST(0.0093450955,0.28843768,0,0.0045473776,0.2936365,0,0,0.28571429,0){67949.514,18406.211,0,-202850.84,-55138.333,0,334776.34,91630.552,0,-461793.67,-127724.83,0,581935.08,162961.08,0};
-ST(0.1,0.13571429,0,0.093938974,0.13899,0,0.0910478,0.13167545,0){0,548364.78,831136.87,0,-422206.84,-514132.23,0,-645591.08,-1027305.8,0,273728.87,122313.64,0,708600.91,1073956.7};
-ST(0,0.014285714,0,0.0045481906,0.0063920675,0,0.0093389246,0.011691623,0){0,552257.15,1120186.5,0,549810.55,1103410.3,0,544927.47,1070108.3,0,537633.65,1020788.4,0,527798.54,956114.18};
-ST(0.085905658,0.016824409,0,0.093571257,0.018380777,0,0.089183466,0.023798504,0){1656238,774815.13,1283383.3,1604967.9,746204.54,1204105.7,1504009.2,690036.86,1050439.6,1356492.3,608388.09,831874.08,1166855,504051.02,561630.79};
-ST(0.089232651,0.27618677,0,0.093593186,0.28160993,0,0.08596482,0.28314521,0){160151.6,74588.283,145967.81,-470555.02,-221009.65,-433371.98,751874.95,359269.18,707326.96,-986723.61,-484261.41,-959333.22,1160401.4,591230.88,1181452.3};
-ST(0.015416139,0.018002698,0,0.006650898,0.018174199,0,0.0093389246,0.011691623,0){1798828.3,801243.34,1120186.5,1735136,772347.91,1103410.3,1609995.5,715593.27,1070108.3,1427830.3,633022.27,1020788.4,1194733.1,527557,956114.18};
-ST(0.0093450955,0.28843768,0,0.0067236406,0.28198319,0,0.015498485,0.28248556,0){67949.514,76627.274,166274.63,-202850.84,-227172.13,-493262.57,334776.34,369685.4,803759.61,-461793.67,-499127.77,-1087394.1,581935.08,610772.43,1334475.8};
-ST(0.048076401,0.17082416,0,0.048811039,0.17808485,0,0.041643161,0.17482395,0){2424680.5,2310715.6,2284160.6,-3473815.1,-3650410,-3458410.7,-921629.25,-194330.82,-506290.81,3872759.5,3763231.4,3718851.8,-754316.94,-1987755.8,-1405815.9};
-ST(0.041643161,0.17482395,0,0.048811039,0.17808485,0,0.043573225,0.18196099,0){2284160.6,2310715.6,2202933.2,-3458410.7,-3650410,-3650165.7,-506290.81,-194330.82,195066.32,3718851.8,3763231.4,3522129.2,-1405815.9,-1987755.8,-2509350};
-ST(0.020973714,0.16688371,0,0.021502186,0.15931359,0,0.029380008,0.16405835,0){1525118.3,1630158.4,2021292.5,-2061659.5,-1947614.2,-2614335.2,-799875.51,-1250943.8,-1254306.4,2343184.8,2191316.6,2982541.3,-24581.749,824223.66,378860.61};
-ST(0.075422073,0.20645372,0,0.06966854,0.20076802,0,0.079090117,0.19794942,0){1273700.5,1570520.4,1206859.6,-2693470,-3162888.4,-2368529.7,1728669,1636334.6,1073015.3,766631.5,1503948.1,1335740.9,-2583646.6,-3161601.9,-2359414.1};
-ST(0.077619244,0.18028791,0,0.077140734,0.17217741,0,0.085369203,0.17624497,0){1471797.4,1584233.7,1039089.6,-2389894.4,-2313491.7,-1603144.1,18944.546,-519338.58,-168940.91,2378251.6,2552719.3,1695116.9,-1502642.9,-655929.75,-751642.95};
-ST(0.0084994266,0.025462386,0,0.006650898,0.018174199,0,0.015416139,0.018002698,0){1014895.2,801243.34,1798828.3,943121.65,772347.91,1735136,804669.5,715593.27,1609995.5,609367.99,633022.27,1427830.3,370926.59,527557,1194733.1};
-ST(0.015498485,0.28248556,0,0.0067236406,0.28198319,0,0.0087746229,0.27470702,0){166274.63,76627.274,139476.7,-493262.57,-227172.13,-408686.72,803759.61,369685.4,649356.33,-1087394.1,-499127.77,-844695.79,1334475.8,610772.43,980930.37};
-ST(0.029380008,0.16405835,0,0.021502186,0.15931359,0,0.027609688,0.15620978,0){2021292.5,1630158.4,2023546.1,-2614335.2,-1947614.2,-2286520.9,-1254306.4,-1250943.8,-1726415,2982541.3,2191316.6,2510934.9,378860.61,824223.66,1400022.9};
-ST(0.0087746229,0.27470702,0,0.018422519,0.27450763,0,0.015498485,0.28248556,0){139476.7,282501.19,166274.63,-408686.72,-827496.14,-493262.57,649356.33,1313896,803759.61,-844695.79,-1707268.8,-1087394.1,980930.37,1979556.1,1334475.8};
-ST(0.014305262,0.26641769,0,0.018422519,0.27450763,0,0.0087746229,0.27470702,0){294901.31,282501.19,139476.7,-848621.76,-827496.14,-408686.72,1298521.9,1313896,649356.33,-1589572.3,-1707268.8,-844695.79,1686004.5,1979556.1,980930.37};
-ST(0.0084994266,0.025462386,0,0.016759526,0.025876157,0,0.014137494,0.034012185,0){1014895.2,1932221.9,1641076.4,943121.65,1791225.7,1435142,804669.5,1519509.7,1049094.4,609367.99,1136895.1,531342.12,370926.59,671081.1,-53364.585};
-ST(0.015416139,0.018002698,0,0.016759526,0.025876157,0,0.0084994266,0.025462386,0){1798828.3,1932221.9,1014895.2,1735136,1791225.7,943121.65,1609995.5,1519509.7,804669.5,1427830.3,1136895.1,609367.99,1194733.1,671081.1,370926.59};
-ST(0.025770754,0.10718168,0,0.032036001,0.10024616,0,0.034786476,0.1076516,0){2378738.7,2837469.6,2912738.3,-316264.13,-12660.65,-413135.58,-2653040.8,-2850146.6,-3267374.9,-1984140.6,-2824890.6,-2390915.6,932667.69,37524.098,1215377.6};
-ST(0.024938414,0.098415267,0,0.032036001,0.10024616,0,0.025770754,0.10718168,0){2383058.5,2837469.6,2378738.7,68195.72,-12660.65,-316264.13,-2312962.3,-2850146.6,-2653040.8,-2447461.4,-2824890.6,-1984140.6,-204726.33,37524.098,932667.69};
-ST(0.049797208,0.2214244,0,0.053910411,0.21448753,0,0.05718895,0.22161738,0){1551864.2,1667429.4,1508977,-3662861.4,-3752161.8,-3566099.1,3430735.4,3023771,3352547.9,-1003918.8,-28239.212,-1004251.2,-2065424.5,-2988983.1,-1983866.6};
-ST(0.1,0.21428571,0,0.093706234,0.20596864,0,0.1,0.20714286,0){0,360320.46,0,0,-758974.46,0,0,479351.87,0,0,228803.73,0,0,-732939.79,0};
-ST(0.066012722,0.055502179,0,0.064832361,0.062804408,0,0.056317057,0.058022103,0){3257272.9,3281120.4,3630316.8,2187557.2,1912310.8,2330872.5,399401.17,-254314.65,197001.66,-1519988.7,-2314932.7,-2007682.1,-2940625.1,-3410309.6,-3494460.7};
-ST(0.063265205,0.21633109,0,0.066992124,0.20847551,0,0.073708403,0.21517194,0){1505335.5,1540360.8,1225969.3,-3432481.9,-3311175.4,-2772471.1,2888962.8,2266191.6,2271379.1,-265885.87,706070.36,-92677.622,-2549234.8,-3078419.5,-2155133.8};
-ST(0.073708403,0.21517194,0,0.066992124,0.20847551,0,0.075422073,0.20645372,0){1225969.3,1540360.8,1273700.5,-2772471.1,-3311175.4,-2693470,2271379.1,2266191.6,1728669,-92677.622,706070.36,766631.5,-2155133.8,-3078419.5,-2583646.6};
-ST(0.015498485,0.28248556,0,0.017990672,0.29207379,0,0.0093450955,0.28843768,0){166274.63,86228.122,67949.514,-493262.57,-258100.45,-202850.84,803759.61,428229.3,334776.34,-1087394.1,-595472.42,-461793.67,1334475.8,758576.15,581935.08};
-ST(0.0093389246,0.011691623,0,0.01808004,0.0081573173,0,0.015416139,0.018002698,0){1120186.5,2085729.2,1798828.3,1103410.3,2070583.9,1735136,1070108.3,2040406.9,1609995.5,1020788.4,1995444.2,1427830.3,956114.18,1935913.6,1194733.1};
-ST(0.089949388,0.2453858,0,0.092168655,0.23668616,0,0.1,0.24285714,0){339950.36,307607.26,0,-911669.73,-792496.69,0,1193275.4,941630.33,0,-1095139.7,-691810.02,0,648419.14,148523.72,0};
-ST(0.077013163,0.11736903,0,0.074105201,0.11070107,0,0.082583958,0.10907049,0){2095773.2,2359475.3,1698614.9,-691227.47,-471755.94,-286603.09,-2559181.5,-2736894.8,-1936849,-1023961.4,-1717960.7,-1323464.6,1873161.8,1362139.4,836522.31};
-ST(0.1,0.13571429,0,0.0910478,0.13167545,0,0.1,0.12857143,0){0,831136.87,0,0,-514132.23,0,0,-1027305.8,0,0,122313.64,0,0,1073956.7,0};
-ST(0.087331535,0.0958472,0,0.081743274,0.092625466,0,0.08812606,0.087328167,0){1318484.3,1862860,1269155.7,98077.228,243386.47,279658.57,-1213131.9,-1587731,-927894.68,-1401481.2,-2038652.4,-1412053.3,-292629.72,-717394.49,-795447.99};
-ST(0.091053567,0.10618538,0,0.091758141,0.11296708,0,0.082583958,0.10907049,0){914271.31,824791.32,1698614.9,-104388.15,-201020.76,-286603.09,-1006721.9,-976886.6,-1936849,-787386.88,-537824.26,-1323464.6,309052.61,570097.26,836522.31};
-ST(0.092857143,0.3,0,0.091323117,0.29067423,0,0.1,0.29285714,0){0,51002.156,0,0,-152526.43,0,0,252617.29,0,0,-350336.87,0,0,444691.33,0};
-ST(0.1,0.0071428571,0,0.091308694,0.0093164623,0,0.092857143,0,0){0,1045151,863626.15,0,1035216.9,863662.39,0,1015442.8,863732,0,986027.05,863838.35,0,947106.05,863813.95};
-ST(0.011573719,0.041901165,0,0.0063343033,0.038958017,0,0.014137494,0.034012185,0){1347025.1,751213.74,1641076.4,1091815.8,627892.11,1435142,629744.45,401490.67,1049094.4,48353.226,109174.99,531342.12,-542301.86,-201236.23,-53364.585};
-ST(0.019499739,0.079597209,0,0.01882241,0.070374011,0,0.026270926,0.075674812,0){2040354.6,2018056.9,2630439.6,702945.71,970762.8,1063205.3,-1095289.5,-580354.6,-1137545.6,-2175701.2,-1830388.5,-2660659.2,-1830384.7,-2130853.3,-2599027.8};
-ST(0.011268327,0.1984065,0,0.015977634,0.20443356,0,0.007303543,0.20469543,0){682302.12,895779.15,422375.13,-1344805.9,-1862602.8,-880191.16,623458.07,1114548.4,531663.92,739532.85,659707.69,303952.91,-1341727.7,-1827076.9,-861341.37};
-ST(0.057323957,0.1204315,0,0.052058531,0.12554764,0,0.051013063,0.11801667,0){3051716.5,3065498.6,3161388.4,-1191883,-1512626.5,-1083065.4,-3778168.4,-3831818,-3873486.3,-1110713.1,-428428.64,-1463412.7,3101303,3614977.4,2911579};
-ST(0.089858368,0.18421461,0,0.091593501,0.1915477,0,0.084368038,0.19048099,0){692603.24,544831.72,992852.93,-1178349.1,-1004107.1,-1809621.2,133849.22,301623.68,495817.1,1084450.2,749822.54,1401810.9,-894447.98,-933881.71,-1649308.4};
-ST(0.015758122,0.23699049,0,0.0069516057,0.23320895,0,0.011838853,0.2301677,0){597291.98,288078.49,504229.49,-1541119.1,-728952.19,-1254859.2,1837947.1,827497.2,1363834.1,-1363109.4,-537397.4,-775392.51,315646.37,-5267.3055,-209768.04};
-ST(0.054794838,0.043915046,0,0.053426379,0.049768916,0,0.046341114,0.044942776,0){3735662.6,3727873.1,3748809.1,2959425,2738031.5,2933624.2,1568238.5,1021148,1480431.3,-148813.91,-966926.63,-294933.53,-1835117.4,-2698501,-2006921.6};
-ST(0,0.28571429,0,0.0067236406,0.28198319,0,0.0093450955,0.28843768,0){0,76627.274,67949.514,0,-227172.13,-202850.84,0,369685.4,334776.34,0,-499127.77,-461793.67,0,610772.43,581935.08};
-ST(0.0093389246,0.011691623,0,0.006650898,0.018174199,0,0,0.014285714,0){1120186.5,801243.34,0,1103410.3,772347.91,0,1070108.3,715593.27,0,1020788.4,633022.27,0,956114.18,527557,0};
-ST(0,0.078571429,0,0.0064539684,0.081629255,0,0,0.085714286,0){0,711139.06,0,0,222377.16,0,0,-419239.47,0,0,-772749.89,0,0,-595288.06,0};
-ST(0.085714286,0.3,0,0.081165886,0.29137431,0,0.091323117,0.29067423,0){0,97729.953,51002.156,0,-292395.17,-152526.43,0,484687.71,252617.29,0,-673055.06,-350336.87,0,855744.16,444691.33};
-ST(0.054876921,0.07294965,0,0.060416267,0.076932239,0,0.054828578,0.081464579,0){3558755.8,3380545.3,3492382.6,1580988.4,1302521.2,1101278.5,-1275447.3,-1576156.6,-2043909.2,-3423192.1,-3485992.8,-3789901.6,-3669097.1,-3253298.6,-2941538.5};
-ST(0.091308694,0.0093164623,0,0.081119523,0.0085521597,0,0.085714286,0,0){1045151,2167108.8,1683752,1035216.9,2149779.2,1683802.7,1015442.8,2115263.6,1683911.1,986027.05,2063869.7,1684108.7,947106.05,1995657.9,1684003.7};
-ST(0.044666369,0.11545829,0,0.042557423,0.10832344,0,0.050721192,0.10961634,0){3148096.1,3183930.6,3257974.6,-920013.3,-492142.06,-583831.78,-3799301.5,-3600076,-3737290.3,-1769018.1,-2551523.2,-2483878.9,2547335.8,1442840.6,1698581.7};
-ST(0.076498673,0.26519709,0,0.083190767,0.25723975,0,0.085115353,0.26563346,0){473307.48,434158.6,313056.52,-1357765.2,-1216864.4,-899063.8,2063933,1759626.8,1369900.4,-2499100.3,-1955417.3,-1665255.4,2605934.6,1765235.2,1747205.8};
-ST(0.084917502,0.034253561,0,0.082493405,0.042375289,0,0.075978544,0.034466341,0){1742331.8,1978611.8,2615244.9,1520580.8,1595319.9,2278283.7,1105294,902966.17,1647758.2,549324.68,35643.43,804880.96,-76880.401,-838916.97,-142067.87};
-ST(0.061244461,0.14481879,0,0.068478919,0.13862632,0,0.069467767,0.146519,0){2643484.5,2426951.1,2287173.5,-2356788.3,-1850187.5,-2120501.9,-2899198.4,-2866745.3,-2441744.6,2042509.4,1169007.7,1942651.5,3121060.9,3144665.9,2583122};
-ST(0.030075176,0.23324008,0,0.022740693,0.23189018,0,0.026971271,0.22659033,0){1077047.3,887604.04,1090633.5,-2725827,-2230116.3,-2658504.1,3095770.8,2485475.6,2731189,-2013325.9,-1529145.6,-1267784.1,-13872.597,-172982.46,-909068.56};
-ST(0.071449289,0.19423207,0,0.076430303,0.18837043,0,0.079090117,0.19794942,0){1594804.6,1444535.6,1206859.6,-3019964.8,-2574453.4,-2368529.7,1103926.4,569102.25,1073015.3,2033518.7,2129625.3,1335740.9,-2921575.1,-2235391.7,-2359414.1};
-ST(0.01062282,0.18656765,0,0.0066871595,0.19241823,0,0,0.18571429,0){711483.53,432113.5,0,-1243147.4,-803518.34,0,217509.34,258472.73,0,1080570.1,581490.34,0,-1025407.6,-758588.26,0};
-ST(0.028699663,0.054481756,0,0.032659307,0.059686042,0,0.025221599,0.062165695,0){2920693,3158137.1,2618029.3,1995520.8,1964024.3,1547191.2,438210.61,27282.242,-156575.4,-1257984.1,-1919818.3,-1796512.5,-2556170.3,-3141270.1,-2702051.5};
-ST(0.032911969,0.081185013,0,0.033761495,0.088496681,0,0.027903545,0.087518505,0){3037931.3,3029395.9,2674848,971274.35,608605.12,580994.77,-1756226.8,-2298547.5,-1967676.8,-3289165.4,-3368980,-2976106,-2584916.3,-1747439.7,-1655065.1};
-ST(0.0084994266,0.025462386,0,0.0058133292,0.032528446,0,0,0.028571429,0){1014895.2,694559.72,0,943121.65,614750.96,0,804669.5,464300.7,0,609367.99,260495.38,0,370926.59,26512.55,0};
-ST(0,0.27142857,0,0.0060732531,0.2674669,0,0.0087746229,0.27470702,0){0,124750.88,139476.7,0,-359918.85,-408686.72,0,553735.12,649356.33,0,-683931.42,-844695.79,0,735399.5,980930.37};
-ST(0.007303543,0.20469543,0,0.015977634,0.20443356,0,0.013229009,0.21171696,0){422375.13,895779.15,698716.07,-880191.16,-1862602.8,-1540332.8,531663.92,1114548.4,1156621.3,303952.91,659707.69,147278.69,-861341.37,-1827076.9,-1334554.8};
-ST(0.036912897,0.21765752,0,0.045116599,0.21481108,0,0.042541479,0.22296234,0){1486590.9,1654487.5,1481591,-3421295.1,-3731787.4,-3531706.6,2965983.4,3030991.5,3405357.4,-438566.7,-73694.316,-1180392.3,-2395869.1,-2938909.4,-1772446.7};
-ST(0.038009007,0.015147577,0,0.029163144,0.015558324,0,0.031710863,0.0075461758,0){3597209.6,3068207,3254919.5,3506943.3,2986953.6,3234618.2,3328697.3,2826596.5,3194153.7,3067010.9,2591406.1,3133832.1,2728518.9,2287504.7,3053845.3};
-ST(0.077069107,0.15686929,0,0.070175425,0.16144206,0,0.070477538,0.15360968,0){1743907.9,2074683.8,2153625.7,-1994600,-2570674.4,-2316413.6,-1457243.4,-1460177,-1978592.7,2204191.1,2919916.2,2466066.8,1140253.2,762077.82,1792310.4};
-ST(0.077393474,0.16425214,0,0.070175425,0.16144206,0,0.077069107,0.15686929,0){1650679.7,2074683.8,1743907.9,-2141613.9,-2570674.4,-1994600,-1013799.5,-1460177,-1457243.4,2443278.1,2919916.2,2204191.1,287063.28,762077.82,1140253.2};
-ST(0.060825265,0.17090728,0,0.054395265,0.16699477,0,0.061476805,0.16269562,0){2288734.2,2465605.5,2391378.9,-3282960.5,-3338618.7,-3025373.1,-862639.89,-1283530.8,-1589341.3,3657845.3,3793219.5,3446908.2,-726586.11,-59660.123,675366.83};
-ST(0.08415119,0.061061125,0,0.079822506,0.065677674,0,0.076938259,0.060604721,0){1759442.9,2163855.5,2443533.2,1064240.3,1180001.4,1491930.8,-51487.645,-340376.77,-40674.57,-1146904.2,-1706002.2,-1557435.8,-1789550.6,-2296197.5,-2468002.6};
-ST(0.038843793,0.21103197,0,0.045116599,0.21481108,0,0.036912897,0.21765752,0){1637090.1,1654487.5,1486590.9,-3590120.4,-3731787.4,-3421295.1,2645890.8,3030991.5,2965983.4,433646.44,-73694.316,-438566.7,-3163532.2,-2938909.4,-2395869.1};
-ST(0.049165273,0.076760106,0,0.054876921,0.07294965,0,0.054828578,0.081464579,0){3570137.5,3558755.8,3492382.6,1384898,1580988.4,1101278.5,-1648055.9,-1275447.3,-2043909.2,-3672308.6,-3423192.1,-3789901.6,-3449021.3,-3669097.1,-2941538.5};
-ST(0.016927821,0.11108648,0,0.017861336,0.10270337,0,0.025770754,0.10718168,0){1644246.3,1773538.4,2378738.7,-340994.5,-87655.931,-316264.13,-1914445.6,-1856823.6,-2653040.8,-1176430.8,-1677437.3,-1984140.6,981584.41,261812.45,932667.69};
-ST(0.028699663,0.054481756,0,0.025221599,0.062165695,0,0.021658338,0.054940441,0){2920693,2618029.3,2341024.9,1995520.8,1547191.2,1587273.2,438210.61,-156575.4,322446.89,-1257984.1,-1796512.5,-1046241,-2556170.3,-2702051.5,-2078353.5};
-ST(0.050721192,0.10961634,0,0.054240748,0.10280037,0,0.059543685,0.10776494,0){3257974.6,3302360.6,3132791.5,-583831.78,-169115.68,-451048.14,-3737290.3,-3462856.5,-3519016.9,-2483878.9,-3116478.2,-2561357.9,1698581.7,505791.56,1326599.2};
-ST(0.059543685,0.10776494,0,0.054240748,0.10280037,0,0.061027247,0.098743066,0){3132791.5,3302360.6,3173016.6,-451048.14,-169115.68,72008.811,-3519016.9,-3462856.5,-3099474,-2561357.9,-3116478.2,-3241975.4,1326599.2,505791.56,-216202.29};
-ST(0.026971271,0.22659033,0,0.034969012,0.22634925,0,0.030075176,0.23324008,0){1090633.5,1299939.6,1077047.3,-2658504.1,-3164156.1,-2725827,2731189,3237729.2,3095770.8,-1267784.1,-1478956,-2013325.9,-909068.56,-1117524.9,-13872.597};
-ST(0.060432552,0.20227914,0,0.066992124,0.20847551,0,0.059551151,0.20970619,0){1798951.1,1540360.8,1688112.8,-3671781.8,-3311175.4,-3664209.4,2023610.8,2266191.6,2601193.1,1565241.8,706070.36,619333.89,-3653837,-3078419.5,-3326584.6};
-ST(0.066799394,0.09162077,0,0.058212185,0.089881183,0,0.064352171,0.083117586,0){2974160.1,3344291.6,3167194.8,440022.16,593905.21,915483.69,-2469083.6,-2645013.4,-1987167.2,-3274492.4,-3708817.1,-3477240.4,-1290097.2,-1722713.3,-2495770};
-ST(0.082942949,0.21818591,0,0.081656406,0.2108727,0,0.089437553,0.21298247,0){823054.75,951384.03,556322.48,-1901094.8,-2083808.1,-1238115.4,1667014.3,1528962.6,961021.23,-282341.7,263916.4,60411.18,-1297502.9,-1843401,-1035404.3};
-ST(0.072126291,0.10515927,0,0.069968451,0.098831219,0,0.079063451,0.10043005,0){2539730.3,2730411,2051820.1,-241283.81,57648.531,-16056.497,-2758172.2,-2671597.7,-2067914.3,-2254933.2,-2785714.6,-2035845.1,717337.89,-173126.8,48244.512};
-ST(0.1,0.014285714,0,0.093571257,0.018380777,0,0.091308694,0.0093164623,0){0,774815.13,1045151,0,746204.54,1035216.9,0,690036.86,1015442.8,0,608388.09,986027.05,0,504051.02,947106.05};
-ST(0.091323117,0.29067423,0,0.093593186,0.28160993,0,0.1,0.28571429,0){51002.156,74588.283,0,-152526.43,-221009.65,0,252617.29,359269.18,0,-350336.87,-484261.41,0,444691.33,591230.88,0};
-ST(0.027746664,0.13122119,0,0.030046638,0.13690443,0,0.021167753,0.13548502,0){2296333.1,2369378.2,1816935.7,-1399007.9,-1721516.8,-1266652.3,-2843055.5,-2840145.3,-2200669.4,288094.78,944948.24,600161.11,2955532.6,3098367.4,2382629.9};
-ST(0.044666369,0.11545829,0,0.051013063,0.11801667,0,0.045375723,0.12284566,0){3148096.1,3161388.4,3072436,-920013.3,-1083065.4,-1348503.3,-3799301.5,-3873486.3,-3829159.4,-1769018.1,-1463412.7,-800055.99,2547335.8,2911579,3380414.3};
-ST(0.1,0.085714286,0,0.093922759,0.092262381,0,0.08812606,0.087328167,0){0,652083.63,1269155.7,0,89312.894,279658.57,0,-550573,-927894.68,0,-715327.2,-1412053.3,0,-262838.8,-795447.99};
-ST(0.056766116,0.23329497,0,0.053624899,0.22742186,0,0.059957308,0.22757204,0){1298096.4,1430137,1366903.5,-3286228.7,-3503302.1,-3351367.9,3735031.6,3648370.9,3498598.8,-2434254.7,-1785483,-1727811.3,-7070.0355,-1060301.4,-990620.01};
-ST(0.032911969,0.081185013,0,0.025411973,0.082310594,0,0.026270926,0.075674812,0){3037931.3,2525130.6,2630439.6,971274.35,762374.09,1063205.3,-1756226.8,-1532614.6,-1137545.6,-3289165.4,-2757779.1,-2660659.2,-2584916.3,-2058136.4,-2599027.8};
-ST(0.1,0.057142857,0,0.09230899,0.063522919,0,0.08944657,0.05485846,0){0,877619.52,1211526.2,0,503392.8,822600.19,0,-85524.836,169573.91,0,-638068.15,-537958.1,0,-918939.46,-1073022.7};
-ST(0.034969012,0.22634925,0,0.037546984,0.23452457,0,0.030075176,0.23324008,0){1299939.6,1205921.7,1077047.3,-3164156.1,-3072707.6,-2725827,3237729.2,3550700.1,3095770.8,-1478956,-2423829.8,-2013325.9,-1117524.9,201013.93,-13872.597};
-ST(0.073708403,0.21517194,0,0.081656406,0.2108727,0,0.082942949,0.21818591,0){1225969.3,951384.03,823054.75,-2772471.1,-2083808.1,-1901094.8,2271379.1,1528962.6,1667014.3,-92677.622,263916.4,-282341.7,-2155133.8,-1843401,-1297502.9};
-ST(0.038464606,0.12667013,0,0.033010101,0.13109378,0,0.030575169,0.1246812,0){2859316.3,2584208,2526238.7,-1476046.2,-1567613,-1202245.8,-3573486.5,-3200932.4,-3156412.2,-252868.56,308418.11,-451924.48,3451249.3,3322264.5,2919641.1};
-ST(0.031264826,0.29263185,0,0.028198926,0.28535727,0,0.036602132,0.28491153,0){124484.17,230200.16,279518.56,-372709.78,-685197.76,-831596.18,618717.86,1124120.6,1362985.6,-861054.65,-1536674.3,-1860498.2,1098239.8,1912913.1,2311728.5};
-ST(0.030575169,0.1246812,0,0.033010101,0.13109378,0,0.027746664,0.13122119,0){2526238.7,2584208,2296333.1,-1202245.8,-1567613,-1399007.9,-3156412.2,-3200932.4,-2843055.5,-451924.48,308418.11,288094.78,2919641.1,3322264.5,2955532.6};
-ST(0.077013163,0.11736903,0,0.070840483,0.12204614,0,0.069025318,0.11622387,0){2095773.2,2470738.2,2631986.5,-691227.47,-1044803.2,-808686.45,-2559181.5,-3073782.1,-3192250.9,-1023961.4,-729197.53,-1402768.4,1873161.8,2652961,2220554.1};
-ST(0.037705658,0.25939989,0,0.034582704,0.26623209,0,0.030217898,0.25971254,0){758443.36,604041.77,660621.26,-2140288.6,-1737386.1,-1866014.4,3141072.6,2655775,2744196,-3582615.2,-3245580.1,-3141188.1,3385872.9,3433603.3,2987009.7};
-ST(0.084604507,0.15255901,0,0.08264437,0.14444108,0,0.09156348,0.14589395,0){1258841.2,1463951.5,734092.88,-1326319,-1293607.4,-670961.7,-1187789.9,-1614532.1,-791796.8,1390056.3,1105781,602866.55,1113216.6,1743195.6,843431.47};
-ST(0.09156348,0.14589395,0,0.08264437,0.14444108,0,0.087083587,0.13880919,0){734092.88,1463951.5,1144744.3,-670961.7,-1293607.4,-877072.07,-791796.8,-1614532.1,-1349889.8,602866.55,1105781,561444.4,843431.47,1743195.6,1481228.8};
-ST(0.034582704,0.26623209,0,0.027951851,0.26533243,0,0.030217898,0.25971254,0){604041.77,539100.43,660621.26,-1737386.1,-1547025.6,-1866014.4,2655775,2353298.6,2744196,-3245580.1,-2852826.8,-3141188.1,3433603.3,2980285,2987009.7};
-ST(0.043573225,0.18196099,0,0.038433858,0.18005903,0,0.041643161,0.17482395,0){2202933.2,2131117.1,2284160.6,-3650165.7,-3450732.6,-3458410.7,195066.32,5612.0128,-506290.81,3522129.2,3447337.8,3718851.8,-2509350,-2140463.9,-1405815.9};
-ST(0.019247887,0.048569646,0,0.014691551,0.054118398,0,0.013132659,0.04767246,0){2135187.8,1659245.8,1507774.2,1594654.5,1140472.1,1139737.5,650408.09,265092.56,493500.09,-458538.7,-693242.8,-273193.01,-1451674.1,-1435183.5,-973395.4};
-ST(0.021167753,0.13548502,0,0.023379755,0.12686903,0,0.027746664,0.13122119,0){1816935.7,2047772.9,2296333.1,-1266652.3,-1065433.1,-1399007.9,-2200669.4,-2558991,-2843055.5,600161.11,-162203.53,288094.78,2382629.9,2481221.5,2955532.6};
-ST(0.044666369,0.11545829,0,0.038084092,0.1145524,0,0.042557423,0.10832344,0){3148096.1,2981407.2,3183930.6,-920013.3,-818508.93,-492142.06,-3799301.5,-3575257.7,-3600076,-1769018.1,-1775238,-2551523.2,2547335.8,2287308.3,1442840.6};
-ST(0.021658338,0.054940441,0,0.014691551,0.054118398,0,0.019247887,0.048569646,0){2341024.9,1659245.8,2135187.8,1587273.2,1140472.1,1594654.5,322446.89,265092.56,650408.09,-1046241,-693242.8,-458538.7,-2078353.5,-1435183.5,-1451674.1};
-ST(0.061027247,0.098743066,0,0.065931692,0.10408722,0,0.059543685,0.10776494,0){3173016.6,2911358.9,3132791.5,72008.811,-218409.17,-451048.14,-3099474,-3113407,-3519016.9,-3241975.4,-2661455,-2561357.9,-216202.29,651464.78,1326599.2};
-ST(0,0.22142857,0,0.0051799073,0.21317882,0,0.010546892,0.2198034,0){0,276031.48,514716.79,0,-615227.88,-1201974.2,0,479976.29,1090194.6,0,25450.705,-253690.09,0,-511551.59,-751659.26};
-ST(0,0.12857143,0,0.0072553778,0.13224921,0,0,0.13571429,0){0,674958.82,0,0,-425463.67,0,0,-832230.25,0,0,117822.57,0,0,875622.71,0};
-ST(0.059543685,0.10776494,0,0.05615957,0.1141762,0,0.050721192,0.10961634,0){3132791.5,3147681.4,3257974.6,-451048.14,-840990.83,-583831.78,-3519016.9,-3764018.8,-3737290.3,-2561357.9,-1917372.9,-2483878.9,1326599.2,2358868.4,1698581.7};
-ST(0.043491003,0.26677795,0,0.045592054,0.27439642,0,0.037999827,0.27482627,0){657627.62,513714.39,474219.19,-1894105.9,-1504437.2,-1389905,2903724.9,2387679.2,2209621.2,-3565612.1,-3100344.3,-2876809.4,3800401.2,3591305.7,3345267.4};
-ST(0.075422073,0.20645372,0,0.081656406,0.2108727,0,0.073708403,0.21517194,0){1273700.5,951384.03,1225969.3,-2693470,-2083808.1,-2772471.1,1728669,1528962.6,2271379.1,766631.5,263916.4,-92677.622,-2583646.6,-1843401,-2155133.8};
-ST(0.048663579,0.053435419,0,0.042113175,0.053290167,0,0.046341114,0.044942776,0){3726394.8,3616583.4,3748809.1,2589713.3,2519252.9,2933624.2,663071.82,657513.67,1480431.3,-1465861.1,-1403801.4,-294933.53,-3147918.6,-3039615.4,-2006921.6};
-ST(0.074105201,0.11070107,0,0.076969725,0.10634022,0,0.082583958,0.10907049,0){2359475.3,2181001.1,1698614.9,-471755.94,-255488.75,-286603.09,-2736894.8,-2406546.5,-1936849,-1717960.7,-1869163.7,-1323464.6,1362139.4,756176.24,836522.31};
-ST(0.08812606,0.087328167,0,0.081743274,0.092625466,0,0.079265602,0.086677581,0){1269155.7,1862860,2114636.1,279658.57,243386.47,488789.06,-927894.68,-1587731,-1512904.7,-1412053.3,-2038652.4,-2351470.6,-795447.99,-717394.49,-1382326.1};
-ST(0.079090117,0.19794942,0,0.076430303,0.18837043,0,0.084368038,0.19048099,0){1206859.6,1444535.6,992852.93,-2368529.7,-2574453.4,-1809621.2,1073015.3,569102.25,495817.1,1335740.9,2129625.3,1401810.9,-2359414.1,-2235391.7,-1649308.4};
-ST(0.0071147476,0.24137211,0,0.0069516057,0.23320895,0,0.015758122,0.23699049,0){259907.57,288078.49,597291.98,-684802.64,-728952.19,-1541119.1,859611.54,827497.2,1837947.1,-720499.62,-537397.4,-1363109.4,317972.39,-5267.3055,315646.37};
-ST(0.075872285,0.081656016,0,0.074756101,0.075901522,0,0.082390534,0.079333541,0){2427639,2549479.1,1865676.5,758134.07,1021825.1,650380.91,-1432759.9,-1118145.3,-988603.29,-2638364.3,-2588166.7,-1983689.6,-2029677.1,-2507455.8,-1686881.4};
-ST(0,0.078571429,0,0.0060853536,0.074713803,0,0.0064539684,0.081629255,0){0,681675.12,711139.06,0,285253.65,222377.16,0,-277070.48,-419239.47,0,-678306.76,-772749.89,0,-685312.86,-595288.06};
-ST(0.050960377,0.23252058,0,0.053624899,0.22742186,0,0.056766116,0.23329497,0){1342135.9,1430137,1298096.4,-3383651.2,-3503302.1,-3286228.7,3804738.6,3648370.9,3735031.6,-2403721.7,-1785483,-2434254.7,-148681.88,-1060301.4,-7070.0355};
-ST(0.085714286,0.3,0,0.091323117,0.29067423,0,0.092857143,0.3,0){0,51002.156,0,0,-152526.43,0,0,252617.29,0,0,-350336.87,0,0,444691.33,0};
-ST(0.1,0.014285714,0,0.091308694,0.0093164623,0,0.1,0.0071428571,0){0,1045151,0,0,1035216.9,0,0,1015442.8,0,0,986027.05,0,0,947106.05,0};
-ST(0.056317057,0.058022103,0,0.061015306,0.048529238,0,0.066012722,0.055502179,0){3630316.8,3533367.8,3257272.9,2330872.5,2640342.3,2187557.2,197001.66,1080012.2,399401.17,-2007682.1,-753291.7,-1519988.7,-3494460.7,-2396723.8,-2940625.1};
-ST(0.092857143,0,0,0.091308694,0.0093164623,0,0.085714286,0,0){863626.15,1045151,1683752,863662.39,1035216.9,1683802.7,863732,1015442.8,1683911.1,863838.35,986027.05,1684108.7,863813.95,947106.05,1684003.7};
-ST(0.1,0.29285714,0,0.091323117,0.29067423,0,0.1,0.28571429,0){0,51002.156,0,0,-152526.43,0,0,252617.29,0,0,-350336.87,0,0,444691.33,0};
-ST(0.03928574,0.29335694,0,0.031264826,0.29263185,0,0.036602132,0.28491153,0){127378.94,124484.17,279518.56,-381522.06,-372709.78,-831596.18,633829.06,618717.86,1362985.6,-883092.25,-861054.65,-1860498.2,1127859.7,1098239.8,2311728.5};
-ST(0.038009007,0.015147577,0,0.031710863,0.0075461758,0,0.039686874,0.0066116125,0){3597209.6,3254919.5,3676489.9,3506943.3,3234618.2,3658909.3,3328697.3,3194153.7,3623831.1,3067010.9,3133832.1,3571457.2,2728518.9,3053845.3,3501797.4};
-ST(0.066803853,0.25459223,0,0.071915087,0.24816524,0,0.074279052,0.25633166,0){789541.66,803363.84,635900.39,-2193455.3,-2179152.4,-1777029.4,3110738.9,2928525.2,2553015.8,-3337877,-2836050.6,-2804423.5,2824240.3,1927975,2479429.3};
-ST(0.0071908097,0.26035264,0,0.013885016,0.25805955,0,0.014305262,0.26641769,0){179155.76,357160.64,294901.31,-507033.49,-1003688.5,-848621.76,748779.14,1459712.7,1298521.9,-863311.12,-1638678.7,-1589572.3,830950.48,1506406.6,1686004.5};
-ST(0,0.28571429,0,0.0045473776,0.2936365,0,0,0.29285714,0){0,18406.211,0,0,-55138.333,0,0,91630.552,0,0,-127724.83,0,0,162961.08,0};
-ST(0,0.0071428571,0,0.0045481906,0.0063920675,0,0,0.014285714,0){0,552257.15,0,0,549810.55,0,0,544927.47,0,0,537633.65,0,0,527798.54,0};
-ST(0.084604507,0.15255901,0,0.076625322,0.14929356,0,0.08264437,0.14444108,0){1258841.2,1845555.4,1463951.5,-1326319,-1818255.1,-1293607.4,-1187789.9,-1872475.3,-1614532.1,1390056.3,1790618.2,1105781,1113216.6,1898765.5,1743195.6};
-ST(0.041803352,0.076750149,0,0.047307891,0.081963043,0,0.041002292,0.08644635,0){3453761.9,3516083,3351345,1340279.2,1080946.4,787437.3,-1593440.1,-2102837.3,-2379027.1,-3552303.7,-3830300,-3725698.5,-3337911.6,-2905310.5,-2222336.9};
-ST(0,0.21428571,0,0.0051799073,0.21317882,0,0,0.22142857,0){0,276031.48,0,0,-615227.88,0,0,479976.29,0,0,25450.705,0,0,-511551.59,0};
-ST(0.082390534,0.079333541,0,0.074756101,0.075901522,0,0.080160084,0.071577727,0){1865676.5,2549479.1,2107851.9,650380.91,1021825.1,977984.82,-988603.29,-1118145.3,-676141.96,-1983689.6,-2588166.7,-1967920.1,-1686881.4,-2507455.8,-2205119.3};
-ST(0.065478411,0.24860928,0,0.071915087,0.24816524,0,0.066803853,0.25459223,0){912058.17,803363.84,789541.66,-2478342.9,-2179152.4,-2193455.3,3344041.2,2928525.2,3110738.9,-3264436.9,-2836050.6,-3337877,2261773.6,1927975,2824240.3};
-ST(0.08812606,0.087328167,0,0.079265602,0.086677581,0,0.082390534,0.079333541,0){1269155.7,2114636.1,1865676.5,279658.57,488789.06,650380.91,-927894.68,-1512904.7,-988603.29,-1412053.3,-2351470.6,-1983689.6,-795447.99,-1382326.1,-1686881.4};
-ST(0.064832361,0.062804408,0,0.059054943,0.066788508,0,0.056317057,0.058022103,0){3281120.4,3499189.3,3630316.8,1912310.8,1856149.2,2330872.5,-254314.65,-658492.2,197001.66,-2314932.7,-2864039.1,-2007682.1,-3410309.6,-3725081.1,-3494460.7};
-ST(0.045416206,0.061541227,0,0.047469022,0.070467195,0,0.041057987,0.068843254,0){3642820.9,3608010.8,3488848.8,2181474.8,1730907.5,1752771.3,-155055.51,-1046792,-855539,-2429600.5,-3280034.9,-3038218.5,-3730025.8,-3807136.9,-3709409.4};
-ST(0.081119523,0.0085521597,0,0.078020383,0.017034313,0,0.073684623,0.0112317,0){2167108.8,2461848.1,2850123.3,2149779.2,2383750.6,2810738.2,2115263.6,2230032.5,2732509.2,2063869.7,2005590.6,2616540.6,1995657.9,1717239.5,2464223.2};
-ST(0.073754091,0.28851618,0,0.078222118,0.28277283,0,0.081165886,0.29137431,0){171229.59,220930.92,97729.953,-511212.67,-655625.13,-292395.17,843808.82,1069057.6,484687.71,-1164215.8,-1447830.3,-673055.06,1467609.3,1779434.3,855744.16};
-ST(0.029124573,0.24658198,0,0.025641665,0.25311603,0,0.02133326,0.24577003,0){849052.23,680173.91,675269.21,-2288340.2,-1879847.5,-1813848.4,3030093.5,2635470.4,2383092.9,-2848204.4,-2768550.2,-2204305.3,1797881.3,2247361.6,1333319.6};
-ST(0.02133326,0.24577003,0,0.025641665,0.25311603,0,0.018179834,0.25267212,0){675269.21,680173.91,514543.14,-1813848.4,-1879847.5,-1419813.2,2383092.9,2635470.4,1983439.5,-2204305.3,-2768550.2,-2069793.3,1333319.6,2247361.6,1657747.8};
-ST(0.036912897,0.21765752,0,0.030490983,0.2108424,0,0.038843793,0.21103197,0){1486590.9,1428644.1,1637090.1,-3421295.1,-3128471,-3590120.4,2965983.4,2293671,2645890.8,-438566.7,399562.24,433646.44,-2395869.1,-2769801.9,-3163532.2};
-ST(0.089437553,0.21298247,0,0.091864029,0.22106993,0,0.082942949,0.21818591,0){556322.48,394005.54,823054.75,-1238115.4,-927852.61,-1901094.8,961021.23,863120.02,1667014.3,60411.18,-241435.16,-282341.7,-1035404.3,-536498.87,-1297502.9};
-ST(0.0060732531,0.2674669,0,0.0071908097,0.26035264,0,0.014305262,0.26641769,0){124750.88,179155.76,294901.31,-359918.85,-507033.49,-848621.76,553735.12,748779.14,1298521.9,-683931.42,-863311.12,-1589572.3,735399.5,830950.48,1686004.5};
-ST(0.082583958,0.10907049,0,0.08466046,0.11619385,0,0.077013163,0.11736903,0){1698614.9,1475783,2095773.2,-286603.09,-452604.25,-691227.47,-1936849,-1789662.1,-2559181.5,-1323464.6,-788262.21,-1023961.4,836522.31,1243195.1,1873161.8};
-ST(0.060672554,0.13561545,0,0.068478919,0.13862632,0,0.061244461,0.14481879,0){2778852.8,2426951.1,2643484.5,-1944873,-1850187.5,-2356788.3,-3362653.4,-2866745.3,-2899198.4,935707.85,1169007.7,2042509.4,3643681.7,3144665.9,3121060.9};
-ST(0.037999827,0.27482627,0,0.045044357,0.28188841,0,0.036602132,0.28491153,0){474219.19,362990.51,279518.56,-1389905,-1075960.6,-831596.18,2209621.2,1750378.7,1362985.6,-2876809.4,-2362097.1,-1860498.2,3345267.4,2889034,2311728.5};
-ST(0.014137494,0.034012185,0,0.0063343033,0.038958017,0,0.0058133292,0.032528446,0){1641076.4,751213.74,694559.72,1435142,627892.11,614750.96,1049094.4,401490.67,464300.7,531342.12,109174.99,260495.38,-53364.585,-201236.23,26512.55};
-ST(0.070865224,0.080352924,0,0.072044079,0.08604506,0,0.064352171,0.083117586,0){2808030.6,2688599.4,3167194.8,934415.1,649473.83,915483.69,-1562677.5,-1882262.6,-1987167.2,-3017110.1,-2986497.2,-3477240.4,-2458745.5,-1825996.4,-2495770};
-ST(0.061476805,0.16269562,0,0.067098511,0.16826118,0,0.060825265,0.17090728,0){2391378.9,2121688.2,2288734.2,-3025373.1,-2928224.5,-3282960.5,-1589341.3,-1008555.7,-862639.89,3446908.2,3311710.7,3657845.3,675366.83,-250662.47,-726586.11};
-ST(0.052494391,0.065958781,0,0.047469022,0.070467195,0,0.045416206,0.061541227,0){3640248,3608010.8,3642820.9,1971511.2,1730907.5,2181474.8,-601016.65,-1046792,-155055.51,-2898090,-3280034.9,-2429600.5,-3866942,-3807136.9,-3730025.8};
-ST(0.034786476,0.1076516,0,0.030466665,0.11568191,0,0.025770754,0.10718168,0){2912738.3,2608170,2378738.7,-413135.58,-773675.45,-316264.13,-3267374.9,-3152461.4,-2653040.8,-2390915.6,-1443702.3,-1984140.6,1215377.6,2136967.4,932667.69};
-ST(0.054828578,0.081464579,0,0.058212185,0.089881183,0,0.049739958,0.088394034,0){3492382.6,3344291.6,3472240.4,1101278.5,593905.21,703521.31,-2043909.2,-2645013.4,-2626240.1,-3789901.6,-3708817.1,-3862017.3,-2941538.5,-1722713.3,-2018648.2};
-ST(0.079063451,0.10043005,0,0.069968451,0.098831219,0,0.07492972,0.092844339,0){2051820.1,2730411,2431427.6,-16056.497,57648.531,308451.38,-2067914.3,-2671597.7,-2083891.4,-2035845.1,-2785714.6,-2656803.1,48244.512,-173126.8,-910298.79};
-ST(0.013878694,0.17880836,0,0.020636298,0.17424253,0,0.021251228,0.18136297,0){971566.52,1433869.3,1398279.8,-1548960.4,-2154082.5,-2300353.4,-51095.574,-351921.61,85724.805,1579530,2330929.4,2245163.6,-887966.26,-819073.82,-1534338.6};
-ST(0.085905658,0.016824409,0,0.078020383,0.017034313,0,0.081119523,0.0085521597,0){1656238,2461848.1,2167108.8,1604967.9,2383750.6,2149779.2,1504009.2,2230032.5,2115263.6,1356492.3,2005590.6,2063869.7,1166855,1717239.5,1995657.9};
-ST(0.081165886,0.29137431,0,0.078222118,0.28277283,0,0.08596482,0.28314521,0){97729.953,220930.92,145967.81,-292395.17,-655625.13,-433371.98,484687.71,1069057.6,707326.96,-673055.06,-1447830.3,-959333.22,855744.16,1779434.3,1181452.3};
-ST(0.021167753,0.13548502,0,0.017312959,0.14496605,0,0.012304267,0.13852123,0){1816935.7,1456929,1094693.2,-1266652.3,-1303417.8,-832176.34,-2200669.4,-1594293.7,-1294374.3,600161.11,1135517.7,521821.54,2382629.9,1713822.2,1419655.5};
-ST(0.026018946,0.14387862,0,0.017312959,0.14496605,0,0.021167753,0.13548502,0){2064539,1456929,1816935.7,-1800072.3,-1303417.8,-1266652.3,-2295230.1,-1594293.7,-2200669.4,1506177.8,1135517.7,600161.11,2488196.2,1713822.2,2382629.9};
-ST(0.014137494,0.034012185,0,0.0058133292,0.032528446,0,0.0084994266,0.025462386,0){1641076.4,694559.72,1014895.2,1435142,614750.96,943121.65,1049094.4,464300.7,804669.5,531342.12,260495.38,609367.99,-53364.585,26512.55,370926.59};
-ST(0.0087746229,0.27470702,0,0.0060732531,0.2674669,0,0.014305262,0.26641769,0){139476.7,124750.88,294901.31,-408686.72,-359918.85,-848621.76,649356.33,553735.12,1298521.9,-844695.79,-683931.42,-1589572.3,980930.37,735399.5,1686004.5};
-ST(0.045375723,0.12284566,0,0.040442009,0.11996282,0,0.044666369,0.11545829,0){3072436,2999410,3148096.1,-1348503.3,-1143461.2,-920013.3,-3829159.4,-3706983.7,-3799301.5,-800055.99,-1150363.3,-1769018.1,3380414.3,2995190.5,2547335.8};
-ST(0,0.18571429,0,0.0066871595,0.19241823,0,0,0.19285714,0){0,432113.5,0,0,-803518.34,0,0,258472.73,0,0,581490.34,0,0,-758588.26,0};
-ST(0.038464606,0.12667013,0,0.030575169,0.1246812,0,0.035619257,0.12028764,0){2859316.3,2526238.7,2821397.9,-1476046.2,-1202245.8,-1093830.4,-3573486.5,-3156412.2,-3491178.8,-252868.56,-451924.48,-1043884.2,3451249.3,2919641.1,2851838.9};
-ST(0.025770754,0.10718168,0,0.017861336,0.10270337,0,0.024938414,0.098415267,0){2378738.7,1773538.4,2383058.5,-316264.13,-87655.931,68195.72,-2653040.8,-1856823.6,-2312962.3,-1984140.6,-1677437.3,-2447461.4,932667.69,261812.45,-204726.33};
-ST(0.022740693,0.23189018,0,0.025350652,0.23917347,0,0.015758122,0.23699049,0){887604.04,868665.73,597291.98,-2230116.3,-2265304,-1541119.1,2485475.6,2773502.3,1837947.1,-1529145.6,-2193941.8,-1363109.4,-172982.46,753574.67,315646.37};
-ST(0.032911969,0.081185013,0,0.041803352,0.076750149,0,0.041002292,0.08644635,0){3037931.3,3453761.9,3351345,971274.35,1340279.2,787437.3,-1756226.8,-1593440.1,-2379027.1,-3289165.4,-3552303.7,-3725698.5,-2584916.3,-3337911.6,-2222336.9};
-ST(0.0087746229,0.27470702,0,0.0067236406,0.28198319,0,0,0.27857143,0){139476.7,76627.274,0,-408686.72,-227172.13,0,649356.33,369685.4,0,-844695.79,-499127.77,0,980930.37,610772.43,0};
-ST(0,0.021428571,0,0.006650898,0.018174199,0,0.0084994266,0.025462386,0){0,801243.34,1014895.2,0,772347.91,943121.65,0,715593.27,804669.5,0,633022.27,609367.99,0,527557,370926.59};
-ST(0.013229009,0.21171696,0,0.018343869,0.21720619,0,0.010546892,0.2198034,0){698716.07,888277.19,514716.79,-1540332.8,-2037897.4,-1201974.2,1156621.3,1749211,1090194.6,147278.69,-225952.88,-253690.09,-1334554.8,-1457259.1,-751659.26};
-ST(0.010546892,0.2198034,0,0.018343869,0.21720619,0,0.017207343,0.22323305,0){514716.79,888277.19,781289.63,-1201974.2,-2037897.4,-1865590.4,1090194.6,1749211,1807835.2,-253690.09,-225952.88,-643322.1,-751659.26,-1457259.1,-915362.92};
-ST(0.060432552,0.20227914,0,0.06966854,0.20076802,0,0.066992124,0.20847551,0){1798951.1,1570520.4,1540360.8,-3671781.8,-3162888.4,-3311175.4,2023610.8,1636334.6,2266191.6,1565241.8,1503948.1,706070.36,-3653837,-3161601.9,-3078419.5};
-ST(0.066012722,0.055502179,0,0.073604017,0.054819307,0,0.070754378,0.060222618,0){3257272.9,2744584.6,2932444.5,2187557.2,1864679.8,1804303.3,399401.17,386939.94,-17984.254,-1519988.7,-1214908.7,-1833384.6,-2940625.1,-2427603.9,-2943704.7};
-ST(0.025770754,0.10718168,0,0.023213665,0.1150537,0,0.016927821,0.11108648,0){2378738.7,2130593.3,1644246.3,-316264.13,-605772.32,-340994.5,-2653040.8,-2564157.8,-1914445.6,-1984140.6,-1229375.9,-1176430.8,932667.69,1684092.7,981584.41};
-ST(0.024008584,0.022367291,0,0.016759526,0.025876157,0,0.015416139,0.018002698,0){2639060.6,1932221.9,1798828.3,2494948.4,1791225.7,1735136,2214593.6,1519509.7,1609995.5,1813324.4,1136895.1,1427830.3,1312931.3,671081.1,1194733.1};
-ST(0.076938259,0.060604721,0,0.079822506,0.065677674,0,0.072323403,0.067507008,0){2443533.2,2163855.5,2781512.1,1491930.8,1180001.4,1448400.9,-40674.57,-340376.77,-578922.09,-1557435.8,-1706002.2,-2328912.3,-2468002.6,-2296197.5,-2963263.7};
-ST(0.015498485,0.28248556,0,0.018422519,0.27450763,0,0.023483408,0.28013687,0){166274.63,282501.19,270985.88,-493262.57,-827496.14,-801278.39,803759.61,1313896,1297043.7,-1087394.1,-1707268.8,-1736920.8,1334475.8,1979556.1,2101746.5};
-ST(0.047556344,0.24377674,0,0.043027686,0.24899973,0,0.040431855,0.24188745,0){1122639.4,999522.33,1110505,-2989881.7,-2720190.5,-2932804,3850350.4,3683283.3,3702149.5,-3414324.1,-3620573.8,-3142324.5,1828478.4,2549278.8,1453973.2};
-ST(0.092295863,0.26000779,0,0.083190767,0.25723975,0,0.090077759,0.25268961,0){193329.27,434158.6,291813.61,-546576.12,-1216864.4,-805257.31,805368.84,1759626.8,1125037.4,-924990.4,-1955417.3,-1174248.1,884724.5,1765235.2,940920.06};
-ST(0.085115353,0.26563346,0,0.083190767,0.25723975,0,0.092295863,0.26000779,0){313056.52,434158.6,193329.27,-899063.8,-1216864.4,-546576.12,1369900.4,1759626.8,805368.84,-1665255.4,-1955417.3,-924990.4,1747205.8,1765235.2,884724.5};
-ST(0.08974924,0.047235181,0,0.082493405,0.042375289,0,0.092141527,0.03991184,0){1190814.4,1978611.8,927649.93,905328.07,1595319.9,767955.56,402804.56,902966.17,476054.53,-196265.4,35643.43,102192.68,-748421.11,-838916.97,-289378.9};
-ST(0.092141527,0.03991184,0,0.082493405,0.042375289,0,0.084917502,0.034253561,0){927649.93,1978611.8,1742331.8,767955.56,1595319.9,1520580.8,476054.53,902966.17,1105294,102192.68,35643.43,549324.68,-289378.9,-838916.97,-76880.401};
-ST(0.04704595,0.16277363,0,0.042155309,0.15589067,0,0.050010485,0.1548865,0){2543508.6,2577776.2,2672912.2,-3221973.5,-2895603.6,-2946373.7,-1684138.2,-2220826.4,-2371553.9,3671419.3,3169529.7,3189127.5,704902.67,1830012,2045305.7};
-ST(0.04704595,0.16277363,0,0.054395265,0.16699477,0,0.048076401,0.17082416,0){2543508.6,2465605.5,2424680.5,-3221973.5,-3338618.7,-3473815.1,-1684138.2,-1283530.8,-921629.25,3671419.3,3793219.5,3872759.5,704902.67,-59660.123,-754316.94};
-ST(0.046341114,0.044942776,0,0.03663522,0.040674234,0,0.043838979,0.034579424,0){3748809.1,3463485.9,3745913.7,2933624.2,2844620.6,3260141.4,1480431.3,1717431.6,2351583.2,-294933.53,283267.24,1138042.7,-2006921.6,-1201989.6,-223347.31};
-ST(0.038515413,0.047952704,0,0.03663522,0.040674234,0,0.046341114,0.044942776,0){3516906.1,3463485.9,3748809.1,2648581.9,2844620.6,2933624.2,1126309.3,1717431.6,1480431.3,-674068.75,283267.24,-294933.53,-2308227.3,-1201989.6,-2006921.6};
-ST(0.043491003,0.26677795,0,0.037705658,0.25939989,0,0.04563604,0.25694979,0){657627.62,758443.36,859240.08,-1894105.9,-2140288.6,-2406042.8,2903724.9,3141072.6,3472131.8,-3565612.1,-3582615.2,-3844488.4,3800401.2,3385872.9,3448330.3};
-ST(0.04563604,0.25694979,0,0.037705658,0.25939989,0,0.039157325,0.25334591,0){859240.08,758443.36,884627.38,-2406042.8,-2140288.6,-2446896,3472131.8,3141072.6,3436661.2,-3844488.4,-3582615.2,-3622356.9,3448330.3,3385872.9,2960330.2};
-ST(0.077069107,0.15686929,0,0.076625322,0.14929356,0,0.084604507,0.15255901,0){1743907.9,1845555.4,1258841.2,-1994600,-1818255.1,-1326319,-1457243.4,-1872475.3,-1187789.9,2204191.1,1790618.2,1390056.3,1140253.2,1898765.5,1113216.6};
-ST(0.07180958,0.22984275,0,0.076796159,0.2234596,0,0.078984823,0.22953004,0){1079159.6,1008421.8,858343.29,-2680718.2,-2411357.4,-2128428.8,2899261.6,2346331.8,2291087.1,-1622013.4,-852928.84,-1261656.1,-492395.98,-1160000.7,-424553.92};
-ST(0.048076401,0.17082416,0,0.042242048,0.16806859,0,0.04704595,0.16277363,0){2424680.5,2399442.3,2543508.6,-3473815.1,-3302042.1,-3221973.5,-921629.25,-1157324.9,-1684138.2,3872759.5,3737475.6,3671419.3,-754316.94,-248746.29,704902.67};
-ST(0.043027686,0.24899973,0,0.036308441,0.24745658,0,0.040431855,0.24188745,0){999522.33,958174.94,1110505,-2720190.5,-2591684.5,-2932804,3683283.3,3460190.4,3702149.5,-3620573.8,-3307339.6,-3142324.5,2549278.8,2177878.8,1453973.2};
-ST(0.026270926,0.075674812,0,0.025411973,0.082310594,0,0.019499739,0.079597209,0){2630439.6,2525130.6,2040354.6,1063205.3,762374.09,702945.71,-1137545.6,-1532614.6,-1095289.5,-2660659.2,-2757779.1,-2175701.2,-2599027.8,-2058136.4,-1830384.7};
-ST(0.073708403,0.21517194,0,0.069002793,0.22246209,0,0.063265205,0.21633109,0){1225969.3,1267491.2,1505335.5,-2772471.1,-3011719.2,-3432481.9,2271379.1,2877058.6,2888962.8,-92677.622,-947533.34,-265885.87,-2155133.8,-1573376.1,-2549234.8};
-ST(0.082390534,0.079333541,0,0.091953893,0.078440357,0,0.08812606,0.087328167,0){1865676.5,889726.23,1269155.7,650380.91,322434.75,279658.57,-988603.29,-450550.32,-927894.68,-1983689.6,-936443.15,-1412053.3,-1686881.4,-825354.72,-795447.99};
-ST(0.1,0.085714286,0,0.091953893,0.078440357,0,0.1,0.078571429,0){0,889726.23,0,0,322434.75,0,0,-450550.32,0,0,-936443.15,0,0,-825354.72,0};
-ST(0.061631884,0.26868773,0,0.06660802,0.27624666,0,0.059078636,0.27701937,0){591535.29,417349.44,447007.97,-1711593.4,-1226359.7,-1315269.1,2649353.2,1959900.4,2107766.2,-3304968.8,-2572844.1,-2778864.5,3608394.3,3027289.2,3289755.3};
-ST(0.014137494,0.034012185,0,0.017433092,0.042090914,0,0.011573719,0.041901165,0){1641076.4,1971771.3,1347025.1,1435142,1594855,1091815.8,1049094.4,913057.13,629744.45,531342.12,56690.05,48353.226,-53364.585,-810753.02,-542301.86};
-ST(0.1,0.24285714,0,0.092168655,0.23668616,0,0.1,0.23571429,0){0,307607.26,0,0,-792496.69,0,0,941630.33,0,0,-691810.02,0,0,148523.72,0};
-ST(0.0072553778,0.13224921,0,0.0054758376,0.13911323,0,0,0.13571429,0){674958.82,495708.7,0,-425463.67,-382921.42,0,-832230.25,-582869.54,0,117822.57,250325.59,0,875622.71,639819.51,0};
-ST(0.015758122,0.23699049,0,0.025350652,0.23917347,0,0.02133326,0.24577003,0){597291.98,868665.73,675269.21,-1541119.1,-2265304,-1813848.4,1837947.1,2773502.3,2383092.9,-1363109.4,-2193941.8,-2204305.3,315646.37,753574.67,1333319.6};
-ST(0.039157325,0.25334591,0,0.036308441,0.24745658,0,0.043027686,0.24899973,0){884627.38,958174.94,999522.33,-2446896,-2591684.5,-2720190.5,3436661.2,3460190.4,3683283.3,-3622356.9,-3307339.6,-3620573.8,2960330.2,2177878.8,2549278.8};
-ST(0.076158908,0.12549637,0,0.070840483,0.12204614,0,0.077013163,0.11736903,0){2092101.1,2470738.2,2095773.2,-1030118.9,-1044803.2,-691227.47,-2615047.7,-3073782.1,-2559181.5,-297340.89,-729197.53,-1023961.4,2464056,2652961,1873161.8};
-ST(0.041402067,0.22952626,0,0.037546984,0.23452457,0,0.034969012,0.22634925,0){1348916.4,1205921.7,1299939.6,-3344816,-3072707.6,-3164156.1,3600200.4,3550700.1,3237729.2,-1982154,-2423829.8,-1478956,-667743.82,201013.93,-1117524.9};
-ST(0.017207343,0.22323305,0,0.012706169,0.22573828,0,0.010546892,0.2198034,0){781289.63,571782.3,514716.79,-1865590.4,-1386624.6,-1201974.2,1807835.2,1404300.2,1090194.6,-643322.1,-614658.98,-253690.09,-915362.92,-528535.98,-751659.26};
-ST(0.01788586,0.12850833,0,0.023379755,0.12686903,0,0.021167753,0.13548502,0){1616906.9,2047772.9,1816935.7,-895214.81,-1065433.1,-1266652.3,-2016472.2,-2558991,-2200669.4,-4802.2192,-162203.53,600161.11,2014144.7,2481221.5,2382629.9};
-ST(0.042433189,0.024814669,0,0.048866761,0.029559705,0,0.043838979,0.034579424,0){3739739.8,3831772.8,3745913.7,3488658.7,3467532.3,3260141.4,3003356.3,2773676.3,2351583.2,2316430.4,1816186,1138042.7,1473602,685852.4,-223347.31};
-ST(0.051167355,0.022914381,0,0.048866761,0.029559705,0,0.042433189,0.024814669,0){3850137.8,3831772.8,3739739.8,3629520.4,3467532.3,3488658.7,3200919.1,2773676.3,3003356.3,2588908.3,1816186,2316430.4,1828396.4,685852.4,1473602};
-ST(0.092195724,0.16853594,0,0.093710586,0.16080643,0,0.1,0.16428571,0){598378.34,507346.27,0,-829189.07,-621948.04,0,-278570.16,-366919.85,0,936666.51,704920.6,0,-82641.6,207593.47,0};
-ST(0.040431855,0.24188745,0,0.045331711,0.23557633,0,0.047556344,0.24377674,0){1110505,1270563.3,1122639.4,-2932804,-3255008.9,-2989881.7,3702149.5,3813331,3850350.4,-3142324.5,-2700862,-3414324.1,1453973.2,404484.48,1828478.4};
-ST(0.01180171,0.25230222,0,0.013821768,0.24617185,0,0.018179834,0.25267212,0){347512.04,454053.45,514543.14,-957611.77,-1221678.8,-1419813.2,1333704.3,1611329.8,1983439.5,-1383899.6,-1502439.1,-2069793.3,1095718.6,928515.88,1657747.8};
-ST(0.073234584,0.04253025,0,0.067616069,0.037109229,0,0.075978544,0.034466341,0){2820532.7,3239242.7,2615244.9,2270240.9,2756202.5,2278283.7,1277003.9,1862139.4,1647758.2,34586.382,690369.93,804880.96,-1214797.7,-584563.48,-142067.87};
-ST(0.076498673,0.26519709,0,0.068237016,0.26229006,0,0.074279052,0.25633166,0){473307.48,639705.29,635900.39,-1357765.2,-1820649,-1777029.4,2063933,2721368.6,2553015.8,-2499100.3,-3203243.1,-2804423.5,2605934.6,3191912.1,2479429.3};
-ST(0.072323403,0.067507008,0,0.070754378,0.060222618,0,0.076938259,0.060604721,0){2781512.1,2932444.5,2443533.2,1448400.9,1804303.3,1491930.8,-578922.09,-17984.254,-40674.57,-2328912.3,-1833384.6,-1557435.8,-2963263.7,-2943704.7,-2468002.6};
-ST(0.021167753,0.13548502,0,0.030046638,0.13690443,0,0.026018946,0.14387862,0){1816935.7,2369378.2,2064539,-1266652.3,-1721516.8,-1800072.3,-2200669.4,-2840145.3,-2295230.1,600161.11,944948.24,1506177.8,2382629.9,3098367.4,2488196.2};
-ST(0.049721881,0.27094787,0,0.045592054,0.27439642,0,0.043491003,0.26677795,0){588018.61,513714.39,657627.62,-1710042.9,-1504437.2,-1894105.9,2675009.8,2387679.2,2903724.9,-3394309,-3100344.3,-3565612.1,3801713.7,3591305.7,3800401.2};
-ST(0.076271482,0.13373081,0,0.076158908,0.12549637,0,0.082709707,0.12855445,0){2012844.4,2092101.1,1568327.1,-1330317.6,-1030118.9,-869760.99,-2463975.8,-2615047.7,-1955764.1,494859.01,-297340.89,-1353.9511,2631758.9,2464056,1955094.7};
-ST(0.090077759,0.25268961,0,0.085145188,0.25032735,0,0.089949388,0.2453858,0){291813.61,448997.25,339950.36,-805257.31,-1228228.7,-911669.73,1125037.4,1682589.8,1193275.4,-1174248.1,-1691886.1,-1095139.7,940920.06,1253443,648419.14};
-ST(0.08944657,0.05485846,0,0.083998423,0.049627851,0,0.08974924,0.047235181,0){1211526.2,1806853.8,1190814.4,822600.19,1329741.5,905328.07,169573.91,501474.01,402804.56,-537958.1,-459273.5,-196265.4,-1073022.7,-1299103.8,-748421.11};
-ST(0.041643161,0.17482395,0,0.042242048,0.16806859,0,0.048076401,0.17082416,0){2284160.6,2399442.3,2424680.5,-3458410.7,-3302042.1,-3473815.1,-506290.81,-1157324.9,-921629.25,3718851.8,3737475.6,3872759.5,-1405815.9,-248746.29,-754316.94};
-ST(0.038009007,0.015147577,0,0.046063037,0.016810165,0,0.042433189,0.024814669,0){3597209.6,3836060.2,3739739.8,3506943.3,3717529.2,3488658.7,3328697.3,3484126.2,3003356.3,3067010.9,3143090.2,2316430.4,2728518.9,2704667.4,1473602};
-ST(0.037999827,0.27482627,0,0.030312881,0.27848596,0,0.029991713,0.27132489,0){474219.19,355416.48,469504.82,-1389905,-1048284.8,-1366503,2209621.2,1688178.9,2141236.7,-2876809.4,-2242771,-2724385.3,3345267.4,2683885.3,3063642.3};
-ST(0.074931673,0.27468874,0,0.069536278,0.26943087,0,0.076498673,0.26519709,0){363389.18,505602.11,473307.48,-1064791.9,-1465439,-1357765.2,1691857.9,2276404,2063933,-2200836.4,-2856108.7,-2499100.3,2556129.1,3145421.5,2605934.6};
-ST(0.075978544,0.034466341,0,0.068707287,0.030314019,0,0.074388951,0.025102472,0){2615244.9,3188897.7,2772012.4,2278283.7,2870259.7,2581574.2,1647758.2,2264806.3,2213781,804880.96,1433032.7,1693914.7,-142067.87,457746.25,1057277.9};
-ST(0.021251228,0.18136297,0,0.016878531,0.18478654,0,0.013878694,0.17880836,0){1398279.8,1113458.1,971566.52,-2300353.4,-1906862.4,-1548960.4,85724.805,245299.96,-51095.574,2245163.6,1732097.5,1579530,-1534338.6,-1479759.2,-887966.26};
-ST(0.076498673,0.26519709,0,0.081004963,0.27070547,0,0.074931673,0.27468874,0){473307.48,333174.81,363389.18,-1357765.2,-968418.7,-1064791.9,2063933,1513258.3,1691857.9,-2499100.3,-1916833.2,-2200836.4,2605934.6,2141327.9,2556129.1};
-ST(0.085115353,0.26563346,0,0.081004963,0.27070547,0,0.076498673,0.26519709,0){313056.52,333174.81,473307.48,-899063.8,-968418.7,-1357765.2,1369900.4,1513258.3,2063933,-1665255.4,-1916833.2,-2499100.3,1747205.8,2141327.9,2605934.6};
-ST(0.075978544,0.034466341,0,0.080699945,0.029142305,0,0.084917502,0.034253561,0){2615244.9,2185639.9,1742331.8,2278283.7,1983669.2,1520580.8,1647758.2,1598386.1,1105294,804880.96,1065401.8,549324.68,-142067.87,433818.71,-76880.401};
-ST(0.074388951,0.025102472,0,0.080699945,0.029142305,0,0.075978544,0.034466341,0){2772012.4,2185639.9,2615244.9,2581574.2,1983669.2,2278283.7,2213781,1598386.1,1647758.2,1693914.7,1065401.8,804880.96,1057277.9,433818.71,-142067.87};
-ST(0.058552205,0.15400025,0,0.05288218,0.14757716,0,0.061244461,0.14481879,0){2589572.8,2767228.4,2643484.5,-2806487.5,-2626819.9,-2356788.3,-2354581.2,-2900596.1,-2899198.4,3003966,2479722.6,2042509.4,2103059.1,3026446,3121060.9};
-ST(0.050010485,0.1548865,0,0.05288218,0.14757716,0,0.058552205,0.15400025,0){2672912.2,2767228.4,2589572.8,-2946373.7,-2626819.9,-2806487.5,-2371553.9,-2900596.1,-2354581.2,3189127.5,2479722.6,3003966,2045305.7,3026446,2103059.1};
-ST(0.089230742,0.11966768,0,0.08466046,0.11619385,0,0.091758141,0.11296708,0){1043332.5,1475783,824791.32,-391602.7,-452604.25,-201020.76,-1287980.7,-1789662.1,-976886.6,-412950.99,-788262.21,-537824.26,1030099.2,1243195.1,570097.26};
-ST(0.0078195435,0.14622426,0,0.017312959,0.14496605,0,0.013794295,0.15422926,0){680366.1,1456929,1126466.2,-626541.18,-1303417.8,-1226232.2,-729870.69,-1594293.7,-1017954.8,568744.13,1135517.7,1316565.7,774663.29,1713822.2,901352.54};
-ST(0.012304267,0.13852123,0,0.017312959,0.14496605,0,0.0078195435,0.14622426,0){1094693.2,1456929,680366.1,-832176.34,-1303417.8,-626541.18,-1294374.3,-1594293.7,-729870.69,521821.54,1135517.7,568744.13,1419655.5,1713822.2,774663.29};
-ST(0.066401409,0.0434645,0,0.067616069,0.037109229,0,0.073234584,0.04253025,0){3289675.8,3239242.7,2820532.7,2619840.6,2756202.5,2270240.9,1416557.6,1862139.4,1277003.9,-75156.319,690369.93,34586.382,-1551772,-584563.48,-1214797.7};
-ST(0.074279052,0.25633166,0,0.068237016,0.26229006,0,0.066803853,0.25459223,0){635900.39,639705.29,789541.66,-1777029.4,-1820649,-2193455.3,2553015.8,2721368.6,3110738.9,-2804423.5,-3203243.1,-3337877,2479429.3,3191912.1,2824240.3};
-ST(0.064352171,0.083117586,0,0.066925078,0.074981916,0,0.070865224,0.080352924,0){3167194.8,3090390.8,2808030.6,915483.69,1280900.5,934415.1,-1987167.2,-1278621.5,-1562677.5,-3477240.4,-3089611.2,-3017110.1,-2495770,-3091904.4,-2458745.5};
-ST(0.069536278,0.26943087,0,0.06660802,0.27624666,0,0.061631884,0.26868773,0){505602.11,417349.44,591535.29,-1465439,-1226359.7,-1711593.4,2276404,1959900.4,2649353.2,-2856108.7,-2572844.1,-3304968.8,3145421.5,3027289.2,3608394.3};
-ST(0.056317057,0.058022103,0,0.053426379,0.049768916,0,0.061015306,0.048529238,0){3630316.8,3727873.1,3533367.8,2330872.5,2738031.5,2640342.3,197001.66,1021148,1080012.2,-2007682.1,-966926.63,-753291.7,-3494460.7,-2698501,-2396723.8};
-ST(0.064276416,0.12183086,0,0.059246105,0.12763558,0,0.057323957,0.1204315,0){2809128.6,2918223.5,3051716.5,-1175750.5,-1563762.3,-1191883,-3492840.6,-3644117.3,-3778168.4,-855220.15,-127593.52,-1110713.1,2995580.4,3585046,3101303};
-ST(0.011838853,0.2301677,0,0.016939848,0.22904958,0,0.015758122,0.23699049,0){504229.49,714788.59,597291.98,-1254859.2,-1767596.2,-1541119.1,1363834.1,1888698.3,1837947.1,-775392.51,-1014237.8,-1363109.4,-209768.04,-395054.79,315646.37};
-ST(0.046341114,0.044942776,0,0.042113175,0.053290167,0,0.038515413,0.047952704,0){3748809.1,3616583.4,3516906.1,2933624.2,2519252.9,2648581.9,1480431.3,657513.67,1126309.3,-294933.53,-1403801.4,-674068.75,-2006921.6,-3039615.4,-2308227.3};
-ST(0.042433189,0.024814669,0,0.033039341,0.023173825,0,0.038009007,0.015147577,0){3739739.8,3318087.9,3597209.6,3488658.7,3123656.1,3506943.3,3003356.3,2746181,3328697.3,2316430.4,2207795.9,3067010.9,1473602,1539940.3,2728518.9};
-ST(0.050010485,0.1548865,0,0.054296142,0.16027015,0,0.04704595,0.16277363,0){2672912.2,2568973.7,2543508.6,-2946373.7,-3120486,-3221973.5,-2371553.9,-1899085.7,-1684138.2,3189127.5,3528266.9,3671419.3,2045305.7,1141594.9,704902.67};
-ST(0.089949388,0.2453858,0,0.085145188,0.25032735,0,0.083292987,0.24598228,0){339950.36,448997.25,542685.82,-911669.73,-1228228.7,-1458992.1,1193275.4,1682589.8,1920780.7,-1095139.7,-1691886.1,-1784182,648419.14,1253443,1091638.2};
-ST(0.080938662,0.054906318,0,0.083998423,0.049627851,0,0.08944657,0.05485846,0){2097661.4,1806853.8,1211526.2,1423084,1329741.5,822600.19,290856.94,501474.01,169573.91,-934922.56,-459273.5,-537958.1,-1860365.1,-1299103.8,-1073022.7};
-ST(0.021957304,0.26060316,0,0.025641665,0.25311603,0,0.030217898,0.25971254,0){505833.44,680173.91,660621.26,-1432636.8,-1879847.5,-1866014.4,2119105.6,2635470.4,2744196,-2450095.8,-2768550.2,-3141188.1,2369995.8,2247361.6,2987009.7};
-ST(0.018179834,0.25267212,0,0.025641665,0.25311603,0,0.021957304,0.26060316,0){514543.14,680173.91,505833.44,-1419813.2,-1879847.5,-1432636.8,1983439.5,2635470.4,2119105.6,-2069793.3,-2768550.2,-2450095.8,1657747.8,2247361.6,2369995.8};
-ST(0.080160084,0.071577727,0,0.086276325,0.073599227,0,0.082390534,0.079333541,0){2107851.9,1502743.3,1865676.5,977984.82,653401.45,650380.91,-676141.96,-565297.67,-988603.29,-1967920.1,-1464602.7,-1983689.6,-2205119.3,-1536324.4,-1686881.4};
-ST(0.059246105,0.12763558,0,0.052058531,0.12554764,0,0.057323957,0.1204315,0){2918223.5,3065498.6,3051716.5,-1563762.3,-1512626.5,-1191883,-3644117.3,-3831818,-3778168.4,-127593.52,-428428.64,-1110713.1,3585046,3614977.4,3101303};
-ST(0.0910478,0.13167545,0,0.093938974,0.13899,0,0.087083587,0.13880919,0){831136.87,548364.78,1144744.3,-514132.23,-422206.84,-877072.07,-1027305.8,-645591.08,-1349889.8,122313.64,273728.87,561444.4,1073956.7,708600.91,1481228.8};
-ST(0.026270926,0.075674812,0,0.033874053,0.071548869,0,0.032911969,0.081185013,0){2630439.6,3157862.8,3037931.3,1063205.3,1466537.3,971274.35,-1137545.6,-1010259.7,-1756226.8,-2660659.2,-2946084.6,-3289165.4,-2599027.8,-3304540.6,-2584916.3};
-ST(0.033874053,0.071548869,0,0.027058874,0.069011929,0,0.031105381,0.06529626,0){3157862.8,2727323.5,3030579.1,1466537.3,1363815.9,1667989.8,-1010259.7,-681543.48,-444570.51,-2946084.6,-2386220.5,-2357289.6,-3304540.6,-2898415.6,-3210321.2};
-ST(0.1,0.17142857,0,0.092195724,0.16853594,0,0.1,0.16428571,0){0,598378.34,0,0,-829189.07,0,0,-278570.16,0,0,936666.51,0,0,-82641.6,0};
-ST(0.016927821,0.11108648,0,0.023213665,0.1150537,0,0.017763535,0.12074209,0){1644246.3,2130593.3,1657769.5,-340994.5,-605772.32,-657738.05,-1914445.6,-2564157.8,-2054600.3,-1176430.8,-1229375.9,-581651.26,981584.41,1684092.7,1703675.4};
-ST(0.085369203,0.17624497,0,0.082729031,0.18391978,0,0.077619244,0.18028791,0){1039089.6,1144258.1,1471797.4,-1603144.1,-1940160.8,-2389894.4,-168940.91,205244.05,18944.546,1695116.9,1797438.3,2378251.6,-751642.95,-1455642.1,-1502642.9};
-ST(0.060825265,0.17090728,0,0.054692531,0.17439284,0,0.054395265,0.16699477,0){2288734.2,2346407.8,2465605.5,-3282960.5,-3532168.6,-3338618.7,-862639.89,-561454.61,-1283530.8,3657845.3,3816051.1,3793219.5,-726586.11,-1367177.6,-59660.123};
-ST(0.047385855,0.10193045,0,0.054240748,0.10280037,0,0.050721192,0.10961634,0){3329666.7,3302360.6,3257974.6,-117239.93,-169115.68,-583831.78,-3442848.4,-3462856.5,-3737290.3,-3204510.9,-3116478.2,-2483878.9,350991.89,505791.56,1698581.7};
-ST(0.018179834,0.25267212,0,0.013821768,0.24617185,0,0.02133326,0.24577003,0){514543.14,454053.45,675269.21,-1419813.2,-1221678.8,-1813848.4,1983439.5,1611329.8,2383092.9,-2069793.3,-1502439.1,-2204305.3,1657747.8,928515.88,1333319.6};
-ST(0.1,0.22142857,0,0.091864029,0.22106993,0,0.1,0.21428571,0){0,394005.54,0,0,-927852.61,0,0,863120.02,0,0,-241435.16,0,0,-536498.87,0};
-ST(0.038427921,0.16264679,0,0.042155309,0.15589067,0,0.04704595,0.16277363,0){2389351.9,2577776.2,2543508.6,-3020403.6,-2895603.6,-3221973.5,-1591681.4,-2220826.4,-1684138.2,3440909.6,3169529.7,3671419.3,682723.32,1830012,704902.67};
-ST(0.091323117,0.29067423,0,0.081165886,0.29137431,0,0.08596482,0.28314521,0){51002.156,97729.953,145967.81,-152526.43,-292395.17,-433371.98,252617.29,484687.71,707326.96,-350336.87,-673055.06,-959333.22,444691.33,855744.16,1181452.3};
-ST(0.085905658,0.016824409,0,0.081119523,0.0085521597,0,0.091308694,0.0093164623,0){1656238,2167108.8,1045151,1604967.9,2149779.2,1035216.9,1504009.2,2115263.6,1015442.8,1356492.3,2063869.7,986027.05,1166855,1995657.9,947106.05};
-ST(0.069025318,0.11622387,0,0.074105201,0.11070107,0,0.077013163,0.11736903,0){2631986.5,2359475.3,2095773.2,-808686.45,-471755.94,-691227.47,-3192250.9,-2736894.8,-2559181.5,-1402768.4,-1717960.7,-1023961.4,2220554.1,1362139.4,1873161.8};
-ST(0.043569257,0.19619451,0,0.036160627,0.1953007,0,0.039366597,0.19088868,0){1966078.6,1834250.2,1982365.2,-3794921.6,-3509998.2,-3628592.6,1563901,1372423.7,1030950.1,2340412.7,2256297.6,2772526.5,-3741435.4,-3434247.7,-3333638.5};
-ST(0.048791783,0.28884593,0,0.051519181,0.28417908,0,0.055764419,0.28986395,0){226341.07,320732.11,202473.1,-675936.71,-953415.16,-605163.67,1116322.7,1560004.1,1001119.7,-1541505,-2123899.5,-1385941.2,1945474.1,2629434.9,1755276.4};
-ST(0.1,0.092857143,0,0.093922759,0.092262381,0,0.1,0.085714286,0){0,652083.63,0,0,89312.894,0,0,-550573,0,0,-715327.2,0,0,-262838.8,0};
-ST(0.049232245,0.21047418,0,0.053910411,0.21448753,0,0.045116599,0.21481108,0){1752658.6,1667429.4,1654487.5,-3827070.5,-3752161.8,-3731787.4,2777012.8,3023771,3030991.5,540242.46,-28239.212,-73694.316,-3416565.4,-2988983.1,-2938909.4};
-ST(0.082493405,0.042375289,0,0.073234584,0.04253025,0,0.075978544,0.034466341,0){1978611.8,2820532.7,2615244.9,1595319.9,2270240.9,2278283.7,902966.17,1277003.9,1647758.2,35643.43,34586.382,804880.96,-838916.97,-1214797.7,-142067.87};
-ST(0.076498673,0.26519709,0,0.074279052,0.25633166,0,0.083190767,0.25723975,0){473307.48,635900.39,434158.6,-1357765.2,-1777029.4,-1216864.4,2063933,2553015.8,1759626.8,-2499100.3,-2804423.5,-1955417.3,2605934.6,2479429.3,1765235.2};
-ST(0.056199026,0.010061392,0,0.06203594,0.0060944193,0,0.064075209,0.013493001,0){3801979,3604620.2,3498581.2,3759859.9,3589956.2,3428890.3,3676084,3560685.5,3290906.4,3551608.2,3516960.1,3087427.7,3387596.5,3458793.9,2822154};
-ST(0.061476805,0.16269562,0,0.054296142,0.16027015,0,0.058552205,0.15400025,0){2391378.9,2568973.7,2589572.8,-3025373.1,-3120486,-2806487.5,-1589341.3,-1899085.7,-2354581.2,3446908.2,3528266.9,3003966,675366.83,1141594.9,2103059.1};
-ST(0.063469548,0.28521738,0,0.061805884,0.29356168,0,0.055764419,0.28986395,0){273598.49,121923.05,202473.1,-814255.31,-365207.83,-605163.67,1335465.2,606815.62,1001119.7,-1824812,-845641.09,-1385941.2,2270429.1,1080583.1,1755276.4};
-ST(0.08812606,0.087328167,0,0.093922759,0.092262381,0,0.087331535,0.0958472,0){1269155.7,652083.63,1318484.3,279658.57,89312.894,98077.228,-927894.68,-550573,-1213131.9,-1412053.3,-715327.2,-1401481.2,-795447.99,-262838.8,-292629.72};
-ST(0.06961584,0.048915995,0,0.073604017,0.054819307,0,0.066012722,0.055502179,0){3063466,2744584.6,3257272.9,2277085.6,1864679.8,2187557.2,906160.93,386939.94,399401.17,-697426.19,-1214908.7,-1519988.7,-2122325.6,-2427603.9,-2940625.1};
-ST(0.082942949,0.21818591,0,0.076796159,0.2234596,0,0.073708403,0.21517194,0){823054.75,1008421.8,1225969.3,-1901094.8,-2411357.4,-2772471.1,1667014.3,2346331.8,2271379.1,-282341.7,-852928.84,-92677.622,-1297502.9,-1160000.7,-2155133.8};
-ST(0.1,0.064285714,0,0.09230899,0.063522919,0,0.1,0.057142857,0){0,877619.52,0,0,503392.8,0,0,-85524.836,0,0,-638068.15,0,0,-918939.46,0};
-ST(0.067728608,0.12931058,0,0.076158908,0.12549637,0,0.076271482,0.13373081,0){2567539,2092101.1,2012844.4,-1463631.5,-1030118.9,-1330317.6,-3196956.5,-2615047.7,-2463975.8,89062.443,-297340.89,494859.01,3235608.2,2464056,2631758.9};
-ST(0.037999827,0.27482627,0,0.034582704,0.26623209,0,0.043491003,0.26677795,0){474219.19,604041.77,657627.62,-1389905,-1737386.1,-1894105.9,2209621.2,2655775,2903724.9,-2876809.4,-3245580.1,-3565612.1,3345267.4,3433603.3,3800401.2};
-ST(0.029991713,0.27132489,0,0.034582704,0.26623209,0,0.037999827,0.27482627,0){469504.82,604041.77,474219.19,-1366503,-1737386.1,-1389905,2141236.7,2655775,2209621.2,-2724385.3,-3245580.1,-2876809.4,3063642.3,3433603.3,3345267.4};
-ST(0.082516133,0.27647665,0,0.078222118,0.28277283,0,0.074931673,0.27468874,0){248899.48,220930.92,363389.18,-731674.12,-655625.13,-1064791.9,1170289.2,1069057.6,1691857.9,-1538273.3,-1447830.3,-2200836.4,1813237.5,1779434.3,2556129.1};
-ST(0.074388951,0.025102472,0,0.078020383,0.017034313,0,0.082332164,0.023444943,0){2772012.4,2461848.1,2029600,2581574.2,2383750.6,1907886.4,2213781,2230032.5,1671751.1,1693914.7,2005590.6,1335359.8,1057277.9,1717239.5,918760.81};
-ST(0.050721192,0.10961634,0,0.042557423,0.10832344,0,0.047385855,0.10193045,0){3257974.6,3183930.6,3329666.7,-583831.78,-492142.06,-117239.93,-3737290.3,-3600076,-3442848.4,-2483878.9,-2551523.2,-3204510.9,1698581.7,1442840.6,350991.89};
-ST(0.015416139,0.018002698,0,0.022427218,0.014872357,0,0.024008584,0.022367291,0){1798828.3,2505875.7,2639060.6,1735136,2445229.8,2494948.4,1609995.5,2325397.7,2214593.6,1427830.3,2149288.4,1813324.4,1194733.1,1920956.8,1312931.3};
-ST(0.023483408,0.28013687,0,0.0220603,0.28602893,0,0.015498485,0.28248556,0){270985.88,181204.07,166274.63,-801278.39,-539738.59,-493262.57,1297043.7,886739.53,803759.61,-1736920.8,-1214791.9,-1087394.1,2101746.5,1516611.7,1334475.8};
-ST(0.059957308,0.22757204,0,0.053624899,0.22742186,0,0.05718895,0.22161738,0){1366903.5,1430137,1508977,-3351367.9,-3503302.1,-3566099.1,3498598.8,3648370.9,3352547.9,-1727811.3,-1785483,-1004251.2,-990620.01,-1060301.4,-1983866.6};
-ST(0.042433189,0.024814669,0,0.046063037,0.016810165,0,0.051167355,0.022914381,0){3739739.8,3836060.2,3850137.8,3488658.7,3717529.2,3629520.4,3003356.3,3484126.2,3200919.1,2316430.4,3143090.2,2588908.3,1473602,2704667.4,1828396.4};
-ST(0.077619244,0.18028791,0,0.071841704,0.17726974,0,0.077140734,0.17217741,0){1471797.4,1799263.7,1584233.7,-2389894.4,-2812994.5,-2313491.7,18944.546,-214389.53,-519338.58,2378251.6,2933842.6,2552719.3,-1502642.9,-1438939.3,-655929.75};
-ST(0.1,0.29285714,0,0.1,0.3,0,0.092857143,0.3,0){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-ST(0.043838979,0.034579424,0,0.035858843,0.031497608,0,0.042433189,0.024814669,0){3745913.7,3456371.8,3739739.8,3260141.4,3083741.5,3488658.7,2351583.2,2378649.5,3003356.3,1138042.7,1417116.3,2316430.4,-223347.31,302618.73,1473602};
-ST(0.074931673,0.27468874,0,0.078222118,0.28277283,0,0.071000103,0.28243589,0){363389.18,220930.92,281581.81,-1064791.9,-655625.13,-835250.62,1691857.9,1069057.6,1360764.9,-2200836.4,-1447830.3,-1840418.5,2556129.1,1779434.3,2257916.8};
-ST(0.1,0,0,0.1,0.0071428571,0,0.092857143,0,0){0,0,863626.15,0,0,863662.39,0,0,863732,0,0,863838.35,0,0,863813.95};
-ST(0.070691378,0.017050195,0,0.078020383,0.017034313,0,0.074388951,0.025102472,0){3076870.7,2461848.1,2772012.4,2979073.3,2383750.6,2581574.2,2786592,2230032.5,2213781,2505581.5,2005590.6,1693914.7,2144710.8,1717239.5,1057277.9};
-ST(0.038597539,0.20095921,0,0.036160627,0.1953007,0,0.043569257,0.19619451,0){1801301.7,1834250.2,1966078.6,-3633864.6,-3509998.2,-3794921.6,1895634,1372423.7,1563901,1705394,2256297.6,2340412.7,-3630918.1,-3434247.7,-3741435.4};
-ST(0.059078636,0.27701937,0,0.06660802,0.27624666,0,0.063469548,0.28521738,0){447007.97,417349.44,273598.49,-1315269.1,-1226359.7,-814255.31,2107766.2,1959900.4,1335465.2,-2778864.5,-2572844.1,-1824812,3289755.3,3027289.2,2270429.1};
-ST(0.036602132,0.28491153,0,0.030312881,0.27848596,0,0.037999827,0.27482627,0){279518.56,355416.48,474219.19,-831596.18,-1048284.8,-1389905,1362985.6,1688178.9,2209621.2,-1860498.2,-2242771,-2876809.4,2311728.5,2683885.3,3345267.4};
-ST(0.091053567,0.10618538,0,0.09416017,0.099511923,0,0.1,0.10714286,0){914271.31,613994.66,0,-104388.15,5422.3845,0,-1006721.9,-608645.22,0,-787386.88,-619557.01,0,309052.61,-16415.987,0};
-ST(0.076938259,0.060604721,0,0.073604017,0.054819307,0,0.080938662,0.054906318,0){2443533.2,2744584.6,2097661.4,1491930.8,1864679.8,1423084,-40674.57,386939.94,290856.94,-1557435.8,-1214908.7,-934922.56,-2468002.6,-2427603.9,-1860365.1};
-ST(0.0064539684,0.081629255,0,0.0067127961,0.088875219,0,0,0.085714286,0){711139.06,725937.81,0,222377.16,141227.93,0,-419239.47,-557260.38,0,-772749.89,-806944.34,0,-595288.06,-406936.37,0};
-ST(0.070865224,0.080352924,0,0.074756101,0.075901522,0,0.075872285,0.081656016,0){2808030.6,2549479.1,2427639,934415.1,1021825.1,758134.07,-1562677.5,-1118145.3,-1432759.9,-3017110.1,-2588166.7,-2638364.3,-2458745.5,-2507455.8,-2029677.1};
-ST(0.024044461,0.20382537,0,0.03163445,0.20120488,0,0.030490983,0.2108424,0){1283805.9,1608414.7,1428644.1,-2655634.7,-3251875.6,-3128471,1553893.8,1714266.6,2293671,995311.88,1500504,399562.24,-2617892.2,-3248047,-2769801.9};
-ST(0.071915087,0.24816524,0,0.078142774,0.24370973,0,0.07921504,0.25033934,0){803363.84,714639.7,606155.6,-2179152.4,-1902709.3,-1658203,2928525.2,2448578.4,2271843.6,-2836050.6,-2167997.3,-2284831,1927975,1155455.3,1693484.6};
-ST(0.091308694,0.0093164623,0,0.093571257,0.018380777,0,0.085905658,0.016824409,0){1045151,774815.13,1656238,1035216.9,746204.54,1604967.9,1015442.8,690036.86,1504009.2,986027.05,608388.09,1356492.3,947106.05,504051.02,1166855};
-ST(0.08596482,0.28314521,0,0.093593186,0.28160993,0,0.091323117,0.29067423,0){145967.81,74588.283,51002.156,-433371.98,-221009.65,-152526.43,707326.96,359269.18,252617.29,-959333.22,-484261.41,-350336.87,1181452.3,591230.88,444691.33};
-ST(0.069002793,0.22246209,0,0.076796159,0.2234596,0,0.07180958,0.22984275,0){1267491.2,1008421.8,1079159.6,-3011719.2,-2411357.4,-2680718.2,2877058.6,2346331.8,2899261.6,-947533.34,-852928.84,-1622013.4,-1573376.1,-1160000.7,-492395.98};
-ST(0.04704595,0.16277363,0,0.042242048,0.16806859,0,0.038427921,0.16264679,0){2543508.6,2399442.3,2389351.9,-3221973.5,-3302042.1,-3020403.6,-1684138.2,-1157324.9,-1591681.4,3671419.3,3737475.6,3440909.6,704902.67,-248746.29,682723.32};
-ST(0.030466665,0.11568191,0,0.030575169,0.1246812,0,0.025139549,0.12057635,0){2608170,2526238.7,2224740.3,-773675.45,-1202245.8,-875333.98,-3152461.4,-3156412.2,-2755721.9,-1443702.3,-451924.48,-796179.51,2136967.4,2919641.1,2272644.8};
-ST(0.035619257,0.12028764,0,0.030575169,0.1246812,0,0.030466665,0.11568191,0){2821397.9,2526238.7,2608170,-1093830.4,-1202245.8,-773675.45,-3491178.8,-3156412.2,-3152461.4,-1043884.2,-451924.48,-1443702.3,2851838.9,2919641.1,2136967.4};
-ST(0.016927821,0.11108648,0,0.013465065,0.10662372,0,0.017861336,0.10270337,0){1644246.3,1351132.7,1773538.4,-340994.5,-165451.82,-87655.931,-1914445.6,-1496410,-1856823.6,-1176430.8,-1147793.4,-1677437.3,981584.41,489093.12,261812.45};
-ST(0.055764419,0.28986395,0,0.051519181,0.28417908,0,0.056292141,0.2827555,0){202473.1,320732.11,343081.75,-605163.67,-953415.16,-1018093.3,1001119.7,1560004.1,1660020.8,-1385941.2,-2123899.5,-2248005.1,1755276.4,2629434.9,2762903.8};
-ST(0.0068768393,0.16098373,0,0.0046637588,0.16745308,0,0,0.16428571,0){553409.29,362371.83,0,-680450.71,-494096.85,0,-397156.36,-182769.85,0,771605.48,560561.48,0,219690.78,-21256.565,0};
-ST(0.042541479,0.22296234,0,0.045116599,0.21481108,0,0.049797208,0.2214244,0){1481591,1654487.5,1551864.2,-3531706.6,-3731787.4,-3662861.4,3405357.4,3030991.5,3430735.4,-1180392.3,-73694.316,-1003918.8,-1772446.7,-2938909.4,-2065424.5};
-ST(0.07921504,0.25033934,0,0.078142774,0.24370973,0,0.083292987,0.24598228,0){606155.6,714639.7,542685.82,-1658203,-1902709.3,-1458992.1,2271843.6,2448578.4,1920780.7,-2284831,-2167997.3,-1784182,1693484.6,1155455.3,1091638.2};
-ST(0.042557423,0.10832344,0,0.038084092,0.1145524,0,0.034786476,0.1076516,0){3183930.6,2981407.2,2912738.3,-492142.06,-818508.93,-413135.58,-3600076,-3575257.7,-3267374.9,-2551523.2,-1775238,-2390915.6,1442840.6,2287308.3,1215377.6};
-ST(0.026270926,0.075674812,0,0.027058874,0.069011929,0,0.033874053,0.071548869,0){2630439.6,2727323.5,3157862.8,1063205.3,1363815.9,1466537.3,-1137545.6,-681543.48,-1010259.7,-2660659.2,-2386220.5,-2946084.6,-2599027.8,-2898415.6,-3304540.6};
-ST(0.070754378,0.060222618,0,0.073604017,0.054819307,0,0.076938259,0.060604721,0){2932444.5,2744584.6,2443533.2,1804303.3,1864679.8,1491930.8,-17984.254,386939.94,-40674.57,-1833384.6,-1214908.7,-1557435.8,-2943704.7,-2427603.9,-2468002.6};
-ST(0.061098586,0.072147464,0,0.060416267,0.076932239,0,0.054876921,0.07294965,0){3389933,3380545.3,3558755.8,1545196.6,1302521.2,1580988.4,-1140417.3,-1576156.6,-1275447.3,-3205469.9,-3485992.8,-3423192.1,-3526423.9,-3253298.6,-3669097.1};
-ST(0.061027247,0.098743066,0,0.058212185,0.089881183,0,0.066799394,0.09162077,0){3173016.6,3344291.6,2974160.1,72008.811,593905.21,440022.16,-3099474,-2645013.4,-2469083.6,-3241975.4,-3708817.1,-3274492.4,-216202.29,-1722713.3,-1290097.2};
-ST(0.05718895,0.22161738,0,0.053910411,0.21448753,0,0.063265205,0.21633109,0){1508977,1667429.4,1505335.5,-3566099.1,-3752161.8,-3432481.9,3352547.9,3023771,2888962.8,-1004251.2,-28239.212,-265885.87,-1983866.6,-2988983.1,-2549234.8};
-ST(0.076158908,0.12549637,0,0.082946441,0.12207685,0,0.082709707,0.12855445,0){2092101.1,1589878.9,1568327.1,-1030118.9,-673263.29,-869760.99,-2615047.7,-1978038.1,-1955764.1,-297340.89,-467139.5,-1353.9511,2464056,1708498.9,1955094.7};
-ST(0.052748817,0.036292023,0,0.060555575,0.040182349,0,0.054794838,0.043915046,0){3796611.1,3588260.7,3735662.6,3254886.9,2962222.2,2959425,2248728.5,1819353,1568238.5,921690.78,359025.67,-148813.91,-537197.11,-1164330.1,-1835117.4};
-ST(0.060819012,0.031697917,0,0.060555575,0.040182349,0,0.052748817,0.036292023,0){3608360,3588260.7,3796611.1,3214477.8,2962222.2,3254886.9,2469695.4,1819353,2248728.5,1455299.1,359025.67,921690.78,281702.17,-1164330.1,-537197.11};
-ST(0.054010827,0.25507988,0,0.060672356,0.25950081,0,0.0528723,0.26429657,0){897184.36,771273.27,718299.05,-2496661.6,-2177172.3,-2055661.9,3553831.7,3197356.1,3109067.1,-3839088.9,-3651078,-3733060,3290330.5,3457676.3,3841282.5};
-ST(0.0528723,0.26429657,0,0.060672356,0.25950081,0,0.061631884,0.26868773,0){718299.05,771273.27,591535.29,-2055661.9,-2177172.3,-1711593.4,3109067.1,3197356.1,2649353.2,-3733060,-3651078,-3304968.8,3841282.5,3457676.3,3608394.3};
-ST(0.064075209,0.013493001,0,0.06203594,0.0060944193,0,0.068476894,0.0069177029,0){3498581.2,3604620.2,3242851.4,3428890.3,3589956.2,3225849.8,3290906.4,3560685.5,3191931.3,3087427.7,3516960.1,3141298.2,2822154,3458793.9,3073847.6};
-ST(0.068366879,0.29272708,0,0.061805884,0.29356168,0,0.063469548,0.28521738,0){123803.43,121923.05,273598.49,-370697.46,-365207.83,-814255.31,615462.12,606815.62,1335465.2,-856697.17,-845641.09,-1824812,1092834.3,1080583.1,2270429.1};
-ST(0.036912897,0.21765752,0,0.029518097,0.21985532,0,0.030490983,0.2108424,0){1486590.9,1264894.2,1428644.1,-3421295.1,-2954793.2,-3128471,2965983.4,2682751.8,2293671,-438566.7,-629411.95,399562.24,-2395869.1,-1842177.8,-2769801.9};
-ST(0.012304267,0.13852123,0,0.0054758376,0.13911323,0,0.0072553778,0.13224921,0){1094693.2,495708.7,674958.82,-832176.34,-382921.42,-425463.67,-1294374.3,-582869.54,-832230.25,521821.54,250325.59,117822.57,1419655.5,639819.51,875622.71};
-ST(0.07492972,0.092844339,0,0.072044079,0.08604506,0,0.079265602,0.086677581,0){2431427.6,2688599.4,2114636.1,308451.38,649473.83,488789.06,-2083891.4,-1882262.6,-1512904.7,-2656803.1,-2986497.2,-2351470.6,-910298.79,-1825996.4,-1382326.1};
-ST(0.017373248,0.19021363,0,0.012931293,0.19295437,0,0.01062282,0.18656765,0){1095255.9,815194.79,711483.53,-1990705.9,-1524077.7,-1243147.4,532263.7,510133.92,217509.34,1555631.8,1080471.8,1080570.1,-1804413.6,-1450076.4,-1025407.6};
-ST(0.074388951,0.025102472,0,0.068707287,0.030314019,0,0.064795861,0.023107998,0){2772012.4,3188897.7,3443592.1,2581574.2,2870259.7,3242943.8,2213781,2264806.3,2853338,1693914.7,1433032.7,2297494.4,1057277.9,457746.25,1607540.9};
-ST(0.064795861,0.023107998,0,0.068707287,0.030314019,0,0.060819012,0.031697917,0){3443592.1,3188897.7,3608360,3242943.8,2870259.7,3214477.8,2853338,2264806.3,2469695.4,2297494.4,1433032.7,1455299.1,1607540.9,457746.25,281702.17};
-ST(0.084206466,0.24009781,0,0.092168655,0.23668616,0,0.089949388,0.2453858,0){569988.38,307607.26,339950.36,-1492933.9,-792496.69,-911669.73,1847439,941630.33,1193275.4,-1498530.8,-691810.02,-1095139.7,578923.58,148523.72,648419.14};
-ST(0.056199026,0.010061392,0,0.052049192,0.01582547,0,0.049204373,0.010884263,0){3801979,3859264.8,3873084,3759859.9,3753529.9,3822842.7,3676084,3544947.6,3723003.5,3551608.2,3239251.6,3574883.8,3387596.5,2844641.6,3380124.5};
-ST(0.025221599,0.062165695,0,0.032659307,0.059686042,0,0.031105381,0.06529626,0){2618029.3,3158137.1,3030579.1,1547191.2,1964024.3,1667989.8,-156575.4,27282.242,-444570.51,-1796512.5,-1919818.3,-2357289.6,-2702051.5,-3141270.1,-3210321.2};
-ST(0.031105381,0.06529626,0,0.037071258,0.0642048,0,0.033874053,0.071548869,0){3030579.1,3365311.2,3157862.8,1667989.8,1900443.5,1466537.3,-444570.51,-391679.98,-1010259.7,-2357289.6,-2513388.8,-2946084.6,-3210321.2,-3541461.8,-3304540.6};
-ST(0.064795861,0.023107998,0,0.070691378,0.017050195,0,0.074388951,0.025102472,0){3443592.1,3076870.7,2772012.4,3242943.8,2979073.3,2581574.2,2853338,2786592,2213781,2297494.4,2505581.5,1693914.7,1607540.9,2144710.8,1057277.9};
-ST(0.064075209,0.013493001,0,0.070691378,0.017050195,0,0.064795861,0.023107998,0){3498581.2,3076870.7,3443592.1,3428890.3,2979073.3,3242943.8,3290906.4,2786592,2853338,3087427.7,2505581.5,2297494.4,2822154,2144710.8,1607540.9};
-ST(0.024008584,0.022367291,0,0.033039341,0.023173825,0,0.028359285,0.029784535,0){2639060.6,3318087.9,2981166.2,2494948.4,3123656.1,2693525.9,2214593.6,2746181,2145980.7,1813324.4,2207795.9,1391347.7,1312931.3,1539940.3,502245.34};
-ST(0.075488644,0.14176328,0,0.068478919,0.13862632,0,0.076271482,0.13373081,0){1990888.2,2426951.1,2012844.4,-1647841.2,-1850187.5,-1330317.6,-2274843.7,-2866745.3,-2463975.8,1255935.2,1169007.7,494859.01,2491166.6,3144665.9,2631758.9};
-ST(0.076271482,0.13373081,0,0.068478919,0.13862632,0,0.067728608,0.12931058,0){2012844.4,2426951.1,2567539,-1330317.6,-1850187.5,-1463631.5,-2463975.8,-2866745.3,-3196956.5,494859.01,1169007.7,89062.443,2631758.9,3144665.9,3235608.2};
-ST(0.060432552,0.20227914,0,0.053221516,0.20704838,0,0.051624576,0.1997036,0){1798951.1,1805672.4,1943020.7,-3671781.8,-3837129.3,-3875569.2,2023610.8,2511247.5,1911651.5,1565241.8,1011998.4,1974364.4,-3653837,-3650194.7,-3875892.9};
-ST(0.079063451,0.10043005,0,0.076969725,0.10634022,0,0.072126291,0.10515927,0){2051820.1,2181001.1,2539730.3,-16056.497,-255488.75,-241283.81,-2067914.3,-2406546.5,-2758172.2,-2035845.1,-1869163.7,-2254933.2,48244.512,756176.24,717337.89};
-ST(0.063265205,0.21633109,0,0.053910411,0.21448753,0,0.059551151,0.20970619,0){1505335.5,1667429.4,1688112.8,-3432481.9,-3752161.8,-3664209.4,2888962.8,3023771,2601193.1,-265885.87,-28239.212,619333.89,-2549234.8,-2988983.1,-3326584.6};
-ST(0.059551151,0.20970619,0,0.066992124,0.20847551,0,0.063265205,0.21633109,0){1688112.8,1540360.8,1505335.5,-3664209.4,-3311175.4,-3432481.9,2601193.1,2266191.6,2888962.8,619333.89,706070.36,-265885.87,-3326584.6,-3078419.5,-2549234.8};
-ST(0.1,0.10714286,0,0.09416017,0.099511923,0,0.1,0.1,0){0,613994.66,0,0,5422.3845,0,0,-608645.22,0,0,-619557.01,0,0,-16415.987,0};
-ST(0,0.15714286,0,0.0068768393,0.16098373,0,0,0.16428571,0){0,553409.29,0,0,-680450.71,0,0,-397156.36,0,0,771605.48,0,0,219690.78,0};
-ST(0.031710863,0.0075461758,0,0.029163144,0.015558324,0,0.025468185,0.010276157,0){3254919.5,3068207,2780034,3234618.2,2986953.6,2747892,3194153.7,2826596.5,2683968.5,3133832.1,2591406.1,2589008.8,3053845.3,2287504.7,2463902.9};
-ST(0.072323403,0.067507008,0,0.079822506,0.065677674,0,0.080160084,0.071577727,0){2781512.1,2163855.5,2107851.9,1448400.9,1180001.4,977984.82,-578922.09,-340376.77,-676141.96,-2328912.3,-1706002.2,-1967920.1,-2963263.7,-2296197.5,-2205119.3};
-ST(0.085369203,0.17624497,0,0.093873231,0.17693503,0,0.089858368,0.18421461,0){1039089.6,445896.9,692603.24,-1603144.1,-694096.79,-1178349.1,-168940.91,-59504.029,133849.22,1695116.9,727141.13,1084450.2,-751642.95,-345394.37,-894447.98};
-ST(0.064352171,0.083117586,0,0.072044079,0.08604506,0,0.066799394,0.09162077,0){3167194.8,2688599.4,2974160.1,915483.69,649473.83,440022.16,-1987167.2,-1882262.6,-2469083.6,-3477240.4,-2986497.2,-3274492.4,-2495770,-1825996.4,-1290097.2};
-ST(0.0098751756,0.25600949,0,0.013885016,0.25805955,0,0.0071908097,0.26035264,0){270470.11,357160.64,179155.76,-755004.71,-1003688.5,-507033.49,1082095.4,1459712.7,748779.14,-1183544.7,-1638678.7,-863311.12,1038261.4,1506406.6,830950.48};
-ST(0.016759526,0.025876157,0,0.021348697,0.029751655,0,0.014137494,0.034012185,0){1932221.9,2382657.5,1641076.4,1791225.7,2153252.9,1435142,1519509.7,1716520.5,1049094.4,1136895.1,1114508.8,531342.12,671081.1,404958.41,-53364.585};
-ST(0.019499739,0.079597209,0,0.012549176,0.077039569,0,0.01882241,0.070374011,0){2040354.6,1370920.5,2018056.9,702945.71,525978.15,970762.8,-1095289.5,-643140.23,-580354.6,-2175701.2,-1415881.7,-1830388.5,-1830384.7,-1316306.1,-2130853.3};
-ST(0.0910478,0.13167545,0,0.083559522,0.13424014,0,0.082709707,0.12855445,0){831136.87,1462145.4,1568327.1,-514132.23,-981746.52,-869760.99,-1027305.8,-1784737.2,-1955764.1,122313.64,395362.65,-1353.9511,1073956.7,1914407.3,1955094.7};
-ST(0.087083587,0.13880919,0,0.083559522,0.13424014,0,0.0910478,0.13167545,0){1144744.3,1462145.4,831136.87,-877072.07,-981746.52,-514132.23,-1349889.8,-1784737.2,-1027305.8,561444.4,395362.65,122313.64,1481228.8,1914407.3,1073956.7};
-ST(0.018704911,0.19716585,0,0.015977634,0.20443356,0,0.011268327,0.1984065,0){1103230.1,895779.15,682302.12,-2149261.2,-1862602.8,-1344805.9,934589.13,1114548.4,623458.07,1263201.6,659707.69,739532.85,-2132672.2,-1827076.9,-1341727.7};
-ST(0.01882241,0.070374011,0,0.012549176,0.077039569,0,0.011197941,0.071439681,0){2018056.9,1370920.5,1244724.5,970762.8,525978.15,579995.21,-580354.6,-643140.23,-394493.66,-1830388.5,-1415881.7,-1158343.6,-2130853.3,-1316306.1,-1303869.8};
-ST(0.077013163,0.11736903,0,0.082946441,0.12207685,0,0.076158908,0.12549637,0){2095773.2,1589878.9,2092101.1,-691227.47,-673263.29,-1030118.9,-2559181.5,-1978038.1,-2615047.7,-1023961.4,-467139.5,-297340.89,1873161.8,1708498.9,2464056};
-ST(0.061244461,0.14481879,0,0.064971856,0.15110456,0,0.058552205,0.15400025,0){2643484.5,2431817,2589572.8,-2356788.3,-2488096.1,-2806487.5,-2899198.4,-2374265.3,-2354581.2,2042509.4,2543085,3003966,3121060.9,2315361.9,2103059.1};
-ST(0.0094805882,0.16707285,0,0.014405512,0.17061143,0,0.0069613667,0.17349451,0){730151.01,1063653,517779.21,-989834.58,-1519257.6,-769992.03,-378084.11,-412907.51,-142713.64,1124284.7,1696192.6,839532.94,-22095.939,-313907.63,-266340.1};
-ST(0.017763535,0.12074209,0,0.01198914,0.11616091,0,0.016927821,0.11108648,0){1657769.5,1171325.2,1644246.3,-657738.05,-358450.6,-340994.5,-2054600.3,-1420119.3,-1914445.6,-581651.26,-627101.02,-1176430.8,1703675.4,984768,981584.41};
-ST(0.051624576,0.1997036,0,0.043569257,0.19619451,0,0.050398693,0.1921099,0){1943020.7,1966078.6,2077292.2,-3875569.2,-3794921.6,-3850553.1,1911651.5,1563901,1209682,1974364.4,2340412.7,2818064.5,-3875892.9,-3741435.4,-3615771.1};
-ST(0.051624576,0.1997036,0,0.057391395,0.19462543,0,0.060432552,0.20227914,0){1943020.7,1979510.6,1798951.1,-3875569.2,-3763012.6,-3671781.8,1911651.5,1410875.8,2023610.8,1974364.4,2491970.2,1565241.8,-3875892.9,-3656419.8,-3653837};
-ST(0.03663522,0.040674234,0,0.032229878,0.047894836,0,0.028678488,0.042143634,0){3463485.9,3188476.9,2968313.4,2844620.6,2403076.1,2399521.8,1717431.6,1025710.6,1370917.4,283267.24,-604377.64,79587.615,-1201989.6,-2086050.7,-1227272.3};
-ST(0.038515413,0.047952704,0,0.032229878,0.047894836,0,0.03663522,0.040674234,0){3516906.1,3188476.9,3463485.9,2648581.9,2403076.1,2844620.6,1126309.3,1025710.6,1717431.6,-674068.75,-604377.64,283267.24,-2308227.3,-2086050.7,-1201989.6};
-ST(0.014137494,0.034012185,0,0.021348697,0.029751655,0,0.023478597,0.036718106,0){1641076.4,2382657.5,2561783.8,1435142,2153252.9,2187675.4,1049094.4,1716520.5,1494080.3,531342.12,1114508.8,582277.59,-53364.585,404958.41,-414804.14};
-ST(0.058552205,0.15400025,0,0.065117308,0.15657509,0,0.061476805,0.16269562,0){2589572.8,2354870.2,2391378.9,-2806487.5,-2678881.2,-3025373.1,-2354581.2,-1986291.9,-1589341.3,3003966,2952219.2,3446908.2,2103059.1,1580034,675366.83};
-ST(0.021957304,0.26060316,0,0.013885016,0.25805955,0,0.018179834,0.25267212,0){505833.44,357160.64,514543.14,-1432636.8,-1003688.5,-1419813.2,2119105.6,1459712.7,1983439.5,-2450095.8,-1638678.7,-2069793.3,2369995.8,1506406.6,1657747.8};
-ST(0.018179834,0.25267212,0,0.013885016,0.25805955,0,0.01180171,0.25230222,0){514543.14,357160.64,347512.04,-1419813.2,-1003688.5,-957611.77,1983439.5,1459712.7,1333704.3,-2069793.3,-1638678.7,-1383899.6,1657747.8,1506406.6,1095718.6};
-ST(0.078984823,0.22953004,0,0.077318805,0.23627719,0,0.07180958,0.22984275,0){858343.29,830868.27,1079159.6,-2128428.8,-2136157.9,-2680718.2,2291087.1,2525048.7,2899261.6,-1261656.1,-1830714.2,-1622013.4,-424553.92,350702.19,-492395.98};
-ST(0.1,0.15,0,0.09308158,0.15403623,0,0.09156348,0.14589395,0){0,579061.91,734092.88,0,-628036.95,-670961.7,0,-525997.02,-791796.8,0,672596.25,602866.55,0,469080.04,843431.47};
-ST(0.063469548,0.28521738,0,0.06660802,0.27624666,0,0.071000103,0.28243589,0){273598.49,417349.44,281581.81,-814255.31,-1226359.7,-835250.62,1335465.2,1959900.4,1360764.9,-1824812,-2572844.1,-1840418.5,2270429.1,3027289.2,2257916.8};
-ST(0.056317057,0.058022103,0,0.059054943,0.066788508,0,0.052494391,0.065958781,0){3630316.8,3499189.3,3640248,2330872.5,1856149.2,1971511.2,197001.66,-658492.2,-601016.65,-2007682.1,-2864039.1,-2898090,-3494460.7,-3725081.1,-3866942};
-ST(0.028359285,0.029784535,0,0.021348697,0.029751655,0,0.024008584,0.022367291,0){2981166.2,2382657.5,2639060.6,2693525.9,2153252.9,2494948.4,2145980.7,1716520.5,2214593.6,1391347.7,1114508.8,1813324.4,502245.34,404958.41,1312931.3};
-ST(0.054395265,0.16699477,0,0.054692531,0.17439284,0,0.048076401,0.17082416,0){2465605.5,2346407.8,2424680.5,-3338618.7,-3532168.6,-3473815.1,-1283530.8,-561454.61,-921629.25,3793219.5,3816051.1,3872759.5,-59660.123,-1367177.6,-754316.94};
-ST(0.088381846,0.16289419,0,0.093710586,0.16080643,0,0.092195724,0.16853594,0){911153.68,507346.27,598378.34,-1156470.7,-621948.04,-829189.07,-599768.12,-366919.85,-278570.16,1317920.1,704920.6,936666.51,244888.24,207593.47,-82641.6};
-ST(0.08944657,0.05485846,0,0.09230899,0.063522919,0,0.08415119,0.061061125,0){1211526.2,877619.52,1759442.9,822600.19,503392.8,1064240.3,169573.91,-85524.836,-51487.645,-537958.1,-638068.15,-1146904.2,-1073022.7,-918939.46,-1789550.6};
-ST(0.1,0.19285714,0,0.093164956,0.1980516,0,0.091593501,0.1915477,0){0,420734.09,544831.72,0,-826537.04,-1004107.1,0,376428.12,301623.68,0,463603.83,749822.54,0,-823893.15,-933881.71};
-ST(0,0.042857143,0,0.0063343033,0.038958017,0,0.0064812773,0.046734878,0){0,751213.74,761350.4,0,627892.11,582610.88,0,401490.67,267082.8,0,109174.99,-111174.21,0,-201236.23,-463416.67};
-ST(0.014285714,0.3,0,0.017990672,0.29207379,0,0.021428571,0.3,0){0,86228.122,0,0,-258100.45,0,0,428229.3,0,0,-595472.42,0,0,758576.15,0};
-ST(0.021428571,0,0,0.01808004,0.0081573173,0,0.014285714,0,0){2419501.9,2085729.2,1683701.5,2419561.9,2070583.9,1683671.3,2419679.8,2040406.9,1683611.9,2419876.4,1995444.2,1683542.6,2419989.4,1935913.6,1683226};
-ST(0.080160084,0.071577727,0,0.074756101,0.075901522,0,0.072323403,0.067507008,0){2107851.9,2549479.1,2781512.1,977984.82,1021825.1,1448400.9,-676141.96,-1118145.3,-578922.09,-1967920.1,-2588166.7,-2328912.3,-2205119.3,-2507455.8,-2963263.7};
-ST(0.050398693,0.1921099,0,0.057391395,0.19462543,0,0.051624576,0.1997036,0){2077292.2,1979510.6,1943020.7,-3850553.1,-3763012.6,-3875569.2,1209682,1410875.8,1911651.5,2818064.5,2491970.2,1974364.4,-3615771.1,-3656419.8,-3875892.9};
-ST(0.0062494098,0.068021592,0,0.0060853536,0.074713803,0,0,0.071428571,0){709501.16,681675.12,0,364477.97,285253.65,0,-157824.6,-277070.48,0,-603457.47,-678306.76,0,-756039.79,-685312.86,0};
-ST(0.045331711,0.23557633,0,0.052478219,0.23860916,0,0.047556344,0.24377674,0){1270563.3,1222305.6,1122639.4,-3255008.9,-3178913.4,-2989881.7,3813331,3866354.4,3850350.4,-2700862,-3010118,-3414324.1,404484.48,951644.63,1828478.4};
-ST(0.050960377,0.23252058,0,0.052478219,0.23860916,0,0.045331711,0.23557633,0){1342135.9,1222305.6,1270563.3,-3383651.2,-3178913.4,-3255008.9,3804738.6,3866354.4,3813331,-2403721.7,-3010118,-2700862,-148681.88,951644.63,404484.48};
-ST(0.089949388,0.2453858,0,0.083292987,0.24598228,0,0.084206466,0.24009781,0){339950.36,542685.82,569988.38,-911669.73,-1458992.1,-1492933.9,1193275.4,1920780.7,1847439,-1095139.7,-1784182,-1498530.8,648419.14,1091638.2,578923.58};
-ST(0.08415119,0.061061125,0,0.080938662,0.054906318,0,0.08944657,0.05485846,0){1759442.9,2097661.4,1211526.2,1064240.3,1423084,822600.19,-51487.645,290856.94,169573.91,-1146904.2,-934922.56,-537958.1,-1789550.6,-1860365.1,-1073022.7};
-ST(0.014285714,0.3,0,0.010662343,0.29482959,0,0.017990672,0.29207379,0){0,34537.041,86228.122,0,-103506.64,-258100.45,0,172164.12,428229.3,0,-240303.04,-595472.42,0,307518.14,758576.15};
-ST(0.08944657,0.05485846,0,0.094913401,0.051076335,0,0.1,0.057142857,0){1211526.2,595503.05,0,822600.19,429138.45,0,169573.91,142901.48,0,-537958.1,-183223.65,0,-1073022.7,-458373.75,0};
-ST(0.1,0.24285714,0,0.095090425,0.2489538,0,0.089949388,0.2453858,0){0,157454.16,339950.36,0,-428416.46,-911669.73,0,579817.55,1193275.4,0,-569427.53,-1095139.7,0,400020.01,648419.14};
-ST(0.01808004,0.0081573173,0,0.010679145,0.0052482016,0,0.014285714,0,0){2085729.2,1277155.8,1683701.5,2070583.9,1273289.3,1683671.3,2040406.9,1265566.3,1683611.9,1995444.2,1254019.7,1683542.6,1935913.6,1238493.9,1683226};
-ST(0.045375723,0.12284566,0,0.052058531,0.12554764,0,0.045894811,0.13135905,0){3072436,3065498.6,2973475.7,-1348503.3,-1512626.5,-1819976.4,-3829159.4,-3831818,-3679581.9,-800055.99,-428428.64,392676.16,3380414.3,3614977.4,3832095.1};
-ST(0.045894811,0.13135905,0,0.052058531,0.12554764,0,0.053497526,0.1329974,0){2973475.7,3065498.6,2959143.9,-1819976.4,-1512626.5,-1911000.9,-3679581.9,-3831818,-3636096,392676.16,-428428.64,623103.97,3832095.1,3614977.4,3857035.6};
-ST(0.03163445,0.20120488,0,0.036840853,0.20596239,0,0.030490983,0.2108424,0){1608414.7,1679916.9,1428644.1,-3251875.6,-3538121.9,-3128471,1714266.6,2233718.4,2293671,1500504,1067350,399562.24,-3248047,-3414669.4,-2769801.9};
-ST(0.089858368,0.18421461,0,0.082729031,0.18391978,0,0.085369203,0.17624497,0){692603.24,1144258.1,1039089.6,-1178349.1,-1940160.8,-1603144.1,133849.22,205244.05,-168940.91,1084450.2,1797438.3,1695116.9,-894447.98,-1455642.1,-751642.95};
-ST(0.02463475,0.21609565,0,0.021120118,0.21068669,0,0.030490983,0.2108424,0){1153636.1,1077357.5,1428644.1,-2626116.1,-2356401.7,-3128471,2198315,1720167.1,2293671,-179791.92,314292.11,399562.24,-1969098.8,-2093742.8,-2769801.9};
-ST(0.030490983,0.2108424,0,0.021120118,0.21068669,0,0.024044461,0.20382537,0){1428644.1,1077357.5,1283805.9,-3128471,-2356401.7,-2655634.7,2293671,1720167.1,1553893.8,399562.24,314292.11,995311.88,-2769801.9,-2093742.8,-2617892.2};
-ST(0.047385855,0.10193045,0,0.039702853,0.10111678,0,0.044548934,0.094607351,0){3329666.7,3175586.8,3364209.6,-117239.93,-64516.934,323528.56,-3442848.4,-3238866.3,-3009655.6,-3204510.9,-3108635.2,-3622750.1,350991.89,193445.51,-961698.97};
-ST(0.050721192,0.10961634,0,0.051013063,0.11801667,0,0.044666369,0.11545829,0){3257974.6,3161388.4,3148096.1,-583831.78,-1083065.4,-920013.3,-3737290.3,-3873486.3,-3799301.5,-2483878.9,-1463412.7,-1769018.1,1698581.7,2911579,2547335.8};
-ST(0.055764419,0.28986395,0,0.056292141,0.2827555,0,0.063469548,0.28521738,0){202473.1,343081.75,273598.49,-605163.67,-1018093.3,-814255.31,1001119.7,1660020.8,1335465.2,-1385941.2,-2248005.1,-1824812,1755276.4,2762903.8,2270429.1};
-ST(0.058552205,0.15400025,0,0.054296142,0.16027015,0,0.050010485,0.1548865,0){2589572.8,2568973.7,2672912.2,-2806487.5,-3120486,-2946373.7,-2354581.2,-1899085.7,-2371553.9,3003966,3528266.9,3189127.5,2103059.1,1141594.9,2045305.7};
-ST(0.01062282,0.18656765,0,0.0062925762,0.18063125,0,0.013878694,0.17880836,0){711483.53,445914.92,971566.52,-1243147.4,-727143.63,-1548960.4,217509.34,12632.594,-51095.574,1080570.1,719304.1,1579530,-1025407.6,-466469.22,-887966.26};
-ST(0.030490983,0.2108424,0,0.029518097,0.21985532,0,0.02463475,0.21609565,0){1428644.1,1264894.2,1153636.1,-3128471,-2954793.2,-2626116.1,2293671,2682751.8,2198315,399562.24,-629411.95,-179791.92,-2769801.9,-1842177.8,-1969098.8};
-ST(0.030312881,0.27848596,0,0.025044032,0.27464897,0,0.029991713,0.27132489,0){355416.48,363665.57,469504.82,-1048284.8,-1065519.5,-1366503,1688178.9,1692735.8,2141236.7,-2242771,-2201379.5,-2724385.3,2683885.3,2555652.6,3063642.3};
-ST(0.1,0.15,0,0.09156348,0.14589395,0,0.1,0.14285714,0){0,734092.88,0,0,-670961.7,0,0,-791796.8,0,0,602866.55,0,0,843431.47,0};
-ST(0.054957014,0.24657048,0,0.052478219,0.23860916,0,0.059437672,0.2400817,0){1058545,1222305.6,1145348.7,-2852831,-3178913.4,-2999714,3777171.8,3866354.4,3711340.5,-3549694.2,-3010118,-3009146,2239441.1,951644.63,1160252.2};
-ST(0.047556344,0.24377674,0,0.052478219,0.23860916,0,0.054957014,0.24657048,0){1122639.4,1222305.6,1058545,-2989881.7,-3178913.4,-2852831,3850350.4,3866354.4,3777171.8,-3414324.1,-3010118,-3549694.2,1828478.4,951644.63,2239441.1};
-ST(0.016702178,0.061420197,0,0.025221599,0.062165695,0,0.01882241,0.070374011,0){1844408.3,2618029.3,2018056.9,1107331.1,1547191.2,970762.8,-72241.295,-156575.4,-580354.6,-1222910.6,-1796512.5,-1830388.5,-1885264.1,-2702051.5,-2130853.3};
-ST(0.029380008,0.16405835,0,0.034314476,0.15645926,0,0.038427921,0.16264679,0){2021292.5,2334400.9,2389351.9,-2614335.2,-2649968.2,-3020403.6,-1254306.4,-1976247.7,-1591681.4,2982541.3,2917237.1,3440909.6,378860.61,1581967.4,682723.32};
-ST(0.027609688,0.15620978,0,0.034314476,0.15645926,0,0.029380008,0.16405835,0){2023546.1,2334400.9,2021292.5,-2286520.9,-2649968.2,-2614335.2,-1726415,-1976247.7,-1254306.4,2510934.9,2917237.1,2982541.3,1400022.9,1581967.4,378860.61};
-ST(0.041057987,0.068843254,0,0.037071258,0.0642048,0,0.045416206,0.061541227,0){3488848.8,3365311.2,3642820.9,1752771.3,1900443.5,2181474.8,-855539,-391679.98,-155055.51,-3038218.5,-2513388.8,-2429600.5,-3709409.4,-3541461.8,-3730025.8};
-ST(0.084368038,0.19048099,0,0.082729031,0.18391978,0,0.089858368,0.18421461,0){992852.93,1144258.1,692603.24,-1809621.2,-1940160.8,-1178349.1,495817.1,205244.05,133849.22,1401810.9,1797438.3,1084450.2,-1649308.4,-1455642.1,-894447.98};
-ST(0.020973714,0.16688371,0,0.014405512,0.17061143,0,0.014502412,0.16316663,0){1525118.3,1063653,1121335,-2061659.5,-1519257.6,-1429592.9,-799875.51,-412907.51,-728363.13,2343184.8,1696192.6,1629901.1,-24581.749,-313907.63,280110.31};
-ST(0.03663522,0.040674234,0,0.035858843,0.031497608,0,0.043838979,0.034579424,0){3463485.9,3456371.8,3745913.7,2844620.6,3083741.5,3260141.4,1717431.6,2378649.5,2351583.2,283267.24,1417116.3,1138042.7,-1201989.6,302618.73,-223347.31};
-ST(0.064075209,0.013493001,0,0.057612168,0.01845715,0,0.056199026,0.010061392,0){3498581.2,3752599.8,3801979,3428890.3,3612875.5,3759859.9,3290906.4,3338613.5,3676084,3087427.7,2940029.2,3551608.2,2822154,2431782.4,3387596.5};
-ST(0.025130011,0.29009115,0,0.028198926,0.28535727,0,0.031264826,0.29263185,0){142877.47,230200.16,124484.17,-427099.39,-685197.76,-372709.78,706741.94,1124120.6,618717.86,-978805.55,-1536674.3,-861054.65,1240164.3,1912913.1,1098239.8};
-ST(0.066799394,0.09162077,0,0.069968451,0.098831219,0,0.061027247,0.098743066,0){2974160.1,2730411,3173016.6,440022.16,57648.531,72008.811,-2469083.6,-2671597.7,-3099474,-3274492.4,-2785714.6,-3241975.4,-1290097.2,-173126.8,-216202.29};
-ST(0.063469548,0.28521738,0,0.056292141,0.2827555,0,0.059078636,0.27701937,0){273598.49,343081.75,447007.97,-814255.31,-1018093.3,-1315269.1,1335465.2,1660020.8,2107766.2,-1824812,-2248005.1,-2778864.5,2270429.1,2762903.8,3289755.3};
-ST(0.05718895,0.22161738,0,0.062992669,0.22303634,0,0.059957308,0.22757204,0){1508977,1396775.9,1366903.5,-3566099.1,-3331109.7,-3351367.9,3352547.9,3216330,3498598.8,-1004251.2,-1122974.8,-1727811.3,-1983866.6,-1661551.4,-990620.01};
-ST(0.063265205,0.21633109,0,0.062992669,0.22303634,0,0.05718895,0.22161738,0){1505335.5,1396775.9,1508977,-3432481.9,-3331109.7,-3566099.1,2888962.8,3216330,3352547.9,-265885.87,-1122974.8,-1004251.2,-2549234.8,-1661551.4,-1983866.6};
-ST(0.044637502,0.20577347,0,0.045116599,0.21481108,0,0.038843793,0.21103197,0){1811821.2,1654487.5,1637090.1,-3810004,-3731787.4,-3590120.4,2390091.8,3030991.5,2645890.8,1174216.7,-73694.316,433646.44,-3685779.4,-2938909.4,-3163532.2};
-ST(0.061631884,0.26868773,0,0.055001581,0.27169863,0,0.0528723,0.26429657,0){591535.29,565900.8,718299.05,-1711593.4,-1648356.5,-2055661.9,2649353.2,2587095.5,3109067.1,-3304968.8,-3300283.2,-3733060,3608394.3,3725567.5,3841282.5};
-ST(0.049232245,0.21047418,0,0.045116599,0.21481108,0,0.044637502,0.20577347,0){1752658.6,1654487.5,1811821.2,-3827070.5,-3731787.4,-3810004,2777012.8,3030991.5,2390091.8,540242.46,-73694.316,1174216.7,-3416565.4,-2938909.4,-3685779.4};
-ST(0.1,0.17142857,0,0.093873231,0.17693503,0,0.092195724,0.16853594,0){0,445896.9,598378.34,0,-694096.79,-829189.07,0,-59504.029,-278570.16,0,727141.13,936666.51,0,-345394.37,-82641.6};
-ST(0.0060491453,0.25298129,0,0.0071908097,0.26035264,0,0,0.25714286,0){178654.23,179155.76,0,-493529.07,-507033.49,0,691183.17,748779.14,0,-724662.05,-863311.12,0,585970.08,830950.48,0};
-ST(0.0072553778,0.13224921,0,0.014210915,0.13228117,0,0.012304267,0.13852123,0){674958.82,1289449.4,1094693.2,-425463.67,-813665.75,-832176.34,-832230.25,-1589638.3,-1294374.3,117822.57,227067.92,521821.54,875622.71,1673024.3,1419655.5};
-ST(0.028359285,0.029784535,0,0.030602087,0.036163623,0,0.023478597,0.036718106,0){2981166.2,3125169.1,2561783.8,2693525.9,2682310.4,2187675.4,2145980.7,1859340.6,1494080.3,1391347.7,772883.67,582277.59,502245.34,-423255.99,-414804.14};
-ST(0.023478597,0.036718106,0,0.030602087,0.036163623,0,0.028678488,0.042143634,0){2561783.8,3125169.1,2968313.4,2187675.4,2682310.4,2399521.8,1494080.3,1859340.6,1370917.4,582277.59,772883.67,79587.615,-414804.14,-423255.99,-1227272.3};
-ST(0.0069613667,0.17349451,0,0.014405512,0.17061143,0,0.013878694,0.17880836,0){517779.21,1063653,971566.52,-769992.03,-1519257.6,-1548960.4,-142713.64,-412907.51,-51095.574,839532.94,1696192.6,1579530,-266340.1,-313907.63,-887966.26};
-ST(0.069467767,0.146519,0,0.068478919,0.13862632,0,0.075488644,0.14176328,0){2287173.5,2426951.1,1990888.2,-2120501.9,-1850187.5,-1647841.2,-2441744.6,-2866745.3,-2274843.7,1942651.5,1169007.7,1255935.2,2583122,3144665.9,2491166.6};
-ST(0.043838979,0.034579424,0,0.048866761,0.029559705,0,0.052748817,0.036292023,0){3745913.7,3831772.8,3796611.1,3260141.4,3467532.3,3254886.9,2351583.2,2773676.3,2248728.5,1138042.7,1816186,921690.78,-223347.31,685852.4,-537197.11};
-ST(0.0528723,0.26429657,0,0.049721881,0.27094787,0,0.043491003,0.26677795,0){718299.05,588018.61,657627.62,-2055661.9,-1710042.9,-1894105.9,3109067.1,2675009.8,2903724.9,-3733060,-3394309,-3565612.1,3841282.5,3801713.7,3800401.2};
-ST(0.044548934,0.094607351,0,0.039702853,0.10111678,0,0.03690243,0.09394169,0){3364209.6,3175586.8,3135041.5,323528.56,-64516.934,337961.95,-3009655.6,-3238866.3,-2760700,-3622750.1,-3108635.2,-3396384.7,-961698.97,193445.51,-1002139.6};
-ST(0.089858368,0.18421461,0,0.095453592,0.18738967,0,0.091593501,0.1915477,0){692603.24,307137.29,544831.72,-1178349.1,-541566.85,-1004107.1,133849.22,106216.39,301623.68,1084450.2,460538.95,749822.54,-894447.98,-458087.35,-933881.71};
-ST(0,0.12857143,0,0.0061411468,0.1246533,0,0.0072553778,0.13224921,0){0,591118.91,674958.82,0,-280990.71,-425463.67,0,-738586.84,-832230.25,0,-106527.54,117822.57,0,682629.18,875622.71};
-ST(0.057612168,0.01845715,0,0.052049192,0.01582547,0,0.056199026,0.010061392,0){3752599.8,3859264.8,3801979,3612875.5,3753529.9,3759859.9,3338613.5,3544947.6,3676084,2940029.2,3239251.6,3551608.2,2431782.4,2844641.6,3387596.5};
-ST(0.015977634,0.20443356,0,0.021120118,0.21068669,0,0.013229009,0.21171696,0){895779.15,1077357.5,698716.07,-1862602.8,-2356401.7,-1540332.8,1114548.4,1720167.1,1156621.3,659707.69,314292.11,147278.69,-1827076.9,-2093742.8,-1334554.8};
-ST(0.0064812773,0.046734878,0,0.0063343033,0.038958017,0,0.011573719,0.041901165,0){761350.4,751213.74,1347025.1,582610.88,627892.11,1091815.8,267082.8,401490.67,629744.45,-111174.21,109174.99,48353.226,-463416.67,-201236.23,-542301.86};
-ST(0.054395265,0.16699477,0,0.054296142,0.16027015,0,0.061476805,0.16269562,0){2465605.5,2568973.7,2391378.9,-3338618.7,-3120486,-3025373.1,-1283530.8,-1899085.7,-1589341.3,3793219.5,3528266.9,3446908.2,-59660.123,1141594.9,675366.83};
-ST(0.0094805882,0.16707285,0,0.0046637588,0.16745308,0,0.0068768393,0.16098373,0){730151.01,362371.83,553409.29,-989834.58,-494096.85,-680450.71,-378084.11,-182769.85,-397156.36,1124284.7,560561.48,771605.48,-22095.939,-21256.565,219690.78};
-ST(0.017763535,0.12074209,0,0.023213665,0.1150537,0,0.025139549,0.12057635,0){1657769.5,2130593.3,2224740.3,-657738.05,-605772.32,-875333.98,-2054600.3,-2564157.8,-2755721.9,-581651.26,-1229375.9,-796179.51,1703675.4,1684092.7,2272644.8};
-ST(0,0.14285714,0,0.0078195435,0.14622426,0,0,0.15,0){0,680366.1,0,0,-626541.18,0,0,-729870.69,0,0,568744.13,0,0,774663.29,0};
-ST(0,0.10714286,0,0.0081152275,0.10988635,0,0,0.11428571,0){0,821145.89,0,0,-151361.79,0,0,-944689.8,0,0,-619246.83,0,0,439508.43,0};
-ST(0.023483408,0.28013687,0,0.025044032,0.27464897,0,0.030312881,0.27848596,0){270985.88,363665.57,355416.48,-801278.39,-1065519.5,-1048284.8,1297043.7,1692735.8,1688178.9,-1736920.8,-2201379.5,-2242771,2101746.5,2555652.6,2683885.3};
-ST(0.085369203,0.17624497,0,0.083969261,0.16737329,0,0.092195724,0.16853594,0){1039089.6,1198489.7,598378.34,-1603144.1,-1632158.2,-829189.07,-168940.91,-607916.58,-278570.16,1695116.9,1852187.2,936666.51,-751642.95,-62490.334,-82641.6};
-ST(0.0910478,0.13167545,0,0.093823791,0.12410599,0,0.1,0.12857143,0){831136.87,595735.92,0,-514132.23,-276601.23,0,-1027305.8,-743959.63,0,122313.64,-121937.8,0,1073956.7,678759.2,0};
-ST(0.1,0.10714286,0,0.091758141,0.11296708,0,0.091053567,0.10618538,0){0,824791.32,914271.31,0,-201020.76,-104388.15,0,-976886.6,-1006721.9,0,-537824.26,-787386.88,0,570097.26,309052.61};
-ST(0.01808004,0.0081573173,0,0.022427218,0.014872357,0,0.015416139,0.018002698,0){2085729.2,2505875.7,1798828.3,2070583.9,2445229.8,1735136,2040406.9,2325397.7,1609995.5,1995444.2,2149288.4,1427830.3,1935913.6,1920956.8,1194733.1};
-ST(0.015498485,0.28248556,0,0.0220603,0.28602893,0,0.017990672,0.29207379,0){166274.63,181204.07,86228.122,-493262.57,-539738.59,-258100.45,803759.61,886739.53,428229.3,-1087394.1,-1214791.9,-595472.42,1334475.8,1516611.7,758576.15};
-ST(0.013229009,0.21171696,0,0.021120118,0.21068669,0,0.018343869,0.21720619,0){698716.07,1077357.5,888277.19,-1540332.8,-2356401.7,-2037897.4,1156621.3,1720167.1,1749211,147278.69,314292.11,-225952.88,-1334554.8,-2093742.8,-1457259.1};
-ST(0.061015306,0.048529238,0,0.060555575,0.040182349,0,0.066401409,0.0434645,0){3533367.8,3588260.7,3289675.8,2640342.3,2962222.2,2619840.6,1080012.2,1819353,1416557.6,-753291.7,359025.67,-75156.319,-2396723.8,-1164330.1,-1551772};
-ST(0.054794838,0.043915046,0,0.060555575,0.040182349,0,0.061015306,0.048529238,0){3735662.6,3588260.7,3533367.8,2959425,2962222.2,2640342.3,1568238.5,1819353,1080012.2,-148813.91,359025.67,-753291.7,-1835117.4,-1164330.1,-2396723.8};
-ST(0.01062282,0.18656765,0,0.012931293,0.19295437,0,0.0066871595,0.19241823,0){711483.53,815194.79,432113.5,-1243147.4,-1524077.7,-803518.34,217509.34,510133.92,258472.73,1080570.1,1080471.8,581490.34,-1025407.6,-1450076.4,-758588.26};
-ST(0.010546892,0.2198034,0,0.0069979116,0.22643766,0,0,0.22142857,0){514716.79,317964.48,0,-1201974.2,-774386.26,0,1090194.6,793599.18,0,-253690.09,-364658.79,0,-751659.26,-270536.88,0};
-ST(0.04704595,0.16277363,0,0.054296142,0.16027015,0,0.054395265,0.16699477,0){2543508.6,2568973.7,2465605.5,-3221973.5,-3120486,-3338618.7,-1684138.2,-1899085.7,-1283530.8,3671419.3,3528266.9,3793219.5,704902.67,1141594.9,-59660.123};
-ST(0.015758122,0.23699049,0,0.016939848,0.22904958,0,0.022740693,0.23189018,0){597291.98,714788.59,887604.04,-1541119.1,-1767596.2,-2230116.3,1837947.1,1888698.3,2485475.6,-1363109.4,-1014237.8,-1529145.6,315646.37,-395054.79,-172982.46};
-ST(0.076430303,0.18837043,0,0.082729031,0.18391978,0,0.084368038,0.19048099,0){1444535.6,1144258.1,992852.93,-2574453.4,-1940160.8,-1809621.2,569102.25,205244.05,495817.1,2129625.3,1797438.3,1401810.9,-2235391.7,-1455642.1,-1649308.4};
-ST(0.077619244,0.18028791,0,0.082729031,0.18391978,0,0.076430303,0.18837043,0){1471797.4,1144258.1,1444535.6,-2389894.4,-1940160.8,-2574453.4,18944.546,205244.05,569102.25,2378251.6,1797438.3,2129625.3,-1502642.9,-1455642.1,-2235391.7};
-ST(0.059078636,0.27701937,0,0.056292141,0.2827555,0,0.051703203,0.27754162,0){447007.97,343081.75,454636.43,-1315269.1,-1018093.3,-1338881.7,2107766.2,1660020.8,2149437.1,-2778864.5,-2248005.1,-2841702,3289755.3,2762903.8,3377384.9};
-ST(0.010546892,0.2198034,0,0.0051799073,0.21317882,0,0.013229009,0.21171696,0){514716.79,276031.48,698716.07,-1201974.2,-615227.88,-1540332.8,1090194.6,479976.29,1156621.3,-253690.09,25450.705,147278.69,-751659.26,-511551.59,-1334554.8};
-ST(0.061027247,0.098743066,0,0.052532368,0.096036702,0,0.058212185,0.089881183,0){3173016.6,3389506.1,3344291.6,72008.811,240670.51,593905.21,-3099474,-3131818.5,-2645013.4,-3241975.4,-3594959.1,-3708817.1,-216202.29,-718569.73,-1722713.3};
-ST(0.09156348,0.14589395,0,0.09308158,0.15403623,0,0.084604507,0.15255901,0){734092.88,579061.91,1258841.2,-670961.7,-628036.95,-1326319,-791796.8,-525997.02,-1187789.9,602866.55,672596.25,1390056.3,843431.47,469080.04,1113216.6};
-ST(0,0.2,0,0.007303543,0.20469543,0,0,0.20714286,0){0,422375.13,0,0,-880191.16,0,0,531663.92,0,0,303952.91,0,0,-861341.37,0};
-ST(0.052478219,0.23860916,0,0.056766116,0.23329497,0,0.059437672,0.2400817,0){1222305.6,1298096.4,1145348.7,-3178913.4,-3286228.7,-2999714,3866354.4,3735031.6,3711340.5,-3010118,-2434254.7,-3009146,951644.63,-7070.0355,1160252.2};
-ST(0.045331711,0.23557633,0,0.04727629,0.22823863,0,0.050960377,0.23252058,0){1270563.3,1418822.2,1342135.9,-3255008.9,-3492237.2,-3383651.2,3813331,3684627.2,3804738.6,-2700862,-1892328,-2403721.7,404484.48,-919608.01,-148681.88};
-ST(0.072044079,0.08604506,0,0.075872285,0.081656016,0,0.079265602,0.086677581,0){2688599.4,2427639,2114636.1,649473.83,758134.07,488789.06,-1882262.6,-1432759.9,-1512904.7,-2986497.2,-2638364.3,-2351470.6,-1825996.4,-2029677.1,-1382326.1};
-ST(0.084917502,0.034253561,0,0.092450683,0.030760689,0,0.092141527,0.03991184,0){1742331.8,900007.85,927649.93,1520580.8,807431.66,767955.56,1105294,631804.95,476054.53,549324.68,391202.83,102192.68,-76880.401,110124.82,-289378.9};
-ST(0.092295863,0.26000779,0,0.092520768,0.26920591,0,0.085115353,0.26563346,0){193329.27,145042.72,313056.52,-546576.12,-420173.4,-899063.8,805368.84,651988.34,1369900.4,-924990.4,-816598.86,-1665255.4,884724.5,896908.09,1747205.8};
-ST(0.059437672,0.2400817,0,0.056766116,0.23329497,0,0.064373335,0.2338171,0){1145348.7,1298096.4,1185902.3,-2999714,-3286228.7,-3010536.1,3711340.5,3735031.6,3446119.8,-3009146,-2434254.7,-2291596.2,1160252.2,-7070.0355,79206.699};
-ST(0.075978544,0.034466341,0,0.067616069,0.037109229,0,0.068707287,0.030314019,0){2615244.9,3239242.7,3188897.7,2278283.7,2756202.5,2870259.7,1647758.2,1862139.4,2264806.3,804880.96,690369.93,1433032.7,-142067.87,-584563.48,457746.25};
-ST(0.01062282,0.18656765,0,0.016878531,0.18478654,0,0.017373248,0.19021363,0){711483.53,1113458.1,1095255.9,-1243147.4,-1906862.4,-1990705.9,217509.34,245299.96,532263.7,1080570.1,1732097.5,1555631.8,-1025407.6,-1479759.2,-1804413.6};
-ST(0.013878694,0.17880836,0,0.016878531,0.18478654,0,0.01062282,0.18656765,0){971566.52,1113458.1,711483.53,-1548960.4,-1906862.4,-1243147.4,-51095.574,245299.96,217509.34,1579530,1732097.5,1080570.1,-887966.26,-1479759.2,-1025407.6};
-ST(0.069536278,0.26943087,0,0.068237016,0.26229006,0,0.076498673,0.26519709,0){505602.11,639705.29,473307.48,-1465439,-1820649,-1357765.2,2276404,2721368.6,2063933,-2856108.7,-3203243.1,-2499100.3,3145421.5,3191912.1,2605934.6};
-ST(0.059551151,0.20970619,0,0.053221516,0.20704838,0,0.060432552,0.20227914,0){1688112.8,1805672.4,1798951.1,-3664209.4,-3837129.3,-3671781.8,2601193.1,2511247.5,2023610.8,619333.89,1011998.4,1565241.8,-3326584.6,-3650194.7,-3653837};
-ST(0.066799394,0.09162077,0,0.072044079,0.08604506,0,0.07492972,0.092844339,0){2974160.1,2688599.4,2431427.6,440022.16,649473.83,308451.38,-2469083.6,-1882262.6,-2083891.4,-3274492.4,-2986497.2,-2656803.1,-1290097.2,-1825996.4,-910298.79};
-ST(0.0098751756,0.25600949,0,0.0071908097,0.26035264,0,0.0060491453,0.25298129,0){270470.11,179155.76,178654.23,-755004.71,-507033.49,-493529.07,1082095.4,748779.14,691183.17,-1183544.7,-863311.12,-724662.05,1038261.4,830950.48,585970.08};
-ST(0.077140734,0.17217741,0,0.083969261,0.16737329,0,0.085369203,0.17624497,0){1584233.7,1198489.7,1039089.6,-2313491.7,-1632158.2,-1603144.1,-519338.58,-607916.58,-168940.91,2552719.3,1852187.2,1695116.9,-655929.75,-62490.334,-751642.95};
-ST(0.041402067,0.22952626,0,0.04727629,0.22823863,0,0.045331711,0.23557633,0){1348916.4,1418822.2,1270563.3,-3344816,-3492237.2,-3255008.9,3600200.4,3684627.2,3813331,-1982154,-1892328,-2700862,-667743.82,-919608.01,404484.48};
-ST(0.0071147476,0.24137211,0,0.013821768,0.24617185,0,0.0087429334,0.24792416,0){259907.57,454053.45,283453.34,-684802.64,-1221678.8,-768118.62,859611.54,1611329.8,1029935.2,-720499.62,-1502439.1,-992967.39,317972.39,928515.88,667809.3};
-ST(0.007303543,0.20469543,0,0.0051799073,0.21317882,0,0,0.20714286,0){422375.13,276031.48,0,-880191.16,-615227.88,0,531663.92,479976.29,0,303952.91,25450.705,0,-861341.37,-511551.59,0};
-ST(0.052748817,0.036292023,0,0.054261983,0.029107824,0,0.060819012,0.031697917,0){3796611.1,3801269,3608360,3254886.9,3450822.2,3214477.8,2248728.5,2782228.4,2469695.4,921690.78,1857139.4,1455299.1,-537197.11,760852.59,281702.17};
-ST(0.064832361,0.062804408,0,0.070754378,0.060222618,0,0.072323403,0.067507008,0){3281120.4,2932444.5,2781512.1,1912310.8,1804303.3,1448400.9,-254314.65,-17984.254,-578922.09,-2314932.7,-1833384.6,-2328912.3,-3410309.6,-2943704.7,-2963263.7};
-ST(0.011197941,0.071439681,0,0.0060853536,0.074713803,0,0.0062494098,0.068021592,0){1244724.5,681675.12,709501.16,579995.21,285253.65,364477.97,-394493.66,-277070.48,-157824.6,-1158343.6,-678306.76,-603457.47,-1303869.8,-685312.86,-756039.79};
-ST(0.05288218,0.14757716,0,0.045364072,0.14896511,0,0.047918899,0.14257657,0){2767228.4,2729630.7,2842478.3,-2626819.9,-2670475.8,-2400971.6,-2900596.1,-2787568.3,-3215455,2479722.6,2610132.2,1901551.7,3026446,2844182.1,3510918.5};
-ST(0,0.18571429,0,0.0062925762,0.18063125,0,0.01062282,0.18656765,0){0,445914.92,711483.53,0,-727143.63,-1243147.4,0,12632.594,217509.34,0,719304.1,1080570.1,0,-466469.22,-1025407.6};
-ST(0.077140734,0.17217741,0,0.071841704,0.17726974,0,0.071059851,0.17209017,0){1584233.7,1799263.7,1900690.4,-2313491.7,-2812994.5,-2772233.4,-519338.58,-214389.53,-629520.98,2552719.3,2933842.6,3060958.1,-655929.75,-1438939.3,-774142.34};
-ST(0.066992124,0.20847551,0,0.06966854,0.20076802,0,0.075422073,0.20645372,0){1540360.8,1570520.4,1273700.5,-3311175.4,-3162888.4,-2693470,2266191.6,1636334.6,1728669,706070.36,1503948.1,766631.5,-3078419.5,-3161601.9,-2583646.6};
-ST(0.039157325,0.25334591,0,0.043027686,0.24899973,0,0.04563604,0.25694979,0){884627.38,999522.33,859240.08,-2446896,-2720190.5,-2406042.8,3436661.2,3683283.3,3472131.8,-3622356.9,-3620573.8,-3844488.4,2960330.2,2549278.8,3448330.3};
-ST(0.070175425,0.16144206,0,0.072573599,0.16764459,0,0.067098511,0.16826118,0){2074683.8,1881427.5,2121688.2,-2570674.4,-2572760.4,-2928224.5,-1460177,-936075.04,-1008555.7,2919916.2,2916777.1,3311710.7,762077.82,-135849.37,-250662.47};
-ST(0.014502412,0.16316663,0,0.014405512,0.17061143,0,0.0094805882,0.16707285,0){1121335,1063653,730151.01,-1429592.9,-1519257.6,-989834.58,-728363.13,-412907.51,-378084.11,1629901.1,1696192.6,1124284.7,280110.31,-313907.63,-22095.939};
-ST(0.060819012,0.031697917,0,0.057707972,0.025075094,0,0.064795861,0.023107998,0){3608360,3734947.8,3443592.1,3214477.8,3478918.2,3242943.8,2469695.4,2984396.6,2853338,1455299.1,2285289.9,2297494.4,281702.17,1429238.8,1607540.9};
-ST(0.01882241,0.070374011,0,0.012193394,0.066188359,0,0.016702178,0.061420197,0){2018056.9,1364188,1844408.3,970762.8,734639.92,1107331.1,-580354.6,-233939.49,-72241.295,-1830388.5,-1094586.7,-1222910.6,-2130853.3,-1450385,-1885264.1};
-ST(0.011197941,0.071439681,0,0.012193394,0.066188359,0,0.01882241,0.070374011,0){1244724.5,1364188,2018056.9,579995.21,734639.92,970762.8,-394493.66,-233939.49,-580354.6,-1158343.6,-1094586.7,-1830388.5,-1303869.8,-1450385,-2130853.3};
-ST(0.013132659,0.04767246,0,0.014691551,0.054118398,0,0.0094132111,0.052421332,0){1507774.2,1659245.8,1088603.4,1139737.5,1140472.1,768702.62,493500.09,265092.56,222919.17,-273193.01,-693242.8,-388347.22,-973395.4,-1435183.5,-885762.83};
-ST(0,0.14285714,0,0.0054758376,0.13911323,0,0.0078195435,0.14622426,0){0,495708.7,680366.1,0,-382921.42,-626541.18,0,-582869.54,-729870.69,0,250325.59,568744.13,0,639819.51,774663.29};
-ST(0.09071018,0.22887426,0,0.084319616,0.22565969,0,0.091864029,0.22106993,0){406264.77,696453.76,394005.54,-1003622.2,-1688204.7,-927852.61,1069446.3,1707540.6,863120.02,-568907.82,-743250.94,-241435.16,-233040.27,-649719.93,-536498.87};
-ST(0.033874053,0.071548869,0,0.037071258,0.0642048,0,0.041057987,0.068843254,0){3157862.8,3365311.2,3488848.8,1466537.3,1900443.5,1752771.3,-1010259.7,-391679.98,-855539,-2946084.6,-2513388.8,-3038218.5,-3304540.6,-3541461.8,-3709409.4};
-ST(0.07492972,0.092844339,0,0.069968451,0.098831219,0,0.066799394,0.09162077,0){2431427.6,2730411,2974160.1,308451.38,57648.531,440022.16,-2083891.4,-2671597.7,-2469083.6,-2656803.1,-2785714.6,-3274492.4,-910298.79,-173126.8,-1290097.2};
-ST(0,0.2,0,0.005051806,0.19767546,0,0.007303543,0.20469543,0){0,313084.45,422375.13,0,-612892.85,-880191.16,0,273796.53,531663.92,0,350786.74,303952.91,0,-609909.8,-861341.37};
-ST(0.04563604,0.25694979,0,0.049037582,0.25027532,0,0.054010827,0.25507988,0){859240.08,998508.07,897184.36,-2406042.8,-2730849.8,-2496661.6,3472131.8,3739350.2,3553831.7,-3844488.4,-3756698.7,-3839088.9,3448330.3,2778087.3,3290330.5};
-ST(0.084604507,0.15255901,0,0.083337094,0.16031526,0,0.077069107,0.15686929,0){1258841.2,1295652.6,1743907.9,-1326319,-1575018.8,-1994600,-1187789.9,-956036.82,-1457243.4,1390056.3,1781183.7,2204191.1,1113216.6,571788.58,1140253.2};
-ST(0.082709707,0.12855445,0,0.083559522,0.13424014,0,0.076271482,0.13373081,0){1568327.1,1462145.4,2012844.4,-869760.99,-981746.52,-1330317.6,-1955764.1,-1784737.2,-2463975.8,-1353.9511,395362.65,494859.01,1955094.7,1914407.3,2631758.9};
-ST(0.025468185,0.010276157,0,0.022427218,0.014872357,0,0.01808004,0.0081573173,0){2780034,2505875.7,2085729.2,2747892,2445229.8,2070583.9,2683968.5,2325397.7,2040406.9,2589008.8,2149288.4,1995444.2,2463902.9,1920956.8,1935913.6};
-ST(0.017990672,0.29207379,0,0.0220603,0.28602893,0,0.025130011,0.29009115,0){86228.122,181204.07,142877.47,-258100.45,-539738.59,-427099.39,428229.3,886739.53,706741.94,-595472.42,-1214791.9,-978805.55,758576.15,1516611.7,1240164.3};
-ST(0.076271482,0.13373081,0,0.081009521,0.1385969,0,0.075488644,0.14176328,0){2012844.4,1630909.4,1990888.2,-1330317.6,-1242340.3,-1647841.2,-2463975.8,-1926924,-2274843.7,494859.01,783271.16,1255935.2,2631758.9,2113542.9,2491166.6};
-ST(0.024008584,0.022367291,0,0.021348697,0.029751655,0,0.016759526,0.025876157,0){2639060.6,2382657.5,1932221.9,2494948.4,2153252.9,1791225.7,2214593.6,1716520.5,1519509.7,1813324.4,1114508.8,1136895.1,1312931.3,404958.41,671081.1};
-ST(0.020473685,0.087577432,0,0.025411973,0.082310594,0,0.027903545,0.087518505,0){2087024.2,2525130.6,2674848,451292.51,762374.09,580994.77,-1538224.3,-1532614.6,-1967676.8,-2322280.1,-2757779.1,-2976106,-1286407.6,-2058136.4,-1655065.1};
-ST(0.019499739,0.079597209,0,0.025411973,0.082310594,0,0.020473685,0.087577432,0){2040354.6,2525130.6,2087024.2,702945.71,762374.09,451292.51,-1095289.5,-1532614.6,-1538224.3,-2175701.2,-2757779.1,-2322280.1,-1830384.7,-2058136.4,-1286407.6};
-ST(0.039366597,0.19088868,0,0.044234359,0.18859393,0,0.043569257,0.19619451,0){1982365.2,2102462.5,1966078.6,-3628592.6,-3756018.8,-3794921.6,1030950.1,851571.98,1563901,2772526.5,3086402.5,2340412.7,-3333638.5,-3279385.1,-3741435.4};
-ST(0.042857143,0,0,0.039686874,0.0066116125,0,0.035714286,0,0){3783299.5,3676489.9,3496308.9,3783327.5,3658909.3,3496337.7,3783379.6,3623831.1,3496399.5,3783486.4,3571457.2,3496538.6,3783576.5,3501797.4,3496562.8};
-ST(0.035714286,0.3,0,0.03928574,0.29335694,0,0.042857143,0.3,0){0,127378.94,0,0,-381522.06,0,0,633829.06,0,0,-883092.25,0,0,1127859.7,0};
-ST(0.049165273,0.076760106,0,0.047307891,0.081963043,0,0.041803352,0.076750149,0){3570137.5,3516083,3453761.9,1384898,1080946.4,1340279.2,-1648055.9,-2102837.3,-1593440.1,-3672308.6,-3830300,-3552303.7,-3449021.3,-2905310.5,-3337911.6};
-ST(0.1,0.057142857,0,0.094913401,0.051076335,0,0.1,0.05,0){0,595503.05,0,0,429138.45,0,0,142901.48,0,0,-183223.65,0,0,-458373.75,0};
-ST(0.1,0.25,0,0.095090425,0.2489538,0,0.1,0.24285714,0){0,157454.16,0,0,-428416.46,0,0,579817.55,0,0,-569427.53,0,0,400020.01,0};
-ST(0.071428571,0,0,0.068476894,0.0069177029,0,0.064285714,0,0){3033974.4,3242851.4,3496327.6,3033978.9,3225849.8,3496358.5,3033982.8,3191931.3,3496415,3034008.5,3141298.2,3496523.2,3033714,3073847.6,3496472.9};
-ST(0.064285714,0.3,0,0.068366879,0.29272708,0,0.071428571,0.3,0){0,123803.43,0,0,-370697.46,0,0,615462.12,0,0,-856697.17,0,0,1092834.3,0};
-ST(0.057612168,0.01845715,0,0.057707972,0.025075094,0,0.051167355,0.022914381,0){3752599.8,3734947.8,3850137.8,3612875.5,3478918.2,3629520.4,3338613.5,2984396.6,3200919.1,2940029.2,2285289.9,2588908.3,2431782.4,1429238.8,1828396.4};
-ST(0.021658338,0.054940441,0,0.025221599,0.062165695,0,0.016702178,0.061420197,0){2341024.9,2618029.3,1844408.3,1587273.2,1547191.2,1107331.1,322446.89,-156575.4,-72241.295,-1046241,-1796512.5,-1222910.6,-2078353.5,-2702051.5,-1885264.1};
-ST(0.03663522,0.040674234,0,0.030602087,0.036163623,0,0.035858843,0.031497608,0){3463485.9,3125169.1,3456371.8,2844620.6,2682310.4,3083741.5,1717431.6,1859340.6,2378649.5,283267.24,772883.67,1417116.3,-1201989.6,-423255.99,302618.73};
-ST(0.054240748,0.10280037,0,0.052532368,0.096036702,0,0.061027247,0.098743066,0){3302360.6,3389506.1,3173016.6,-169115.68,240670.51,72008.811,-3462856.5,-3131818.5,-3099474,-3116478.2,-3594959.1,-3241975.4,505791.56,-718569.73,-216202.29};
-ST(0.030046638,0.13690443,0,0.033990129,0.14330646,0,0.026018946,0.14387862,0){2369378.2,2486957.5,2064539,-1721516.8,-2138608.5,-1800072.3,-2840145.3,-2786553.8,-2295230.1,944948.24,1748365.6,1506177.8,3098367.4,3031412.6,2488196.2};
-ST(0.054957014,0.24657048,0,0.060567191,0.25172758,0,0.054010827,0.25507988,0){1058545,917440.34,897184.36,-2852831,-2522838.3,-2496661.6,3777171.8,3497206.6,3553831.7,-3549694.2,-3596815.5,-3839088.9,2239441.1,2796536,3290330.5};
-ST(0.014305262,0.26641769,0,0.023009638,0.26878949,0,0.018422519,0.27450763,0){294901.31,417665.14,282501.19,-848621.76,-1208783.5,-827496.14,1298521.9,1871958.7,1313896,-1589572.3,-2337004.8,-1707268.8,1686004.5,2554445.3,1979556.1};
-ST(0.1,0.2,0,0.093164956,0.1980516,0,0.1,0.19285714,0){0,420734.09,0,0,-826537.04,0,0,376428.12,0,0,463603.83,0,0,-823893.15,0};
-ST(0.049204373,0.010884263,0,0.051745598,0.0053231545,0,0.056199026,0.010061392,0){3873084,3873250.9,3801979,3822842.7,3861228.9,3759859.9,3723003.5,3837214.6,3676084,3574883.8,3801308.2,3551608.2,3380124.5,3753417.7,3387596.5};
-ST(0.050010485,0.1548865,0,0.045364072,0.14896511,0,0.05288218,0.14757716,0){2672912.2,2729630.7,2767228.4,-2946373.7,-2670475.8,-2626819.9,-2371553.9,-2787568.3,-2900596.1,3189127.5,2610132.2,2479722.6,2045305.7,2844182.1,3026446};
-ST(0.055764419,0.28986395,0,0.051526128,0.29458598,0,0.048791783,0.28884593,0){202473.1,109871.78,226341.07,-605163.67,-329256.34,-675936.71,1001119.7,547568.39,1116322.7,-1385941.2,-764098.34,-1541505,1755276.4,977975.34,1945474.1};
-ST(0.083190767,0.25723975,0,0.074279052,0.25633166,0,0.07921504,0.25033934,0){434158.6,635900.39,606155.6,-1216864.4,-1777029.4,-1658203,1759626.8,2553015.8,2271843.6,-1955417.3,-2804423.5,-2284831,1765235.2,2479429.3,1693484.6};
-ST(0.077364239,0.048764008,0,0.073234584,0.04253025,0,0.082493405,0.042375289,0){2450679,2820532.7,1978611.8,1825420.5,2270240.9,1595319.9,734405.59,1277003.9,902966.17,-544039.45,34586.382,35643.43,-1683943.8,-1214797.7,-838916.97};
-ST(0.091953893,0.078440357,0,0.086276325,0.073599227,0,0.09123018,0.070922096,0){889726.23,1502743.3,983713.53,322434.75,653401.45,465586.72,-450550.32,-565297.67,-297764.17,-936443.15,-1464602.7,-904277.98,-825354.72,-1536324.4,-1034644.8};
-ST(0.041002292,0.08644635,0,0.033761495,0.088496681,0,0.032911969,0.081185013,0){3351345,3029395.9,3037931.3,787437.3,608605.12,971274.35,-2379027.1,-2298547.5,-1756226.8,-3725698.5,-3368980,-3289165.4,-2222336.9,-1747439.7,-2584916.3};
-ST(0.038843793,0.21103197,0,0.036840853,0.20596239,0,0.044637502,0.20577347,0){1637090.1,1679916.9,1811821.2,-3590120.4,-3538121.9,-3810004,2645890.8,2233718.4,2390091.8,433646.44,1067350,1174216.7,-3163532.2,-3414669.4,-3685779.4};
-ST(0.013794295,0.15422926,0,0.014502412,0.16316663,0,0.0068768393,0.16098373,0){1126466.2,1121335,553409.29,-1226232.2,-1429592.9,-680450.71,-1017954.8,-728363.13,-397156.36,1316565.7,1629901.1,771605.48,901352.54,280110.31,219690.78};
-ST(0.044637502,0.20577347,0,0.036840853,0.20596239,0,0.038597539,0.20095921,0){1811821.2,1679916.9,1801301.7,-3810004,-3538121.9,-3633864.6,2390091.8,2233718.4,1895634,1174216.7,1067350,1705394,-3685779.4,-3414669.4,-3630918.1};
-ST(0.056199026,0.010061392,0,0.051745598,0.0053231545,0,0.057142857,0,0){3801979,3873250.9,3783317.5,3759859.9,3861228.9,3783357,3676084,3837214.6,3783457.6,3551608.2,3801308.2,3783701.2,3387596.5,3753417.7,3783873.9};
-ST(0.057142857,0,0,0.06203594,0.0060944193,0,0.056199026,0.010061392,0){3783317.5,3604620.2,3801979,3783357,3589956.2,3759859.9,3783457.6,3560685.5,3676084,3783701.2,3516960.1,3551608.2,3783873.9,3458793.9,3387596.5};
-ST(0.049739958,0.088394034,0,0.047307891,0.081963043,0,0.054828578,0.081464579,0){3472240.4,3516083,3492382.6,703521.31,1080946.4,1101278.5,-2626240.1,-2102837.3,-2043909.2,-3862017.3,-3830300,-3789901.6,-2018648.2,-2905310.5,-2941538.5};
-ST(0.054828578,0.081464579,0,0.047307891,0.081963043,0,0.049165273,0.076760106,0){3492382.6,3516083,3570137.5,1101278.5,1080946.4,1384898,-2043909.2,-2102837.3,-1648055.9,-3789901.6,-3830300,-3672308.6,-2941538.5,-2905310.5,-3449021.3};
-ST(0.057142857,0.3,0,0.051526128,0.29458598,0,0.055764419,0.28986395,0){0,109871.78,202473.1,0,-329256.34,-605163.67,0,547568.39,1001119.7,0,-764098.34,-1385941.2,0,977975.34,1755276.4};
-ST(0.055764419,0.28986395,0,0.061805884,0.29356168,0,0.057142857,0.3,0){202473.1,121923.05,0,-605163.67,-365207.83,0,1001119.7,606815.62,0,-1385941.2,-845641.09,0,1755276.4,1080583.1,0};
-ST(0.089949388,0.2453858,0,0.095090425,0.2489538,0,0.090077759,0.25268961,0){339950.36,157454.16,291813.61,-911669.73,-428416.46,-805257.31,1193275.4,579817.55,1125037.4,-1095139.7,-569427.53,-1174248.1,648419.14,400020.01,940920.06};
-ST(0.08974924,0.047235181,0,0.094913401,0.051076335,0,0.08944657,0.05485846,0){1190814.4,595503.05,1211526.2,905328.07,429138.45,822600.19,402804.56,142901.48,169573.91,-196265.4,-183223.65,-537958.1,-748421.11,-458373.75,-1073022.7};
-ST(0.012304267,0.13852123,0,0.014210915,0.13228117,0,0.021167753,0.13548502,0){1094693.2,1289449.4,1816935.7,-832176.34,-813665.75,-1266652.3,-1294374.3,-1589638.3,-2200669.4,521821.54,227067.92,600161.11,1419655.5,1673024.3,2382629.9};
-ST(0.021167753,0.13548502,0,0.014210915,0.13228117,0,0.01788586,0.12850833,0){1816935.7,1289449.4,1616906.9,-1266652.3,-813665.75,-895214.81,-2200669.4,-1589638.3,-2016472.2,600161.11,227067.92,-4802.2192,2382629.9,1673024.3,2014144.7};
-ST(0.045375723,0.12284566,0,0.045894811,0.13135905,0,0.038464606,0.12667013,0){3072436,2973475.7,2859316.3,-1348503.3,-1819976.4,-1476046.2,-3829159.4,-3679581.9,-3573486.5,-800055.99,392676.16,-252868.56,3380414.3,3832095.1,3451249.3};
-ST(0.038464606,0.12667013,0,0.045894811,0.13135905,0,0.038217426,0.13599196,0){2859316.3,2973475.7,2738753.8,-1476046.2,-1819976.4,-1938161,-3573486.5,-3679581.9,-3305386.1,-252868.56,392676.16,972060.89,3451249.3,3832095.1,3589652.3};
-ST(0.0087429334,0.24792416,0,0.013821768,0.24617185,0,0.01180171,0.25230222,0){283453.34,454053.45,347512.04,-768118.62,-1221678.8,-957611.77,1029935.2,1611329.8,1333704.3,-992967.39,-1502439.1,-1383899.6,667809.3,928515.88,1095718.6};
-ST(0.025139549,0.12057635,0,0.023379755,0.12686903,0,0.017763535,0.12074209,0){2224740.3,2047772.9,1657769.5,-875333.98,-1065433.1,-657738.05,-2755721.9,-2558991,-2054600.3,-796179.51,-162203.53,-581651.26,2272644.8,2481221.5,1703675.4};
-ST(0.1,0.1,0,0.09416017,0.099511923,0,0.1,0.092857143,0){0,613994.66,0,0,5422.3845,0,0,-608645.22,0,0,-619557.01,0,0,-16415.987,0};
-ST(0.061015306,0.048529238,0,0.06961584,0.048915995,0,0.066012722,0.055502179,0){3533367.8,3063466,3257272.9,2640342.3,2277085.6,2187557.2,1080012.2,906160.93,399401.17,-753291.7,-697426.19,-1519988.7,-2396723.8,-2122325.6,-2940625.1};
-ST(0.066401409,0.0434645,0,0.06961584,0.048915995,0,0.061015306,0.048529238,0){3289675.8,3063466,3533367.8,2619840.6,2277085.6,2640342.3,1416557.6,906160.93,1080012.2,-75156.319,-697426.19,-753291.7,-1551772,-2122325.6,-2396723.8};
-ST(0.051703203,0.27754162,0,0.055001581,0.27169863,0,0.059078636,0.27701937,0){454636.43,565900.8,447007.97,-1338881.7,-1648356.5,-1315269.1,2149437.1,2587095.5,2107766.2,-2841702,-3300283.2,-2778864.5,3377384.9,3725567.5,3289755.3};
-ST(0.036308441,0.24745658,0,0.033025927,0.25326882,0,0.029124573,0.24658198,0){958174.94,809560.38,849052.23,-2591684.5,-2238649.8,-2288340.2,3460190.4,3142273.3,3030093.5,-3307339.6,-3308331.9,-2848204.4,2177878.8,2697705.3,1797881.3};
-ST(0.020636298,0.17424253,0,0.025851591,0.17077962,0,0.027644767,0.17736901,0){1433869.3,1763476.8,1774040.3,-2154082.5,-2524912.6,-2777088.7,-351921.61,-673288.62,-203929.31,2330929.4,2815714.9,2892544.7,-819073.82,-542697.73,-1431643.3};
-ST(0.1,0.092857143,0,0.09416017,0.099511923,0,0.093922759,0.092262381,0){0,613994.66,652083.63,0,5422.3845,89312.894,0,-608645.22,-550573,0,-619557.01,-715327.2,0,-16415.987,-262838.8};
-ST(0.084604507,0.15255901,0,0.088623123,0.15812222,0,0.083337094,0.16031526,0){1258841.2,918302.92,1295652.6,-1326319,-1074338,-1575018.8,-1187789.9,-735787.48,-956036.82,1390056.3,1199414.9,1781183.7,1113216.6,531983.03,571788.58};
-ST(0.017312959,0.14496605,0,0.022775714,0.15147437,0,0.013794295,0.15422926,0){1456929,1786181.8,1126466.2,-1303417.8,-1841345.2,-1226232.2,-1594293.7,-1729359.8,-1017954.8,1135517.7,1894858,1316565.7,1713822.2,1670732.8,901352.54};
-ST(0.057391395,0.19462543,0,0.064671223,0.19505087,0,0.060432552,0.20227914,0){1979510.6,1815232.4,1798951.1,-3763012.6,-3465163,-3671781.8,1410875.8,1334352.3,2023610.8,2491970.2,2252470.6,1565241.8,-3656419.8,-3382100.5,-3653837};
-ST(0,0.057142857,0,0.0079950318,0.059686314,0,0,0.064285714,0){0,917766.47,0,0,570756.35,0,0,7912.4367,0,0,-557994.72,0,0,-913265.38,0};
-ST(0.1,0.20714286,0,0.093706234,0.20596864,0,0.1,0.2,0){0,360320.46,0,0,-758974.46,0,0,479351.87,0,0,228803.73,0,0,-732939.79,0};
-ST(0.1,0.021428571,0,0.093571257,0.018380777,0,0.1,0.014285714,0){0,774815.13,0,0,746204.54,0,0,690036.86,0,0,608388.09,0,0,504051.02,0};
-ST(0.1,0.28571429,0,0.093593186,0.28160993,0,0.1,0.27857143,0){0,74588.283,0,0,-221009.65,0,0,359269.18,0,0,-484261.41,0,0,591230.88,0};
-ST(0.042155309,0.15589067,0,0.045364072,0.14896511,0,0.050010485,0.1548865,0){2577776.2,2729630.7,2672912.2,-2895603.6,-2670475.8,-2946373.7,-2220826.4,-2787568.3,-2371553.9,3169529.7,2610132.2,3189127.5,1830012,2844182.1,2045305.7};
-ST(0.059078636,0.27701937,0,0.055001581,0.27169863,0,0.061631884,0.26868773,0){447007.97,565900.8,591535.29,-1315269.1,-1648356.5,-1711593.4,2107766.2,2587095.5,2649353.2,-2778864.5,-3300283.2,-3304968.8,3289755.3,3725567.5,3608394.3};
-ST(0.024044461,0.20382537,0,0.015977634,0.20443356,0,0.018704911,0.19716585,0){1283805.9,895779.15,1103230.1,-2655634.7,-1862602.8,-2149261.2,1553893.8,1114548.4,934589.13,995311.88,659707.69,1263201.6,-2617892.2,-1827076.9,-2132672.2};
-ST(0.045416206,0.061541227,0,0.037071258,0.0642048,0,0.038435934,0.058364632,0){3642820.9,3365311.2,3459248.5,2181474.8,1900443.5,2206750.4,-155055.51,-391679.98,155241.86,-2429600.5,-2513388.8,-1952496,-3730025.8,-3541461.8,-3353689.4};
-ST(0.092195724,0.16853594,0,0.083969261,0.16737329,0,0.088381846,0.16289419,0){598378.34,1198489.7,911153.68,-829189.07,-1632158.2,-1156470.7,-278570.16,-607916.58,-599768.12,936666.51,1852187.2,1317920.1,-82641.6,-62490.334,244888.24};
-ST(0.067098511,0.16826118,0,0.072573599,0.16764459,0,0.071059851,0.17209017,0){2121688.2,1881427.5,1900690.4,-2928224.5,-2572760.4,-2772233.4,-1008555.7,-936075.04,-629520.98,3311710.7,2916777.1,3060958.1,-250662.47,-135849.37,-774142.34};
-ST(0.05718895,0.22161738,0,0.053624899,0.22742186,0,0.049797208,0.2214244,0){1508977,1430137,1551864.2,-3566099.1,-3503302.1,-3662861.4,3352547.9,3648370.9,3430735.4,-1004251.2,-1785483,-1003918.8,-1983866.6,-1060301.4,-2065424.5};
-ST(0.085714286,0,0,0.081119523,0.0085521597,0,0.078571429,0,0){1683752,2167108.8,2419478.6,1683802.7,2149779.2,2419535.2,1683911.1,2115263.6,2419645.1,1684108.7,2063869.7,2419827.2,1684003.7,1995657.9,2420024.4};
-ST(0.078571429,0.3,0,0.081165886,0.29137431,0,0.085714286,0.3,0){0,97729.953,0,0,-292395.17,0,0,484687.71,0,0,-673055.06,0,0,855744.16,0};
-ST(0.082709707,0.12855445,0,0.087905667,0.12517971,0,0.0910478,0.13167545,0){1568327.1,1140990.9,831136.87,-869760.99,-554517.87,-514132.23,-1955764.1,-1425990.8,-1027305.8,-1353.9511,-178453.87,122313.64,1955094.7,1334087.8,1073956.7};
-ST(0,0.20714286,0,0.0051799073,0.21317882,0,0,0.21428571,0){0,276031.48,0,0,-615227.88,0,0,479976.29,0,0,25450.705,0,0,-511551.59,0};
-ST(0.018704911,0.19716585,0,0.012931293,0.19295437,0,0.017373248,0.19021363,0){1103230.1,815194.79,1095255.9,-2149261.2,-1524077.7,-1990705.9,934589.13,510133.92,532263.7,1263201.6,1080471.8,1555631.8,-2132672.2,-1450076.4,-1804413.6};
-ST(0.011268327,0.1984065,0,0.012931293,0.19295437,0,0.018704911,0.19716585,0){682302.12,815194.79,1103230.1,-1344805.9,-1524077.7,-2149261.2,623458.07,510133.92,934589.13,739532.85,1080471.8,1263201.6,-1341727.7,-1450076.4,-2132672.2};
-ST(0.1,0.26428571,0,0.092295863,0.26000779,0,0.1,0.25714286,0){0,193329.27,0,0,-546576.12,0,0,805368.84,0,0,-924990.4,0,0,884724.5,0};
-ST(0.1,0.042857143,0,0.092141527,0.03991184,0,0.1,0.035714286,0){0,927649.93,0,0,767955.56,0,0,476054.53,0,0,102192.68,0,0,-289378.9,0};
-ST(0.1,0.17857143,0,0.093873231,0.17693503,0,0.1,0.17142857,0){0,445896.9,0,0,-694096.79,0,0,-59504.029,0,0,727141.13,0,0,-345394.37,0};
-ST(0.069002793,0.22246209,0,0.065627137,0.22734606,0,0.062992669,0.22303634,0){1267491.2,1270705.1,1396775.9,-3011719.2,-3111357.1,-3331109.7,2877058.6,3236198.8,3216330,-947533.34,-1576358.2,-1122974.8,-1573376.1,-953054.66,-1661551.4};
-ST(0.03690243,0.09394169,0,0.033761495,0.088496681,0,0.041002292,0.08644635,0){3135041.5,3029395.9,3351345,337961.95,608605.12,787437.3,-2760700,-2298547.5,-2379027.1,-3396384.7,-3368980,-3725698.5,-1002139.6,-1747439.7,-2222336.9};
-ST(0.021957304,0.26060316,0,0.023009638,0.26878949,0,0.014305262,0.26641769,0){505833.44,417665.14,294901.31,-1432636.8,-1208783.5,-848621.76,2119105.6,1871958.7,1298521.9,-2450095.8,-2337004.8,-1589572.3,2369995.8,2554445.3,1686004.5};
-ST(0.071428571,0,0,0.074656208,0.0053403125,0,0.068476894,0.0069177029,0){3033974.4,2772385.5,3242851.4,3033978.9,2763721.5,3225849.8,3033982.8,2746414.1,3191931.3,3034008.5,2720533.7,3141298.2,3033714,2685936.9,3073847.6};
-ST(0.042433189,0.024814669,0,0.035858843,0.031497608,0,0.033039341,0.023173825,0){3739739.8,3456371.8,3318087.9,3488658.7,3083741.5,3123656.1,3003356.3,2378649.5,2746181,2316430.4,1417116.3,2207795.9,1473602,302618.73,1539940.3};
-ST(0.033039341,0.023173825,0,0.035858843,0.031497608,0,0.028359285,0.029784535,0){3318087.9,3456371.8,2981166.2,3123656.1,3083741.5,2693525.9,2746181,2378649.5,2145980.7,2207795.9,1417116.3,1391347.7,1539940.3,302618.73,502245.34};
-ST(0.069002793,0.22246209,0,0.062992669,0.22303634,0,0.063265205,0.21633109,0){1267491.2,1396775.9,1505335.5,-3011719.2,-3331109.7,-3432481.9,2877058.6,3216330,2888962.8,-947533.34,-1122974.8,-265885.87,-1573376.1,-1661551.4,-2549234.8};
-ST(0.068366879,0.29272708,0,0.074657371,0.29452352,0,0.071428571,0.3,0){123803.43,79525.554,0,-370697.46,-238312.39,0,615462.12,396309.36,0,-856697.17,-552992.95,0,1092834.3,707611.71,0};
-ST(0.029124573,0.24658198,0,0.033025927,0.25326882,0,0.025641665,0.25311603,0){849052.23,809560.38,680173.91,-2288340.2,-2238649.8,-1879847.5,3030093.5,3142273.3,2635470.4,-2848204.4,-3308331.9,-2768550.2,1797881.3,2697705.3,2247361.6};
-ST(0.091593501,0.1915477,0,0.095453592,0.18738967,0,0.1,0.19285714,0){544831.72,307137.29,0,-1004107.1,-541566.85,0,301623.68,106216.39,0,749822.54,460538.95,0,-933881.71,-458087.35,0};
-ST(0.091593501,0.1915477,0,0.087008075,0.19596841,0,0.084368038,0.19048099,0){544831.72,798107.94,992852.93,-1004107.1,-1537171.7,-1809621.2,301623.68,625323.3,495817.1,749822.54,958187.81,1401810.9,-933881.71,-1512909.8,-1649308.4};
-ST(0.021251228,0.18136297,0,0.027644767,0.17736901,0,0.027249449,0.18607819,0){1398279.8,1774040.3,1646413.8,-2300353.4,-2777088.7,-2861109.6,85724.805,-203929.31,464444.42,2245163.6,2892544.7,2518610.9,-1534338.6,-1431643.3,-2323177.4};
-ST(0.027249449,0.18607819,0,0.027644767,0.17736901,0,0.03345202,0.18222482,0){1646413.8,1774040.3,1947746.5,-2861109.6,-2777088.7,-3237509.5,464444.42,-203929.31,196057.01,2518610.9,2892544.7,3107788.7,-2323177.4,-1431643.3,-2254322.8};
-ST(0.030466665,0.11568191,0,0.023213665,0.1150537,0,0.025770754,0.10718168,0){2608170,2130593.3,2378738.7,-773675.45,-605772.32,-316264.13,-3152461.4,-2564157.8,-2653040.8,-1443702.3,-1229375.9,-1984140.6,2136967.4,1684092.7,932667.69};
-ST(0.028678488,0.042143634,0,0.025565101,0.048609543,0,0.022876349,0.043626948,0){2968313.4,2702312,2488553.5,2399521.8,2017092.5,1978130.3,1370917.4,820389.33,1061959.9,79587.615,-584372.75,-72059.632,-1227272.3,-1841258.2,-1191549.5};
-ST(0.032229878,0.047894836,0,0.025565101,0.048609543,0,0.028678488,0.042143634,0){3188476.9,2702312,2968313.4,2403076.1,2017092.5,2399521.8,1025710.6,820389.33,1370917.4,-604377.64,-584372.75,79587.615,-2086050.7,-1841258.2,-1227272.3};
-ST(0.091864029,0.22106993,0,0.084319616,0.22565969,0,0.082942949,0.21818591,0){394005.54,696453.76,823054.75,-927852.61,-1688204.7,-1901094.8,863120.02,1707540.6,1667014.3,-241435.16,-743250.94,-282341.7,-536498.87,-649719.93,-1297502.9};
-ST(0.023478597,0.036718106,0,0.017433092,0.042090914,0,0.014137494,0.034012185,0){2561783.8,1971771.3,1641076.4,2187675.4,1594855,1435142,1494080.3,913057.13,1049094.4,582277.59,56690.05,531342.12,-414804.14,-810753.02,-53364.585};
-ST(0.013794295,0.15422926,0,0.022775714,0.15147437,0,0.021502186,0.15931359,0){1126466.2,1786181.8,1630158.4,-1226232.2,-1841345.2,-1947614.2,-1017954.8,-1729359.8,-1250943.8,1316565.7,1894858,2191316.6,901352.54,1670732.8,824223.66};
-ST(0.020473685,0.087577432,0,0.019165757,0.095107709,0,0.013428016,0.091778472,0){2087024.2,1930971.9,1408980.1,451292.51,168744.63,204626.15,-1538224.3,-1747493.7,-1174648.8,-2322280.1,-2069009.1,-1549888.7,-1286407.6,-502664.26,-600683.83};
-ST(0.06137482,0.19024807,0,0.064671223,0.19505087,0,0.057391395,0.19462543,0){1976038.9,1815232.4,1979510.6,-3592882,-3465163,-3763012.6,963745.22,1334352.3,1410875.8,2804392.5,2252470.6,2491970.2,-3258719.1,-3382100.5,-3656419.8};
-ST(0.038217426,0.13599196,0,0.033990129,0.14330646,0,0.030046638,0.13690443,0){2738753.8,2486957.5,2369378.2,-1938161,-2138608.5,-1721516.8,-3305386.1,-2786553.8,-2840145.3,972060.89,1748365.6,944948.24,3589652.3,3031412.6,3098367.4};
-ST(0,0.12142857,0,0.0062042788,0.11791514,0,0.0061411468,0.1246533,0){0,612847.32,591118.91,0,-208741.13,-280990.71,0,-750565.55,-738586.84,0,-286207.66,-106527.54,0,561848.67,682629.18};
-ST(0.0078195435,0.14622426,0,0.0054758376,0.13911323,0,0.012304267,0.13852123,0){680366.1,495708.7,1094693.2,-626541.18,-382921.42,-832176.34,-729870.69,-582869.54,-1294374.3,568744.13,250325.59,521821.54,774663.29,639819.51,1419655.5};
-ST(0.082390534,0.079333541,0,0.086276325,0.073599227,0,0.091953893,0.078440357,0){1865676.5,1502743.3,889726.23,650380.91,653401.45,322434.75,-988603.29,-565297.67,-450550.32,-1983689.6,-1464602.7,-936443.15,-1686881.4,-1536324.4,-825354.72};
-ST(0.038084092,0.1145524,0,0.040442009,0.11996282,0,0.035619257,0.12028764,0){2981407.2,2999410,2821397.9,-818508.93,-1143461.2,-1093830.4,-3575257.7,-3706983.7,-3491178.8,-1775238,-1150363.3,-1043884.2,2287308.3,2995190.5,2851838.9};
-ST(0.027644767,0.17736901,0,0.025851591,0.17077962,0,0.030623168,0.1713445,0){1774040.3,1763476.8,1985985.4,-2777088.7,-2524912.6,-2866418.8,-203929.31,-673288.62,-715248.18,2892544.7,2815714.9,3183566.3,-1431643.3,-542697.73,-696442.05};
-ST(0.025139549,0.12057635,0,0.023213665,0.1150537,0,0.030466665,0.11568191,0){2224740.3,2130593.3,2608170,-875333.98,-605772.32,-773675.45,-2755721.9,-2564157.8,-3152461.4,-796179.51,-1229375.9,-1443702.3,2272644.8,1684092.7,2136967.4};
-ST(0.08682376,0.20181233,0,0.087008075,0.19596841,0,0.093164956,0.1980516,0){767576.83,798107.94,420734.09,-1560255.4,-1537171.7,-826537.04,843726.65,625323.3,376428.12,688912.23,958187.81,463603.83,-1555436.8,-1512909.8,-823893.15};
-ST(0.093164956,0.1980516,0,0.087008075,0.19596841,0,0.091593501,0.1915477,0){420734.09,798107.94,544831.72,-826537.04,-1537171.7,-1004107.1,376428.12,625323.3,301623.68,463603.83,958187.81,749822.54,-823893.15,-1512909.8,-933881.71};
-ST(0.1,0.26428571,0,0.092520768,0.26920591,0,0.092295863,0.26000779,0){0,145042.72,193329.27,0,-420173.4,-546576.12,0,651988.34,805368.84,0,-816598.86,-924990.4,0,896908.09,884724.5};
-ST(0.092141527,0.03991184,0,0.092450683,0.030760689,0,0.1,0.035714286,0){927649.93,900007.85,0,767955.56,807431.66,0,476054.53,631804.95,0,102192.68,391202.83,0,-289378.9,110124.82,0};
-ST(0.015758122,0.23699049,0,0.013821768,0.24617185,0,0.0071147476,0.24137211,0){597291.98,454053.45,259907.57,-1541119.1,-1221678.8,-684802.64,1837947.1,1611329.8,859611.54,-1363109.4,-1502439.1,-720499.62,315646.37,928515.88,317972.39};
-ST(0.08264437,0.14444108,0,0.076625322,0.14929356,0,0.075488644,0.14176328,0){1463951.5,1845555.4,1990888.2,-1293607.4,-1818255.1,-1647841.2,-1614532.1,-1872475.3,-2274843.7,1105781,1790618.2,1255935.2,1743195.6,1898765.5,2491166.6};
-ST(0.093706234,0.20596864,0,0.093164956,0.1980516,0,0.1,0.2,0){360320.46,420734.09,0,-758974.46,-826537.04,0,479351.87,376428.12,0,228803.73,463603.83,0,-732939.79,-823893.15,0};
-ST(0.048663579,0.053435419,0,0.053426379,0.049768916,0,0.056317057,0.058022103,0){3726394.8,3727873.1,3630316.8,2589713.3,2738031.5,2330872.5,663071.82,1021148,197001.66,-1465861.1,-966926.63,-2007682.1,-3147918.6,-2698501,-3494460.7};
-ST(0.052532368,0.096036702,0,0.044548934,0.094607351,0,0.049739958,0.088394034,0){3389506.1,3364209.6,3472240.4,240670.51,323528.56,703521.31,-3131818.5,-3009655.6,-2626240.1,-3594959.1,-3622750.1,-3862017.3,-718569.73,-961698.97,-2018648.2};
-ST(0.070175425,0.16144206,0,0.067098511,0.16826118,0,0.061476805,0.16269562,0){2074683.8,2121688.2,2391378.9,-2570674.4,-2928224.5,-3025373.1,-1460177,-1008555.7,-1589341.3,2919916.2,3311710.7,3446908.2,762077.82,-250662.47,675366.83};
-ST(0.0087429334,0.24792416,0,0.0043813653,0.24702694,0,0.0071147476,0.24137211,0){283453.34,145794.38,259907.57,-768118.62,-393661.32,-684802.64,1029935.2,523477.05,859611.54,-992967.39,-496310.62,-720499.62,667809.3,320224.07,317972.39};
-ST(0.092195724,0.16853594,0,0.093873231,0.17693503,0,0.085369203,0.17624497,0){598378.34,445896.9,1039089.6,-829189.07,-694096.79,-1603144.1,-278570.16,-59504.029,-168940.91,936666.51,727141.13,1695116.9,-82641.6,-345394.37,-751642.95};
-ST(0.082583958,0.10907049,0,0.086838536,0.10220901,0,0.091053567,0.10618538,0){1698614.9,1341203.8,914271.31,-286603.09,-54099.381,-104388.15,-1936849,-1393108.8,-1006721.9,-1323464.6,-1282822.5,-787386.88,836522.31,161880.97,309052.61};
-ST(0.044637502,0.20577347,0,0.053221516,0.20704838,0,0.049232245,0.21047418,0){1811821.2,1805672.4,1752658.6,-3810004,-3837129.3,-3827070.5,2390091.8,2511247.5,2777012.8,1174216.7,1011998.4,540242.46,-3685779.4,-3650194.7,-3416565.4};
-ST(0.051624576,0.1997036,0,0.053221516,0.20704838,0,0.044637502,0.20577347,0){1943020.7,1805672.4,1811821.2,-3875569.2,-3837129.3,-3810004,1911651.5,2511247.5,2390091.8,1974364.4,1011998.4,1174216.7,-3875892.9,-3650194.7,-3685779.4};
-ST(0.013794295,0.15422926,0,0.0056981356,0.15371602,0,0.0078195435,0.14622426,0){1126466.2,478995.44,680366.1,-1226232.2,-516269.88,-626541.18,-1017954.8,-438816.38,-729870.69,1316565.7,550400.04,568744.13,901352.54,395913.98,774663.29};
-ST(0.013878694,0.17880836,0,0.0062925762,0.18063125,0,0.0069613667,0.17349451,0){971566.52,445914.92,517779.21,-1548960.4,-727143.63,-769992.03,-51095.574,12632.594,-142713.64,1579530,719304.1,839532.94,-887966.26,-466469.22,-266340.1};
-ST(0,0.23571429,0,0.0071147476,0.24137211,0,0,0.24285714,0){0,259907.57,0,0,-684802.64,0,0,859611.54,0,0,-720499.62,0,0,317972.39,0};
-ST(0.021502186,0.15931359,0,0.014502412,0.16316663,0,0.013794295,0.15422926,0){1630158.4,1121335,1126466.2,-1947614.2,-1429592.9,-1226232.2,-1250943.8,-728363.13,-1017954.8,2191316.6,1629901.1,1316565.7,824223.66,280110.31,901352.54};
-ST(0.01882241,0.070374011,0,0.027058874,0.069011929,0,0.026270926,0.075674812,0){2018056.9,2727323.5,2630439.6,970762.8,1363815.9,1063205.3,-580354.6,-681543.48,-1137545.6,-1830388.5,-2386220.5,-2660659.2,-2130853.3,-2898415.6,-2599027.8};
-ST(0.072323403,0.067507008,0,0.074756101,0.075901522,0,0.066925078,0.074981916,0){2781512.1,2549479.1,3090390.8,1448400.9,1021825.1,1280900.5,-578922.09,-1118145.3,-1278621.5,-2328912.3,-2588166.7,-3089611.2,-2963263.7,-2507455.8,-3091904.4};
-ST(0.010955873,0.10281868,0,0.013465065,0.10662372,0,0.0081152275,0.10988635,0){1124212.8,1351132.7,821145.89,-57954.543,-165451.82,-151361.79,-1179275.3,-1496410,-944689.8,-1060620.9,-1147793.4,-619246.83,173274.75,489093.12,439508.43};
-ST(0.069968451,0.098831219,0,0.065931692,0.10408722,0,0.061027247,0.098743066,0){2730411,2911358.9,3173016.6,57648.531,-218409.17,72008.811,-2671597.7,-3113407,-3099474,-2785714.6,-2661455,-3241975.4,-173126.8,651464.78,-216202.29};
-ST(0.018704911,0.19716585,0,0.025476801,0.19755762,0,0.024044461,0.20382537,0){1103230.1,1423125.8,1283805.9,-2149261.2,-2782737.9,-2655634.7,934589.13,1235431.1,1553893.8,1263201.6,1602470.1,995311.88,-2132672.2,-2766638.2,-2617892.2};
-ST(0,0.27857143,0,0.0067236406,0.28198319,0,0,0.28571429,0){0,76627.274,0,0,-227172.13,0,0,369685.4,0,0,-499127.77,0,0,610772.43,0};
-ST(0.026018946,0.14387862,0,0.033990129,0.14330646,0,0.030440206,0.150204,0){2064539,2486957.5,2239650.6,-1800072.3,-2138608.5,-2249230.7,-2295230.1,-2786553.8,-2230054.7,1506177.8,1748365.6,2258843.4,2488196.2,3031412.6,2220211.9};
-ST(0,0.014285714,0,0.006650898,0.018174199,0,0,0.021428571,0){0,801243.34,0,0,772347.91,0,0,715593.27,0,0,633022.27,0,0,527557,0};
-ST(0.022740693,0.23189018,0,0.021374843,0.22646669,0,0.026971271,0.22659033,0){887604.04,906782.43,1090633.5,-2230116.3,-2208721,-2658504.1,2485475.6,2264460.9,2731189,-1529145.6,-1042528.4,-1267784.1,-172982.46,-767856.24,-909068.56};
-ST(0.030075176,0.23324008,0,0.025350652,0.23917347,0,0.022740693,0.23189018,0){1077047.3,868665.73,887604.04,-2725827,-2265304,-2230116.3,3095770.8,2773502.3,2485475.6,-2013325.9,-2193941.8,-1529145.6,-13872.597,753574.67,-172982.46};
-ST(0.054957014,0.24657048,0,0.061408089,0.24582042,0,0.060567191,0.25172758,0){1058545,1017142.7,917440.34,-2852831,-2732695.2,-2522838.3,3777171.8,3591948.1,3497206.6,-3549694.2,-3325647.6,-3596815.5,2239441.1,2017029.8,2796536};
-ST(0.047385855,0.10193045,0,0.044548934,0.094607351,0,0.052532368,0.096036702,0){3329666.7,3364209.6,3389506.1,-117239.93,323528.56,240670.51,-3442848.4,-3009655.6,-3131818.5,-3204510.9,-3622750.1,-3594959.1,350991.89,-961698.97,-718569.73};
-ST(0.069467767,0.146519,0,0.064971856,0.15110456,0,0.061244461,0.14481879,0){2287173.5,2431817,2643484.5,-2120501.9,-2488096.1,-2356788.3,-2441744.6,-2374265.3,-2899198.4,1942651.5,2543085,2042509.4,2583122,2315361.9,3121060.9};
-ST(0.0081152275,0.10988635,0,0.0052460498,0.10332732,0,0.010955873,0.10281868,0){821145.89,545715.18,1124212.8,-151361.79,-33256.292,-57954.543,-944689.8,-576983.54,-1179275.3,-619246.83,-508602.25,-1060620.9,439508.43,99155.047,173274.75};
-ST(0.030466665,0.11568191,0,0.038084092,0.1145524,0,0.035619257,0.12028764,0){2608170,2981407.2,2821397.9,-773675.45,-818508.93,-1093830.4,-3152461.4,-3575257.7,-3491178.8,-1443702.3,-1775238,-1043884.2,2136967.4,2287308.3,2851838.9};
-ST(0.0094132111,0.052421332,0,0.014691551,0.054118398,0,0.0079950318,0.059686314,0){1088603.4,1659245.8,917766.47,768702.62,1140472.1,570756.35,222919.17,265092.56,7912.4367,-388347.22,-693242.8,-557994.72,-885762.83,-1435183.5,-913265.38};
-ST(0.020636298,0.17424253,0,0.027644767,0.17736901,0,0.021251228,0.18136297,0){1433869.3,1774040.3,1398279.8,-2154082.5,-2777088.7,-2300353.4,-351921.61,-203929.31,85724.805,2330929.4,2892544.7,2245163.6,-819073.82,-1431643.3,-1534338.6};
-ST(0.0081152275,0.10988635,0,0.013465065,0.10662372,0,0.016927821,0.11108648,0){821145.89,1351132.7,1644246.3,-151361.79,-165451.82,-340994.5,-944689.8,-1496410,-1914445.6,-619246.83,-1147793.4,-1176430.8,439508.43,489093.12,981584.41};
-ST(0.054828578,0.081464579,0,0.060416267,0.076932239,0,0.064352171,0.083117586,0){3492382.6,3380545.3,3167194.8,1101278.5,1302521.2,915483.69,-2043909.2,-1576156.6,-1987167.2,-3789901.6,-3485992.8,-3477240.4,-2941538.5,-3253298.6,-2495770};
-ST(0.0069979116,0.22643766,0,0.0069516057,0.23320895,0,0,0.22857143,0){317964.48,288078.49,0,-774386.26,-728952.19,0,793599.18,827497.2,0,-364658.79,-537397.4,0,-270536.88,-5267.3055,0};
-ST(0.0068768393,0.16098373,0,0.0056981356,0.15371602,0,0.013794295,0.15422926,0){553409.29,478995.44,1126466.2,-680450.71,-516269.88,-1226232.2,-397156.36,-438816.38,-1017954.8,771605.48,550400.04,1316565.7,219690.78,395913.98,901352.54};
-ST(0.08264437,0.14444108,0,0.081009521,0.1385969,0,0.087083587,0.13880919,0){1463951.5,1630909.4,1144744.3,-1293607.4,-1242340.3,-877072.07,-1614532.1,-1926924,-1349889.8,1105781,783271.16,561444.4,1743195.6,2113542.9,1481228.8};
-ST(0.064373335,0.2338171,0,0.066600159,0.24211306,0,0.059437672,0.2400817,0){1185902.3,1004296.2,1145348.7,-3010536.1,-2655015,-2999714,3446119.8,3359675.2,3711340.5,-2291596.2,-2867211.3,-3009146,79206.699,1352854.8,1160252.2};
-ST(0.061015306,0.048529238,0,0.053426379,0.049768916,0,0.054794838,0.043915046,0){3533367.8,3727873.1,3735662.6,2640342.3,2738031.5,2959425,1080012.2,1021148,1568238.5,-753291.7,-966926.63,-148813.91,-2396723.8,-2698501,-1835117.4};
-ST(0.074931673,0.27468874,0,0.081004963,0.27070547,0,0.082516133,0.27647665,0){363389.18,333174.81,248899.48,-1064791.9,-968418.7,-731674.12,1691857.9,1513258.3,1170289.2,-2200836.4,-1916833.2,-1538273.3,2556129.1,2141327.9,1813237.5};
-ST(0.082332164,0.023444943,0,0.080699945,0.029142305,0,0.074388951,0.025102472,0){2029600,2185639.9,2772012.4,1907886.4,1983669.2,2581574.2,1671751.1,1598386.1,2213781,1335359.8,1065401.8,1693914.7,918760.81,433818.71,1057277.9};
-ST(0,0.10714286,0,0.0052460498,0.10332732,0,0.0081152275,0.10988635,0){0,545715.18,821145.89,0,-33256.292,-151361.79,0,-576983.54,-944689.8,0,-508602.25,-619246.83,0,99155.047,439508.43};
-ST(0.019499739,0.079597209,0,0.01318623,0.084416193,0,0.012549176,0.077039569,0){2040354.6,1411871.7,1370920.5,702945.71,378554.62,525978.15,-1095289.5,-931831.12,-643140.23,-2175701.2,-1560266,-1415881.7,-1830384.7,-1046999.7,-1316306.1};
-ST(0.084917502,0.034253561,0,0.085916752,0.02828,0,0.092450683,0.030760689,0){1742331.8,1643257.2,900007.85,1520580.8,1500211.7,807431.66,1105294,1226559.7,631804.95,549324.68,846114.35,391202.83,-76880.401,391827.49,110124.82};
-ST(0.092520768,0.26920591,0,0.086077973,0.27164165,0,0.085115353,0.26563346,0){145042.72,243157.03,313056.52,-420173.4,-708191.99,-899063.8,651988.34,1111255.9,1369900.4,-816598.86,-1417072.6,-1665255.4,896908.09,1598582.9,1747205.8};
-ST(0.037999827,0.27482627,0,0.045592054,0.27439642,0,0.045044357,0.28188841,0){474219.19,513714.39,362990.51,-1389905,-1504437.2,-1075960.6,2209621.2,2387679.2,1750378.7,-2876809.4,-3100344.3,-2362097.1,3345267.4,3591305.7,2889034};
-ST(0.077393474,0.16425214,0,0.083969261,0.16737329,0,0.077140734,0.17217741,0){1650679.7,1198489.7,1584233.7,-2141613.9,-1632158.2,-2313491.7,-1013799.5,-607916.58,-519338.58,2443278.1,1852187.2,2552719.3,287063.28,-62490.334,-655929.75};
-ST(0.066925078,0.074981916,0,0.074756101,0.075901522,0,0.070865224,0.080352924,0){3090390.8,2549479.1,2808030.6,1280900.5,1021825.1,934415.1,-1278621.5,-1118145.3,-1562677.5,-3089611.2,-2588166.7,-3017110.1,-3091904.4,-2507455.8,-2458745.5};
-ST(0.017373248,0.19021363,0,0.023309936,0.19197185,0,0.018704911,0.19716585,0){1095255.9,1390526.6,1103230.1,-1990705.9,-2573914.4,-2149261.2,532263.7,799964.88,934589.13,1555631.8,1893175.4,1263201.6,-1804413.6,-2411477.9,-2132672.2};
-ST(0.079090117,0.19794942,0,0.081922129,0.20489902,0,0.075422073,0.20645372,0){1206859.6,996952.98,1273700.5,-2368529.7,-2081157.6,-2693470,1073015.3,1266338.6,1728669,1335740.9,704044.3,766631.5,-2359414.1,-2032271.3,-2583646.6};
-ST(0.08682376,0.20181233,0,0.081922129,0.20489902,0,0.079090117,0.19794942,0){767576.83,996952.98,1206859.6,-1560255.4,-2081157.6,-2368529.7,843726.65,1266338.6,1073015.3,688912.23,704044.3,1335740.9,-1555436.8,-2032271.3,-2359414.1};
-ST(0.039686874,0.0066116125,0,0.031710863,0.0075461758,0,0.035714286,0,0){3676489.9,3254919.5,3496308.9,3658909.3,3234618.2,3496337.7,3623831.1,3194153.7,3496399.5,3571457.2,3133832.1,3496538.6,3501797.4,3053845.3,3496562.8};
-ST(0.035714286,0.3,0,0.031264826,0.29263185,0,0.03928574,0.29335694,0){0,124484.17,127378.94,0,-372709.78,-381522.06,0,618717.86,633829.06,0,-861054.65,-883092.25,0,1098239.8,1127859.7};
-ST(0.022775714,0.15147437,0,0.030440206,0.150204,0,0.027609688,0.15620978,0){1786181.8,2239650.6,2023546.1,-1841345.2,-2249230.7,-2286520.9,-1729359.8,-2230054.7,-1726415,1894858,2258843.4,2510934.9,1670732.8,2220211.9,1400022.9};
-ST(0.0079950318,0.059686314,0,0.014691551,0.054118398,0,0.016702178,0.061420197,0){917766.47,1659245.8,1844408.3,570756.35,1140472.1,1107331.1,7912.4367,265092.56,-72241.295,-557994.72,-693242.8,-1222910.6,-913265.38,-1435183.5,-1885264.1};
-ST(0,0.028571429,0,0.0058133292,0.032528446,0,0,0.035714286,0){0,694559.72,0,0,614750.96,0,0,464300.7,0,0,260495.38,0,0,26512.55,0};
-ST(0.067728608,0.12931058,0,0.068478919,0.13862632,0,0.060672554,0.13561545,0){2567539,2426951.1,2778852.8,-1463631.5,-1850187.5,-1944873,-3196956.5,-2866745.3,-3362653.4,89062.443,1169007.7,935707.85,3235608.2,3144665.9,3643681.7};
-ST(0,0.26428571,0,0.0060732531,0.2674669,0,0,0.27142857,0){0,124750.88,0,0,-359918.85,0,0,553735.12,0,0,-683931.42,0,0,735399.5,0};
-ST(0.072323403,0.067507008,0,0.064846874,0.068845861,0,0.064832361,0.062804408,0){2781512.1,3243292.3,3281120.4,1448400.9,1629296.1,1912310.8,-578922.09,-795531.06,-254314.65,-2328912.3,-2824516.6,-2314932.7,-2963263.7,-3448034.5,-3410309.6};
-ST(0.1,0.15714286,0,0.09308158,0.15403623,0,0.1,0.15,0){0,579061.91,0,0,-628036.95,0,0,-525997.02,0,0,672596.25,0,0,469080.04,0};
-ST(0.040431855,0.24188745,0,0.037546984,0.23452457,0,0.045331711,0.23557633,0){1110505,1205921.7,1270563.3,-2932804,-3072707.6,-3255008.9,3702149.5,3550700.1,3813331,-3142324.5,-2423829.8,-2700862,1453973.2,201013.93,404484.48};
-ST(0.067728608,0.12931058,0,0.070840483,0.12204614,0,0.076158908,0.12549637,0){2567539,2470738.2,2092101.1,-1463631.5,-1044803.2,-1030118.9,-3196956.5,-3073782.1,-2615047.7,89062.443,-729197.53,-297340.89,3235608.2,2652961,2464056};
-ST(0.046181733,0.0056701177,0,0.043829005,0.011024747,0,0.039686874,0.0066116125,0){3851009.3,3801549.1,3676489.9,3837454.5,3750937.1,3658909.3,3810385,3650381.9,3623831.1,3769920.5,3501249.8,3571457.2,3715901.2,3305260.3,3501797.4};
-ST(0.066803853,0.25459223,0,0.060567191,0.25172758,0,0.065478411,0.24860928,0){789541.66,917440.34,912058.17,-2193455.3,-2522838.3,-2478342.9,3110738.9,3497206.6,3344041.2,-3337877,-3596815.5,-3264436.9,2824240.3,2796536,2261773.6};
-ST(0.03928574,0.29335694,0,0.043131118,0.28864457,0,0.045931579,0.29422002,0){127378.94,225252.57,116468.36,-381522.06,-672574.82,-348980.73,633829.06,1110400.5,580225.36,-883092.25,-1532552.2,-809364.6,1127859.7,1932837.8,1035478};
-ST(0.038597539,0.20095921,0,0.043569257,0.19619451,0,0.044637502,0.20577347,0){1801301.7,1966078.6,1811821.2,-3633864.6,-3794921.6,-3810004,1895634,1563901,2390091.8,1705394,2340412.7,1174216.7,-3630918.1,-3741435.4,-3685779.4};
-ST(0.044637502,0.20577347,0,0.043569257,0.19619451,0,0.051624576,0.1997036,0){1811821.2,1966078.6,1943020.7,-3810004,-3794921.6,-3875569.2,2390091.8,1563901,1911651.5,1174216.7,2340412.7,1974364.4,-3685779.4,-3741435.4,-3875892.9};
-ST(0,0.092857143,0,0.0071591483,0.096788703,0,0,0.1,0){0,756711.76,0,0,43634.951,0,0,-710572.63,0,0,-795194.2,0,0,-130859.45,0};
-ST(0.017990672,0.29207379,0,0.010662343,0.29482959,0,0.0093450955,0.28843768,0){86228.122,34537.041,67949.514,-258100.45,-103506.64,-202850.84,428229.3,172164.12,334776.34,-595472.42,-240303.04,-461793.67,758576.15,307518.14,581935.08};
-ST(0.0093389246,0.011691623,0,0.010679145,0.0052482016,0,0.01808004,0.0081573173,0){1120186.5,1277155.8,2085729.2,1103410.3,1273289.3,2070583.9,1070108.3,1265566.3,2040406.9,1020788.4,1254019.7,1995444.2,956114.18,1238493.9,1935913.6};
-ST(0.060672554,0.13561545,0,0.054237851,0.14012792,0,0.053497526,0.1329974,0){2778852.8,2856617.8,2959143.9,-1944873,-2267029,-1911000.9,-3362653.4,-3324577.4,-3636096,935707.85,1580891.3,623103.97,3643681.7,3650971.5,3857035.6};
-ST(0.074279052,0.25633166,0,0.071915087,0.24816524,0,0.07921504,0.25033934,0){635900.39,803363.84,606155.6,-1777029.4,-2179152.4,-1658203,2553015.8,2928525.2,2271843.6,-2804423.5,-2836050.6,-2284831,2479429.3,1927975,1693484.6};
-ST(0.091864029,0.22106993,0,0.095652827,0.22622146,0,0.09071018,0.22887426,0){394005.54,199039.37,406264.77,-927852.61,-484109.58,-1003622.2,863120.02,494313.66,1069446.3,-241435.16,-223837.82,-568907.82,-536498.87,-173819.74,-233040.27};
-ST(0.021658338,0.054940441,0,0.025565101,0.048609543,0,0.028699663,0.054481756,0){2341024.9,2702312,2920693,1587273.2,2017092.5,1995520.8,322446.89,820389.33,438210.61,-1046241,-584372.75,-1257984.1,-2078353.5,-1841258.2,-2556170.3};
-ST(0.019247887,0.048569646,0,0.025565101,0.048609543,0,0.021658338,0.054940441,0){2135187.8,2702312,2341024.9,1594654.5,2017092.5,1587273.2,650408.09,820389.33,322446.89,-458538.7,-584372.75,-1046241,-1451674.1,-1841258.2,-2078353.5};
-ST(0.084368038,0.19048099,0,0.087008075,0.19596841,0,0.079090117,0.19794942,0){992852.93,798107.94,1206859.6,-1809621.2,-1537171.7,-2368529.7,495817.1,625323.3,1073015.3,1401810.9,958187.81,1335740.9,-1649308.4,-1512909.8,-2359414.1};
-ST(0.029991713,0.27132489,0,0.027951851,0.26533243,0,0.034582704,0.26623209,0){469504.82,539100.43,604041.77,-1366503,-1547025.6,-1737386.1,2141236.7,2353298.6,2655775,-2724385.3,-2852826.8,-3245580.1,3063642.3,2980285,3433603.3};
-ST(0.043569257,0.19619451,0,0.044234359,0.18859393,0,0.050398693,0.1921099,0){1966078.6,2102462.5,2077292.2,-3794921.6,-3756018.8,-3850553.1,1563901,851571.98,1209682,2340412.7,3086402.5,2818064.5,-3741435.4,-3279385.1,-3615771.1};
-ST(0.0069613667,0.17349451,0,0.0046637588,0.16745308,0,0.0094805882,0.16707285,0){517779.21,362371.83,730151.01,-769992.03,-494096.85,-989834.58,-142713.64,-182769.85,-378084.11,839532.94,560561.48,1124284.7,-266340.1,-21256.565,-22095.939};
-ST(0.074931673,0.27468874,0,0.06660802,0.27624666,0,0.069536278,0.26943087,0){363389.18,417349.44,505602.11,-1064791.9,-1226359.7,-1465439,1691857.9,1959900.4,2276404,-2200836.4,-2572844.1,-2856108.7,2556129.1,3027289.2,3145421.5};
-ST(0.068476894,0.0069177029,0,0.074656208,0.0053403125,0,0.073684623,0.0112317,0){3242851.4,2772385.5,2850123.3,3225849.8,2763721.5,2810738.2,3191931.3,2746414.1,2732509.2,3141298.2,2720533.7,2616540.6,3073847.6,2685936.9,2464223.2};
-ST(0.073754091,0.28851618,0,0.074657371,0.29452352,0,0.068366879,0.29272708,0){171229.59,79525.554,123803.43,-511212.67,-238312.39,-370697.46,843808.82,396309.36,615462.12,-1164215.8,-552992.95,-856697.17,1467609.3,707611.71,1092834.3};
-ST(0.025130011,0.29009115,0,0.024877102,0.29495936,0,0.017990672,0.29207379,0){142877.47,72135.52,86228.122,-427099.39,-216205.93,-258100.45,706741.94,359676.71,428229.3,-978805.55,-502149.61,-595472.42,1240164.3,642973.44,758576.15};
-ST(0.017990672,0.29207379,0,0.024877102,0.29495936,0,0.021428571,0.3,0){86228.122,72135.52,0,-258100.45,-216205.93,0,428229.3,359676.71,0,-595472.42,-502149.61,0,758576.15,642973.44,0};
-ST(0.021428571,0,0,0.025051818,0.0051959301,0,0.01808004,0.0081573173,0){2419501.9,2747435.6,2085729.2,2419561.9,2739316.7,2070583.9,2419679.8,2723095.2,2040406.9,2419876.4,2698832.3,1995444.2,2419989.4,2666496.7,1935913.6};
-ST(0.01808004,0.0081573173,0,0.025051818,0.0051959301,0,0.025468185,0.010276157,0){2085729.2,2747435.6,2780034,2070583.9,2739316.7,2747892,2040406.9,2723095.2,2683968.5,1995444.2,2698832.3,2589008.8,1935913.6,2666496.7,2463902.9};
-ST(0.061244461,0.14481879,0,0.054237851,0.14012792,0,0.060672554,0.13561545,0){2643484.5,2856617.8,2778852.8,-2356788.3,-2267029,-1944873,-2899198.4,-3324577.4,-3362653.4,2042509.4,1580891.3,935707.85,3121060.9,3650971.5,3643681.7};
-ST(0.079090117,0.19794942,0,0.087008075,0.19596841,0,0.08682376,0.20181233,0){1206859.6,798107.94,767576.83,-2368529.7,-1537171.7,-1560255.4,1073015.3,625323.3,843726.65,1335740.9,958187.81,688912.23,-2359414.1,-1512909.8,-1555436.8};
-ST(0.093710586,0.16080643,0,0.088623123,0.15812222,0,0.09308158,0.15403623,0){507346.27,918302.92,579061.91,-621948.04,-1074338,-628036.95,-366919.85,-735787.48,-525997.02,704920.6,1199414.9,672596.25,207593.47,531983.03,469080.04};
-ST(0.088381846,0.16289419,0,0.088623123,0.15812222,0,0.093710586,0.16080643,0){911153.68,918302.92,507346.27,-1156470.7,-1074338,-621948.04,-599768.12,-735787.48,-366919.85,1317920.1,1199414.9,704920.6,244888.24,531983.03,207593.47};
-ST(0.060672554,0.13561545,0,0.059246105,0.12763558,0,0.067728608,0.12931058,0){2778852.8,2918223.5,2567539,-1944873,-1563762.3,-1463631.5,-3362653.4,-3644117.3,-3196956.5,935707.85,-127593.52,89062.443,3643681.7,3585046,3235608.2};
-ST(0.02133326,0.24577003,0,0.025350652,0.23917347,0,0.029124573,0.24658198,0){675269.21,868665.73,849052.23,-1813848.4,-2265304,-2288340.2,2383092.9,2773502.3,3030093.5,-2204305.3,-2193941.8,-2848204.4,1333319.6,753574.67,1797881.3};
-ST(0.037897724,0.149701,0,0.045364072,0.14896511,0,0.042155309,0.15589067,0){2552043.8,2729630.7,2577776.2,-2536068.8,-2670475.8,-2895603.6,-2567975.2,-2787568.3,-2220826.4,2520076,2610132.2,3169529.7,2583694.6,2844182.1,1830012};
-ST(0.071449289,0.19423207,0,0.06771074,0.1881525,0,0.076430303,0.18837043,0){1594804.6,1821405.7,1444535.6,-3019964.8,-3238423,-2574453.4,1103926.4,698008.36,569102.25,2033518.7,2695511.5,2129625.3,-2921575.1,-2795478.4,-2235391.7};
-ST(0.078984823,0.22953004,0,0.084619556,0.23283838,0,0.077318805,0.23627719,0){858343.29,621044.17,830868.27,-2128428.8,-1568398.7,-2136157.9,2291087.1,1771426.2,2525048.7,-1261656.1,-1133733.9,-1830714.2,-424553.92,-42283.716,350702.19};
-ST(0.077318805,0.23627719,0,0.084619556,0.23283838,0,0.084206466,0.24009781,0){830868.27,621044.17,569988.38,-2136157.9,-1568398.7,-1492933.9,2525048.7,1771426.2,1847439,-1830714.2,-1133733.9,-1498530.8,350702.19,-42283.716,578923.58};
-ST(0.026018946,0.14387862,0,0.030440206,0.150204,0,0.022775714,0.15147437,0){2064539,2239650.6,1786181.8,-1800072.3,-2249230.7,-1841345.2,-2295230.1,-2230054.7,-1729359.8,1506177.8,2258843.4,1894858,2488196.2,2220211.9,1670732.8};
-ST(0.07492972,0.092844339,0,0.081743274,0.092625466,0,0.079063451,0.10043005,0){2431427.6,1862860,2051820.1,308451.38,243386.47,-16056.497,-2083891.4,-1587731,-2067914.3,-2656803.1,-2038652.4,-2035845.1,-910298.79,-717394.49,48244.512};
-ST(0.079063451,0.10043005,0,0.081743274,0.092625466,0,0.087331535,0.0958472,0){2051820.1,1862860,1318484.3,-16056.497,243386.47,98077.228,-2067914.3,-1587731,-1213131.9,-2035845.1,-2038652.4,-1401481.2,48244.512,-717394.49,-292629.72};
-ST(0.066012722,0.055502179,0,0.070754378,0.060222618,0,0.064832361,0.062804408,0){3257272.9,2932444.5,3281120.4,2187557.2,1804303.3,1912310.8,399401.17,-17984.254,-254314.65,-1519988.7,-1833384.6,-2314932.7,-2940625.1,-2943704.7,-3410309.6};
-ST(0.069467767,0.146519,0,0.076625322,0.14929356,0,0.070477538,0.15360968,0){2287173.5,1845555.4,2153625.7,-2120501.9,-1818255.1,-2316413.6,-2441744.6,-1872475.3,-1978592.7,1942651.5,1790618.2,2466066.8,2583122,1898765.5,1792310.4};
-ST(0.075488644,0.14176328,0,0.076625322,0.14929356,0,0.069467767,0.146519,0){1990888.2,1845555.4,2287173.5,-1647841.2,-1818255.1,-2120501.9,-2274843.7,-1872475.3,-2441744.6,1255935.2,1790618.2,1942651.5,2491166.6,1898765.5,2583122};
-ST(0.070607657,0.23670872,0,0.066600159,0.24211306,0,0.064373335,0.2338171,0){1007105.3,1004296.2,1185902.3,-2594870.8,-2655015,-3010536.1,3083897.2,3359675.2,3446119.8,-2267120.1,-2867211.3,-2291596.2,490193.02,1352854.8,79206.699};
-ST(0.1,0.11428571,0,0.091758141,0.11296708,0,0.1,0.10714286,0){0,824791.32,0,0,-201020.76,0,0,-976886.6,0,0,-537824.26,0,0,570097.26,0};
-ST(0.017763535,0.12074209,0,0.023379755,0.12686903,0,0.01788586,0.12850833,0){1657769.5,2047772.9,1616906.9,-657738.05,-1065433.1,-895214.81,-2054600.3,-2558991,-2016472.2,-581651.26,-162203.53,-4802.2192,1703675.4,2481221.5,2014144.7};
-ST(0.016927821,0.11108648,0,0.01198914,0.11616091,0,0.0081152275,0.10988635,0){1644246.3,1171325.2,821145.89,-340994.5,-358450.6,-151361.79,-1914445.6,-1420119.3,-944689.8,-1176430.8,-627101.02,-619246.83,981584.41,984768,439508.43};
-ST(0.1,0.021428571,0,0.095041081,0.024587994,0,0.093571257,0.018380777,0){0,597113.29,774815.13,0,557751.32,746204.54,0,481620.22,690036.86,0,373740.48,608388.09,0,241099.33,504051.02};
-ST(0.093593186,0.28160993,0,0.095069321,0.27540052,0,0.1,0.27857143,0){74588.283,76899.446,0,-221009.65,-225624.71,0,359269.18,359465.9,0,-484261.41,-469594.27,0,591230.88,548580.83,0};
-ST(0.0071591483,0.096788703,0,0.0052460498,0.10332732,0,0,0.1,0){756711.76,545715.18,0,43634.951,-33256.292,0,-710572.63,-576983.54,0,-795194.2,-508602.25,0,-130859.45,99155.047,0};
-ST(0.09416017,0.099511923,0,0.086838536,0.10220901,0,0.087331535,0.0958472,0){613994.66,1341203.8,1318484.3,5422.3845,-54099.381,98077.228,-608645.22,-1393108.8,-1213131.9,-619557.01,-1282822.5,-1401481.2,-16415.987,161880.97,-292629.72};
-ST(0.049204373,0.010884263,0,0.043829005,0.011024747,0,0.046181733,0.0056701177,0){3873084,3801549.1,3851009.3,3822842.7,3750937.1,3837454.5,3723003.5,3650381.9,3810385,3574883.8,3501249.8,3769920.5,3380124.5,3305260.3,3715901.2};
-ST(0.045931579,0.29422002,0,0.043131118,0.28864457,0,0.048791783,0.28884593,0){116468.36,225252.57,226341.07,-348980.73,-672574.82,-675936.71,580225.36,1110400.5,1116322.7,-809364.6,-1532552.2,-1541505,1035478,1932837.8,1945474.1};
-ST(0.020473685,0.087577432,0,0.024499807,0.092422798,0,0.019165757,0.095107709,0){2087024.2,2390452.1,1930971.9,451292.51,320672.29,168744.63,-1538224.3,-2026771.7,-1747493.7,-2322280.1,-2619357.9,-2069009.1,-1286407.6,-944222.72,-502664.26};
-ST(0.041002292,0.08644635,0,0.044548934,0.094607351,0,0.03690243,0.09394169,0){3351345,3364209.6,3135041.5,787437.3,323528.56,337961.95,-2379027.1,-3009655.6,-2760700,-3725698.5,-3622750.1,-3396384.7,-2222336.9,-961698.97,-1002139.6};
-ST(0.049739958,0.088394034,0,0.044548934,0.094607351,0,0.041002292,0.08644635,0){3472240.4,3364209.6,3351345,703521.31,323528.56,787437.3,-2626240.1,-3009655.6,-2379027.1,-3862017.3,-3622750.1,-3725698.5,-2018648.2,-961698.97,-2222336.9};
-ST(0.041319833,0.14315875,0,0.033990129,0.14330646,0,0.038217426,0.13599196,0){2735557.7,2486957.5,2738753.8,-2343944,-2138608.5,-1938161,-3071175.4,-2786553.8,-3305386.1,1904337.3,1748365.6,972060.89,3343927.4,3031412.6,3589652.3};
-ST(0.042857143,0,0,0.046181733,0.0056701177,0,0.039686874,0.0066116125,0){3783299.5,3851009.3,3676489.9,3783327.5,3837454.5,3658909.3,3783379.6,3810385,3623831.1,3783486.4,3769920.5,3571457.2,3783576.5,3715901.2,3501797.4};
-ST(0.03928574,0.29335694,0,0.045931579,0.29422002,0,0.042857143,0.3,0){127378.94,116468.36,0,-381522.06,-348980.73,0,633829.06,580225.36,0,-883092.25,-809364.6,0,1127859.7,1035478,0};
-ST(0.030217898,0.25971254,0,0.027951851,0.26533243,0,0.021957304,0.26060316,0){660621.26,539100.43,505833.44,-1866014.4,-1547025.6,-1432636.8,2744196,2353298.6,2119105.6,-3141188.1,-2852826.8,-2450095.8,2987009.7,2980285,2369995.8};
-ST(0.091053567,0.10618538,0,0.086838536,0.10220901,0,0.09416017,0.099511923,0){914271.31,1341203.8,613994.66,-104388.15,-54099.381,5422.3845,-1006721.9,-1393108.8,-608645.22,-787386.88,-1282822.5,-619557.01,309052.61,161880.97,-16415.987};
-ST(0.0045473776,0.2936365,0,0.010662343,0.29482959,0,0.0071428571,0.3,0){18406.211,34537.041,0,-55138.333,-103506.64,0,91630.552,172164.12,0,-127724.83,-240303.04,0,162961.08,307518.14,0};
-ST(0.01093484,0.12117452,0,0.01198914,0.11616091,0,0.017763535,0.12074209,0){1052666.9,1171325.2,1657769.5,-426753.37,-358450.6,-657738.05,-1306415.4,-1420119.3,-2054600.3,-350052.21,-627101.02,-581651.26,1098212.1,984768,1703675.4};
-ST(0.043491003,0.26677795,0,0.034582704,0.26623209,0,0.037705658,0.25939989,0){657627.62,604041.77,758443.36,-1894105.9,-1737386.1,-2140288.6,2903724.9,2655775,3141072.6,-3565612.1,-3245580.1,-3582615.2,3800401.2,3433603.3,3385872.9};
-ST(0.0071428571,0,0,0.010679145,0.0052482016,0,0.0045481906,0.0063920675,0){863498.79,1277155.8,552257.15,863505.11,1273289.3,549810.55,863516.31,1265566.3,544927.47,863538.53,1254019.7,537633.65,863596.62,1238493.9,527798.54};
-ST(0.020636298,0.17424253,0,0.014405512,0.17061143,0,0.020973714,0.16688371,0){1433869.3,1063653,1525118.3,-2154082.5,-1519257.6,-2061659.5,-351921.61,-412907.51,-799875.51,2330929.4,1696192.6,2343184.8,-819073.82,-313907.63,-24581.749};
-ST(0.018422519,0.27450763,0,0.025044032,0.27464897,0,0.023483408,0.28013687,0){282501.19,363665.57,270985.88,-827496.14,-1065519.5,-801278.39,1313896,1692735.8,1297043.7,-1707268.8,-2201379.5,-1736920.8,1979556.1,2555652.6,2101746.5};
-ST(0.0061411468,0.1246533,0,0.0062042788,0.11791514,0,0.01093484,0.12117452,0){591118.91,612847.32,1052666.9,-280990.71,-208741.13,-426753.37,-738586.84,-750565.55,-1306415.4,-106527.54,-286207.66,-350052.21,682629.18,561848.67,1098212.1};
-ST(0.042557423,0.10832344,0,0.039702853,0.10111678,0,0.047385855,0.10193045,0){3183930.6,3175586.8,3329666.7,-492142.06,-64516.934,-117239.93,-3600076,-3238866.3,-3442848.4,-2551523.2,-3108635.2,-3204510.9,1442840.6,193445.51,350991.89};
-ST(0.0081152275,0.10988635,0,0.0062042788,0.11791514,0,0,0.11428571,0){821145.89,612847.32,0,-151361.79,-208741.13,0,-944689.8,-750565.55,0,-619246.83,-286207.66,0,439508.43,561848.67,0};
-ST(0.067728608,0.12931058,0,0.059246105,0.12763558,0,0.064276416,0.12183086,0){2567539,2918223.5,2809128.6,-1463631.5,-1563762.3,-1175750.5,-3196956.5,-3644117.3,-3492840.6,89062.443,-127593.52,-855220.15,3235608.2,3585046,2995580.4};
-ST(0.0079950318,0.059686314,0,0.004777904,0.053197076,0,0.0094132111,0.052421332,0){917766.47,557925.04,1088603.4,570756.35,389224.92,768702.62,7912.4367,102822.82,222919.17,-557994.72,-214698.3,-388347.22,-913265.38,-467537.22,-885762.83};
-ST(0.064276416,0.12183086,0,0.062195955,0.11505156,0,0.069025318,0.11622387,0){2809128.6,2965673.8,2631986.5,-1175750.5,-843057.19,-808686.45,-3492840.6,-3569130.8,-3192250.9,-855220.15,-1711501.2,-1402768.4,2995580.4,2344130.4,2220554.1};
-ST(0.057323957,0.1204315,0,0.062195955,0.11505156,0,0.064276416,0.12183086,0){3051716.5,2965673.8,2809128.6,-1191883,-843057.19,-1175750.5,-3778168.4,-3569130.8,-3492840.6,-1110713.1,-1711501.2,-855220.15,3101303,2344130.4,2995580.4};
-ST(0.073684623,0.0112317,0,0.074656208,0.0053403125,0,0.081119523,0.0085521597,0){2850123.3,2772385.5,2167108.8,2810738.2,2763721.5,2149779.2,2732509.2,2746414.1,2115263.6,2616540.6,2720533.7,2063869.7,2464223.2,2685936.9,1995657.9};
-ST(0.081165886,0.29137431,0,0.074657371,0.29452352,0,0.073754091,0.28851618,0){97729.953,79525.554,171229.59,-292395.17,-238312.39,-511212.67,484687.71,396309.36,843808.82,-673055.06,-552992.95,-1164215.8,855744.16,707611.71,1467609.3};
-ST(0.064276416,0.12183086,0,0.070840483,0.12204614,0,0.067728608,0.12931058,0){2809128.6,2470738.2,2567539,-1175750.5,-1044803.2,-1463631.5,-3492840.6,-3073782.1,-3196956.5,-855220.15,-729197.53,89062.443,2995580.4,2652961,3235608.2};
-ST(0.058212185,0.089881183,0,0.052532368,0.096036702,0,0.049739958,0.088394034,0){3344291.6,3389506.1,3472240.4,593905.21,240670.51,703521.31,-2645013.4,-3131818.5,-2626240.1,-3708817.1,-3594959.1,-3862017.3,-1722713.3,-718569.73,-2018648.2};
-ST(0.017433092,0.042090914,0,0.013132659,0.04767246,0,0.011573719,0.041901165,0){1971771.3,1507774.2,1347025.1,1594855,1139737.5,1091815.8,913057.13,493500.09,629744.45,56690.05,-273193.01,48353.226,-810753.02,-973395.4,-542301.86};
-ST(0.042155309,0.15589067,0,0.034314476,0.15645926,0,0.037897724,0.149701,0){2577776.2,2334400.9,2552043.8,-2895603.6,-2649968.2,-2536068.8,-2220826.4,-1976247.7,-2567975.2,3169529.7,2917237.1,2520076,1830012,1581967.4,2583694.6};
-ST(0.038427921,0.16264679,0,0.034314476,0.15645926,0,0.042155309,0.15589067,0){2389351.9,2334400.9,2577776.2,-3020403.6,-2649968.2,-2895603.6,-1591681.4,-1976247.7,-2220826.4,3440909.6,2917237.1,3169529.7,682723.32,1581967.4,1830012};
-ST(0.044666369,0.11545829,0,0.040442009,0.11996282,0,0.038084092,0.1145524,0){3148096.1,2999410,2981407.2,-920013.3,-1143461.2,-818508.93,-3799301.5,-3706983.7,-3575257.7,-1769018.1,-1150363.3,-1775238,2547335.8,2995190.5,2287308.3};
-ST(0.041002292,0.08644635,0,0.047307891,0.081963043,0,0.049739958,0.088394034,0){3351345,3516083,3472240.4,787437.3,1080946.4,703521.31,-2379027.1,-2102837.3,-2626240.1,-3725698.5,-3830300,-3862017.3,-2222336.9,-2905310.5,-2018648.2};
-ST(0.09156348,0.14589395,0,0.093938974,0.13899,0,0.1,0.14285714,0){734092.88,548364.78,0,-670961.7,-422206.84,0,-791796.8,-645591.08,0,602866.55,273728.87,0,843431.47,708600.91,0};
-ST(0.1,0.12857143,0,0.093823791,0.12410599,0,0.1,0.12142857,0){0,595735.92,0,0,-276601.23,0,0,-743959.63,0,0,-121937.8,0,0,678759.2,0};
-ST(0.080938662,0.054906318,0,0.073604017,0.054819307,0,0.077364239,0.048764008,0){2097661.4,2744584.6,2450679,1423084,1864679.8,1825420.5,290856.94,386939.94,734405.59,-934922.56,-1214908.7,-544039.45,-1860365.1,-2427603.9,-1683943.8};
-ST(0.082942949,0.21818591,0,0.084319616,0.22565969,0,0.076796159,0.2234596,0){823054.75,696453.76,1008421.8,-1901094.8,-1688204.7,-2411357.4,1667014.3,1707540.6,2346331.8,-282341.7,-743250.94,-852928.84,-1297502.9,-649719.93,-1160000.7};
-ST(0.1,0.27142857,0,0.092520768,0.26920591,0,0.1,0.26428571,0){0,145042.72,0,0,-420173.4,0,0,651988.34,0,0,-816598.86,0,0,896908.09,0};
-ST(0.1,0.035714286,0,0.092450683,0.030760689,0,0.1,0.028571429,0){0,900007.85,0,0,807431.66,0,0,631804.95,0,0,391202.83,0,0,110124.82,0};
-ST(0.045416206,0.061541227,0,0.042113175,0.053290167,0,0.048663579,0.053435419,0){3642820.9,3616583.4,3726394.8,2181474.8,2519252.9,2589713.3,-155055.51,657513.67,663071.82,-2429600.5,-1403801.4,-1465861.1,-3730025.8,-3039615.4,-3147918.6};
-ST(0.038435934,0.058364632,0,0.042113175,0.053290167,0,0.045416206,0.061541227,0){3459248.5,3616583.4,3642820.9,2206750.4,2519252.9,2181474.8,155241.86,657513.67,-155055.51,-1952496,-1403801.4,-2429600.5,-3353689.4,-3039615.4,-3730025.8};
-ST(0.0528723,0.26429657,0,0.055001581,0.27169863,0,0.049721881,0.27094787,0){718299.05,565900.8,588018.61,-2055661.9,-1648356.5,-1710042.9,3109067.1,2587095.5,2675009.8,-3733060,-3300283.2,-3394309,3841282.5,3725567.5,3801713.7};
-ST(0.082516133,0.27647665,0,0.086077973,0.27164165,0,0.089232651,0.27618677,0){248899.48,243157.03,160151.6,-731674.12,-708191.99,-470555.02,1170289.2,1111255.9,751874.95,-1538273.3,-1417072.6,-986723.61,1813237.5,1598582.9,1160401.4};
-ST(0.089183466,0.023798504,0,0.085916752,0.02828,0,0.082332164,0.023444943,0){1283383.3,1643257.2,2029600,1204105.7,1500211.7,1907886.4,1050439.6,1226559.7,1671751.1,831874.08,846114.35,1335359.8,561630.79,391827.49,918760.81};
-ST(0.079063451,0.10043005,0,0.086838536,0.10220901,0,0.082583958,0.10907049,0){2051820.1,1341203.8,1698614.9,-16056.497,-54099.381,-286603.09,-2067914.3,-1393108.8,-1936849,-2035845.1,-1282822.5,-1323464.6,48244.512,161880.97,836522.31};
-ST(0.059543685,0.10776494,0,0.06715469,0.10983132,0,0.062195955,0.11505156,0){3132791.5,2794834,2965673.8,-451048.14,-512277.78,-843057.19,-3519016.9,-3213264.7,-3569130.8,-2561357.9,-2112070.8,-1711501.2,1326599.2,1488257.3,2344130.4};
-ST(0.011838853,0.2301677,0,0.0069516057,0.23320895,0,0.0069979116,0.22643766,0){504229.49,288078.49,317964.48,-1254859.2,-728952.19,-774386.26,1363834.1,827497.2,793599.18,-775392.51,-537397.4,-364658.79,-209768.04,-5267.3055,-270536.88};
-ST(0.070477538,0.15360968,0,0.076625322,0.14929356,0,0.077069107,0.15686929,0){2153625.7,1845555.4,1743907.9,-2316413.6,-1818255.1,-1994600,-1978592.7,-1872475.3,-1457243.4,2466066.8,1790618.2,2204191.1,1792310.4,1898765.5,1140253.2};
-ST(0.09123018,0.070922096,0,0.095795895,0.073622969,0,0.091953893,0.078440357,0){983713.53,473503.74,889726.23,465586.72,205720.2,322434.75,-297764.17,-178405.32,-450550.32,-904277.98,-461642.03,-936443.15,-1034644.8,-483922.03,-825354.72};
-ST(0.041057987,0.068843254,0,0.041803352,0.076750149,0,0.033874053,0.071548869,0){3488848.8,3453761.9,3157862.8,1752771.3,1340279.2,1466537.3,-855539,-1593440.1,-1010259.7,-3038218.5,-3552303.7,-2946084.6,-3709409.4,-3337911.6,-3304540.6};
-ST(0.075422073,0.20645372,0,0.081922129,0.20489902,0,0.081656406,0.2108727,0){1273700.5,996952.98,951384.03,-2693470,-2081157.6,-2083808.1,1728669,1266338.6,1528962.6,766631.5,704044.3,263916.4,-2583646.6,-2032271.3,-1843401};
-ST(0.084206466,0.24009781,0,0.084619556,0.23283838,0,0.092168655,0.23668616,0){569988.38,621044.17,307607.26,-1492933.9,-1568398.7,-792496.69,1847439,1771426.2,941630.33,-1498530.8,-1133733.9,-691810.02,578923.58,-42283.716,148523.72};
-ST(0.092168655,0.23668616,0,0.084619556,0.23283838,0,0.09071018,0.22887426,0){307607.26,621044.17,406264.77,-792496.69,-1568398.7,-1003622.2,941630.33,1771426.2,1069446.3,-691810.02,-1133733.9,-568907.82,148523.72,-42283.716,-233040.27};
-ST(0.071000103,0.28243589,0,0.078222118,0.28277283,0,0.073754091,0.28851618,0){281581.81,220930.92,171229.59,-835250.62,-655625.13,-511212.67,1360764.9,1069057.6,843808.82,-1840418.5,-1447830.3,-1164215.8,2257916.8,1779434.3,1467609.3};
-ST(0.073684623,0.0112317,0,0.078020383,0.017034313,0,0.070691378,0.017050195,0){2850123.3,2461848.1,3076870.7,2810738.2,2383750.6,2979073.3,2732509.2,2230032.5,2786592,2616540.6,2005590.6,2505581.5,2464223.2,1717239.5,2144710.8};
-ST(0.028678488,0.042143634,0,0.022876349,0.043626948,0,0.023478597,0.036718106,0){2968313.4,2488553.5,2561783.8,2399521.8,1978130.3,2187675.4,1370917.4,1061959.9,1494080.3,79587.615,-72059.632,582277.59,-1227272.3,-1191549.5,-414804.14};
-ST(0.053497526,0.1329974,0,0.059246105,0.12763558,0,0.060672554,0.13561545,0){2959143.9,2918223.5,2778852.8,-1911000.9,-1563762.3,-1944873,-3636096,-3644117.3,-3362653.4,623103.97,-127593.52,935707.85,3857035.6,3585046,3643681.7};
-ST(0.087083587,0.13880919,0,0.093938974,0.13899,0,0.09156348,0.14589395,0){1144744.3,548364.78,734092.88,-877072.07,-422206.84,-670961.7,-1349889.8,-645591.08,-791796.8,561444.4,273728.87,602866.55,1481228.8,708600.91,843431.47};
-ST(0.054957014,0.24657048,0,0.049037582,0.25027532,0,0.047556344,0.24377674,0){1058545,998508.07,1122639.4,-2852831,-2730849.8,-2989881.7,3777171.8,3739350.2,3850350.4,-3549694.2,-3756698.7,-3414324.1,2239441.1,2778087.3,1828478.4};
-ST(0.06771074,0.1881525,0,0.07206248,0.1830344,0,0.076430303,0.18837043,0){1821405.7,1716055.3,1444535.6,-3238423,-2879815.5,-2574453.4,698008.36,236909.5,569102.25,2695511.5,2719220.1,2129625.3,-2795478.4,-2081132.3,-2235391.7};
-ST(0.093571257,0.018380777,0,0.095041081,0.024587994,0,0.089183466,0.023798504,0){774815.13,597113.29,1283383.3,746204.54,557751.32,1204105.7,690036.86,481620.22,1050439.6,608388.09,373740.48,831874.08,504051.02,241099.33,561630.79};
-ST(0.089232651,0.27618677,0,0.095069321,0.27540052,0,0.093593186,0.28160993,0){160151.6,76899.446,74588.283,-470555.02,-225624.71,-221009.65,751874.95,359465.9,359269.18,-986723.61,-469594.27,-484261.41,1160401.4,548580.83,591230.88};
-ST(0.017861336,0.10270337,0,0.019165757,0.095107709,0,0.024938414,0.098415267,0){1773538.4,1930971.9,2383058.5,-87655.931,168744.63,68195.72,-1856823.6,-1747493.7,-2312962.3,-1677437.3,-2069009.1,-2447461.4,261812.45,-502664.26,-204726.33};
-ST(0.082583958,0.10907049,0,0.076969725,0.10634022,0,0.079063451,0.10043005,0){1698614.9,2181001.1,2051820.1,-286603.09,-255488.75,-16056.497,-1936849,-2406546.5,-2067914.3,-1323464.6,-1869163.7,-2035845.1,836522.31,756176.24,48244.512};
-ST(0.020473685,0.087577432,0,0.01318623,0.084416193,0,0.019499739,0.079597209,0){2087024.2,1411871.7,2040354.6,451292.51,378554.62,702945.71,-1538224.3,-931831.12,-1095289.5,-2322280.1,-1560266,-2175701.2,-1286407.6,-1046999.7,-1830384.7};
-ST(0.087331535,0.0958472,0,0.086838536,0.10220901,0,0.079063451,0.10043005,0){1318484.3,1341203.8,2051820.1,98077.228,-54099.381,-16056.497,-1213131.9,-1393108.8,-2067914.3,-1401481.2,-1282822.5,-2035845.1,-292629.72,161880.97,48244.512};
-ST(0.019247887,0.048569646,0,0.013132659,0.04767246,0,0.017433092,0.042090914,0){2135187.8,1507774.2,1971771.3,1594654.5,1139737.5,1594855,650408.09,493500.09,913057.13,-458538.7,-273193.01,56690.05,-1451674.1,-973395.4,-810753.02};
-ST(0.071000103,0.28243589,0,0.06660802,0.27624666,0,0.074931673,0.27468874,0){281581.81,417349.44,363389.18,-835250.62,-1226359.7,-1064791.9,1360764.9,1959900.4,1691857.9,-1840418.5,-2572844.1,-2200836.4,2257916.8,3027289.2,2556129.1};
-ST(0.076796159,0.2234596,0,0.084319616,0.22565969,0,0.078984823,0.22953004,0){1008421.8,696453.76,858343.29,-2411357.4,-1688204.7,-2128428.8,2346331.8,1707540.6,2291087.1,-852928.84,-743250.94,-1261656.1,-1160000.7,-649719.93,-424553.92};
-ST(0.087083587,0.13880919,0,0.081009521,0.1385969,0,0.083559522,0.13424014,0){1144744.3,1630909.4,1462145.4,-877072.07,-1242340.3,-981746.52,-1349889.8,-1926924,-1784737.2,561444.4,783271.16,395362.65,1481228.8,2113542.9,1914407.3};
-ST(0,0.057142857,0,0.004777904,0.053197076,0,0.0079950318,0.059686314,0){0,557925.04,917766.47,0,389224.92,570756.35,0,102822.82,7912.4367,0,-214698.3,-557994.72,0,-467537.22,-913265.38};
-ST(0.0079950318,0.059686314,0,0.0062494098,0.068021592,0,0,0.064285714,0){917766.47,709501.16,0,570756.35,364477.97,0,7912.4367,-157824.6,0,-557994.72,-603457.47,0,-913265.38,-756039.79,0};
-ST(0.041057987,0.068843254,0,0.047469022,0.070467195,0,0.041803352,0.076750149,0){3488848.8,3608010.8,3453761.9,1752771.3,1730907.5,1340279.2,-855539,-1046792,-1593440.1,-3038218.5,-3280034.9,-3552303.7,-3709409.4,-3807136.9,-3337911.6};
-ST(0.0071591483,0.096788703,0,0.0067127961,0.088875219,0,0.013428016,0.091778472,0){756711.76,725937.81,1408980.1,43634.951,141227.93,204626.15,-710572.63,-557260.38,-1174648.8,-795194.2,-806944.34,-1549888.7,-130859.45,-406936.37,-600683.83};
-ST(0.081119523,0.0085521597,0,0.074656208,0.0053403125,0,0.078571429,0,0){2167108.8,2772385.5,2419478.6,2149779.2,2763721.5,2419535.2,2115263.6,2746414.1,2419645.1,2063869.7,2720533.7,2419827.2,1995657.9,2685936.9,2420024.4};
-ST(0.078571429,0.3,0,0.074657371,0.29452352,0,0.081165886,0.29137431,0){0,79525.554,97729.953,0,-238312.39,-292395.17,0,396309.36,484687.71,0,-552992.95,-673055.06,0,707611.71,855744.16};
-ST(0.082332164,0.023444943,0,0.078020383,0.017034313,0,0.085905658,0.016824409,0){2029600,2461848.1,1656238,1907886.4,2383750.6,1604967.9,1671751.1,2230032.5,1504009.2,1335359.8,2005590.6,1356492.3,918760.81,1717239.5,1166855};
-ST(0.08596482,0.28314521,0,0.078222118,0.28277283,0,0.082516133,0.27647665,0){145967.81,220930.92,248899.48,-433371.98,-655625.13,-731674.12,707326.96,1069057.6,1170289.2,-959333.22,-1447830.3,-1538273.3,1181452.3,1779434.3,1813237.5};
-ST(0.072908259,0.24139656,0,0.078142774,0.24370973,0,0.071915087,0.24816524,0){881474.92,714639.7,803363.84,-2322734,-1902709.3,-2179152.4,2916335.3,2448578.4,2928525.2,-2445637.4,-2167997.3,-2836050.6,1082242,1155455.3,1927975};
-ST(0.010955873,0.10281868,0,0.013714026,0.097839388,0,0.017861336,0.10270337,0){1124212.8,1412613.2,1773538.4,-57954.543,55008.627,-87655.931,-1179275.3,-1355500.2,-1856823.6,-1060620.9,-1463354,-1677437.3,173274.75,-165174.7,261812.45};
-ST(0,0.092857143,0,0.0067127961,0.088875219,0,0.0071591483,0.096788703,0){0,725937.81,756711.76,0,141227.93,43634.951,0,-557260.38,-710572.63,0,-806944.34,-795194.2,0,-406936.37,-130859.45};
-ST(0.081656406,0.2108727,0,0.086709216,0.20730703,0,0.089437553,0.21298247,0){951384.03,734117.03,556322.48,-2083808.1,-1563285.8,-1238115.4,1528962.6,1031586.7,961021.23,263916.4,398134,60411.18,-1843401,-1481512.9,-1035404.3};
-ST(0.033761495,0.088496681,0,0.030017634,0.093495078,0,0.027903545,0.087518505,0){3029395.9,2771844.6,2674848,608605.12,320378.42,580994.77,-2298547.5,-2414486.4,-1967676.8,-3368980,-3014031.4,-2976106,-1747439.7,-948223.96,-1655065.1};
-ST(0.073708403,0.21517194,0,0.076796159,0.2234596,0,0.069002793,0.22246209,0){1225969.3,1008421.8,1267491.2,-2772471.1,-2411357.4,-3011719.2,2271379.1,2346331.8,2877058.6,-92677.622,-852928.84,-947533.34,-2155133.8,-1160000.7,-1573376.1};
-ST(0.072126291,0.10515927,0,0.065931692,0.10408722,0,0.069968451,0.098831219,0){2539730.3,2911358.9,2730411,-241283.81,-218409.17,57648.531,-2758172.2,-3113407,-2671597.7,-2254933.2,-2661455,-2785714.6,717337.89,651464.78,-173126.8};
-ST(0.066401409,0.0434645,0,0.073234584,0.04253025,0,0.06961584,0.048915995,0){3289675.8,2820532.7,3063466,2619840.6,2270240.9,2277085.6,1416557.6,1277003.9,906160.93,-75156.319,34586.382,-697426.19,-1551772,-1214797.7,-2122325.6};
-ST(0.06961584,0.048915995,0,0.073234584,0.04253025,0,0.077364239,0.048764008,0){3063466,2820532.7,2450679,2277085.6,2270240.9,1825420.5,906160.93,1277003.9,734405.59,-697426.19,34586.382,-544039.45,-2122325.6,-1214797.7,-1683943.8};
-ST(0.030017634,0.093495078,0,0.024499807,0.092422798,0,0.027903545,0.087518505,0){2771844.6,2390452.1,2674848,320378.42,320672.29,580994.77,-2414486.4,-2026771.7,-1967676.8,-3014031.4,-2619357.9,-2976106,-948223.96,-944222.72,-1655065.1};
-ST(0.079265602,0.086677581,0,0.081743274,0.092625466,0,0.07492972,0.092844339,0){2114636.1,1862860,2431427.6,488789.06,243386.47,308451.38,-1512904.7,-1587731,-2083891.4,-2351470.6,-2038652.4,-2656803.1,-1382326.1,-717394.49,-910298.79};
-ST(0.083969261,0.16737329,0,0.083337094,0.16031526,0,0.088381846,0.16289419,0){1198489.7,1295652.6,911153.68,-1632158.2,-1575018.8,-1156470.7,-607916.58,-956036.82,-599768.12,1852187.2,1781183.7,1317920.1,-62490.334,571788.58,244888.24};
-ST(0,0.071428571,0,0.0060853536,0.074713803,0,0,0.078571429,0){0,681675.12,0,0,285253.65,0,0,-277070.48,0,0,-678306.76,0,0,-685312.86,0};
-ST(0.0068768393,0.16098373,0,0.014502412,0.16316663,0,0.0094805882,0.16707285,0){553409.29,1121335,730151.01,-680450.71,-1429592.9,-989834.58,-397156.36,-728363.13,-378084.11,771605.48,1629901.1,1124284.7,219690.78,280110.31,-22095.939};
-ST(0.09123018,0.070922096,0,0.085646934,0.067722415,0,0.09230899,0.063522919,0){983713.53,1585902.9,877619.52,465586.72,821166.94,503392.8,-297764.17,-339583.13,-85524.836,-904277.98,-1336670.3,-638068.15,-1034644.8,-1689538.4,-918939.46};
-ST(0.09230899,0.063522919,0,0.085646934,0.067722415,0,0.08415119,0.061061125,0){877619.52,1585902.9,1759442.9,503392.8,821166.94,1064240.3,-85524.836,-339583.13,-51487.645,-638068.15,-1336670.3,-1146904.2,-918939.46,-1689538.4,-1789550.6};
-ST(0.035619257,0.12028764,0,0.040442009,0.11996282,0,0.038464606,0.12667013,0){2821397.9,2999410,2859316.3,-1093830.4,-1143461.2,-1476046.2,-3491178.8,-3706983.7,-3573486.5,-1043884.2,-1150363.3,-252868.56,2851838.9,2995190.5,3451249.3};
-ST(0.038464606,0.12667013,0,0.040442009,0.11996282,0,0.045375723,0.12284566,0){2859316.3,2999410,3072436,-1476046.2,-1143461.2,-1348503.3,-3573486.5,-3706983.7,-3829159.4,-252868.56,-1150363.3,-800055.99,3451249.3,2995190.5,3380414.3};
-ST(0.051167355,0.022914381,0,0.054261983,0.029107824,0,0.048866761,0.029559705,0){3850137.8,3801269,3831772.8,3629520.4,3450822.2,3467532.3,3200919.1,2782228.4,2773676.3,2588908.3,1857139.4,1816186,1828396.4,760852.59,685852.4};
-ST(0,0.15714286,0,0.0056981356,0.15371602,0,0.0068768393,0.16098373,0){0,478995.44,553409.29,0,-516269.88,-680450.71,0,-438816.38,-397156.36,0,550400.04,771605.48,0,395913.98,219690.78};
-ST(0.029380008,0.16405835,0,0.036146522,0.16944297,0,0.030623168,0.1713445,0){2021292.5,2222447.1,1985985.4,-2614335.2,-3121229.8,-2866418.8,-1254306.4,-960241.74,-715248.18,2982541.3,3509731.4,3183566.3,378860.61,-459324.98,-696442.05};
-ST(0.038427921,0.16264679,0,0.036146522,0.16944297,0,0.029380008,0.16405835,0){2389351.9,2222447.1,2021292.5,-3020403.6,-3121229.8,-2614335.2,-1591681.4,-960241.74,-1254306.4,3440909.6,3509731.4,2982541.3,682723.32,-459324.98,378860.61};
-ST(0.057707972,0.025075094,0,0.054261983,0.029107824,0,0.051167355,0.022914381,0){3734947.8,3801269,3850137.8,3478918.2,3450822.2,3629520.4,2984396.6,2782228.4,3200919.1,2285289.9,1857139.4,2588908.3,1429238.8,760852.59,1828396.4};
-ST(0.033039341,0.023173825,0,0.029163144,0.015558324,0,0.038009007,0.015147577,0){3318087.9,3068207,3597209.6,3123656.1,2986953.6,3506943.3,2746181,2826596.5,3328697.3,2207795.9,2591406.1,3067010.9,1539940.3,2287504.7,2728518.9};
-ST(0.0071428571,0.3,0,0.010662343,0.29482959,0,0.014285714,0.3,0){0,34537.041,0,0,-103506.64,0,0,172164.12,0,0,-240303.04,0,0,307518.14,0};
-ST(0.014285714,0,0,0.010679145,0.0052482016,0,0.0071428571,0,0){1683701.5,1277155.8,863498.79,1683671.3,1273289.3,863505.11,1683611.9,1265566.3,863516.31,1683542.6,1254019.7,863538.53,1683226,1238493.9,863596.62};
-ST(0.0078195435,0.14622426,0,0.0056981356,0.15371602,0,0,0.15,0){680366.1,478995.44,0,-626541.18,-516269.88,0,-729870.69,-438816.38,0,568744.13,550400.04,0,774663.29,395913.98,0};
-ST(0.062195955,0.11505156,0,0.06715469,0.10983132,0,0.069025318,0.11622387,0){2965673.8,2794834,2631986.5,-843057.19,-512277.78,-808686.45,-3569130.8,-3213264.7,-3192250.9,-1711501.2,-2112070.8,-1402768.4,2344130.4,1488257.3,2220554.1};
-ST(0.010955873,0.10281868,0,0.0052460498,0.10332732,0,0.0071591483,0.096788703,0){1124212.8,545715.18,756711.76,-57954.543,-33256.292,43634.951,-1179275.3,-576983.54,-710572.63,-1060620.9,-508602.25,-795194.2,173274.75,99155.047,-130859.45};
-ST(0.059054943,0.066788508,0,0.064846874,0.068845861,0,0.061098586,0.072147464,0){3499189.3,3243292.3,3389933,1856149.2,1629296.1,1545196.6,-658492.2,-795531.06,-1140417.3,-2864039.1,-2824516.6,-3205469.9,-3725081.1,-3448034.5,-3526423.9};
-ST(0.064832361,0.062804408,0,0.064846874,0.068845861,0,0.059054943,0.066788508,0){3281120.4,3243292.3,3499189.3,1912310.8,1629296.1,1856149.2,-254314.65,-795531.06,-658492.2,-2314932.7,-2824516.6,-2864039.1,-3410309.6,-3448034.5,-3725081.1};
-ST(0.016702178,0.061420197,0,0.012193394,0.066188359,0,0.0079950318,0.059686314,0){1844408.3,1364188,917766.47,1107331.1,734639.92,570756.35,-72241.295,-233939.49,7912.4367,-1222910.6,-1094586.7,-557994.72,-1885264.1,-1450385,-913265.38};
-ST(0.029380008,0.16405835,0,0.025851591,0.17077962,0,0.020973714,0.16688371,0){2021292.5,1763476.8,1525118.3,-2614335.2,-2524912.6,-2061659.5,-1254306.4,-673288.62,-799875.51,2982541.3,2815714.9,2343184.8,378860.61,-542697.73,-24581.749};
-ST(0.045331711,0.23557633,0,0.037546984,0.23452457,0,0.041402067,0.22952626,0){1270563.3,1205921.7,1348916.4,-3255008.9,-3072707.6,-3344816,3813331,3550700.1,3600200.4,-2700862,-2423829.8,-1982154,404484.48,201013.93,-667743.82};
-ST(0.018343869,0.21720619,0,0.02301506,0.22157032,0,0.017207343,0.22323305,0){888277.19,1025043.6,781289.63,-2037897.4,-2421684.9,-1865590.4,1749211,2274566.1,1807835.2,-225952.88,-677461.35,-643322.1,-1457259.1,-1351813.7,-915362.92};
-ST(0.02463475,0.21609565,0,0.02301506,0.22157032,0,0.018343869,0.21720619,0){1153636.1,1025043.6,888277.19,-2626116.1,-2421684.9,-2037897.4,2198315,2274566.1,1749211,-179791.92,-677461.35,-225952.88,-1969098.8,-1351813.7,-1457259.1};
-ST(0.077318805,0.23627719,0,0.070607657,0.23670872,0,0.07180958,0.22984275,0){830868.27,1007105.3,1079159.6,-2136157.9,-2594870.8,-2680718.2,2525048.7,3083897.2,2899261.6,-1830714.2,-2267120.1,-1622013.4,350702.19,490193.02,-492395.98};
-ST(0.0071147476,0.24137211,0,0.0043813653,0.24702694,0,0,0.24285714,0){259907.57,145794.38,0,-684802.64,-393661.32,0,859611.54,523477.05,0,-720499.62,-496310.62,0,317972.39,320224.07,0};
-ST(0.079265602,0.086677581,0,0.075872285,0.081656016,0,0.082390534,0.079333541,0){2114636.1,2427639,1865676.5,488789.06,758134.07,650380.91,-1512904.7,-1432759.9,-988603.29,-2351470.6,-2638364.3,-1983689.6,-1382326.1,-2029677.1,-1686881.4};
-ST(0,0.17142857,0,0.0069613667,0.17349451,0,0,0.17857143,0){0,517779.21,0,0,-769992.03,0,0,-142713.64,0,0,839532.94,0,0,-266340.1,0};
-ST(0.038009007,0.015147577,0,0.043829005,0.011024747,0,0.046063037,0.016810165,0){3597209.6,3801549.1,3836060.2,3506943.3,3750937.1,3717529.2,3328697.3,3650381.9,3484126.2,3067010.9,3501249.8,3143090.2,2728518.9,3305260.3,2704667.4};
-ST(0.025221599,0.062165695,0,0.027058874,0.069011929,0,0.01882241,0.070374011,0){2618029.3,2727323.5,2018056.9,1547191.2,1363815.9,970762.8,-156575.4,-681543.48,-580354.6,-1796512.5,-2386220.5,-1830388.5,-2702051.5,-2898415.6,-2130853.3};
-ST(0.077393474,0.16425214,0,0.083337094,0.16031526,0,0.083969261,0.16737329,0){1650679.7,1295652.6,1198489.7,-2141613.9,-1575018.8,-1632158.2,-1013799.5,-956036.82,-607916.58,2443278.1,1781183.7,1852187.2,287063.28,571788.58,-62490.334};
-ST(0.05288218,0.14757716,0,0.054237851,0.14012792,0,0.061244461,0.14481879,0){2767228.4,2856617.8,2643484.5,-2626819.9,-2267029,-2356788.3,-2900596.1,-3324577.4,-2899198.4,2479722.6,1580891.3,2042509.4,3026446,3650971.5,3121060.9};
-ST(0.047918899,0.14257657,0,0.054237851,0.14012792,0,0.05288218,0.14757716,0){2842478.3,2856617.8,2767228.4,-2400971.6,-2267029,-2626819.9,-3215455,-3324577.4,-2900596.1,1901551.7,1580891.3,2479722.6,3510918.5,3650971.5,3026446};
-ST(0.026018946,0.14387862,0,0.022775714,0.15147437,0,0.017312959,0.14496605,0){2064539,1786181.8,1456929,-1800072.3,-1841345.2,-1303417.8,-2295230.1,-1729359.8,-1594293.7,1506177.8,1894858,1135517.7,2488196.2,1670732.8,1713822.2};
-ST(0,0.042857143,0,0.0064812773,0.046734878,0,0,0.05,0){0,761350.4,0,0,582610.88,0,0,267082.8,0,0,-111174.21,0,0,-463416.67,0};
-ST(0.024008584,0.022367291,0,0.029163144,0.015558324,0,0.033039341,0.023173825,0){2639060.6,3068207,3318087.9,2494948.4,2986953.6,3123656.1,2214593.6,2826596.5,2746181,1813324.4,2591406.1,2207795.9,1312931.3,2287504.7,1539940.3};
-ST(0.053497526,0.1329974,0,0.052058531,0.12554764,0,0.059246105,0.12763558,0){2959143.9,3065498.6,2918223.5,-1911000.9,-1512626.5,-1563762.3,-3636096,-3831818,-3644117.3,623103.97,-428428.64,-127593.52,3857035.6,3614977.4,3585046};
-ST(0.020973714,0.16688371,0,0.014502412,0.16316663,0,0.021502186,0.15931359,0){1525118.3,1121335,1630158.4,-2061659.5,-1429592.9,-1947614.2,-799875.51,-728363.13,-1250943.8,2343184.8,1629901.1,2191316.6,-24581.749,280110.31,824223.66};
-ST(0.083292987,0.24598228,0,0.078142774,0.24370973,0,0.084206466,0.24009781,0){542685.82,714639.7,569988.38,-1458992.1,-1902709.3,-1492933.9,1920780.7,2448578.4,1847439,-1784182,-2167997.3,-1498530.8,1091638.2,1155455.3,578923.58};
-ST(0.039686874,0.0066116125,0,0.043829005,0.011024747,0,0.038009007,0.015147577,0){3676489.9,3801549.1,3597209.6,3658909.3,3750937.1,3506943.3,3623831.1,3650381.9,3328697.3,3571457.2,3501249.8,3067010.9,3501797.4,3305260.3,2728518.9};
-ST(0,0.085714286,0,0.0067127961,0.088875219,0,0,0.092857143,0){0,725937.81,0,0,141227.93,0,0,-557260.38,0,0,-806944.34,0,0,-406936.37,0};
-ST(0.036602132,0.28491153,0,0.043131118,0.28864457,0,0.03928574,0.29335694,0){279518.56,225252.57,127378.94,-831596.18,-672574.82,-381522.06,1362985.6,1110400.5,633829.06,-1860498.2,-1532552.2,-883092.25,2311728.5,1932837.8,1127859.7};
-ST(0.023478597,0.036718106,0,0.021348697,0.029751655,0,0.028359285,0.029784535,0){2561783.8,2382657.5,2981166.2,2187675.4,2153252.9,2693525.9,1494080.3,1716520.5,2145980.7,582277.59,1114508.8,1391347.7,-414804.14,404958.41,502245.34};
-ST(0.014305262,0.26641769,0,0.013885016,0.25805955,0,0.021957304,0.26060316,0){294901.31,357160.64,505833.44,-848621.76,-1003688.5,-1432636.8,1298521.9,1459712.7,2119105.6,-1589572.3,-1638678.7,-2450095.8,1686004.5,1506406.6,2369995.8};
-ST(0.050960377,0.23252058,0,0.056766116,0.23329497,0,0.052478219,0.23860916,0){1342135.9,1298096.4,1222305.6,-3383651.2,-3286228.7,-3178913.4,3804738.6,3735031.6,3866354.4,-2403721.7,-2434254.7,-3010118,-148681.88,-7070.0355,951644.63};
-ST(0.027746664,0.13122119,0,0.033010101,0.13109378,0,0.030046638,0.13690443,0){2296333.1,2584208,2369378.2,-1399007.9,-1567613,-1721516.8,-2843055.5,-3200932.4,-2840145.3,288094.78,308418.11,944948.24,2955532.6,3322264.5,3098367.4};
-ST(0.030046638,0.13690443,0,0.033010101,0.13109378,0,0.038217426,0.13599196,0){2369378.2,2584208,2738753.8,-1721516.8,-1567613,-1938161,-2840145.3,-3200932.4,-3305386.1,944948.24,308418.11,972060.89,3098367.4,3322264.5,3589652.3};
-ST(0.077140734,0.17217741,0,0.072573599,0.16764459,0,0.077393474,0.16425214,0){1584233.7,1881427.5,1650679.7,-2313491.7,-2572760.4,-2141613.9,-519338.58,-936075.04,-1013799.5,2552719.3,2916777.1,2443278.1,-655929.75,-135849.37,287063.28};
-ST(0.071059851,0.17209017,0,0.072573599,0.16764459,0,0.077140734,0.17217741,0){1900690.4,1881427.5,1584233.7,-2772233.4,-2572760.4,-2313491.7,-629520.98,-936075.04,-519338.58,3060958.1,2916777.1,2552719.3,-774142.34,-135849.37,-655929.75};
-ST(0.1,0.22142857,0,0.095652827,0.22622146,0,0.091864029,0.22106993,0){0,199039.37,394005.54,0,-484109.58,-927852.61,0,494313.66,863120.02,0,-223837.82,-241435.16,0,-173819.74,-536498.87};
-ST(0.0067127961,0.088875219,0,0.01318623,0.084416193,0,0.013428016,0.091778472,0){725937.81,1411871.7,1408980.1,141227.93,378554.62,204626.15,-557260.38,-931831.12,-1174648.8,-806944.34,-1560266,-1549888.7,-406936.37,-1046999.7,-600683.83};
-ST(0.034786476,0.1076516,0,0.038084092,0.1145524,0,0.030466665,0.11568191,0){2912738.3,2981407.2,2608170,-413135.58,-818508.93,-773675.45,-3267374.9,-3575257.7,-3152461.4,-2390915.6,-1775238,-1443702.3,1215377.6,2287308.3,2136967.4};
-ST(0.1,0.15714286,0,0.093710586,0.16080643,0,0.09308158,0.15403623,0){0,507346.27,579061.91,0,-621948.04,-628036.95,0,-366919.85,-525997.02,0,704920.6,672596.25,0,207593.47,469080.04};
-ST(0.0071428571,0,0,0.0045481906,0.0063920675,0,0,0,0){863498.79,552257.15,0,863505.11,549810.55,0,863516.31,544927.47,0,863538.53,537633.65,0,863596.62,527798.54,0};
-ST(0,0,0,0.0045481906,0.0063920675,0,0,0.0071428571,0){0,552257.15,0,0,549810.55,0,0,544927.47,0,0,537633.65,0,0,527798.54,0};
-ST(0,0.29285714,0,0.0045473776,0.2936365,0,0,0.3,0){0,18406.211,0,0,-55138.333,0,0,91630.552,0,0,-127724.83,0,0,162961.08,0};
-ST(0,0.3,0,0.0045473776,0.2936365,0,0.0071428571,0.3,0){0,18406.211,0,0,-55138.333,0,0,91630.552,0,0,-127724.83,0,0,162961.08,0};
-ST(0.092295863,0.26000779,0,0.095492809,0.25375881,0,0.1,0.25714286,0){193329.27,131307.15,0,-546576.12,-363726.6,0,805368.84,512510.07,0,-924990.4,-543451.99,0,884724.5,449348.78,0};
-ST(0.1,0.042857143,0,0.095360834,0.0462161,0,0.092141527,0.03991184,0){0,547145.45,927649.93,0,421466.87,767955.56,0,198977.54,476054.53,0,-69217.008,102192.68,0,-321602.09,-289378.9};
-ST(0.017861336,0.10270337,0,0.013465065,0.10662372,0,0.010955873,0.10281868,0){1773538.4,1351132.7,1124212.8,-87655.931,-165451.82,-57954.543,-1856823.6,-1496410,-1179275.3,-1677437.3,-1147793.4,-1060620.9,261812.45,489093.12,173274.75};
-ST(0.029690249,0.19362013,0,0.034128539,0.18892309,0,0.036160627,0.1953007,0){1647856.1,1872288.6,1834250.2,-3101495.4,-3356683.8,-3509998.2,1088093.1,788949.65,1372423.7,2141745.7,2731311.2,2256297.6,-2977851,-2954777.5,-3434247.7};
-ST(0.070175425,0.16144206,0,0.065117308,0.15657509,0,0.070477538,0.15360968,0){2074683.8,2354870.2,2153625.7,-2570674.4,-2678881.2,-2316413.6,-1460177,-1986291.9,-1978592.7,2919916.2,2952219.2,2466066.8,762077.82,1580034,1792310.4};
-ST(0.061476805,0.16269562,0,0.065117308,0.15657509,0,0.070175425,0.16144206,0){2391378.9,2354870.2,2074683.8,-3025373.1,-2678881.2,-2570674.4,-1589341.3,-1986291.9,-1460177,3446908.2,2952219.2,2919916.2,675366.83,1580034,762077.82};
-ST(0.016702178,0.061420197,0,0.014691551,0.054118398,0,0.021658338,0.054940441,0){1844408.3,1659245.8,2341024.9,1107331.1,1140472.1,1587273.2,-72241.295,265092.56,322446.89,-1222910.6,-693242.8,-1046241,-1885264.1,-1435183.5,-2078353.5};
-ST(0.029690249,0.19362013,0,0.023309936,0.19197185,0,0.027249449,0.18607819,0){1647856.1,1390526.6,1646413.8,-3101495.4,-2573914.4,-2861109.6,1088093.1,799964.88,464444.42,2141745.7,1893175.4,2518610.9,-2977851,-2411477.9,-2323177.4};
-ST(0.030217898,0.25971254,0,0.033025927,0.25326882,0,0.037705658,0.25939989,0){660621.26,809560.38,758443.36,-1866014.4,-2238649.8,-2140288.6,2744196,3142273.3,3141072.6,-3141188.1,-3308331.9,-3582615.2,2987009.7,2697705.3,3385872.9};
-ST(0.037705658,0.25939989,0,0.033025927,0.25326882,0,0.039157325,0.25334591,0){758443.36,809560.38,884627.38,-2140288.6,-2238649.8,-2446896,3141072.6,3142273.3,3436661.2,-3582615.2,-3308331.9,-3622356.9,3385872.9,2697705.3,2960330.2};
-ST(0.072908259,0.24139656,0,0.070607657,0.23670872,0,0.077318805,0.23627719,0){881474.92,1007105.3,830868.27,-2322734,-2594870.8,-2136157.9,2916335.3,3083897.2,2525048.7,-2445637.4,-2267120.1,-1830714.2,1082242,490193.02,350702.19};
-ST(0.013229009,0.21171696,0,0.0051799073,0.21317882,0,0.007303543,0.20469543,0){698716.07,276031.48,422375.13,-1540332.8,-615227.88,-880191.16,1156621.3,479976.29,531663.92,147278.69,25450.705,303952.91,-1334554.8,-511551.59,-861341.37};
-ST(0.047918899,0.14257657,0,0.045364072,0.14896511,0,0.041319833,0.14315875,0){2842478.3,2729630.7,2735557.7,-2400971.6,-2670475.8,-2343944,-3215455,-2787568.3,-3071175.4,1901551.7,2610132.2,1904337.3,3510918.5,2844182.1,3343927.4};
-ST(0.035714286,0,0,0.031710863,0.0075461758,0,0.028571429,0,0){3496308.9,3254919.5,3033980.1,3496337.7,3234618.2,3033983.4,3496399.5,3194153.7,3033988.7,3496538.6,3133832.1,3034024.4,3496562.8,3053845.3,3033982.5};
-ST(0.028571429,0.3,0,0.031264826,0.29263185,0,0.035714286,0.3,0){0,124484.17,0,0,-372709.78,0,0,618717.86,0,0,-861054.65,0,0,1098239.8,0};
-ST(0.077069107,0.15686929,0,0.083337094,0.16031526,0,0.077393474,0.16425214,0){1743907.9,1295652.6,1650679.7,-1994600,-1575018.8,-2141613.9,-1457243.4,-956036.82,-1013799.5,2204191.1,1781183.7,2443278.1,1140253.2,571788.58,287063.28};
-ST(0.032036001,0.10024616,0,0.030017634,0.093495078,0,0.03690243,0.09394169,0){2837469.6,2771844.6,3135041.5,-12660.65,320378.42,337961.95,-2850146.6,-2414486.4,-2760700,-2824890.6,-3014031.4,-3396384.7,37524.098,-948223.96,-1002139.6};
-ST(0.091953893,0.078440357,0,0.095795895,0.073622969,0,0.1,0.078571429,0){889726.23,473503.74,0,322434.75,205720.2,0,-450550.32,-178405.32,0,-936443.15,-461642.03,0,-825354.72,-483922.03,0};
-ST(0.084206466,0.24009781,0,0.078142774,0.24370973,0,0.077318805,0.23627719,0){569988.38,714639.7,830868.27,-1492933.9,-1902709.3,-2136157.9,1847439,2448578.4,2525048.7,-1498530.8,-2167997.3,-1830714.2,578923.58,1155455.3,350702.19};
-ST(0.021502186,0.15931359,0,0.022775714,0.15147437,0,0.027609688,0.15620978,0){1630158.4,1786181.8,2023546.1,-1947614.2,-1841345.2,-2286520.9,-1250943.8,-1729359.8,-1726415,2191316.6,1894858,2510934.9,824223.66,1670732.8,1400022.9};
-ST(0.0066871595,0.19241823,0,0.005051806,0.19767546,0,0,0.19285714,0){432113.5,313084.45,0,-803518.34,-612892.85,0,258472.73,273796.53,0,581490.34,350786.74,0,-758588.26,-609909.8,0};
-ST(0.013878694,0.17880836,0,0.014405512,0.17061143,0,0.020636298,0.17424253,0){971566.52,1063653,1433869.3,-1548960.4,-1519257.6,-2154082.5,-51095.574,-412907.51,-351921.61,1579530,1696192.6,2330929.4,-887966.26,-313907.63,-819073.82};
-ST(0.02133326,0.24577003,0,0.013821768,0.24617185,0,0.015758122,0.23699049,0){675269.21,454053.45,597291.98,-1813848.4,-1221678.8,-1541119.1,2383092.9,1611329.8,1837947.1,-2204305.3,-1502439.1,-1363109.4,1333319.6,928515.88,315646.37};
-ST(0.049721881,0.27094787,0,0.055001581,0.27169863,0,0.051703203,0.27754162,0){588018.61,565900.8,454636.43,-1710042.9,-1648356.5,-1338881.7,2675009.8,2587095.5,2149437.1,-3394309,-3300283.2,-2841702,3801713.7,3725567.5,3377384.9};
-ST(0.030490983,0.2108424,0,0.036840853,0.20596239,0,0.038843793,0.21103197,0){1428644.1,1679916.9,1637090.1,-3128471,-3538121.9,-3590120.4,2293671,2233718.4,2645890.8,399562.24,1067350,433646.44,-2769801.9,-3414669.4,-3163532.2};
-ST(0.028678488,0.042143634,0,0.030602087,0.036163623,0,0.03663522,0.040674234,0){2968313.4,3125169.1,3463485.9,2399521.8,2682310.4,2844620.6,1370917.4,1859340.6,1717431.6,79587.615,772883.67,283267.24,-1227272.3,-423255.99,-1201989.6};
-ST(0,0.25,0,0.0060491453,0.25298129,0,0,0.25714286,0){0,178654.23,0,0,-493529.07,0,0,691183.17,0,0,-724662.05,0,0,585970.08,0};
-ST(0.024044461,0.20382537,0,0.025476801,0.19755762,0,0.03163445,0.20120488,0){1283805.9,1423125.8,1608414.7,-2655634.7,-2782737.9,-3251875.6,1553893.8,1235431.1,1714266.6,995311.88,1602470.1,1500504,-2617892.2,-2766638.2,-3248047};
-ST(0.065478411,0.24860928,0,0.066600159,0.24211306,0,0.071915087,0.24816524,0){912058.17,1004296.2,803363.84,-2478342.9,-2655015,-2179152.4,3344041.2,3359675.2,2928525.2,-3264436.9,-2867211.3,-2836050.6,2261773.6,1352854.8,1927975};
-ST(0.071915087,0.24816524,0,0.066600159,0.24211306,0,0.072908259,0.24139656,0){803363.84,1004296.2,881474.92,-2179152.4,-2655015,-2322734,2928525.2,3359675.2,2916335.3,-2836050.6,-2867211.3,-2445637.4,1927975,1352854.8,1082242};
-ST(0.032036001,0.10024616,0,0.039702853,0.10111678,0,0.034786476,0.1076516,0){2837469.6,3175586.8,2912738.3,-12660.65,-64516.934,-413135.58,-2850146.6,-3238866.3,-3267374.9,-2824890.6,-3108635.2,-2390915.6,37524.098,193445.51,1215377.6};
-ST(0.047556344,0.24377674,0,0.049037582,0.25027532,0,0.043027686,0.24899973,0){1122639.4,998508.07,999522.33,-2989881.7,-2730849.8,-2720190.5,3850350.4,3739350.2,3683283.3,-3414324.1,-3756698.7,-3620573.8,1828478.4,2778087.3,2549278.8};
-ST(0.070865224,0.080352924,0,0.075872285,0.081656016,0,0.072044079,0.08604506,0){2808030.6,2427639,2688599.4,934415.1,758134.07,649473.83,-1562677.5,-1432759.9,-1882262.6,-3017110.1,-2638364.3,-2986497.2,-2458745.5,-2029677.1,-1825996.4};
-ST(0.021957304,0.26060316,0,0.027951851,0.26533243,0,0.023009638,0.26878949,0){505833.44,539100.43,417665.14,-1432636.8,-1547025.6,-1208783.5,2119105.6,2353298.6,1871958.7,-2450095.8,-2852826.8,-2337004.8,2369995.8,2980285,2554445.3};
-ST(0.081004963,0.27070547,0,0.086077973,0.27164165,0,0.082516133,0.27647665,0){333174.81,243157.03,248899.48,-968418.7,-708191.99,-731674.12,1513258.3,1111255.9,1170289.2,-1916833.2,-1417072.6,-1538273.3,2141327.9,1598582.9,1813237.5};
-ST(0.082332164,0.023444943,0,0.085916752,0.02828,0,0.080699945,0.029142305,0){2029600,1643257.2,2185639.9,1907886.4,1500211.7,1983669.2,1671751.1,1226559.7,1598386.1,1335359.8,846114.35,1065401.8,918760.81,391827.49,433818.71};
-ST(0.047385855,0.10193045,0,0.052532368,0.096036702,0,0.054240748,0.10280037,0){3329666.7,3389506.1,3302360.6,-117239.93,240670.51,-169115.68,-3442848.4,-3131818.5,-3462856.5,-3204510.9,-3594959.1,-3116478.2,350991.89,-718569.73,505791.56};
-ST(0.012549176,0.077039569,0,0.01318623,0.084416193,0,0.0064539684,0.081629255,0){1370920.5,1411871.7,711139.06,525978.15,378554.62,222377.16,-643140.23,-931831.12,-419239.47,-1415881.7,-1560266,-772749.89,-1316306.1,-1046999.7,-595288.06};
-ST(0.054010827,0.25507988,0,0.060567191,0.25172758,0,0.060672356,0.25950081,0){897184.36,917440.34,771273.27,-2496661.6,-2522838.3,-2177172.3,3553831.7,3497206.6,3197356.1,-3839088.9,-3596815.5,-3651078,3290330.5,2796536,3457676.3};
-ST(0.060672356,0.25950081,0,0.060567191,0.25172758,0,0.066803853,0.25459223,0){771273.27,917440.34,789541.66,-2177172.3,-2522838.3,-2193455.3,3197356.1,3497206.6,3110738.9,-3651078,-3596815.5,-3337877,3457676.3,2796536,2824240.3};
-ST(0.092450683,0.030760689,0,0.085916752,0.02828,0,0.089183466,0.023798504,0){900007.85,1643257.2,1283383.3,807431.66,1500211.7,1204105.7,631804.95,1226559.7,1050439.6,391202.83,846114.35,831874.08,110124.82,391827.49,561630.79};
-ST(0.089232651,0.27618677,0,0.086077973,0.27164165,0,0.092520768,0.26920591,0){160151.6,243157.03,145042.72,-470555.02,-708191.99,-420173.4,751874.95,1111255.9,651988.34,-986723.61,-1417072.6,-816598.86,1160401.4,1598582.9,896908.09};
-ST(0.064373335,0.2338171,0,0.065627137,0.22734606,0,0.07180958,0.22984275,0){1185902.3,1270705.1,1079159.6,-3010536.1,-3111357.1,-2680718.2,3446119.8,3236198.8,2899261.6,-2291596.2,-1576358.2,-1622013.4,79206.699,-953054.66,-492395.98};
-ST(0.059957308,0.22757204,0,0.065627137,0.22734606,0,0.064373335,0.2338171,0){1366903.5,1270705.1,1185902.3,-3351367.9,-3111357.1,-3010536.1,3498598.8,3236198.8,3446119.8,-1727811.3,-1576358.2,-2291596.2,-990620.01,-953054.66,79206.699};
-ST(0.027609688,0.15620978,0,0.030440206,0.150204,0,0.034314476,0.15645926,0){2023546.1,2239650.6,2334400.9,-2286520.9,-2249230.7,-2649968.2,-1726415,-2230054.7,-1976247.7,2510934.9,2258843.4,2917237.1,1400022.9,2220211.9,1581967.4};
-ST(0.03690243,0.09394169,0,0.030017634,0.093495078,0,0.033761495,0.088496681,0){3135041.5,2771844.6,3029395.9,337961.95,320378.42,608605.12,-2760700,-2414486.4,-2298547.5,-3396384.7,-3014031.4,-3368980,-1002139.6,-948223.96,-1747439.7};
-ST(0.023478597,0.036718106,0,0.022876349,0.043626948,0,0.017433092,0.042090914,0){2561783.8,2488553.5,1971771.3,2187675.4,1978130.3,1594855,1494080.3,1061959.9,913057.13,582277.59,-72059.632,56690.05,-414804.14,-1191549.5,-810753.02};
-ST(0,0.064285714,0,0.0062494098,0.068021592,0,0,0.071428571,0){0,709501.16,0,0,364477.97,0,0,-157824.6,0,0,-603457.47,0,0,-756039.79,0};
-ST(0.020973714,0.16688371,0,0.025851591,0.17077962,0,0.020636298,0.17424253,0){1525118.3,1763476.8,1433869.3,-2061659.5,-2524912.6,-2154082.5,-799875.51,-673288.62,-351921.61,2343184.8,2815714.9,2330929.4,-24581.749,-542697.73,-819073.82};
-ST(0.075488644,0.14176328,0,0.081009521,0.1385969,0,0.08264437,0.14444108,0){1990888.2,1630909.4,1463951.5,-1647841.2,-1242340.3,-1293607.4,-2274843.7,-1926924,-1614532.1,1255935.2,783271.16,1105781,2491166.6,2113542.9,1743195.6};
-ST(0.01180171,0.25230222,0,0.013885016,0.25805955,0,0.0098751756,0.25600949,0){347512.04,357160.64,270470.11,-957611.77,-1003688.5,-755004.71,1333704.3,1459712.7,1082095.4,-1383899.6,-1638678.7,-1183544.7,1095718.6,1506406.6,1038261.4};
-ST(0.0064539684,0.081629255,0,0.01318623,0.084416193,0,0.0067127961,0.088875219,0){711139.06,1411871.7,725937.81,222377.16,378554.62,141227.93,-419239.47,-931831.12,-557260.38,-772749.89,-1560266,-806944.34,-595288.06,-1046999.7,-406936.37};
-ST(0.034786476,0.1076516,0,0.039702853,0.10111678,0,0.042557423,0.10832344,0){2912738.3,3175586.8,3183930.6,-413135.58,-64516.934,-492142.06,-3267374.9,-3238866.3,-3600076,-2390915.6,-3108635.2,-2551523.2,1215377.6,193445.51,1442840.6};
-ST(0.064373335,0.2338171,0,0.056766116,0.23329497,0,0.059957308,0.22757204,0){1185902.3,1298096.4,1366903.5,-3010536.1,-3286228.7,-3351367.9,3446119.8,3735031.6,3498598.8,-2291596.2,-2434254.7,-1727811.3,79206.699,-7070.0355,-990620.01};
-ST(0.071000103,0.28243589,0,0.069147655,0.28722413,0,0.063469548,0.28521738,0){281581.81,213884.16,273598.49,-835250.62,-637821.62,-814255.31,1360764.9,1050341,1335465.2,-1840418.5,-1444059.1,-1824812,2257916.8,1811586.6,2270429.1};
-ST(0.073754091,0.28851618,0,0.069147655,0.28722413,0,0.071000103,0.28243589,0){171229.59,213884.16,281581.81,-511212.67,-637821.62,-835250.62,843808.82,1050341,1360764.9,-1164215.8,-1444059.1,-1840418.5,1467609.3,1811586.6,2257916.8};
-ST(0.064075209,0.013493001,0,0.069232026,0.01217315,0,0.070691378,0.017050195,0){3498581.2,3187096.8,3076870.7,3428890.3,3135369.8,2979073.3,3290906.4,3032749.5,2786592,3087427.7,2880922.9,2505581.5,2822154,2682056.5,2144710.8};
-ST(0.070691378,0.017050195,0,0.069232026,0.01217315,0,0.073684623,0.0112317,0){3076870.7,3187096.8,2850123.3,2979073.3,3135369.8,2810738.2,2786592,3032749.5,2732509.2,2505581.5,2880922.9,2616540.6,2144710.8,2682056.5,2464223.2};
-ST(0.062992669,0.22303634,0,0.065627137,0.22734606,0,0.059957308,0.22757204,0){1396775.9,1270705.1,1366903.5,-3331109.7,-3111357.1,-3351367.9,3216330,3236198.8,3498598.8,-1122974.8,-1576358.2,-1727811.3,-1661551.4,-953054.66,-990620.01};
-ST(0.007303543,0.20469543,0,0.005051806,0.19767546,0,0.011268327,0.1984065,0){422375.13,313084.45,682302.12,-880191.16,-612892.85,-1344805.9,531663.92,273796.53,623458.07,303952.91,350786.74,739532.85,-861341.37,-609909.8,-1341727.7};
-ST(0.054876921,0.07294965,0,0.047469022,0.070467195,0,0.052494391,0.065958781,0){3558755.8,3608010.8,3640248,1580988.4,1730907.5,1971511.2,-1275447.3,-1046792,-601016.65,-3423192.1,-3280034.9,-2898090,-3669097.1,-3807136.9,-3866942};
-ST(0.041803352,0.076750149,0,0.047469022,0.070467195,0,0.049165273,0.076760106,0){3453761.9,3608010.8,3570137.5,1340279.2,1730907.5,1384898,-1593440.1,-1046792,-1648055.9,-3552303.7,-3280034.9,-3672308.6,-3337911.6,-3807136.9,-3449021.3};
-ST(0,0.23571429,0,0.0069516057,0.23320895,0,0.0071147476,0.24137211,0){0,288078.49,259907.57,0,-728952.19,-684802.64,0,827497.2,859611.54,0,-537397.4,-720499.62,0,-5267.3055,317972.39};
-ST(0.038597539,0.20095921,0,0.036840853,0.20596239,0,0.03163445,0.20120488,0){1801301.7,1679916.9,1608414.7,-3633864.6,-3538121.9,-3251875.6,1895634,2233718.4,1714266.6,1705394,1067350,1500504,-3630918.1,-3414669.4,-3248047};
-ST(0.033874053,0.071548869,0,0.041803352,0.076750149,0,0.032911969,0.081185013,0){3157862.8,3453761.9,3037931.3,1466537.3,1340279.2,971274.35,-1010259.7,-1593440.1,-1756226.8,-2946084.6,-3552303.7,-3289165.4,-3304540.6,-3337911.6,-2584916.3};
-ST(0.1,0.05,0,0.095360834,0.0462161,0,0.1,0.042857143,0){0,547145.45,0,0,421466.87,0,0,198977.54,0,0,-69217.008,0,0,-321602.09,0};
-ST(0.069025318,0.11622387,0,0.070840483,0.12204614,0,0.064276416,0.12183086,0){2631986.5,2470738.2,2809128.6,-808686.45,-1044803.2,-1175750.5,-3192250.9,-3073782.1,-3492840.6,-1402768.4,-729197.53,-855220.15,2220554.1,2652961,2995580.4};
-ST(0.1,0.25714286,0,0.095492809,0.25375881,0,0.1,0.25,0){0,131307.15,0,0,-363726.6,0,0,512510.07,0,0,-543451.99,0,0,449348.78,0};
-ST(0,0.11428571,0,0.0062042788,0.11791514,0,0,0.12142857,0){0,612847.32,0,0,-208741.13,0,0,-750565.55,0,0,-286207.66,0,0,561848.67,0};
-ST(0.092141527,0.03991184,0,0.095360834,0.0462161,0,0.08974924,0.047235181,0){927649.93,547145.45,1190814.4,767955.56,421466.87,905328.07,476054.53,198977.54,402804.56,102192.68,-69217.008,-196265.4,-289378.9,-321602.09,-748421.11};
-ST(0.090077759,0.25268961,0,0.095492809,0.25375881,0,0.092295863,0.26000779,0){291813.61,131307.15,193329.27,-805257.31,-363726.6,-546576.12,1125037.4,512510.07,805368.84,-1174248.1,-543451.99,-924990.4,940920.06,449348.78,884724.5};
-ST(0.054010827,0.25507988,0,0.049037582,0.25027532,0,0.054957014,0.24657048,0){897184.36,998508.07,1058545,-2496661.6,-2730849.8,-2852831,3553831.7,3739350.2,3777171.8,-3839088.9,-3756698.7,-3549694.2,3290330.5,2778087.3,2239441.1};
-ST(0,0.19285714,0,0.005051806,0.19767546,0,0,0.2,0){0,313084.45,0,0,-612892.85,0,0,273796.53,0,0,350786.74,0,0,-609909.8,0};
-ST(0.024938414,0.098415267,0,0.030017634,0.093495078,0,0.032036001,0.10024616,0){2383058.5,2771844.6,2837469.6,68195.72,320378.42,-12660.65,-2312962.3,-2414486.4,-2850146.6,-2447461.4,-3014031.4,-2824890.6,-204726.33,-948223.96,37524.098};
-ST(0.06966854,0.20076802,0,0.064671223,0.19505087,0,0.071449289,0.19423207,0){1570520.4,1815232.4,1594804.6,-3162888.4,-3465163,-3019964.8,1636334.6,1334352.3,1103926.4,1503948.1,2252470.6,2033518.7,-3161601.9,-3382100.5,-2921575.1};
-ST(0.060432552,0.20227914,0,0.064671223,0.19505087,0,0.06966854,0.20076802,0){1798951.1,1815232.4,1570520.4,-3671781.8,-3465163,-3162888.4,2023610.8,1334352.3,1636334.6,1565241.8,2252470.6,1503948.1,-3653837,-3382100.5,-3161601.9};
-ST(0.014210915,0.13228117,0,0.012365279,0.12660144,0,0.01788586,0.12850833,0){1289449.4,1158576.2,1616906.9,-813665.75,-596487.84,-895214.81,-1589638.3,-1447959.2,-2016472.2,227067.92,-105993.81,-4802.2192,1673024.3,1396357.8,2014144.7};
-ST(0.0072553778,0.13224921,0,0.012365279,0.12660144,0,0.014210915,0.13228117,0){674958.82,1158576.2,1289449.4,-425463.67,-596487.84,-813665.75,-832230.25,-1447959.2,-1589638.3,117822.57,-105993.81,227067.92,875622.71,1396357.8,1673024.3};
-ST(0.030575169,0.1246812,0,0.023379755,0.12686903,0,0.025139549,0.12057635,0){2526238.7,2047772.9,2224740.3,-1202245.8,-1065433.1,-875333.98,-3156412.2,-2558991,-2755721.9,-451924.48,-162203.53,-796179.51,2919641.1,2481221.5,2272644.8};
-ST(0.036160627,0.1953007,0,0.034128539,0.18892309,0,0.039366597,0.19088868,0){1834250.2,1872288.6,1982365.2,-3509998.2,-3356683.8,-3628592.6,1372423.7,788949.65,1030950.1,2256297.6,2731311.2,2772526.5,-3434247.7,-2954777.5,-3333638.5};
-ST(0.041319833,0.14315875,0,0.045364072,0.14896511,0,0.037897724,0.149701,0){2735557.7,2729630.7,2552043.8,-2343944,-2670475.8,-2536068.8,-3071175.4,-2787568.3,-2567975.2,1904337.3,2610132.2,2520076,3343927.4,2844182.1,2583694.6};
-ST(0.0058133292,0.032528446,0,0.0063343033,0.038958017,0,0,0.035714286,0){694559.72,751213.74,0,614750.96,627892.11,0,464300.7,401490.67,0,260495.38,109174.99,0,26512.55,-201236.23,0};
-ST(0.045044357,0.28188841,0,0.045592054,0.27439642,0,0.051703203,0.27754162,0){362990.51,513714.39,454636.43,-1075960.6,-1504437.2,-1338881.7,1750378.7,2387679.2,2149437.1,-2362097.1,-3100344.3,-2841702,2889034,3591305.7,3377384.9};
-ST(0.068476894,0.0069177029,0,0.06203594,0.0060944193,0,0.064285714,0,0){3242851.4,3604620.2,3496327.6,3225849.8,3589956.2,3496358.5,3191931.3,3560685.5,3496415,3141298.2,3516960.1,3496523.2,3073847.6,3458793.9,3496472.9};
-ST(0.064285714,0.3,0,0.061805884,0.29356168,0,0.068366879,0.29272708,0){0,121923.05,123803.43,0,-365207.83,-370697.46,0,606815.62,615462.12,0,-845641.09,-856697.17,0,1080583.1,1092834.3};
-ST(0.07180958,0.22984275,0,0.065627137,0.22734606,0,0.069002793,0.22246209,0){1079159.6,1270705.1,1267491.2,-2680718.2,-3111357.1,-3011719.2,2899261.6,3236198.8,2877058.6,-1622013.4,-1576358.2,-947533.34,-492395.98,-953054.66,-1573376.1};
-ST(0.066925078,0.074981916,0,0.060416267,0.076932239,0,0.061098586,0.072147464,0){3090390.8,3380545.3,3389933,1280900.5,1302521.2,1545196.6,-1278621.5,-1576156.6,-1140417.3,-3089611.2,-3485992.8,-3205469.9,-3091904.4,-3253298.6,-3526423.9};
-ST(0.064352171,0.083117586,0,0.060416267,0.076932239,0,0.066925078,0.074981916,0){3167194.8,3380545.3,3090390.8,915483.69,1302521.2,1280900.5,-1987167.2,-1576156.6,-1278621.5,-3477240.4,-3485992.8,-3089611.2,-2495770,-3253298.6,-3091904.4};
-ST(0.0060491453,0.25298129,0,0.01180171,0.25230222,0,0.0098751756,0.25600949,0){178654.23,347512.04,270470.11,-493529.07,-957611.77,-755004.71,691183.17,1333704.3,1082095.4,-724662.05,-1383899.6,-1183544.7,585970.08,1095718.6,1038261.4};
-ST(0.0087429334,0.24792416,0,0.01180171,0.25230222,0,0.0060491453,0.25298129,0){283453.34,347512.04,178654.23,-768118.62,-957611.77,-493529.07,1029935.2,1333704.3,691183.17,-992967.39,-1383899.6,-724662.05,667809.3,1095718.6,585970.08};
-ST(0.055202425,0.1814475,0,0.061291474,0.18447479,0,0.055890502,0.18802963,0){2227021.2,2069396,2110328.4,-3667462.5,-3531333.7,-3747121.1,145084.74,425331.11,795966.68,3573754.5,3230965.1,3129878.5,-2457046.3,-2708277.6,-3224012.4};
-ST(0.025350652,0.23917347,0,0.033139613,0.24047735,0,0.029124573,0.24658198,0){868665.73,1026889.2,849052.23,-2265304,-2694450.7,-2288340.2,2773502.3,3348643.4,3030093.5,-2193941.8,-2743423.6,-2848204.4,753574.67,1106136.5,1797881.3};
-ST(0,0.12142857,0,0.0061411468,0.1246533,0,0,0.12857143,0){0,591118.91,0,0,-280990.71,0,0,-738586.84,0,0,-106527.54,0,0,682629.18,0};
-ST(0.03163445,0.20120488,0,0.036160627,0.1953007,0,0.038597539,0.20095921,0){1608414.7,1834250.2,1801301.7,-3251875.6,-3509998.2,-3633864.6,1714266.6,1372423.7,1895634,1500504,2256297.6,1705394,-3248047,-3434247.7,-3630918.1};
-ST(0.029690249,0.19362013,0,0.036160627,0.1953007,0,0.03163445,0.20120488,0){1647856.1,1834250.2,1608414.7,-3101495.4,-3509998.2,-3251875.6,1088093.1,1372423.7,1714266.6,2141745.7,2256297.6,1500504,-2977851,-3434247.7,-3248047};
-ST(0,0.17142857,0,0.0046637588,0.16745308,0,0.0069613667,0.17349451,0){0,362371.83,517779.21,0,-494096.85,-769992.03,0,-182769.85,-142713.64,0,560561.48,839532.94,0,-21256.565,-266340.1};
-ST(0.034314476,0.15645926,0,0.030440206,0.150204,0,0.037897724,0.149701,0){2334400.9,2239650.6,2552043.8,-2649968.2,-2249230.7,-2536068.8,-1976247.7,-2230054.7,-2567975.2,2917237.1,2258843.4,2520076,1581967.4,2220211.9,2583694.6};
-ST(0.077393474,0.16425214,0,0.072573599,0.16764459,0,0.070175425,0.16144206,0){1650679.7,1881427.5,2074683.8,-2141613.9,-2572760.4,-2570674.4,-1013799.5,-936075.04,-1460177,2443278.1,2916777.1,2919916.2,287063.28,-135849.37,762077.82};
-ST(0.050398693,0.1921099,0,0.055890502,0.18802963,0,0.057391395,0.19462543,0){2077292.2,2110328.4,1979510.6,-3850553.1,-3747121.1,-3763012.6,1209682,795966.68,1410875.8,2818064.5,3129878.5,2491970.2,-3615771.1,-3224012.4,-3656419.8};
-ST(0.057391395,0.19462543,0,0.055890502,0.18802963,0,0.06137482,0.19024807,0){1979510.6,2110328.4,1976038.9,-3763012.6,-3747121.1,-3592882,1410875.8,795966.68,963745.22,2491970.2,3129878.5,2804392.5,-3656419.8,-3224012.4,-3258719.1};
-ST(0,0.13571429,0,0.0054758376,0.13911323,0,0,0.14285714,0){0,495708.7,0,0,-382921.42,0,0,-582869.54,0,0,250325.59,0,0,639819.51,0};
-ST(0.063469548,0.28521738,0,0.069147655,0.28722413,0,0.068366879,0.29272708,0){273598.49,213884.16,123803.43,-814255.31,-637821.62,-370697.46,1335465.2,1050341,615462.12,-1824812,-1444059.1,-856697.17,2270429.1,1811586.6,1092834.3};
-ST(0.068366879,0.29272708,0,0.069147655,0.28722413,0,0.073754091,0.28851618,0){123803.43,213884.16,171229.59,-370697.46,-637821.62,-511212.67,615462.12,1050341,843808.82,-856697.17,-1444059.1,-1164215.8,1092834.3,1811586.6,1467609.3};
-ST(0.068476894,0.0069177029,0,0.069232026,0.01217315,0,0.064075209,0.013493001,0){3242851.4,3187096.8,3498581.2,3225849.8,3135369.8,3428890.3,3191931.3,3032749.5,3290906.4,3141298.2,2880922.9,3087427.7,3073847.6,2682056.5,2822154};
-ST(0.073684623,0.0112317,0,0.069232026,0.01217315,0,0.068476894,0.0069177029,0){2850123.3,3187096.8,3242851.4,2810738.2,3135369.8,3225849.8,2732509.2,3032749.5,3191931.3,2616540.6,2880922.9,3141298.2,2464223.2,2682056.5,3073847.6};
-ST(0,0.26428571,0,0.0071908097,0.26035264,0,0.0060732531,0.2674669,0){0,179155.76,124750.88,0,-507033.49,-359918.85,0,748779.14,553735.12,0,-863311.12,-683931.42,0,830950.48,735399.5};
-ST(0.093873231,0.17693503,0,0.095837038,0.182565,0,0.089858368,0.18421461,0){445896.9,291932.87,692603.24,-694096.79,-487211.17,-1178349.1,-59504.029,33971.767,133849.22,727141.13,464480.32,1084450.2,-345394.37,-344762.9,-894447.98};
-ST(0.023309936,0.19197185,0,0.021212478,0.18688263,0,0.027249449,0.18607819,0){1390526.6,1339179.6,1646413.8,-2573914.4,-2348119.2,-2861109.6,799964.88,429909.33,464444.42,1893175.4,2024227.8,2518610.9,-2411477.9,-1955356.8,-2323177.4};
-ST(0,0.035714286,0,0.0063343033,0.038958017,0,0,0.042857143,0){0,751213.74,0,0,627892.11,0,0,401490.67,0,0,109174.99,0,0,-201236.23,0};
-ST(0,0.22857143,0,0.0069516057,0.23320895,0,0,0.23571429,0){0,288078.49,0,0,-728952.19,0,0,827497.2,0,0,-537397.4,0,0,-5267.3055,0};
-ST(0.031710863,0.0075461758,0,0.025051818,0.0051959301,0,0.028571429,0,0){3254919.5,2747435.6,3033980.1,3234618.2,2739316.7,3033983.4,3194153.7,2723095.2,3033988.7,3133832.1,2698832.3,3034024.4,3053845.3,2666496.7,3033982.5};
-ST(0.028571429,0.3,0,0.024877102,0.29495936,0,0.031264826,0.29263185,0){0,72135.52,124484.17,0,-216205.93,-372709.78,0,359676.71,618717.86,0,-502149.61,-861054.65,0,642973.44,1098239.8};
-ST(0.025468185,0.010276157,0,0.025051818,0.0051959301,0,0.031710863,0.0075461758,0){2780034,2747435.6,3254919.5,2747892,2739316.7,3234618.2,2683968.5,2723095.2,3194153.7,2589008.8,2698832.3,3133832.1,2463902.9,2666496.7,3053845.3};
-ST(0.031264826,0.29263185,0,0.024877102,0.29495936,0,0.025130011,0.29009115,0){124484.17,72135.52,142877.47,-372709.78,-216205.93,-427099.39,618717.86,359676.71,706741.94,-861054.65,-502149.61,-978805.55,1098239.8,642973.44,1240164.3};
-ST(0.024938414,0.098415267,0,0.024499807,0.092422798,0,0.030017634,0.093495078,0){2383058.5,2390452.1,2771844.6,68195.72,320672.29,320378.42,-2312962.3,-2026771.7,-2414486.4,-2447461.4,-2619357.9,-3014031.4,-204726.33,-944222.72,-948223.96};
-ST(0.083292987,0.24598228,0,0.085145188,0.25032735,0,0.07921504,0.25033934,0){542685.82,448997.25,606155.6,-1458992.1,-1228228.7,-1658203,1920780.7,1682589.8,2271843.6,-1784182,-1691886.1,-2284831,1091638.2,1253443,1693484.6};
-ST(0.077364239,0.048764008,0,0.083998423,0.049627851,0,0.080938662,0.054906318,0){2450679,1806853.8,2097661.4,1825420.5,1329741.5,1423084,734405.59,501474.01,290856.94,-544039.45,-459273.5,-934922.56,-1683943.8,-1299103.8,-1860365.1};
-ST(0,0.25714286,0,0.0071908097,0.26035264,0,0,0.26428571,0){0,179155.76,0,0,-507033.49,0,0,748779.14,0,0,-863311.12,0,0,830950.48,0};
-ST(0.059437672,0.2400817,0,0.061408089,0.24582042,0,0.054957014,0.24657048,0){1145348.7,1017142.7,1058545,-2999714,-2732695.2,-2852831,3711340.5,3591948.1,3777171.8,-3009146,-3325647.6,-3549694.2,1160252.2,2017029.8,2239441.1};
-ST(0.052494391,0.065958781,0,0.059054943,0.066788508,0,0.054876921,0.07294965,0){3640248,3499189.3,3558755.8,1971511.2,1856149.2,1580988.4,-601016.65,-658492.2,-1275447.3,-2898090,-2864039.1,-3423192.1,-3866942,-3725081.1,-3669097.1};
-ST(0.054876921,0.07294965,0,0.059054943,0.066788508,0,0.061098586,0.072147464,0){3558755.8,3499189.3,3389933,1580988.4,1856149.2,1545196.6,-1275447.3,-658492.2,-1140417.3,-3423192.1,-2864039.1,-3205469.9,-3669097.1,-3725081.1,-3526423.9};
-ST(0.1,0.14285714,0,0.093938974,0.13899,0,0.1,0.13571429,0){0,548364.78,0,0,-422206.84,0,0,-645591.08,0,0,273728.87,0,0,708600.91,0};
-ST(0.030623168,0.1713445,0,0.025851591,0.17077962,0,0.029380008,0.16405835,0){1985985.4,1763476.8,2021292.5,-2866418.8,-2524912.6,-2614335.2,-715248.18,-673288.62,-1254306.4,3183566.3,2815714.9,2982541.3,-696442.05,-542697.73,378860.61};
-ST(0.0064812773,0.046734878,0,0.013132659,0.04767246,0,0.0094132111,0.052421332,0){761350.4,1507774.2,1088603.4,582610.88,1139737.5,768702.62,267082.8,493500.09,222919.17,-111174.21,-273193.01,-388347.22,-463416.67,-973395.4,-885762.83};
-ST(0.011573719,0.041901165,0,0.013132659,0.04767246,0,0.0064812773,0.046734878,0){1347025.1,1507774.2,761350.4,1091815.8,1139737.5,582610.88,629744.45,493500.09,267082.8,48353.226,-273193.01,-111174.21,-542301.86,-973395.4,-463416.67};
-ST(0.092168655,0.23668616,0,0.095706332,0.23121352,0,0.1,0.23571429,0){307607.26,183910.78,0,-792496.69,-460364.34,0,941630.33,508106.39,0,-691810.02,-303408.65,0,148523.72,-52245.513,0};
-ST(0.048791783,0.28884593,0,0.043131118,0.28864457,0,0.045044357,0.28188841,0){226341.07,225252.57,362990.51,-675936.71,-672574.82,-1075960.6,1116322.7,1110400.5,1750378.7,-1541505,-1532552.2,-2362097.1,1945474.1,1932837.8,2889034};
-ST(0.045044357,0.28188841,0,0.043131118,0.28864457,0,0.036602132,0.28491153,0){362990.51,225252.57,279518.56,-1075960.6,-672574.82,-831596.18,1750378.7,1110400.5,1362985.6,-2362097.1,-1532552.2,-1860498.2,2889034,1932837.8,2311728.5};
-ST(0.071449289,0.19423207,0,0.064671223,0.19505087,0,0.06771074,0.1881525,0){1594804.6,1815232.4,1821405.7,-3019964.8,-3465163,-3238423,1103926.4,1334352.3,698008.36,2033518.7,2252470.6,2695511.5,-2921575.1,-3382100.5,-2795478.4};
-ST(0.06771074,0.1881525,0,0.064671223,0.19505087,0,0.06137482,0.19024807,0){1821405.7,1815232.4,1976038.9,-3238423,-3465163,-3592882,698008.36,1334352.3,963745.22,2695511.5,2252470.6,2804392.5,-2795478.4,-3382100.5,-3258719.1};
-ST(0.051703203,0.27754162,0,0.051519181,0.28417908,0,0.045044357,0.28188841,0){454636.43,320732.11,362990.51,-1338881.7,-953415.16,-1075960.6,2149437.1,1560004.1,1750378.7,-2841702,-2123899.5,-2362097.1,3377384.9,2629434.9,2889034};
-ST(0.045044357,0.28188841,0,0.051519181,0.28417908,0,0.048791783,0.28884593,0){362990.51,320732.11,226341.07,-1075960.6,-953415.16,-675936.71,1750378.7,1560004.1,1116322.7,-2362097.1,-2123899.5,-1541505,2889034,2629434.9,1945474.1};
-ST(0.066925078,0.074981916,0,0.064846874,0.068845861,0,0.072323403,0.067507008,0){3090390.8,3243292.3,2781512.1,1280900.5,1629296.1,1448400.9,-1278621.5,-795531.06,-578922.09,-3089611.2,-2824516.6,-2328912.3,-3091904.4,-3448034.5,-2963263.7};
-ST(0.017861336,0.10270337,0,0.013714026,0.097839388,0,0.019165757,0.095107709,0){1773538.4,1412613.2,1930971.9,-87655.931,55008.627,168744.63,-1856823.6,-1355500.2,-1747493.7,-1677437.3,-1463354,-2069009.1,261812.45,-165174.7,-502664.26};
-ST(0.072126291,0.10515927,0,0.076969725,0.10634022,0,0.074105201,0.11070107,0){2539730.3,2181001.1,2359475.3,-241283.81,-255488.75,-471755.94,-2758172.2,-2406546.5,-2736894.8,-2254933.2,-1869163.7,-1717960.7,717337.89,756176.24,1362139.4};
-ST(0.077318805,0.23627719,0,0.078142774,0.24370973,0,0.072908259,0.24139656,0){830868.27,714639.7,881474.92,-2136157.9,-1902709.3,-2322734,2525048.7,2448578.4,2916335.3,-1830714.2,-2167997.3,-2445637.4,350702.19,1155455.3,1082242};
-ST(0,0.17857143,0,0.0062925762,0.18063125,0,0,0.18571429,0){0,445914.92,0,0,-727143.63,0,0,12632.594,0,0,719304.1,0,0,-466469.22,0};
-ST(0.045894811,0.13135905,0,0.044512931,0.13802764,0,0.038217426,0.13599196,0){2973475.7,2867370.6,2738753.8,-1819976.4,-2150242,-1938161,-3679581.9,-3405187.4,-3305386.1,392676.16,1298632.3,972060.89,3832095.1,3729885,3589652.3};
-ST(0.028198926,0.28535727,0,0.0220603,0.28602893,0,0.023483408,0.28013687,0){230200.16,181204.07,270985.88,-685197.76,-539738.59,-801278.39,1124120.6,886739.53,1297043.7,-1536674.3,-1214791.9,-1736920.8,1912913.1,1516611.7,2101746.5};
-ST(0.053497526,0.1329974,0,0.049213686,0.13705186,0,0.045894811,0.13135905,0){2959143.9,2922689.8,2973475.7,-1911000.9,-2132523.3,-1819976.4,-3636096,-3499251.9,-3679581.9,623103.97,1186505.2,392676.16,3857035.6,3819996.4,3832095.1};
-ST(0.060819012,0.031697917,0,0.054261983,0.029107824,0,0.057707972,0.025075094,0){3608360,3801269,3734947.8,3214477.8,3450822.2,3478918.2,2469695.4,2782228.4,2984396.6,1455299.1,1857139.4,2285289.9,281702.17,760852.59,1429238.8};
-ST(0.038217426,0.13599196,0,0.033010101,0.13109378,0,0.038464606,0.12667013,0){2738753.8,2584208,2859316.3,-1938161,-1567613,-1476046.2,-3305386.1,-3200932.4,-3573486.5,972060.89,308418.11,-252868.56,3589652.3,3322264.5,3451249.3};
-ST(0.07180958,0.22984275,0,0.070607657,0.23670872,0,0.064373335,0.2338171,0){1079159.6,1007105.3,1185902.3,-2680718.2,-2594870.8,-3010536.1,2899261.6,3083897.2,3446119.8,-1622013.4,-2267120.1,-2291596.2,-492395.98,490193.02,79206.699};
-ST(0.09308158,0.15403623,0,0.088623123,0.15812222,0,0.084604507,0.15255901,0){579061.91,918302.92,1258841.2,-628036.95,-1074338,-1326319,-525997.02,-735787.48,-1187789.9,672596.25,1199414.9,1390056.3,469080.04,531983.03,1113216.6};
-ST(0.031105381,0.06529626,0,0.027058874,0.069011929,0,0.025221599,0.062165695,0){3030579.1,2727323.5,2618029.3,1667989.8,1363815.9,1547191.2,-444570.51,-681543.48,-156575.4,-2357289.6,-2386220.5,-1796512.5,-3210321.2,-2898415.6,-2702051.5};
-ST(0,0.15,0,0.0056981356,0.15371602,0,0,0.15714286,0){0,478995.44,0,0,-516269.88,0,0,-438816.38,0,0,550400.04,0,0,395913.98,0};
-ST(0.040431855,0.24188745,0,0.033139613,0.24047735,0,0.037546984,0.23452457,0){1110505,1026889.2,1205921.7,-2932804,-2694450.7,-3072707.6,3702149.5,3348643.4,3550700.1,-3142324.5,-2743423.6,-2423829.8,1453973.2,1106136.5,201013.93};
-ST(0.077364239,0.048764008,0,0.073604017,0.054819307,0,0.06961584,0.048915995,0){2450679,2744584.6,3063466,1825420.5,1864679.8,2277085.6,734405.59,386939.94,906160.93,-544039.45,-1214908.7,-697426.19,-1683943.8,-2427603.9,-2122325.6};
-ST(0.037546984,0.23452457,0,0.033139613,0.24047735,0,0.030075176,0.23324008,0){1205921.7,1026889.2,1077047.3,-3072707.6,-2694450.7,-2725827,3550700.1,3348643.4,3095770.8,-2423829.8,-2743423.6,-2013325.9,201013.93,1106136.5,-13872.597};
-ST(0.03690243,0.09394169,0,0.039702853,0.10111678,0,0.032036001,0.10024616,0){3135041.5,3175586.8,2837469.6,337961.95,-64516.934,-12660.65,-2760700,-3238866.3,-2850146.6,-3396384.7,-3108635.2,-2824890.6,-1002139.6,193445.51,37524.098};
-ST(0.054692531,0.17439284,0,0.060859952,0.17787963,0,0.055202425,0.1814475,0){2346407.8,2182203,2227021.2,-3532168.6,-3438395.7,-3667462.5,-561454.61,-202892.1,145084.74,3816051.1,3555311.4,3573754.5,-1367177.6,-1844119.8,-2457046.3};
-ST(0.060825265,0.17090728,0,0.060859952,0.17787963,0,0.054692531,0.17439284,0){2288734.2,2182203,2346407.8,-3282960.5,-3438395.7,-3532168.6,-862639.89,-202892.1,-561454.61,3657845.3,3555311.4,3816051.1,-726586.11,-1844119.8,-1367177.6};
-ST(0.092520768,0.26920591,0,0.095069321,0.27540052,0,0.089232651,0.27618677,0){145042.72,76899.446,160151.6,-420173.4,-225624.71,-470555.02,651988.34,359465.9,751874.95,-816598.86,-469594.27,-986723.61,896908.09,548580.83,1160401.4};
-ST(0.1,0.27142857,0,0.095069321,0.27540052,0,0.092520768,0.26920591,0){0,76899.446,145042.72,0,-225624.71,-420173.4,0,359465.9,651988.34,0,-469594.27,-816598.86,0,548580.83,896908.09};
-ST(0.092450683,0.030760689,0,0.095041081,0.024587994,0,0.1,0.028571429,0){900007.85,597113.29,0,807431.66,557751.32,0,631804.95,481620.22,0,391202.83,373740.48,0,110124.82,241099.33,0};
-ST(0.089183466,0.023798504,0,0.095041081,0.024587994,0,0.092450683,0.030760689,0){1283383.3,597113.29,900007.85,1204105.7,557751.32,807431.66,1050439.6,481620.22,631804.95,831874.08,373740.48,391202.83,561630.79,241099.33,110124.82};
-ST(0.041643161,0.17482395,0,0.034648589,0.17585937,0,0.036146522,0.16944297,0){2284160.6,2080615.7,2222447.1,-3458410.7,-3193762.3,-3121229.8,-506290.81,-371953.81,-960241.74,3718851.8,3392886,3509731.4,-1405815.9,-1443588.4,-459324.98};
-ST(0.1,0.25,0,0.095492809,0.25375881,0,0.095090425,0.2489538,0){0,131307.15,157454.16,0,-363726.6,-428416.46,0,512510.07,579817.55,0,-543451.99,-569427.53,0,449348.78,400020.01};
-ST(0.094913401,0.051076335,0,0.095360834,0.0462161,0,0.1,0.05,0){595503.05,547145.45,0,429138.45,421466.87,0,142901.48,198977.54,0,-183223.65,-69217.008,0,-458373.75,-321602.09,0};
-ST(0.068707287,0.030314019,0,0.067616069,0.037109229,0,0.060819012,0.031697917,0){3188897.7,3239242.7,3608360,2870259.7,2756202.5,3214477.8,2264806.3,1862139.4,2469695.4,1433032.7,690369.93,1455299.1,457746.25,-584563.48,281702.17};
-ST(0.061631884,0.26868773,0,0.068237016,0.26229006,0,0.069536278,0.26943087,0){591535.29,639705.29,505602.11,-1711593.4,-1820649,-1465439,2649353.2,2721368.6,2276404,-3304968.8,-3203243.1,-2856108.7,3608394.3,3191912.1,3145421.5};
-ST(0.057142857,0,0,0.051745598,0.0053231545,0,0.05,0,0){3783317.5,3873250.9,3880596.9,3783357,3861228.9,3880622.4,3783457.6,3837214.6,3880662.8,3783701.2,3801308.2,3880737.9,3783873.9,3753417.7,3880625.6};
-ST(0.05,0.3,0,0.051526128,0.29458598,0,0.057142857,0.3,0){0,109871.78,0,0,-329256.34,0,0,547568.39,0,0,-764098.34,0,0,977975.34,0};
-ST(0.1,0.064285714,0,0.095867013,0.068756454,0,0.09230899,0.063522919,0){0,470210.65,877619.52,0,236792.42,503392.8,0,-114175.46,-85524.836,0,-408471.99,-638068.15,0,-500215.61,-918939.46};
-ST(0.039157325,0.25334591,0,0.033025927,0.25326882,0,0.036308441,0.24745658,0){884627.38,809560.38,958174.94,-2446896,-2238649.8,-2591684.5,3436661.2,3142273.3,3460190.4,-3622356.9,-3308331.9,-3307339.6,2960330.2,2697705.3,2177878.8};
-ST(0.030440206,0.150204,0,0.033990129,0.14330646,0,0.037897724,0.149701,0){2239650.6,2486957.5,2552043.8,-2249230.7,-2138608.5,-2536068.8,-2230054.7,-2786553.8,-2567975.2,2258843.4,1748365.6,2520076,2220211.9,3031412.6,2583694.6};
-ST(0.025130011,0.29009115,0,0.0220603,0.28602893,0,0.028198926,0.28535727,0){142877.47,181204.07,230200.16,-427099.39,-539738.59,-685197.76,706741.94,886739.53,1124120.6,-978805.55,-1214791.9,-1536674.3,1240164.3,1516611.7,1912913.1};
-ST(0.013428016,0.091778472,0,0.013714026,0.097839388,0,0.0071591483,0.096788703,0){1408980.1,1412613.2,756711.76,204626.15,55008.627,43634.951,-1174648.8,-1355500.2,-710572.63,-1549888.7,-1463354,-795194.2,-600683.83,-165174.7,-130859.45};
-ST(0.0071591483,0.096788703,0,0.013714026,0.097839388,0,0.010955873,0.10281868,0){756711.76,1412613.2,1124212.8,43634.951,55008.627,-57954.543,-710572.63,-1355500.2,-1179275.3,-795194.2,-1463354,-1060620.9,-130859.45,-165174.7,173274.75};
-ST(0.037897724,0.149701,0,0.033990129,0.14330646,0,0.041319833,0.14315875,0){2552043.8,2486957.5,2735557.7,-2536068.8,-2138608.5,-2343944,-2567975.2,-2786553.8,-3071175.4,2520076,1748365.6,1904337.3,2583694.6,3031412.6,3343927.4};
-ST(0.035858843,0.031497608,0,0.030602087,0.036163623,0,0.028359285,0.029784535,0){3456371.8,3125169.1,2981166.2,3083741.5,2682310.4,2693525.9,2378649.5,1859340.6,2145980.7,1417116.3,772883.67,1391347.7,302618.73,-423255.99,502245.34};
-ST(0.026971271,0.22659033,0,0.029518097,0.21985532,0,0.034969012,0.22634925,0){1090633.5,1264894.2,1299939.6,-2658504.1,-2954793.2,-3164156.1,2731189,2682751.8,3237729.2,-1267784.1,-629411.95,-1478956,-909068.56,-1842177.8,-1117524.9};
-ST(0.034969012,0.22634925,0,0.029518097,0.21985532,0,0.036912897,0.21765752,0){1299939.6,1264894.2,1486590.9,-3164156.1,-2954793.2,-3421295.1,3237729.2,2682751.8,2965983.4,-1478956,-629411.95,-438566.7,-1117524.9,-1842177.8,-2395869.1};
-ST(0.051167355,0.022914381,0,0.052049192,0.01582547,0,0.057612168,0.01845715,0){3850137.8,3859264.8,3752599.8,3629520.4,3753529.9,3612875.5,3200919.1,3544947.6,3338613.5,2588908.3,3239251.6,2940029.2,1828396.4,2844641.6,2431782.4};
-ST(0.09071018,0.22887426,0,0.095706332,0.23121352,0,0.092168655,0.23668616,0){406264.77,183910.78,307607.26,-1003622.2,-460364.34,-792496.69,1069446.3,508106.39,941630.33,-568907.82,-303408.65,-691810.02,-233040.27,-52245.513,148523.72};
-ST(0.027903545,0.087518505,0,0.024499807,0.092422798,0,0.020473685,0.087577432,0){2674848,2390452.1,2087024.2,580994.77,320672.29,451292.51,-1967676.8,-2026771.7,-1538224.3,-2976106,-2619357.9,-2322280.1,-1655065.1,-944222.72,-1286407.6};
-ST(0.036146522,0.16944297,0,0.034648589,0.17585937,0,0.030623168,0.1713445,0){2222447.1,2080615.7,1985985.4,-3121229.8,-3193762.3,-2866418.8,-960241.74,-371953.81,-715248.18,3509731.4,3392886,3183566.3,-459324.98,-1443588.4,-696442.05};
-ST(0.027249449,0.18607819,0,0.034128539,0.18892309,0,0.029690249,0.19362013,0){1646413.8,1872288.6,1647856.1,-2861109.6,-3356683.8,-3101495.4,464444.42,788949.65,1088093.1,2518610.9,2731311.2,2141745.7,-2323177.4,-2954777.5,-2977851};
-ST(0,0.22142857,0,0.0069979116,0.22643766,0,0,0.22857143,0){0,317964.48,0,0,-774386.26,0,0,793599.18,0,0,-364658.79,0,0,-270536.88,0};
-ST(0.059551151,0.20970619,0,0.053910411,0.21448753,0,0.053221516,0.20704838,0){1688112.8,1667429.4,1805672.4,-3664209.4,-3752161.8,-3837129.3,2601193.1,3023771,2511247.5,619333.89,-28239.212,1011998.4,-3326584.6,-2988983.1,-3650194.7};
-ST(0.053221516,0.20704838,0,0.053910411,0.21448753,0,0.049232245,0.21047418,0){1805672.4,1667429.4,1752658.6,-3837129.3,-3752161.8,-3827070.5,2511247.5,3023771,2777012.8,1011998.4,-28239.212,540242.46,-3650194.7,-2988983.1,-3416565.4};
-ST(0.024008584,0.022367291,0,0.022427218,0.014872357,0,0.029163144,0.015558324,0){2639060.6,2505875.7,3068207,2494948.4,2445229.8,2986953.6,2214593.6,2325397.7,2826596.5,1813324.4,2149288.4,2591406.1,1312931.3,1920956.8,2287504.7};
-ST(0.029163144,0.015558324,0,0.022427218,0.014872357,0,0.025468185,0.010276157,0){3068207,2505875.7,2780034,2986953.6,2445229.8,2747892,2826596.5,2325397.7,2683968.5,2591406.1,2149288.4,2589008.8,2287504.7,1920956.8,2463902.9};
-ST(0.01788586,0.12850833,0,0.012365279,0.12660144,0,0.017763535,0.12074209,0){1616906.9,1158576.2,1657769.5,-895214.81,-596487.84,-657738.05,-2016472.2,-1447959.2,-2054600.3,-4802.2192,-105993.81,-581651.26,2014144.7,1396357.8,1703675.4};
-ST(0.017763535,0.12074209,0,0.012365279,0.12660144,0,0.01093484,0.12117452,0){1657769.5,1158576.2,1052666.9,-657738.05,-596487.84,-426753.37,-2054600.3,-1447959.2,-1306415.4,-581651.26,-105993.81,-350052.21,1703675.4,1396357.8,1098212.1};
-ST(0.03163445,0.20120488,0,0.025476801,0.19755762,0,0.029690249,0.19362013,0){1608414.7,1423125.8,1647856.1,-3251875.6,-2782737.9,-3101495.4,1714266.6,1235431.1,1088093.1,1500504,1602470.1,2141745.7,-3248047,-2766638.2,-2977851};
-ST(0.09230899,0.063522919,0,0.095867013,0.068756454,0,0.09123018,0.070922096,0){877619.52,470210.65,983713.53,503392.8,236792.42,465586.72,-85524.836,-114175.46,-297764.17,-638068.15,-408471.99,-904277.98,-918939.46,-500215.61,-1034644.8};
-ST(0.0079950318,0.059686314,0,0.012193394,0.066188359,0,0.0062494098,0.068021592,0){917766.47,1364188,709501.16,570756.35,734639.92,364477.97,7912.4367,-233939.49,-157824.6,-557994.72,-1094586.7,-603457.47,-913265.38,-1450385,-756039.79};
-ST(0.050721192,0.10961634,0,0.05615957,0.1141762,0,0.051013063,0.11801667,0){3257974.6,3147681.4,3161388.4,-583831.78,-840990.83,-1083065.4,-3737290.3,-3764018.8,-3873486.3,-2483878.9,-1917372.9,-1463412.7,1698581.7,2358868.4,2911579};
-ST(0.051703203,0.27754162,0,0.045592054,0.27439642,0,0.049721881,0.27094787,0){454636.43,513714.39,588018.61,-1338881.7,-1504437.2,-1710042.9,2149437.1,2387679.2,2675009.8,-2841702,-3100344.3,-3394309,3377384.9,3591305.7,3801713.7};
-ST(0.024044461,0.20382537,0,0.021120118,0.21068669,0,0.015977634,0.20443356,0){1283805.9,1077357.5,895779.15,-2655634.7,-2356401.7,-1862602.8,1553893.8,1720167.1,1114548.4,995311.88,314292.11,659707.69,-2617892.2,-2093742.8,-1827076.9};
-ST(0.08682376,0.20181233,0,0.093164956,0.1980516,0,0.093706234,0.20596864,0){767576.83,420734.09,360320.46,-1560255.4,-826537.04,-758974.46,843726.65,376428.12,479351.87,688912.23,463603.83,228803.73,-1555436.8,-823893.15,-732939.79};
-ST(0.030075176,0.23324008,0,0.033139613,0.24047735,0,0.025350652,0.23917347,0){1077047.3,1026889.2,868665.73,-2725827,-2694450.7,-2265304,3095770.8,3348643.4,2773502.3,-2013325.9,-2743423.6,-2193941.8,-13872.597,1106136.5,753574.67};
-ST(0.032229878,0.047894836,0,0.035422008,0.053603109,0,0.028699663,0.054481756,0){3188476.9,3344502.1,2920693,2403076.1,2318078.8,1995520.8,1025710.6,580213.58,438210.61,-604377.64,-1335777.4,-1257984.1,-2086050.7,-2842327.2,-2556170.3};
-ST(0.038515413,0.047952704,0,0.035422008,0.053603109,0,0.032229878,0.047894836,0){3516906.1,3344502.1,3188476.9,2648581.9,2318078.8,2403076.1,1126309.3,580213.58,1025710.6,-674068.75,-1335777.4,-604377.64,-2308227.3,-2842327.2,-2086050.7};
-ST(0.0093450955,0.28843768,0,0.010662343,0.29482959,0,0.0045473776,0.2936365,0){67949.514,34537.041,18406.211,-202850.84,-103506.64,-55138.333,334776.34,172164.12,91630.552,-461793.67,-240303.04,-127724.83,581935.08,307518.14,162961.08};
-ST(0.0045481906,0.0063920675,0,0.010679145,0.0052482016,0,0.0093389246,0.011691623,0){552257.15,1277155.8,1120186.5,549810.55,1273289.3,1103410.3,544927.47,1265566.3,1070108.3,537633.65,1254019.7,1020788.4,527798.54,1238493.9,956114.18};
-ST(0.064285714,0,0,0.06203594,0.0060944193,0,0.057142857,0,0){3496327.6,3604620.2,3783317.5,3496358.5,3589956.2,3783357,3496415,3560685.5,3783457.6,3496523.2,3516960.1,3783701.2,3496472.9,3458793.9,3783873.9};
-ST(0.057142857,0.3,0,0.061805884,0.29356168,0,0.064285714,0.3,0){0,121923.05,0,0,-365207.83,0,0,606815.62,0,0,-845641.09,0,0,1080583.1,0};
-ST(0.070477538,0.15360968,0,0.064971856,0.15110456,0,0.069467767,0.146519,0){2153625.7,2431817,2287173.5,-2316413.6,-2488096.1,-2120501.9,-1978592.7,-2374265.3,-2441744.6,2466066.8,2543085,1942651.5,1792310.4,2315361.9,2583122};
-ST(0.048791783,0.28884593,0,0.051526128,0.29458598,0,0.045931579,0.29422002,0){226341.07,109871.78,116468.36,-675936.71,-329256.34,-348980.73,1116322.7,547568.39,580225.36,-1541505,-764098.34,-809364.6,1945474.1,977975.34,1035478};
-ST(0.046181733,0.0056701177,0,0.051745598,0.0053231545,0,0.049204373,0.010884263,0){3851009.3,3873250.9,3873084,3837454.5,3861228.9,3822842.7,3810385,3837214.6,3723003.5,3769920.5,3801308.2,3574883.8,3715901.2,3753417.7,3380124.5};
-ST(0.089230742,0.11966768,0,0.082946441,0.12207685,0,0.08466046,0.11619385,0){1043332.5,1589878.9,1475783,-391602.7,-673263.29,-452604.25,-1287980.7,-1978038.1,-1789662.1,-412950.99,-467139.5,-788262.21,1030099.2,1708498.9,1243195.1};
-ST(0.1,0.078571429,0,0.095795895,0.073622969,0,0.1,0.071428571,0){0,473503.74,0,0,205720.2,0,0,-178405.32,0,0,-461642.03,0,0,-483922.03,0};
-ST(0.017433092,0.042090914,0,0.022876349,0.043626948,0,0.019247887,0.048569646,0){1971771.3,2488553.5,2135187.8,1594855,1978130.3,1594654.5,913057.13,1061959.9,650408.09,56690.05,-72059.632,-458538.7,-810753.02,-1191549.5,-1451674.1};
-ST(0.060819012,0.031697917,0,0.067616069,0.037109229,0,0.060555575,0.040182349,0){3608360,3239242.7,3588260.7,3214477.8,2756202.5,2962222.2,2469695.4,1862139.4,1819353,1455299.1,690369.93,359025.67,281702.17,-584563.48,-1164330.1};
-ST(0.060672356,0.25950081,0,0.068237016,0.26229006,0,0.061631884,0.26868773,0){771273.27,639705.29,591535.29,-2177172.3,-1820649,-1711593.4,3197356.1,2721368.6,2649353.2,-3651078,-3203243.1,-3304968.8,3457676.3,3191912.1,3608394.3};
-ST(0.043027686,0.24899973,0,0.049037582,0.25027532,0,0.04563604,0.25694979,0){999522.33,998508.07,859240.08,-2720190.5,-2730849.8,-2406042.8,3683283.3,3739350.2,3472131.8,-3620573.8,-3756698.7,-3844488.4,2549278.8,2778087.3,3448330.3};
-ST(0.061098586,0.072147464,0,0.064846874,0.068845861,0,0.066925078,0.074981916,0){3389933,3243292.3,3090390.8,1545196.6,1629296.1,1280900.5,-1140417.3,-795531.06,-1278621.5,-3205469.9,-2824516.6,-3089611.2,-3526423.9,-3448034.5,-3091904.4};
-ST(0.051013063,0.11801667,0,0.05615957,0.1141762,0,0.057323957,0.1204315,0){3161388.4,3147681.4,3051716.5,-1083065.4,-840990.83,-1191883,-3873486.3,-3764018.8,-3778168.4,-1463412.7,-1917372.9,-1110713.1,2911579,2358868.4,3101303};
-ST(0.1,0.22857143,0,0.095652827,0.22622146,0,0.1,0.22142857,0){0,199039.37,0,0,-484109.58,0,0,494313.66,0,0,-223837.82,0,0,-173819.74,0};
-ST(0.1,0.19285714,0,0.095453592,0.18738967,0,0.1,0.18571429,0){0,307137.29,0,0,-541566.85,0,0,106216.39,0,0,460538.95,0,0,-458087.35,0};
-ST(0.049678492,0.18505966,0,0.048811039,0.17808485,0,0.055202425,0.1814475,0){2196886.7,2310715.6,2227021.2,-3774046.6,-3650410,-3667462.5,512508.07,-194330.82,145084.74,3406255.6,3763231.4,3573754.5,-2958276.7,-1987755.8,-2457046.3};
-ST(0.089437553,0.21298247,0,0.086709216,0.20730703,0,0.093706234,0.20596864,0){556322.48,734117.03,360320.46,-1238115.4,-1563285.8,-758974.46,961021.23,1031586.7,479351.87,60411.18,398134,228803.73,-1035404.3,-1481512.9,-732939.79};
-ST(0.093706234,0.20596864,0,0.086709216,0.20730703,0,0.08682376,0.20181233,0){360320.46,734117.03,767576.83,-758974.46,-1563285.8,-1560255.4,479351.87,1031586.7,843726.65,228803.73,398134,688912.23,-732939.79,-1481512.9,-1555436.8};
-ST(0.074105201,0.11070107,0,0.06715469,0.10983132,0,0.072126291,0.10515927,0){2359475.3,2794834,2539730.3,-471755.94,-512277.78,-241283.81,-2736894.8,-3213264.7,-2758172.2,-1717960.7,-2112070.8,-2254933.2,1362139.4,1488257.3,717337.89};
-ST(0.056292141,0.2827555,0,0.051519181,0.28417908,0,0.051703203,0.27754162,0){343081.75,320732.11,454636.43,-1018093.3,-953415.16,-1338881.7,1660020.8,1560004.1,2149437.1,-2248005.1,-2123899.5,-2841702,2762903.8,2629434.9,3377384.9};
-ST(0.055202425,0.1814475,0,0.048811039,0.17808485,0,0.054692531,0.17439284,0){2227021.2,2310715.6,2346407.8,-3667462.5,-3650410,-3532168.6,145084.74,-194330.82,-561454.61,3573754.5,3763231.4,3816051.1,-2457046.3,-1987755.8,-1367177.6};
-ST(0.046063037,0.016810165,0,0.043829005,0.011024747,0,0.049204373,0.010884263,0){3836060.2,3801549.1,3873084,3717529.2,3750937.1,3822842.7,3484126.2,3650381.9,3723003.5,3143090.2,3501249.8,3574883.8,2704667.4,3305260.3,3380124.5};
-ST(0.037071258,0.0642048,0,0.032659307,0.059686042,0,0.038435934,0.058364632,0){3365311.2,3158137.1,3459248.5,1900443.5,1964024.3,2206750.4,-391679.98,27282.242,155241.86,-2513388.8,-1919818.3,-1952496,-3541461.8,-3141270.1,-3353689.4};
-ST(0.011268327,0.1984065,0,0.005051806,0.19767546,0,0.0066871595,0.19241823,0){682302.12,313084.45,432113.5,-1344805.9,-612892.85,-803518.34,623458.07,273796.53,258472.73,739532.85,350786.74,581490.34,-1341727.7,-609909.8,-758588.26};
-ST(0.011197941,0.071439681,0,0.012549176,0.077039569,0,0.0060853536,0.074713803,0){1244724.5,1370920.5,681675.12,579995.21,525978.15,285253.65,-394493.66,-643140.23,-277070.48,-1158343.6,-1415881.7,-678306.76,-1303869.8,-1316306.1,-685312.86};
-ST(0.0060853536,0.074713803,0,0.012549176,0.077039569,0,0.0064539684,0.081629255,0){681675.12,1370920.5,711139.06,285253.65,525978.15,222377.16,-277070.48,-643140.23,-419239.47,-678306.76,-1415881.7,-772749.89,-685312.86,-1316306.1,-595288.06};
-ST(0.0910478,0.13167545,0,0.087905667,0.12517971,0,0.093823791,0.12410599,0){831136.87,1140990.9,595735.92,-514132.23,-554517.87,-276601.23,-1027305.8,-1425990.8,-743959.63,122313.64,-178453.87,-121937.8,1073956.7,1334087.8,678759.2};
-ST(0.087905667,0.12517971,0,0.082946441,0.12207685,0,0.089230742,0.11966768,0){1140990.9,1589878.9,1043332.5,-554517.87,-673263.29,-391602.7,-1425990.8,-1978038.1,-1287980.7,-178453.87,-467139.5,-412950.99,1334087.8,1708498.9,1030099.2};
-ST(0.0066871595,0.19241823,0,0.012931293,0.19295437,0,0.011268327,0.1984065,0){432113.5,815194.79,682302.12,-803518.34,-1524077.7,-1344805.9,258472.73,510133.92,623458.07,581490.34,1080471.8,739532.85,-758588.26,-1450076.4,-1341727.7};
-ST(0.05,0,0,0.046181733,0.0056701177,0,0.042857143,0,0){3880596.9,3851009.3,3783299.5,3880622.4,3837454.5,3783327.5,3880662.8,3810385,3783379.6,3880737.9,3769920.5,3783486.4,3880625.6,3715901.2,3783576.5};
-ST(0.042857143,0.3,0,0.045931579,0.29422002,0,0.05,0.3,0){0,116468.36,0,0,-348980.73,0,0,580225.36,0,0,-809364.6,0,0,1035478,0};
-ST(0.057323957,0.1204315,0,0.05615957,0.1141762,0,0.062195955,0.11505156,0){3051716.5,3147681.4,2965673.8,-1191883,-840990.83,-843057.19,-3778168.4,-3764018.8,-3569130.8,-1110713.1,-1917372.9,-1711501.2,3101303,2358868.4,2344130.4};
-ST(0.013428016,0.091778472,0,0.01318623,0.084416193,0,0.020473685,0.087577432,0){1408980.1,1411871.7,2087024.2,204626.15,378554.62,451292.51,-1174648.8,-931831.12,-1538224.3,-1549888.7,-1560266,-2322280.1,-600683.83,-1046999.7,-1286407.6};
-ST(0.030312881,0.27848596,0,0.028198926,0.28535727,0,0.023483408,0.28013687,0){355416.48,230200.16,270985.88,-1048284.8,-685197.76,-801278.39,1688178.9,1124120.6,1297043.7,-2242771,-1536674.3,-1736920.8,2683885.3,1912913.1,2101746.5};
-ST(0.0069613667,0.17349451,0,0.0062925762,0.18063125,0,0,0.17857143,0){517779.21,445914.92,0,-769992.03,-727143.63,0,-142713.64,12632.594,0,839532.94,719304.1,0,-266340.1,-466469.22,0};
-ST(0.046063037,0.016810165,0,0.052049192,0.01582547,0,0.051167355,0.022914381,0){3836060.2,3859264.8,3850137.8,3717529.2,3753529.9,3629520.4,3484126.2,3544947.6,3200919.1,3143090.2,3239251.6,2588908.3,2704667.4,2844641.6,1828396.4};
-ST(0.065931692,0.10408722,0,0.06715469,0.10983132,0,0.059543685,0.10776494,0){2911358.9,2794834,3132791.5,-218409.17,-512277.78,-451048.14,-3113407,-3213264.7,-3519016.9,-2661455,-2112070.8,-2561357.9,651464.78,1488257.3,1326599.2};
-ST(0.083190767,0.25723975,0,0.085145188,0.25032735,0,0.090077759,0.25268961,0){434158.6,448997.25,291813.61,-1216864.4,-1228228.7,-805257.31,1759626.8,1682589.8,1125037.4,-1955417.3,-1691886.1,-1174248.1,1765235.2,1253443,940920.06};
-ST(0.07921504,0.25033934,0,0.085145188,0.25032735,0,0.083190767,0.25723975,0){606155.6,448997.25,434158.6,-1658203,-1228228.7,-1216864.4,2271843.6,1682589.8,1759626.8,-2284831,-1691886.1,-1955417.3,1693484.6,1253443,1765235.2};
-ST(0.08974924,0.047235181,0,0.083998423,0.049627851,0,0.082493405,0.042375289,0){1190814.4,1806853.8,1978611.8,905328.07,1329741.5,1595319.9,402804.56,501474.01,902966.17,-196265.4,-459273.5,35643.43,-748421.11,-1299103.8,-838916.97};
-ST(0.082493405,0.042375289,0,0.083998423,0.049627851,0,0.077364239,0.048764008,0){1978611.8,1806853.8,2450679,1595319.9,1329741.5,1825420.5,902966.17,501474.01,734405.59,35643.43,-459273.5,-544039.45,-838916.97,-1299103.8,-1683943.8};
-ST(0.1,0.23571429,0,0.095706332,0.23121352,0,0.1,0.22857143,0){0,183910.78,0,0,-460364.34,0,0,508106.39,0,0,-303408.65,0,0,-52245.513,0};
-ST(0.055890502,0.18802963,0,0.061291474,0.18447479,0,0.06137482,0.19024807,0){2110328.4,2069396,1976038.9,-3747121.1,-3531333.7,-3592882,795966.68,425331.11,963745.22,3129878.5,3230965.1,2804392.5,-3224012.4,-2708277.6,-3258719.1};
-ST(0.049204373,0.010884263,0,0.052049192,0.01582547,0,0.046063037,0.016810165,0){3873084,3859264.8,3836060.2,3822842.7,3753529.9,3717529.2,3723003.5,3544947.6,3484126.2,3574883.8,3239251.6,3143090.2,3380124.5,2844641.6,2704667.4};
-ST(0.021428571,0.3,0,0.024877102,0.29495936,0,0.028571429,0.3,0){0,72135.52,0,0,-216205.93,0,0,359676.71,0,0,-502149.61,0,0,642973.44,0};
-ST(0.028571429,0,0,0.025051818,0.0051959301,0,0.021428571,0,0){3033980.1,2747435.6,2419501.9,3033983.4,2739316.7,2419561.9,3033988.7,2723095.2,2419679.8,3034024.4,2698832.3,2419876.4,3033982.5,2666496.7,2419989.4};
-ST(0.093922759,0.092262381,0,0.09416017,0.099511923,0,0.087331535,0.0958472,0){652083.63,613994.66,1318484.3,89312.894,5422.3845,98077.228,-550573,-608645.22,-1213131.9,-715327.2,-619557.01,-1401481.2,-262838.8,-16415.987,-292629.72};
-ST(0.01093484,0.12117452,0,0.012365279,0.12660144,0,0.0061411468,0.1246533,0){1052666.9,1158576.2,591118.91,-426753.37,-596487.84,-280990.71,-1306415.4,-1447959.2,-738586.84,-350052.21,-105993.81,-106527.54,1098212.1,1396357.8,682629.18};
-ST(0.0061411468,0.1246533,0,0.012365279,0.12660144,0,0.0072553778,0.13224921,0){591118.91,1158576.2,674958.82,-280990.71,-596487.84,-425463.67,-738586.84,-1447959.2,-832230.25,-106527.54,-105993.81,117822.57,682629.18,1396357.8,875622.71};
-ST(0.066803853,0.25459223,0,0.068237016,0.26229006,0,0.060672356,0.25950081,0){789541.66,639705.29,771273.27,-2193455.3,-1820649,-2177172.3,3110738.9,2721368.6,3197356.1,-3337877,-3203243.1,-3651078,2824240.3,3191912.1,3457676.3};
-ST(0.060555575,0.040182349,0,0.067616069,0.037109229,0,0.066401409,0.0434645,0){3588260.7,3239242.7,3289675.8,2962222.2,2756202.5,2619840.6,1819353,1862139.4,1416557.6,359025.67,690369.93,-75156.319,-1164330.1,-584563.48,-1551772};
-ST(0.016878531,0.18478654,0,0.021212478,0.18688263,0,0.017373248,0.19021363,0){1113458.1,1339179.6,1095255.9,-1906862.4,-2348119.2,-1990705.9,245299.96,429909.33,532263.7,1732097.5,2024227.8,1555631.8,-1479759.2,-1955356.8,-1804413.6};
-ST(0.021251228,0.18136297,0,0.021212478,0.18688263,0,0.016878531,0.18478654,0){1398279.8,1339179.6,1113458.1,-2300353.4,-2348119.2,-1906862.4,85724.805,429909.33,245299.96,2245163.6,2024227.8,1732097.5,-1534338.6,-1955356.8,-1479759.2};
-ST(0.029991713,0.27132489,0,0.025044032,0.27464897,0,0.023009638,0.26878949,0){469504.82,363665.57,417665.14,-1366503,-1065519.5,-1208783.5,2141236.7,1692735.8,1871958.7,-2724385.3,-2201379.5,-2337004.8,3063642.3,2555652.6,2554445.3};
-ST(0.023009638,0.26878949,0,0.025044032,0.27464897,0,0.018422519,0.27450763,0){417665.14,363665.57,282501.19,-1208783.5,-1065519.5,-827496.14,1871958.7,1692735.8,1313896,-2337004.8,-2201379.5,-1707268.8,2554445.3,2555652.6,1979556.1};
-ST(0.048866761,0.029559705,0,0.054261983,0.029107824,0,0.052748817,0.036292023,0){3831772.8,3801269,3796611.1,3467532.3,3450822.2,3254886.9,2773676.3,2782228.4,2248728.5,1816186,1857139.4,921690.78,685852.4,760852.59,-537197.11};
-ST(0.069025318,0.11622387,0,0.06715469,0.10983132,0,0.074105201,0.11070107,0){2631986.5,2794834,2359475.3,-808686.45,-512277.78,-471755.94,-3192250.9,-3213264.7,-2736894.8,-1402768.4,-2112070.8,-1717960.7,2220554.1,1488257.3,1362139.4};
-ST(0.036912897,0.21765752,0,0.042541479,0.22296234,0,0.034969012,0.22634925,0){1486590.9,1481591,1299939.6,-3421295.1,-3531706.6,-3164156.1,2965983.4,3405357.4,3237729.2,-438566.7,-1180392.3,-1478956,-2395869.1,-1772446.7,-1117524.9};
-ST(0.034969012,0.22634925,0,0.042541479,0.22296234,0,0.041402067,0.22952626,0){1299939.6,1481591,1348916.4,-3164156.1,-3531706.6,-3344816,3237729.2,3405357.4,3600200.4,-1478956,-1180392.3,-1982154,-1117524.9,-1772446.7,-667743.82};
-ST(0.036602132,0.28491153,0,0.028198926,0.28535727,0,0.030312881,0.27848596,0){279518.56,230200.16,355416.48,-831596.18,-685197.76,-1048284.8,1362985.6,1124120.6,1688178.9,-1860498.2,-1536674.3,-2242771,2311728.5,1912913.1,2683885.3};
-ST(0.072126291,0.10515927,0,0.06715469,0.10983132,0,0.065931692,0.10408722,0){2539730.3,2794834,2911358.9,-241283.81,-512277.78,-218409.17,-2758172.2,-3213264.7,-3113407,-2254933.2,-2112070.8,-2661455,717337.89,1488257.3,651464.78};
-ST(0.049165273,0.076760106,0,0.047469022,0.070467195,0,0.054876921,0.07294965,0){3570137.5,3608010.8,3558755.8,1384898,1730907.5,1580988.4,-1648055.9,-1046792,-1275447.3,-3672308.6,-3280034.9,-3423192.1,-3449021.3,-3807136.9,-3669097.1};
-ST(0.085115353,0.26563346,0,0.086077973,0.27164165,0,0.081004963,0.27070547,0){313056.52,243157.03,333174.81,-899063.8,-708191.99,-968418.7,1369900.4,1111255.9,1513258.3,-1665255.4,-1417072.6,-1916833.2,1747205.8,1598582.9,2141327.9};
-ST(0.080699945,0.029142305,0,0.085916752,0.02828,0,0.084917502,0.034253561,0){2185639.9,1643257.2,1742331.8,1983669.2,1500211.7,1520580.8,1598386.1,1226559.7,1105294,1065401.8,846114.35,549324.68,433818.71,391827.49,-76880.401};
-ST(0.016939848,0.22904958,0,0.012706169,0.22573828,0,0.017207343,0.22323305,0){714788.59,571782.3,781289.63,-1767596.2,-1386624.6,-1865590.4,1888698.3,1404300.2,1807835.2,-1014237.8,-614658.98,-643322.1,-395054.79,-528535.98,-915362.92};
-ST(0.011838853,0.2301677,0,0.012706169,0.22573828,0,0.016939848,0.22904958,0){504229.49,571782.3,714788.59,-1254859.2,-1386624.6,-1767596.2,1363834.1,1404300.2,1888698.3,-775392.51,-614658.98,-1014237.8,-209768.04,-528535.98,-395054.79};
-ST(0.018343869,0.21720619,0,0.021120118,0.21068669,0,0.02463475,0.21609565,0){888277.19,1077357.5,1153636.1,-2037897.4,-2356401.7,-2626116.1,1749211,1720167.1,2198315,-225952.88,314292.11,-179791.92,-1457259.1,-2093742.8,-1969098.8};
-ST(0.054237851,0.14012792,0,0.049213686,0.13705186,0,0.053497526,0.1329974,0){2856617.8,2922689.8,2959143.9,-2267029,-2132523.3,-1911000.9,-3324577.4,-3499251.9,-3636096,1580891.3,1186505.2,623103.97,3650971.5,3819996.4,3857035.6};
-ST(0.023009638,0.26878949,0,0.027951851,0.26533243,0,0.029991713,0.27132489,0){417665.14,539100.43,469504.82,-1208783.5,-1547025.6,-1366503,1871958.7,2353298.6,2141236.7,-2337004.8,-2852826.8,-2724385.3,2554445.3,2980285,3063642.3};
-ST(0.1,0.071428571,0,0.095867013,0.068756454,0,0.1,0.064285714,0){0,470210.65,0,0,236792.42,0,0,-114175.46,0,0,-408471.99,0,0,-500215.61,0};
-ST(0.039366597,0.19088868,0,0.038852293,0.18542603,0,0.044234359,0.18859393,0){1982365.2,2057873,2102462.5,-3628592.6,-3549951.2,-3756018.8,1030950.1,516044.6,851571.98,2772526.5,3175871.5,3086402.5,-3333638.5,-2819104.7,-3279385.1};
-ST(0.044234359,0.18859393,0,0.038852293,0.18542603,0,0.043573225,0.18196099,0){2102462.5,2057873,2202933.2,-3756018.8,-3549951.2,-3650165.7,851571.98,516044.6,195066.32,3086402.5,3175871.5,3522129.2,-3279385.1,-2819104.7,-2509350};
-ST(0.010546892,0.2198034,0,0.012706169,0.22573828,0,0.0069979116,0.22643766,0){514716.79,571782.3,317964.48,-1201974.2,-1386624.6,-774386.26,1090194.6,1404300.2,793599.18,-253690.09,-614658.98,-364658.79,-751659.26,-528535.98,-270536.88};
-ST(0.0069979116,0.22643766,0,0.012706169,0.22573828,0,0.011838853,0.2301677,0){317964.48,571782.3,504229.49,-774386.26,-1386624.6,-1254859.2,793599.18,1404300.2,1363834.1,-364658.79,-614658.98,-775392.51,-270536.88,-528535.98,-209768.04};
-ST(0.078571429,0,0,0.074656208,0.0053403125,0,0.071428571,0,0){2419478.6,2772385.5,3033974.4,2419535.2,2763721.5,3033978.9,2419645.1,2746414.1,3033982.8,2419827.2,2720533.7,3034008.5,2420024.4,2685936.9,3033714};
-ST(0,0.1,0,0.0052460498,0.10332732,0,0,0.10714286,0){0,545715.18,0,0,-33256.292,0,0,-576983.54,0,0,-508602.25,0,0,99155.047,0};
-ST(0.071428571,0.3,0,0.074657371,0.29452352,0,0.078571429,0.3,0){0,79525.554,0,0,-238312.39,0,0,396309.36,0,0,-552992.95,0,0,707611.71,0};
-ST(0.1,0.16428571,0,0.093710586,0.16080643,0,0.1,0.15714286,0){0,507346.27,0,0,-621948.04,0,0,-366919.85,0,0,704920.6,0,0,207593.47,0};
-ST(0.042113175,0.053290167,0,0.035422008,0.053603109,0,0.038515413,0.047952704,0){3616583.4,3344502.1,3516906.1,2519252.9,2318078.8,2648581.9,657513.67,580213.58,1126309.3,-1403801.4,-1335777.4,-674068.75,-3039615.4,-2842327.2,-2308227.3};
-ST(0.038435934,0.058364632,0,0.035422008,0.053603109,0,0.042113175,0.053290167,0){3459248.5,3344502.1,3616583.4,2206750.4,2318078.8,2519252.9,155241.86,580213.58,657513.67,-1952496,-1335777.4,-1403801.4,-3353689.4,-2842327.2,-3039615.4};
-ST(0.03345202,0.18222482,0,0.034128539,0.18892309,0,0.027249449,0.18607819,0){1947746.5,1872288.6,1646413.8,-3237509.5,-3356683.8,-2861109.6,196057.01,788949.65,464444.42,3107788.7,2731311.2,2518610.9,-2254322.8,-2954777.5,-2323177.4};
-ST(0.1,0.17857143,0,0.095837038,0.182565,0,0.093873231,0.17693503,0){0,291932.87,445896.9,0,-487211.17,-694096.79,0,33971.767,-59504.029,0,464480.32,727141.13,0,-344762.9,-345394.37};
-ST(0.031105381,0.06529626,0,0.032659307,0.059686042,0,0.037071258,0.0642048,0){3030579.1,3158137.1,3365311.2,1667989.8,1964024.3,1900443.5,-444570.51,27282.242,-391679.98,-2357289.6,-1919818.3,-2513388.8,-3210321.2,-3141270.1,-3541461.8};
-ST(0.08415119,0.061061125,0,0.085646934,0.067722415,0,0.079822506,0.065677674,0){1759442.9,1585902.9,2163855.5,1064240.3,821166.94,1180001.4,-51487.645,-339583.13,-340376.77,-1146904.2,-1336670.3,-1706002.2,-1789550.6,-1689538.4,-2296197.5};
-ST(0.079822506,0.065677674,0,0.085646934,0.067722415,0,0.080160084,0.071577727,0){2163855.5,1585902.9,2107851.9,1180001.4,821166.94,977984.82,-340376.77,-339583.13,-676141.96,-1706002.2,-1336670.3,-1967920.1,-2296197.5,-1689538.4,-2205119.3};
-ST(0.067098511,0.16826118,0,0.066399282,0.17458324,0,0.060825265,0.17090728,0){2121688.2,2061554.2,2288734.2,-2928224.5,-3111294.6,-3282960.5,-1008555.7,-477290.81,-862639.89,3311710.7,3354405.6,3657845.3,-250662.47,-1230983.2,-726586.11};
-ST(0.060859952,0.17787963,0,0.061291474,0.18447479,0,0.055202425,0.1814475,0){2182203,2069396,2227021.2,-3438395.7,-3531333.7,-3667462.5,-202892.1,425331.11,145084.74,3555311.4,3230965.1,3573754.5,-1844119.8,-2708277.6,-2457046.3};
-ST(0.1,0.12142857,0,0.094962535,0.11849101,0,0.1,0.11428571,0){0,497557.04,0,0,-175139.73,0,0,-611084.48,0,0,-220851.73,0,0,467971.5,0};
-ST(0.091758141,0.11296708,0,0.094962535,0.11849101,0,0.089230742,0.11966768,0){824791.32,497557.04,1043332.5,-201020.76,-175139.73,-391602.7,-976886.6,-611084.48,-1287980.7,-537824.26,-220851.73,-412950.99,570097.26,467971.5,1030099.2};
-ST(0.1,0.11428571,0,0.094962535,0.11849101,0,0.091758141,0.11296708,0){0,497557.04,824791.32,0,-175139.73,-201020.76,0,-611084.48,-976886.6,0,-220851.73,-537824.26,0,467971.5,570097.26};
-ST(0,0.24285714,0,0.0043813653,0.24702694,0,0,0.25,0){0,145794.38,0,0,-393661.32,0,0,523477.05,0,0,-496310.62,0,0,320224.07,0};
-ST(0,0.05,0,0.004777904,0.053197076,0,0,0.057142857,0){0,557925.04,0,0,389224.92,0,0,102822.82,0,0,-214698.3,0,0,-467537.22,0};
-ST(0.047918899,0.14257657,0,0.049213686,0.13705186,0,0.054237851,0.14012792,0){2842478.3,2922689.8,2856617.8,-2400971.6,-2132523.3,-2267029,-3215455,-3499251.9,-3324577.4,1901551.7,1186505.2,1580891.3,3510918.5,3819996.4,3650971.5};
-ST(0.049678492,0.18505966,0,0.044234359,0.18859393,0,0.043573225,0.18196099,0){2196886.7,2102462.5,2202933.2,-3774046.6,-3756018.8,-3650165.7,512508.07,851571.98,195066.32,3406255.6,3086402.5,3522129.2,-2958276.7,-3279385.1,-2509350};
-ST(0.050398693,0.1921099,0,0.044234359,0.18859393,0,0.049678492,0.18505966,0){2077292.2,2102462.5,2196886.7,-3850553.1,-3756018.8,-3774046.6,1209682,851571.98,512508.07,2818064.5,3086402.5,3406255.6,-3615771.1,-3279385.1,-2958276.7};
-ST(0.055202425,0.1814475,0,0.055890502,0.18802963,0,0.049678492,0.18505966,0){2227021.2,2110328.4,2196886.7,-3667462.5,-3747121.1,-3774046.6,145084.74,795966.68,512508.07,3573754.5,3129878.5,3406255.6,-2457046.3,-3224012.4,-2958276.7};
-ST(0.1,0.27857143,0,0.095069321,0.27540052,0,0.1,0.27142857,0){0,76899.446,0,0,-225624.71,0,0,359465.9,0,0,-469594.27,0,0,548580.83,0};
-ST(0.066600159,0.24211306,0,0.061408089,0.24582042,0,0.059437672,0.2400817,0){1004296.2,1017142.7,1145348.7,-2655015,-2732695.2,-2999714,3359675.2,3591948.1,3711340.5,-2867211.3,-3325647.6,-3009146,1352854.8,2017029.8,1160252.2};
-ST(0.065478411,0.24860928,0,0.061408089,0.24582042,0,0.066600159,0.24211306,0){912058.17,1017142.7,1004296.2,-2478342.9,-2732695.2,-2655015,3344041.2,3591948.1,3359675.2,-3264436.9,-3325647.6,-2867211.3,2261773.6,2017029.8,1352854.8};
-ST(0.1,0.028571429,0,0.095041081,0.024587994,0,0.1,0.021428571,0){0,597113.29,0,0,557751.32,0,0,481620.22,0,0,373740.48,0,0,241099.33,0};
-ST(0.019165757,0.095107709,0,0.024499807,0.092422798,0,0.024938414,0.098415267,0){1930971.9,2390452.1,2383058.5,168744.63,320672.29,68195.72,-1747493.7,-2026771.7,-2312962.3,-2069009.1,-2619357.9,-2447461.4,-502664.26,-944222.72,-204726.33};
-ST(0.041643161,0.17482395,0,0.036146522,0.16944297,0,0.042242048,0.16806859,0){2284160.6,2222447.1,2399442.3,-3458410.7,-3121229.8,-3302042.1,-506290.81,-960241.74,-1157324.9,3718851.8,3509731.4,3737475.6,-1405815.9,-459324.98,-248746.29};
-ST(0.022876349,0.043626948,0,0.025565101,0.048609543,0,0.019247887,0.048569646,0){2488553.5,2702312,2135187.8,1978130.3,2017092.5,1594654.5,1061959.9,820389.33,650408.09,-72059.632,-584372.75,-458538.7,-1191549.5,-1841258.2,-1451674.1};
-ST(0.038217426,0.13599196,0,0.044512931,0.13802764,0,0.041319833,0.14315875,0){2738753.8,2867370.6,2735557.7,-1938161,-2150242,-2343944,-3305386.1,-3405187.4,-3071175.4,972060.89,1298632.3,1904337.3,3589652.3,3729885,3343927.4};
-ST(0.083559522,0.13424014,0,0.081009521,0.1385969,0,0.076271482,0.13373081,0){1462145.4,1630909.4,2012844.4,-981746.52,-1242340.3,-1330317.6,-1784737.2,-1926924,-2463975.8,395362.65,783271.16,494859.01,1914407.3,2113542.9,2631758.9};
-ST(0.071059851,0.17209017,0,0.066399282,0.17458324,0,0.067098511,0.16826118,0){1900690.4,2061554.2,2121688.2,-2772233.4,-3111294.6,-2928224.5,-629520.98,-477290.81,-1008555.7,3060958.1,3354405.6,3311710.7,-774142.34,-1230983.2,-250662.47};
-ST(0.041319833,0.14315875,0,0.044512931,0.13802764,0,0.047918899,0.14257657,0){2735557.7,2867370.6,2842478.3,-2343944,-2150242,-2400971.6,-3071175.4,-3405187.4,-3215455,1904337.3,1298632.3,1901551.7,3343927.4,3729885,3510918.5};
-ST(0,0.16428571,0,0.0046637588,0.16745308,0,0,0.17142857,0){0,362371.83,0,0,-494096.85,0,0,-182769.85,0,0,560561.48,0,0,-21256.565,0};
-ST(0.049678492,0.18505966,0,0.055890502,0.18802963,0,0.050398693,0.1921099,0){2196886.7,2110328.4,2077292.2,-3774046.6,-3747121.1,-3850553.1,512508.07,795966.68,1209682,3406255.6,3129878.5,2818064.5,-2958276.7,-3224012.4,-3615771.1};
-ST(0.043573225,0.18196099,0,0.048811039,0.17808485,0,0.049678492,0.18505966,0){2202933.2,2310715.6,2196886.7,-3650165.7,-3650410,-3774046.6,195066.32,-194330.82,512508.07,3522129.2,3763231.4,3406255.6,-2509350,-1987755.8,-2958276.7};
-ST(0.066710408,0.18109144,0,0.07206248,0.1830344,0,0.06771074,0.1881525,0){1958233.8,1716055.3,1821405.7,-3210995.9,-2879815.5,-3238423,95959.418,236909.5,698008.36,3149708.8,2719220.1,2695511.5,-2111256.9,-2081132.3,-2795478.4};
-ST(0.1,0.18571429,0,0.095837038,0.182565,0,0.1,0.17857143,0){0,291932.87,0,0,-487211.17,0,0,33971.767,0,0,464480.32,0,0,-344762.9,0};
-ST(0.042242048,0.16806859,0,0.036146522,0.16944297,0,0.038427921,0.16264679,0){2399442.3,2222447.1,2389351.9,-3302042.1,-3121229.8,-3020403.6,-1157324.9,-960241.74,-1591681.4,3737475.6,3509731.4,3440909.6,-248746.29,-459324.98,682723.32};
-ST(0.042541479,0.22296234,0,0.04727629,0.22823863,0,0.041402067,0.22952626,0){1481591,1418822.2,1348916.4,-3531706.6,-3492237.2,-3344816,3405357.4,3684627.2,3600200.4,-1180392.3,-1892328,-1982154,-1772446.7,-919608.01,-667743.82};
-ST(0.049797208,0.2214244,0,0.04727629,0.22823863,0,0.042541479,0.22296234,0){1551864.2,1418822.2,1481591,-3662861.4,-3492237.2,-3531706.6,3430735.4,3684627.2,3405357.4,-1003918.8,-1892328,-1180392.3,-2065424.5,-919608.01,-1772446.7};
-ST(0.062195955,0.11505156,0,0.05615957,0.1141762,0,0.059543685,0.10776494,0){2965673.8,3147681.4,3132791.5,-843057.19,-840990.83,-451048.14,-3569130.8,-3764018.8,-3519016.9,-1711501.2,-1917372.9,-2561357.9,2344130.4,2358868.4,1326599.2};
-ST(0.093823791,0.12410599,0,0.087905667,0.12517971,0,0.089230742,0.11966768,0){595735.92,1140990.9,1043332.5,-276601.23,-554517.87,-391602.7,-743959.63,-1425990.8,-1287980.7,-121937.8,-178453.87,-412950.99,678759.2,1334087.8,1030099.2};
-ST(0.066710408,0.18109144,0,0.066399282,0.17458324,0,0.071841704,0.17726974,0){1958233.8,2061554.2,1799263.7,-3210995.9,-3111294.6,-2812994.5,95959.418,-477290.81,-214389.53,3149708.8,3354405.6,2933842.6,-2111256.9,-1230983.2,-1438939.3};
-ST(0.095453592,0.18738967,0,0.095837038,0.182565,0,0.1,0.18571429,0){307137.29,291932.87,0,-541566.85,-487211.17,0,106216.39,33971.767,0,460538.95,464480.32,0,-458087.35,-344762.9,0};
-ST(0.089858368,0.18421461,0,0.095837038,0.182565,0,0.095453592,0.18738967,0){692603.24,291932.87,307137.29,-1178349.1,-487211.17,-541566.85,133849.22,33971.767,106216.39,1084450.2,464480.32,460538.95,-894447.98,-344762.9,-458087.35};
-ST(0.054692531,0.17439284,0,0.048811039,0.17808485,0,0.048076401,0.17082416,0){2346407.8,2310715.6,2424680.5,-3532168.6,-3650410,-3473815.1,-561454.61,-194330.82,-921629.25,3816051.1,3763231.4,3872759.5,-1367177.6,-1987755.8,-754316.94};
-ST(0.030623168,0.1713445,0,0.034648589,0.17585937,0,0.027644767,0.17736901,0){1985985.4,2080615.7,1774040.3,-2866418.8,-3193762.3,-2777088.7,-715248.18,-371953.81,-203929.31,3183566.3,3392886,2892544.7,-696442.05,-1443588.4,-1431643.3};
-ST(0.027644767,0.17736901,0,0.034648589,0.17585937,0,0.03345202,0.18222482,0){1774040.3,2080615.7,1947746.5,-2777088.7,-3193762.3,-3237509.5,-203929.31,-371953.81,196057.01,2892544.7,3392886,3107788.7,-1431643.3,-1443588.4,-2254322.8};
-ST(0.0060491453,0.25298129,0,0.0043813653,0.24702694,0,0.0087429334,0.24792416,0){178654.23,145794.38,283453.34,-493529.07,-393661.32,-768118.62,691183.17,523477.05,1029935.2,-724662.05,-496310.62,-992967.39,585970.08,320224.07,667809.3};
-ST(0,0.25,0,0.0043813653,0.24702694,0,0.0060491453,0.25298129,0){0,145794.38,178654.23,0,-393661.32,-493529.07,0,523477.05,691183.17,0,-496310.62,-724662.05,0,320224.07,585970.08};
-ST(0.093823791,0.12410599,0,0.094962535,0.11849101,0,0.1,0.12142857,0){595735.92,497557.04,0,-276601.23,-175139.73,0,-743959.63,-611084.48,0,-121937.8,-220851.73,0,678759.2,467971.5,0};
-ST(0.076430303,0.18837043,0,0.07206248,0.1830344,0,0.077619244,0.18028791,0){1444535.6,1716055.3,1471797.4,-2574453.4,-2879815.5,-2389894.4,569102.25,236909.5,18944.546,2129625.3,2719220.1,2378251.6,-2235391.7,-2081132.3,-1502642.9};
-ST(0.027249449,0.18607819,0,0.021212478,0.18688263,0,0.021251228,0.18136297,0){1646413.8,1339179.6,1398279.8,-2861109.6,-2348119.2,-2300353.4,464444.42,429909.33,85724.805,2518610.9,2024227.8,2245163.6,-2323177.4,-1955356.8,-1534338.6};
-ST(0.072908259,0.24139656,0,0.066600159,0.24211306,0,0.070607657,0.23670872,0){881474.92,1004296.2,1007105.3,-2322734,-2655015,-2594870.8,2916335.3,3359675.2,3083897.2,-2445637.4,-2867211.3,-2267120.1,1082242,1352854.8,490193.02};
-ST(0.089230742,0.11966768,0,0.094962535,0.11849101,0,0.093823791,0.12410599,0){1043332.5,497557.04,595735.92,-391602.7,-175139.73,-276601.23,-1287980.7,-611084.48,-743959.63,-412950.99,-220851.73,-121937.8,1030099.2,467971.5,678759.2};
-ST(0.038435934,0.058364632,0,0.032659307,0.059686042,0,0.035422008,0.053603109,0){3459248.5,3158137.1,3344502.1,2206750.4,1964024.3,2318078.8,155241.86,27282.242,580213.58,-1952496,-1919818.3,-1335777.4,-3353689.4,-3141270.1,-2842327.2};
-ST(0.050960377,0.23252058,0,0.04727629,0.22823863,0,0.053624899,0.22742186,0){1342135.9,1418822.2,1430137,-3383651.2,-3492237.2,-3503302.1,3804738.6,3684627.2,3648370.9,-2403721.7,-1892328,-1785483,-148681.88,-919608.01,-1060301.4};
-ST(0.025641665,0.25311603,0,0.033025927,0.25326882,0,0.030217898,0.25971254,0){680173.91,809560.38,660621.26,-1879847.5,-2238649.8,-1866014.4,2635470.4,3142273.3,2744196,-2768550.2,-3308331.9,-3141188.1,2247361.6,2697705.3,2987009.7};
-ST(0.017207343,0.22323305,0,0.021374843,0.22646669,0,0.016939848,0.22904958,0){781289.63,906782.43,714788.59,-1865590.4,-2208721,-1767596.2,1807835.2,2264460.9,1888698.3,-643322.1,-1042528.4,-1014237.8,-915362.92,-767856.24,-395054.79};
-ST(0.027746664,0.13122119,0,0.023379755,0.12686903,0,0.030575169,0.1246812,0){2296333.1,2047772.9,2526238.7,-1399007.9,-1065433.1,-1202245.8,-2843055.5,-2558991,-3156412.2,288094.78,-162203.53,-451924.48,2955532.6,2481221.5,2919641.1};
-ST(0.0064812773,0.046734878,0,0.004777904,0.053197076,0,0,0.05,0){761350.4,557925.04,0,582610.88,389224.92,0,267082.8,102822.82,0,-111174.21,-214698.3,0,-463416.67,-467537.22,0};
-ST(0.0094132111,0.052421332,0,0.004777904,0.053197076,0,0.0064812773,0.046734878,0){1088603.4,557925.04,761350.4,768702.62,389224.92,582610.88,222919.17,102822.82,267082.8,-388347.22,-214698.3,-111174.21,-885762.83,-467537.22,-463416.67};
-ST(0.060567191,0.25172758,0,0.061408089,0.24582042,0,0.065478411,0.24860928,0){917440.34,1017142.7,912058.17,-2522838.3,-2732695.2,-2478342.9,3497206.6,3591948.1,3344041.2,-3596815.5,-3325647.6,-3264436.9,2796536,2017029.8,2261773.6};
-ST(0.077619244,0.18028791,0,0.07206248,0.1830344,0,0.071841704,0.17726974,0){1471797.4,1716055.3,1799263.7,-2389894.4,-2879815.5,-2812994.5,18944.546,236909.5,-214389.53,2378251.6,2719220.1,2933842.6,-1502642.9,-2081132.3,-1438939.3};
-ST(0.071841704,0.17726974,0,0.07206248,0.1830344,0,0.066710408,0.18109144,0){1799263.7,1716055.3,1958233.8,-2812994.5,-2879815.5,-3210995.9,-214389.53,236909.5,95959.418,2933842.6,2719220.1,3149708.8,-1438939.3,-2081132.3,-2111256.9};
-ST(0.060859952,0.17787963,0,0.066399282,0.17458324,0,0.066710408,0.18109144,0){2182203,2061554.2,1958233.8,-3438395.7,-3111294.6,-3210995.9,-202892.1,-477290.81,95959.418,3555311.4,3354405.6,3149708.8,-1844119.8,-1230983.2,-2111256.9};
-ST(0.0062494098,0.068021592,0,0.012193394,0.066188359,0,0.011197941,0.071439681,0){709501.16,1364188,1244724.5,364477.97,734639.92,579995.21,-157824.6,-233939.49,-394493.66,-603457.47,-1094586.7,-1158343.6,-756039.79,-1450385,-1303869.8};
-ST(0.016939848,0.22904958,0,0.021374843,0.22646669,0,0.022740693,0.23189018,0){714788.59,906782.43,887604.04,-1767596.2,-2208721,-2230116.3,1888698.3,2264460.9,2485475.6,-1014237.8,-1042528.4,-1529145.6,-395054.79,-767856.24,-172982.46};
-ST(0.019165757,0.095107709,0,0.013714026,0.097839388,0,0.013428016,0.091778472,0){1930971.9,1412613.2,1408980.1,168744.63,55008.627,204626.15,-1747493.7,-1355500.2,-1174648.8,-2069009.1,-1463354,-1549888.7,-502664.26,-165174.7,-600683.83};
-ST(0.053624899,0.22742186,0,0.04727629,0.22823863,0,0.049797208,0.2214244,0){1430137,1418822.2,1551864.2,-3503302.1,-3492237.2,-3662861.4,3648370.9,3684627.2,3430735.4,-1785483,-1892328,-1003918.8,-1060301.4,-919608.01,-2065424.5};
-ST(0.034648589,0.17585937,0,0.038433858,0.18005903,0,0.03345202,0.18222482,0){2080615.7,2131117.1,1947746.5,-3193762.3,-3450732.6,-3237509.5,-371953.81,5612.0128,196057.01,3392886,3447337.8,3107788.7,-1443588.4,-2140463.9,-2254322.8};
-ST(0.028699663,0.054481756,0,0.025565101,0.048609543,0,0.032229878,0.047894836,0){2920693,2702312,3188476.9,1995520.8,2017092.5,2403076.1,438210.61,820389.33,1025710.6,-1257984.1,-584372.75,-604377.64,-2556170.3,-1841258.2,-2086050.7};
-ST(0.03345202,0.18222482,0,0.038433858,0.18005903,0,0.038852293,0.18542603,0){1947746.5,2131117.1,2057873,-3237509.5,-3450732.6,-3549951.2,196057.01,5612.0128,516044.6,3107788.7,3447337.8,3175871.5,-2254322.8,-2140463.9,-2819104.7};
-ST(0.071841704,0.17726974,0,0.066399282,0.17458324,0,0.071059851,0.17209017,0){1799263.7,2061554.2,1900690.4,-2812994.5,-3111294.6,-2772233.4,-214389.53,-477290.81,-629520.98,2933842.6,3354405.6,3060958.1,-1438939.3,-1230983.2,-774142.34};
-ST(0.06137482,0.19024807,0,0.061291474,0.18447479,0,0.06771074,0.1881525,0){1976038.9,2069396,1821405.7,-3592882,-3531333.7,-3238423,963745.22,425331.11,698008.36,2804392.5,3230965.1,2695511.5,-3258719.1,-2708277.6,-2795478.4};
-ST(0.06771074,0.1881525,0,0.061291474,0.18447479,0,0.066710408,0.18109144,0){1821405.7,2069396,1958233.8,-3238423,-3531333.7,-3210995.9,698008.36,425331.11,95959.418,2695511.5,3230965.1,3149708.8,-2795478.4,-2708277.6,-2111256.9};
-ST(0.0081152275,0.10988635,0,0.01198914,0.11616091,0,0.0062042788,0.11791514,0){821145.89,1171325.2,612847.32,-151361.79,-358450.6,-208741.13,-944689.8,-1420119.3,-750565.55,-619246.83,-627101.02,-286207.66,439508.43,984768,561848.67};
-ST(0.0062042788,0.11791514,0,0.01198914,0.11616091,0,0.01093484,0.12117452,0){612847.32,1171325.2,1052666.9,-208741.13,-358450.6,-426753.37,-750565.55,-1420119.3,-1306415.4,-286207.66,-627101.02,-350052.21,561848.67,984768,1098212.1};
-ST(0.081922129,0.20489902,0,0.086709216,0.20730703,0,0.081656406,0.2108727,0){996952.98,734117.03,951384.03,-2081157.6,-1563285.8,-2083808.1,1266338.6,1031586.7,1528962.6,704044.3,398134,263916.4,-2032271.3,-1481512.9,-1843401};
-ST(0.060825265,0.17090728,0,0.066399282,0.17458324,0,0.060859952,0.17787963,0){2288734.2,2061554.2,2182203,-3282960.5,-3111294.6,-3438395.7,-862639.89,-477290.81,-202892.1,3657845.3,3354405.6,3555311.4,-726586.11,-1230983.2,-1844119.8};
-ST(0.084619556,0.23283838,0,0.084319616,0.22565969,0,0.09071018,0.22887426,0){621044.17,696453.76,406264.77,-1568398.7,-1688204.7,-1003622.2,1771426.2,1707540.6,1069446.3,-1133733.9,-743250.94,-568907.82,-42283.716,-649719.93,-233040.27};
-ST(0.078984823,0.22953004,0,0.084319616,0.22565969,0,0.084619556,0.23283838,0){858343.29,696453.76,621044.17,-2128428.8,-1688204.7,-1568398.7,2291087.1,1707540.6,1771426.2,-1261656.1,-743250.94,-1133733.9,-424553.92,-649719.93,-42283.716};
-ST(0.023309936,0.19197185,0,0.025476801,0.19755762,0,0.018704911,0.19716585,0){1390526.6,1423125.8,1103230.1,-2573914.4,-2782737.9,-2149261.2,799964.88,1235431.1,934589.13,1893175.4,1602470.1,1263201.6,-2411477.9,-2766638.2,-2132672.2};
-ST(0.029690249,0.19362013,0,0.025476801,0.19755762,0,0.023309936,0.19197185,0){1647856.1,1423125.8,1390526.6,-3101495.4,-2782737.9,-2573914.4,1088093.1,1235431.1,799964.88,2141745.7,1602470.1,1893175.4,-2977851,-2766638.2,-2411477.9};
-ST(0.038852293,0.18542603,0,0.034128539,0.18892309,0,0.03345202,0.18222482,0){2057873,1872288.6,1947746.5,-3549951.2,-3356683.8,-3237509.5,516044.6,788949.65,196057.01,3175871.5,2731311.2,3107788.7,-2819104.7,-2954777.5,-2254322.8};
-ST(0.039366597,0.19088868,0,0.034128539,0.18892309,0,0.038852293,0.18542603,0){1982365.2,1872288.6,2057873,-3628592.6,-3356683.8,-3549951.2,1030950.1,788949.65,516044.6,2772526.5,2731311.2,3175871.5,-3333638.5,-2954777.5,-2819104.7};
-ST(0.05,0,0,0.051745598,0.0053231545,0,0.046181733,0.0056701177,0){3880596.9,3873250.9,3851009.3,3880622.4,3861228.9,3837454.5,3880662.8,3837214.6,3810385,3880737.9,3801308.2,3769920.5,3880625.6,3753417.7,3715901.2};
-ST(0.045931579,0.29422002,0,0.051526128,0.29458598,0,0.05,0.3,0){116468.36,109871.78,0,-348980.73,-329256.34,0,580225.36,547568.39,0,-809364.6,-764098.34,0,1035478,977975.34,0};
-ST(0.017373248,0.19021363,0,0.021212478,0.18688263,0,0.023309936,0.19197185,0){1095255.9,1339179.6,1390526.6,-1990705.9,-2348119.2,-2573914.4,532263.7,429909.33,799964.88,1555631.8,2024227.8,1893175.4,-1804413.6,-1955356.8,-2411477.9};
-ST(0.08682376,0.20181233,0,0.086709216,0.20730703,0,0.081922129,0.20489902,0){767576.83,734117.03,996952.98,-1560255.4,-1563285.8,-2081157.6,843726.65,1031586.7,1266338.6,688912.23,398134,704044.3,-1555436.8,-1481512.9,-2032271.3};
-ST(0.08466046,0.11619385,0,0.082946441,0.12207685,0,0.077013163,0.11736903,0){1475783,1589878.9,2095773.2,-452604.25,-673263.29,-691227.47,-1789662.1,-1978038.1,-2559181.5,-788262.21,-467139.5,-1023961.4,1243195.1,1708498.9,1873161.8};
-ST(0.065117308,0.15657509,0,0.064971856,0.15110456,0,0.070477538,0.15360968,0){2354870.2,2431817,2153625.7,-2678881.2,-2488096.1,-2316413.6,-1986291.9,-2374265.3,-1978592.7,2952219.2,2543085,2466066.8,1580034,2315361.9,1792310.4};
-ST(0.036308441,0.24745658,0,0.033139613,0.24047735,0,0.040431855,0.24188745,0){958174.94,1026889.2,1110505,-2591684.5,-2694450.7,-2932804,3460190.4,3348643.4,3702149.5,-3307339.6,-2743423.6,-3142324.5,2177878.8,1106136.5,1453973.2};
-ST(0.035422008,0.053603109,0,0.032659307,0.059686042,0,0.028699663,0.054481756,0){3344502.1,3158137.1,2920693,2318078.8,1964024.3,1995520.8,580213.58,27282.242,438210.61,-1335777.4,-1919818.3,-1257984.1,-2842327.2,-3141270.1,-2556170.3};
-ST(0.083337094,0.16031526,0,0.088623123,0.15812222,0,0.088381846,0.16289419,0){1295652.6,918302.92,911153.68,-1575018.8,-1074338,-1156470.7,-956036.82,-735787.48,-599768.12,1781183.7,1199414.9,1317920.1,571788.58,531983.03,244888.24};
-ST(0.029124573,0.24658198,0,0.033139613,0.24047735,0,0.036308441,0.24745658,0){849052.23,1026889.2,958174.94,-2288340.2,-2694450.7,-2591684.5,3030093.5,3348643.4,3460190.4,-2848204.4,-2743423.6,-3307339.6,1797881.3,1106136.5,2177878.8};
-ST(0.058552205,0.15400025,0,0.064971856,0.15110456,0,0.065117308,0.15657509,0){2589572.8,2431817,2354870.2,-2806487.5,-2488096.1,-2678881.2,-2354581.2,-2374265.3,-1986291.9,3003966,2543085,2952219.2,2103059.1,2315361.9,1580034};
-ST(0.026971271,0.22659033,0,0.02301506,0.22157032,0,0.029518097,0.21985532,0){1090633.5,1025043.6,1264894.2,-2658504.1,-2421684.9,-2954793.2,2731189,2274566.1,2682751.8,-1267784.1,-677461.35,-629411.95,-909068.56,-1351813.7,-1842177.8};
-ST(0.029518097,0.21985532,0,0.02301506,0.22157032,0,0.02463475,0.21609565,0){1264894.2,1025043.6,1153636.1,-2954793.2,-2421684.9,-2626116.1,2682751.8,2274566.1,2198315,-629411.95,-677461.35,-179791.92,-1842177.8,-1351813.7,-1969098.8};
-ST(0.038852293,0.18542603,0,0.038433858,0.18005903,0,0.043573225,0.18196099,0){2057873,2131117.1,2202933.2,-3549951.2,-3450732.6,-3650165.7,516044.6,5612.0128,195066.32,3175871.5,3447337.8,3522129.2,-2819104.7,-2140463.9,-2509350};
-ST(0.095652827,0.22622146,0,0.095706332,0.23121352,0,0.09071018,0.22887426,0){199039.37,183910.78,406264.77,-484109.58,-460364.34,-1003622.2,494313.66,508106.39,1069446.3,-223837.82,-303408.65,-568907.82,-173819.74,-52245.513,-233040.27};
-ST(0.066710408,0.18109144,0,0.061291474,0.18447479,0,0.060859952,0.17787963,0){1958233.8,2069396,2182203,-3210995.9,-3531333.7,-3438395.7,95959.418,425331.11,-202892.1,3149708.8,3230965.1,3555311.4,-2111256.9,-2708277.6,-1844119.8};
-ST(0.09123018,0.070922096,0,0.086276325,0.073599227,0,0.085646934,0.067722415,0){983713.53,1502743.3,1585902.9,465586.72,653401.45,821166.94,-297764.17,-565297.67,-339583.13,-904277.98,-1464602.7,-1336670.3,-1034644.8,-1536324.4,-1689538.4};
-ST(0.085646934,0.067722415,0,0.086276325,0.073599227,0,0.080160084,0.071577727,0){1585902.9,1502743.3,2107851.9,821166.94,653401.45,977984.82,-339583.13,-565297.67,-676141.96,-1336670.3,-1464602.7,-1967920.1,-1689538.4,-1536324.4,-2205119.3};
-ST(0.09123018,0.070922096,0,0.095867013,0.068756454,0,0.095795895,0.073622969,0){983713.53,470210.65,473503.74,465586.72,236792.42,205720.2,-297764.17,-114175.46,-178405.32,-904277.98,-408471.99,-461642.03,-1034644.8,-500215.61,-483922.03};
-ST(0.02301506,0.22157032,0,0.021374843,0.22646669,0,0.017207343,0.22323305,0){1025043.6,906782.43,781289.63,-2421684.9,-2208721,-1865590.4,2274566.1,2264460.9,1807835.2,-677461.35,-1042528.4,-643322.1,-1351813.7,-767856.24,-915362.92};
-ST(0.041643161,0.17482395,0,0.038433858,0.18005903,0,0.034648589,0.17585937,0){2284160.6,2131117.1,2080615.7,-3458410.7,-3450732.6,-3193762.3,-506290.81,5612.0128,-371953.81,3718851.8,3447337.8,3392886,-1405815.9,-2140463.9,-1443588.4};
-ST(0.082709707,0.12855445,0,0.082946441,0.12207685,0,0.087905667,0.12517971,0){1568327.1,1589878.9,1140990.9,-869760.99,-673263.29,-554517.87,-1955764.1,-1978038.1,-1425990.8,-1353.9511,-467139.5,-178453.87,1955094.7,1708498.9,1334087.8};
-ST(0.095090425,0.2489538,0,0.095492809,0.25375881,0,0.090077759,0.25268961,0){157454.16,131307.15,291813.61,-428416.46,-363726.6,-805257.31,579817.55,512510.07,1125037.4,-569427.53,-543451.99,-1174248.1,400020.01,449348.78,940920.06};
-ST(0.08974924,0.047235181,0,0.095360834,0.0462161,0,0.094913401,0.051076335,0){1190814.4,547145.45,595503.05,905328.07,421466.87,429138.45,402804.56,198977.54,142901.48,-196265.4,-69217.008,-183223.65,-748421.11,-321602.09,-458373.75};
-ST(0.1,0.22857143,0,0.095706332,0.23121352,0,0.095652827,0.22622146,0){0,183910.78,199039.37,0,-460364.34,-484109.58,0,508106.39,494313.66,0,-303408.65,-223837.82,0,-52245.513,-173819.74};
-ST(0.049213686,0.13705186,0,0.044512931,0.13802764,0,0.045894811,0.13135905,0){2922689.8,2867370.6,2973475.7,-2132523.3,-2150242,-1819976.4,-3499251.9,-3405187.4,-3679581.9,1186505.2,1298632.3,392676.16,3819996.4,3729885,3832095.1};
-ST(0.047918899,0.14257657,0,0.044512931,0.13802764,0,0.049213686,0.13705186,0){2842478.3,2867370.6,2922689.8,-2400971.6,-2150242,-2132523.3,-3215455,-3405187.4,-3499251.9,1901551.7,1298632.3,1186505.2,3510918.5,3729885,3819996.4};
-ST(0.026971271,0.22659033,0,0.021374843,0.22646669,0,0.02301506,0.22157032,0){1090633.5,906782.43,1025043.6,-2658504.1,-2208721,-2421684.9,2731189,2264460.9,2274566.1,-1267784.1,-1042528.4,-677461.35,-909068.56,-767856.24,-1351813.7};
-ST(0.095795895,0.073622969,0,0.095867013,0.068756454,0,0.1,0.071428571,0){473503.74,470210.65,0,205720.2,236792.42,0,-178405.32,-114175.46,0,-461642.03,-408471.99,0,-483922.03,-500215.61,0};
-};
diff --git a/tutorial/view2.pos b/tutorial/view2.pos
deleted file mode 100644
index 0cd798d2b422b223ef0f5dd2069970edfc6f3f5e..0000000000000000000000000000000000000000
--- a/tutorial/view2.pos
+++ /dev/null
@@ -1,362 +0,0 @@
-/********************************************************************* 
- *
- *  Gmsh tutorial 1 - appendix 2
- * 
- *  Vector view
- *
- *********************************************************************/
-
-View "a vector map" {
-VP(1e-06,1e-06,0){0,0,122.26654,0,0,122.45426,0,0,122.82769,0,0,123.38417,0,0,124.20759};
-VP(1e-06,0.010000933,0){0,0,121.95116,0,0,120.60823,0,0,117.93735,0,0,113.96957,0,0,108.76298};
-VP(1e-06,0.020000867,0){0,0,121.76276,0,0,116.4134,0,0,105.95451,0,0,90.855892,0,0,71.867727};
-VP(1e-06,0.0300008,0){0,0,120.79673,0,0,108.95219,0,0,86.42978,0,0,55.448276,0,0,19.067191};
-VP(1e-06,0.040000733,0){0,0,119.6291,0,0,98.888056,0,0,61.048627,0,0,12.75009,0,0,-37.476665};
-VP(1e-06,0.050000667,0){0,0,118.01437,0,0,86.430423,0,0,31.638139,0,0,-31.806471,0,0,-86.912688};
-VP(1e-06,0.0600006,0){0,0,116.49231,0,0,71.947632,0,0,0.0082419918,0,0,-71.673337,0,0,-115.66034};
-VP(1e-06,0.070000533,0){0,0,114.18838,0,0,55.530819,0,0,-31.604761,0,0,-102.40655,0,0,-120.49233};
-VP(1e-06,0.080000467,0){0,0,111.73884,0,0,37.77248,0,0,-61.122995,0,0,-119.44024,0,0,-98.690267};
-VP(1e-06,0.0900004,0){0,0,109.02764,0,0,19.140014,0,0,-86.347807,0,0,-120.39736,0,0,-55.210037};
-VP(1e-06,0.10000033,0){0,0,105.89652,0,0,-0.0065380069,0,0,-106.09757,0,0,-106.26766,0,0,0.10907541};
-VP(1e-06,0.11000027,0){0,0,102.73901,0,0,-19.150688,0,0,-118.07603,0,0,-76.769682,0,0,55.222067};
-VP(1e-06,0.1200002,0){0,0,98.952931,0,0,-37.767065,0,0,-122.22482,0,0,-37.780096,0,0,98.736188};
-VP(1e-06,0.13000013,0){0,0,95.122755,0,0,-55.584271,0,0,-118.15756,0,0,6.4473841,0,0,120.69955};
-VP(1e-06,0.14000007,0){0,0,90.852382,0,0,-71.806307,0,0,-105.6782,0,0,49.526055,0,0,115.53689};
-VP(1e-06,0.15,0){0,0,86.563988,0,0,-86.610866,0,0,-86.776431,0,0,86.913071,0,0,87.233235};
-VP(1e-06,0.15999993,0){0,0,81.861739,0,0,-98.925044,0,0,-61.054707,0,0,111.37293,0,0,37.582303};
-VP(1e-06,0.16999987,0){0,0,76.880554,0,0,-108.83108,0,0,-31.635178,0,0,121.95453,0,0,-19.051124};
-VP(1e-06,0.1799998,0){0,0,71.93248,0,0,-116.3445,0,0,0.0051803424,0,0,116.09977,0,0,-71.614187};
-VP(1e-06,0.18999973,0){0,0,66.655881,0,0,-120.84615,0,0,31.684673,0,0,94.843218,0,0,-108.67685};
-VP(1e-06,0.19999967,0){0,0,61.126812,0,0,-122.30122,0,0,61.195533,0,0,61.281721,0,0,-122.75882};
-VP(1e-06,0.2099996,0){0,0,55.454746,0,0,-120.62189,0,0,86.3266,0,0,19.057229,0,0,-108.50779};
-VP(1e-06,0.21999953,0){0,0,49.765538,0,0,-116.57634,0,0,106.4713,0,0,-25.419128,0,0,-73.667176};
-VP(1e-06,0.22999947,0){0,0,43.853336,0,0,-109.05425,0,0,118.28173,0,0,-66.779805,0,0,-19.027558};
-VP(1e-06,0.2399994,0){0,0,37.808977,0,0,-98.930918,0,0,122.15279,0,0,-98.667764,0,0,37.647079};
-VP(1e-06,0.24999933,0){0,0,31.614973,0,0,-86.420956,0,0,118.17907,0,0,-118.35504,0,0,86.812866};
-VP(1e-06,0.25999927,0){0,0,25.446319,0,0,-71.890336,0,0,105.77788,0,0,-121.22558,0,0,115.63648};
-VP(1e-06,0.2699992,0){0,0,19.147235,0,0,-55.558139,0,0,86.505401,0,0,-108.94986,0,0,120.6783};
-VP(1e-06,0.27999913,0){0,0,12.792336,0,0,-37.809277,0,0,61.14898,0,0,-81.777482,0,0,98.845675};
-VP(1e-06,0.28999907,0){0,0,6.3850865,0,0,-19.083517,0,0,31.567694,0,0,-43.697424,0,0,55.414892};
-VP(1e-06,0.299999,0){0,0,0.0095385519,0,0,-0.03787688,0,0,0.093923584,0,0,-0.19582795,0,0,0.49155762};
-
-VP(0.0100008,1e-06,0){0,0,1199420,0,0,1199413.7,0,0,1199397.9,0,0,1199378.4,0,0,1199403.4};
-VP(0.0100008,0.010000933,0){0,0,1197824.3,0,0,1184734.2,0,0,1158699.2,0,0,1120019.6,0,0,1069149};
-VP(0.0100008,0.020000867,0){0,0,1192912,0,0,1140722,0,0,1038620.8,0,0,891080.74,0,0,704676.89};
-VP(0.0100008,0.0300008,0){0,0,1184493.3,0,0,1068498.7,0,0,847865.42,0,0,544204.94,0,0,187350.11};
-VP(0.0100008,0.040000733,0){0,0,1173023.5,0,0,970311.11,0,0,599870.71,0,0,125642.73,0,0,-370468.19};
-VP(0.0100008,0.050000667,0){0,0,1158406,0,0,848028.9,0,0,310455.27,0,0,-310247.58,0,0,-847690.45};
-VP(0.0100008,0.0600006,0){0,0,1141160.6,0,0,705256.28,0,0,-99.915745,0,0,-705541.47,0,0,-1141600.4};
-VP(0.0100008,0.070000533,0){0,0,1119507.8,0,0,544453.75,0,0,-310310.46,0,0,-1005770.5,0,0,-1184662.4};
-VP(0.0100008,0.080000467,0){0,0,1095510.9,0,0,370556.44,0,0,-599794.43,0,0,-1173524.1,0,0,-970723.46};
-VP(0.0100008,0.0900004,0){0,0,1068561,0,0,187606.05,0,0,-848133.51,0,0,-1184824.1,0,0,-544820.04};
-VP(0.0100008,0.10000033,0){0,0,1038622.4,0,0,59.994402,0,0,-1038526.3,0,0,-1038609.6,0,0,-114.10057};
-VP(0.0100008,0.11000027,0){0,0,1006283.9,0,0,-187756.34,0,0,-1159127,0,0,-755186.39,0,0,544970.98};
-VP(0.0100008,0.1200002,0){0,0,970146.83,0,0,-370533.83,0,0,-1199206,0,0,-370700.66,0,0,970167.63};
-VP(0.0100008,0.13000013,0){0,0,932049.4,0,0,-544524.54,0,0,-1158572.3,0,0,62773.626,0,0,1184972.7};
-VP(0.0100008,0.14000007,0){0,0,891093.35,0,0,-704750.35,0,0,-1038220.5,0,0,487590.9,0,0,1139583.1};
-VP(0.0100008,0.15,0){0,0,848043.94,0,0,-848162.19,0,0,-847974.76,0,0,848328.9,0,0,847991.67};
-VP(0.0100008,0.15999993,0){0,0,802591.51,0,0,-970520.77,0,0,-600078.94,0,0,1096713.1,0,0,371678.95};
-VP(0.0100008,0.16999987,0){0,0,754801.61,0,0,-1068627.9,0,0,-310284.17,0,0,1197257.1,0,0,-187594.97};
-VP(0.0100008,0.1799998,0){0,0,704861.79,0,0,-1140475,0,0,-9.7592105,0,0,1140481.7,0,0,-704943.27};
-VP(0.0100008,0.18999973,0){0,0,653101.17,0,0,-1184459.4,0,0,310527.61,0,0,931931.51,0,0,-1068734.2};
-VP(0.0100008,0.19999967,0){0,0,599592.55,0,0,-1199104.4,0,0,599503.9,0,0,599267.34,0,0,-1198494.7};
-VP(0.0100008,0.2099996,0){0,0,544384.89,0,0,-1184212.9,0,0,847613.27,0,0,187425.67,0,0,-1067044.3};
-VP(0.0100008,0.21999953,0){0,0,487650.97,0,0,-1140248.2,0,0,1038317,0,0,-249363.16,0,0,-704669.35};
-VP(0.0100008,0.22999947,0){0,0,429775.49,0,0,-1068467.4,0,0,1158136.7,0,0,-652849.84,0,0,-187529.03};
-VP(0.0100008,0.2399994,0){0,0,370742.76,0,0,-970651.21,0,0,1199863,0,0,-970733.39,0,0,370606.77};
-VP(0.0100008,0.24999933,0){0,0,310389.76,0,0,-847996.97,0,0,1158383,0,0,-1158385.8,0,0,848238.2};
-VP(0.0100008,0.25999927,0){0,0,249381.35,0,0,-705070.58,0,0,1038980.9,0,0,-1193427.1,0,0,1141624.8};
-VP(0.0100008,0.2699992,0){0,0,187667.19,0,0,-544609.42,0,0,848186.21,0,0,-1068663.7,0,0,1184526.1};
-VP(0.0100008,0.27999913,0){0,0,125343.27,0,0,-370542.57,0,0,599521.08,0,0,-802247.4,0,0,969885.37};
-VP(0.0100008,0.28999907,0){0,0,62767.644,0,0,-187609.66,0,0,310381.87,0,0,-429732.38,0,0,544296.89};
-VP(0.0100008,0.299999,0){0,0,6.2613191,0,0,-18.79568,0,0,31.365281,0,0,-43.993284,0,0,56.787457};
-
-VP(0.0200006,1e-06,0){0,0,2280709.8,0,0,2280750.8,0,0,2280828.8,0,0,2280959.2,0,0,2281129.6};
-VP(0.0200006,0.010000933,0){0,0,2278084.8,0,0,2253198.7,0,0,2203663.2,0,0,2129974,0,0,2032919.9};
-VP(0.0200006,0.020000867,0){0,0,2268407.5,0,0,2169311.8,0,0,1975439,0,0,1695261.3,0,0,1341077.3};
-VP(0.0200006,0.0300008,0){0,0,2252723.5,0,0,2032071.2,0,0,1612411.9,0,0,1034928.7,0,0,356247.55};
-VP(0.0200006,0.040000733,0){0,0,2231113.2,0,0,1845403.9,0,0,1140636.4,0,0,238607.96,0,0,-704725};
-VP(0.0200006,0.050000667,0){0,0,2203326.5,0,0,1612958.8,0,0,590304.13,0,0,-590735.99,0,0,-1613764.5};
-VP(0.0200006,0.0600006,0){0,0,2169459.4,0,0,1340689.5,0,0,-253.26048,0,0,-1341167.5,0,0,-2169964.1};
-VP(0.0200006,0.070000533,0){0,0,2129890.6,0,0,1035882.8,0,0,-590292.11,0,0,-1913508.9,0,0,-2254296.8};
-VP(0.0200006,0.080000467,0){0,0,2083910,0,0,704847.45,0,0,-1140765.6,0,0,-2231594.2,0,0,-1845800.6};
-VP(0.0200006,0.0900004,0){0,0,2032367.2,0,0,356748.59,0,0,-1612959.6,0,0,-2252643.6,0,0,-1034806.6};
-VP(0.0200006,0.10000033,0){0,0,1975611.2,0,0,57.943352,0,0,-1975420.4,0,0,-1975504.9,0,0,-426.45724};
-VP(0.0200006,0.11000027,0){0,0,1913315.4,0,0,-356703.47,0,0,-2203743.9,0,0,-1436328.1,0,0,1035508.3};
-VP(0.0200006,0.1200002,0){0,0,1845574.3,0,0,-704966.07,0,0,-2281489.6,0,0,-705279.75,0,0,1845900.6};
-VP(0.0200006,0.13000013,0){0,0,1772685.9,0,0,-1035509.4,0,0,-2203500.9,0,0,119407.19,0,0,2253641.5};
-VP(0.0200006,0.14000007,0){0,0,1695112.7,0,0,-1340923.1,0,0,-1975160.6,0,0,928234.38,0,0,2168753.8};
-VP(0.0200006,0.15,0){0,0,1612735.8,0,0,-1612718.7,0,0,-1612310.8,0,0,1612112.4,0,0,1611635.4};
-VP(0.0200006,0.15999993,0){0,0,1526063.3,0,0,-1845120.2,0,0,-1140155.4,0,0,2083304.9,0,0,704343.18};
-VP(0.0200006,0.16999987,0){0,0,1435361,0,0,-2032273.5,0,0,-590286.74,0,0,2277973.9,0,0,-357113.77};
-VP(0.0200006,0.1799998,0){0,0,1340603.7,0,0,-2169104.8,0,0,-187.59264,0,0,2169344.4,0,0,-1340174.3};
-VP(0.0200006,0.18999973,0){0,0,1242326.7,0,0,-2253004.8,0,0,590488.21,0,0,1772854.2,0,0,-2032869.4};
-VP(0.0200006,0.19999967,0){0,0,1140484.2,0,0,-2281080.6,0,0,1140863.6,0,0,1140070,0,0,-2281239};
-VP(0.0200006,0.2099996,0){0,0,1035459.2,0,0,-2252611.6,0,0,1612490.4,0,0,356944.25,0,0,-2031783};
-VP(0.0200006,0.21999953,0){0,0,927776.85,0,0,-2169354.9,0,0,1975370.5,0,0,-474298.34,0,0,-1340371.5};
-VP(0.0200006,0.22999947,0){0,0,817407.12,0,0,-2032357.3,0,0,2203356.6,0,0,-1242461.5,0,0,-356900.43};
-VP(0.0200006,0.2399994,0){0,0,704976.55,0,0,-1845571.3,0,0,2281095,0,0,-1845366.1,0,0,705164.78};
-VP(0.0200006,0.24999933,0){0,0,590364.42,0,0,-1612953.4,0,0,2203467,0,0,-2203634.2,0,0,1613249.1};
-VP(0.0200006,0.25999927,0){0,0,474194.23,0,0,-1340559.8,0,0,1975062.6,0,0,-2267979.5,0,0,2168670.2};
-VP(0.0200006,0.2699992,0){0,0,356872.34,0,0,-1035606,0,0,1612764.1,0,0,-2031781.9,0,0,2251747.9};
-VP(0.0200006,0.27999913,0){0,0,238392.68,0,0,-704748.96,0,0,1140275,0,0,-1525901.8,0,0,1844805.9};
-VP(0.0200006,0.28999907,0){0,0,119394.11,0,0,-356902.82,0,0,590587.11,0,0,-817934.15,0,0,1036489.1};
-VP(0.0200006,0.299999,0){0,0,11.932618,0,0,-35.829397,0,0,59.820438,0,0,-83.966334,0,0,108.36963};
-
-VP(0.0300004,1e-06,0){0,0,3139675.3,0,0,3139674.2,0,0,3139668.3,0,0,3139681.7,0,0,3139723.8};
-VP(0.0300004,0.010000933,0){0,0,3135081.7,0,0,3100734,0,0,3032371.9,0,0,2930692.9,0,0,2796805.3};
-VP(0.0300004,0.020000867,0){0,0,3122126.6,0,0,2985595.8,0,0,2718520.5,0,0,2332639.4,0,0,1845013.2};
-VP(0.0300004,0.0300008,0){0,0,3101041.9,0,0,2797472.5,0,0,2220045.5,0,0,1425300.7,0,0,491065.86};
-VP(0.0300004,0.040000733,0){0,0,3070989.4,0,0,2539964.8,0,0,1569772.9,0,0,328239.6,0,0,-969845.82};
-VP(0.0300004,0.050000667,0){0,0,3032446.4,0,0,2219926.7,0,0,812540.71,0,0,-812639.58,0,0,-2220026.5};
-VP(0.0300004,0.0600006,0){0,0,2985693.7,0,0,1845152.9,0,0,-174.73805,0,0,-1845312.5,0,0,-2985526.4};
-VP(0.0300004,0.070000533,0){0,0,2930943,0,0,1425196.7,0,0,-812730.34,0,0,-2633146.4,0,0,-3100929.6};
-VP(0.0300004,0.080000467,0){0,0,2867944.7,0,0,970103.04,0,0,-1569472.5,0,0,-3070185.6,0,0,-2539414};
-VP(0.0300004,0.0900004,0){0,0,2797367.8,0,0,491226.4,0,0,-2219884.6,0,0,-3100886.7,0,0,-1425369.6};
-VP(0.0300004,0.10000033,0){0,0,2718698.5,0,0,12.448978,0,0,-2718622.2,0,0,-2718532.7,0,0,51.841297};
-VP(0.0300004,0.11000027,0){0,0,2633088.6,0,0,-490806.8,0,0,-3032414,0,0,-1976012.9,0,0,1425239.2};
-VP(0.0300004,0.1200002,0){0,0,2539832.3,0,0,-970162.37,0,0,-3139509.6,0,0,-970062.59,0,0,2540261.1};
-VP(0.0300004,0.13000013,0){0,0,2439829.8,0,0,-1425373.6,0,0,-3032567.4,0,0,164237.87,0,0,3100974.7};
-VP(0.0300004,0.14000007,0){0,0,2333010.1,0,0,-1845587,0,0,-2718525,0,0,1277556.1,0,0,2985337.9};
-VP(0.0300004,0.15,0){0,0,2219900.9,0,0,-2219866.5,0,0,-2219894.7,0,0,2219752.1,0,0,2219752};
-VP(0.0300004,0.15999993,0){0,0,2100853.7,0,0,-2539747.5,0,0,-1570223,0,0,2867706.4,0,0,971142.34};
-VP(0.0300004,0.16999987,0){0,0,1975706.3,0,0,-2797278.9,0,0,-812588.34,0,0,3135118.2,0,0,-490528.6};
-VP(0.0300004,0.1799998,0){0,0,1845354.4,0,0,-2985881,0,0,194.8881,0,0,2985631.7,0,0,-1845788.8};
-VP(0.0300004,0.18999973,0){0,0,1709967.7,0,0,-3100810.8,0,0,812260.37,0,0,2439906.4,0,0,-2796702.4};
-VP(0.0300004,0.19999967,0){0,0,1569708,0,0,-3139313,0,0,1569373.5,0,0,1570104.7,0,0,-3139262.4};
-VP(0.0300004,0.2099996,0){0,0,1425339.6,0,0,-3100757.9,0,0,2219408.5,0,0,492050.16,0,0,-2797743.3};
-VP(0.0300004,0.21999953,0){0,0,1276986.2,0,0,-2985936.9,0,0,2719040,0,0,-652907.22,0,0,-1845598.7};
-VP(0.0300004,0.22999947,0){0,0,1125215.1,0,0,-2797495.5,0,0,3032403.5,0,0,-1709234.6,0,0,-492137.13};
-VP(0.0300004,0.2399994,0){0,0,970144.1,0,0,-2539846.2,0,0,3139378.7,0,0,-2539753.5,0,0,970193.03};
-VP(0.0300004,0.24999933,0){0,0,812491.11,0,0,-2219797.3,0,0,3032408.6,0,0,-3032616.7,0,0,2220319.1};
-VP(0.0300004,0.25999927,0){0,0,652744.28,0,0,-1845353.3,0,0,2718873,0,0,-3122299.7,0,0,2985657.6};
-VP(0.0300004,0.2699992,0){0,0,491182.49,0,0,-1425463.8,0,0,2220200.9,0,0,-2797555.2,0,0,3100901.2};
-VP(0.0300004,0.27999913,0){0,0,328155.37,0,0,-970088.48,0,0,1569536.1,0,0,-2100275,0,0,2539087.9};
-VP(0.0300004,0.28999907,0){0,0,164322.66,0,0,-491193.3,0,0,812760.14,0,0,-1125540.5,0,0,1426162.8};
-VP(0.0300004,0.299999,0){0,0,16.41221,0,0,-49.283756,0,0,82.296358,0,0,-115.54157,0,0,149.15109};
-
-VP(0.0400002,1e-06,0){0,0,3690601,0,0,3690618.3,0,0,3690645.2,0,0,3690704.6,0,0,3690664.7};
-VP(0.0400002,0.010000933,0){0,0,3685613.9,0,0,3645169.9,0,0,3564706,0,0,3445103.4,0,0,3287752.7};
-VP(0.0400002,0.020000867,0){0,0,3670390,0,0,3509941.7,0,0,3196044,0,0,2742426.5,0,0,2168876.8};
-VP(0.0400002,0.0300008,0){0,0,3645136.4,0,0,3288267.4,0,0,2609470.8,0,0,1675240.9,0,0,577177.72};
-VP(0.0400002,0.040000733,0){0,0,3610077.5,0,0,2985786.8,0,0,1845166.8,0,0,385493.72,0,0,-1140750.8};
-VP(0.0400002,0.050000667,0){0,0,3564912,0,0,2609684.4,0,0,955168.57,0,0,-955315.6,0,0,-2609786};
-VP(0.0400002,0.0600006,0){0,0,3510060.8,0,0,2169168.8,0,0,-365.39657,0,0,-2169708.4,0,0,-3510148.3};
-VP(0.0400002,0.070000533,0){0,0,3445393.7,0,0,1675298.9,0,0,-955611.95,0,0,-3095666.7,0,0,-3645126.2};
-VP(0.0400002,0.080000467,0){0,0,3371365.8,0,0,1140256.7,0,0,-1845633.7,0,0,-3610102,0,0,-2984730.7};
-VP(0.0400002,0.0900004,0){0,0,3288335.2,0,0,577001.33,0,0,-2610140.5,0,0,-3645082,0,0,-1674262.7};
-VP(0.0400002,0.10000033,0){0,0,3196271.4,0,0,254.08427,0,0,-3196008.5,0,0,-3196774.9,0,0,-1623.5529};
-VP(0.0400002,0.11000027,0){0,0,3095219.5,0,0,-577212.68,0,0,-3564731.5,0,0,-2322463.3,0,0,1675686.6};
-VP(0.0400002,0.1200002,0){0,0,2985782.7,0,0,-1140499.3,0,0,-3690667.2,0,0,-1140462.4,0,0,2985892.1};
-VP(0.0400002,0.13000013,0){0,0,2868207.9,0,0,-1675702.3,0,0,-3564761.1,0,0,193912.15,0,0,3645088.9};
-VP(0.0400002,0.14000007,0){0,0,2742715.8,0,0,-2169258.5,0,0,-3196241.2,0,0,1500944.4,0,0,3510035.4};
-VP(0.0400002,0.15,0){0,0,2609776.1,0,0,-2609718.6,0,0,-2609840.3,0,0,2609858.9,0,0,2609702.7};
-VP(0.0400002,0.15999993,0){0,0,2469571.8,0,0,-2985800.7,0,0,-1845535.8,0,0,3371611.7,0,0,1141234.7};
-VP(0.0400002,0.16999987,0){0,0,2322604.7,0,0,-3288363.7,0,0,-955261.93,0,0,3685749,0,0,-577636.64};
-VP(0.0400002,0.1799998,0){0,0,2169316.4,0,0,-3510075.5,0,0,26.796365,0,0,3510181.1,0,0,-2169230};
-VP(0.0400002,0.18999973,0){0,0,2010118.7,0,0,-3645239.4,0,0,955058.82,0,0,2868420.1,0,0,-3288332.2};
-VP(0.0400002,0.19999967,0){0,0,1845375.9,0,0,-3690719.5,0,0,1845270.8,0,0,1845577.9,0,0,-3691037.1};
-VP(0.0400002,0.2099996,0){0,0,1675632.4,0,0,-3645342.3,0,0,2609442.4,0,0,578081.72,0,0,-3289083.8};
-VP(0.0400002,0.21999953,0){0,0,1501170.4,0,0,-3510092.5,0,0,3196169.1,0,0,-767085.88,0,0,-2169730.2};
-VP(0.0400002,0.22999947,0){0,0,1322642.5,0,0,-3288389.9,0,0,3564726.5,0,0,-2009812.9,0,0,-577466.5};
-VP(0.0400002,0.2399994,0){0,0,1140541.4,0,0,-2985927.6,0,0,3690606.2,0,0,-2985167.7,0,0,1138794.3};
-VP(0.0400002,0.24999933,0){0,0,955283.2,0,0,-2609818.4,0,0,3564929,0,0,-3564727.2,0,0,2609440.2};
-VP(0.0400002,0.25999927,0){0,0,767387.9,0,0,-2169450.2,0,0,3196377.4,0,0,-3670707.8,0,0,3510598.4};
-VP(0.0400002,0.2699992,0){0,0,577445.52,0,0,-1675755.3,0,0,2609890,0,0,-3288365.9,0,0,3644890.1};
-VP(0.0400002,0.27999913,0){0,0,385709.6,0,0,-1140260.5,0,0,1844946.8,0,0,-2468928.8,0,0,2984936.9};
-VP(0.0400002,0.28999907,0){0,0,193250.5,0,0,-577630.78,0,0,955676.02,0,0,-1323236.2,0,0,1676345.5};
-VP(0.0400002,0.299999,0){0,0,19.269892,0,0,-57.855448,0,0,96.578279,0,0,-135.52806,0,0,174.821};
-
-VP(0.05,1e-06,0){0,0,3880596.9,0,0,3880622.3,0,0,3880662.8,0,0,3880737.8,0,0,3880625.5};
-VP(0.05,0.010000933,0){0,0,3875257,0,0,3832814.6,0,0,3748396.3,0,0,3622968.9,0,0,3457852};
-VP(0.05,0.020000867,0){0,0,3859325.9,0,0,3690717.6,0,0,3360871,0,0,2884239.7,0,0,2281724.7};
-VP(0.05,0.0300008,0){0,0,3832795.1,0,0,3457585.2,0,0,2743849,0,0,1761412.2,0,0,606299.02};
-VP(0.05,0.040000733,0){0,0,3795748.5,0,0,3139286.7,0,0,1939875.1,0,0,404959.06,0,0,-1199883.6};
-VP(0.05,0.050000667,0){0,0,3748343.4,0,0,2744093.2,0,0,1004669.5,0,0,-1003856.9,0,0,-2743333.1};
-VP(0.05,0.0600006,0){0,0,3690625.2,0,0,2281073.8,0,0,326.84409,0,0,-2280514,0,0,-3690376.4};
-VP(0.05,0.070000533,0){0,0,3622800.6,0,0,1761625.1,0,0,-1004534.7,0,0,-3254609.6,0,0,-3832806.6};
-VP(0.05,0.080000467,0){0,0,3545045.4,0,0,1198951.3,0,0,-1940576.3,0,0,-3795861.1,0,0,-3139212.2};
-VP(0.05,0.0900004,0){0,0,3457595.9,0,0,606786.66,0,0,-2744419.3,0,0,-3832656.4,0,0,-1760172.9};
-VP(0.05,0.10000033,0){0,0,3360657,0,0,-97.27265,0,0,-3360730.3,0,0,-3360689.2,0,0,-290.22172};
-VP(0.05,0.11000027,0){0,0,3254514.6,0,0,-607227.37,0,0,-3748501,0,0,-2441826.2,0,0,1762467.9};
-VP(0.05,0.1200002,0){0,0,3139405.5,0,0,-1199386.9,0,0,-3880582.8,0,0,-1198369.5,0,0,3140304.6};
-VP(0.05,0.13000013,0){0,0,3015739.1,0,0,-1761864.9,0,0,-3748289.9,0,0,203145.44,0,0,3832787.8};
-VP(0.05,0.14000007,0){0,0,2883822,0,0,-2280986.9,0,0,-3360663.5,0,0,1578441.1,0,0,3690799.9};
-VP(0.05,0.15,0){0,0,2744031.4,0,0,-2743835.6,0,0,-2744150.4,0,0,2743895.2,0,0,2743942.5};
-VP(0.05,0.15999993,0){0,0,2596561.2,0,0,-3139538.8,0,0,-1940150.4,0,0,3545079.6,0,0,1199618.1};
-VP(0.05,0.16999987,0){0,0,2442166,0,0,-3457549.3,0,0,-1004623.5,0,0,3875273.7,0,0,-606466.48};
-VP(0.05,0.1799998,0){0,0,2280926.6,0,0,-3690675.6,0,0,228.51305,0,0,3690556.3,0,0,-2281736.6};
-VP(0.05,0.18999973,0){0,0,2113533.1,0,0,-3832797.1,0,0,1004136.5,0,0,3016195.2,0,0,-3457260.9};
-VP(0.05,0.19999967,0){0,0,1940296,0,0,-3880556.8,0,0,1940292.4,0,0,1940128.9,0,0,-3880527.5};
-VP(0.05,0.2099996,0){0,0,1761773.3,0,0,-3832816.6,0,0,2743897.2,0,0,607237.83,0,0,-3457747.5};
-VP(0.05,0.21999953,0){0,0,1578460.3,0,0,-3690740.5,0,0,3360363.1,0,0,-805756.13,0,0,-2282297.4};
-VP(0.05,0.22999947,0){0,0,1390737.8,0,0,-3457708.4,0,0,3748297.1,0,0,-2113265.5,0,0,-607333.08};
-VP(0.05,0.2399994,0){0,0,1199209.5,0,0,-3139523.8,0,0,3880564,0,0,-3139310.1,0,0,1198994.4};
-VP(0.05,0.24999933,0){0,0,1004412.5,0,0,-2744075,0,0,3748408.9,0,0,-3748301.5,0,0,2743740};
-VP(0.05,0.25999927,0){0,0,806928.23,0,0,-2281198.4,0,0,3360882.3,0,0,-3859250.9,0,0,3690299};
-VP(0.05,0.2699992,0){0,0,607108.49,0,0,-1761901.2,0,0,2744236.2,0,0,-3457909.7,0,0,3832928};
-VP(0.05,0.27999913,0){0,0,405592.69,0,0,-1199043.3,0,0,1940077.6,0,0,-2596308.7,0,0,3139108.2};
-VP(0.05,0.28999907,0){0,0,203104.02,0,0,-607063.77,0,0,1004310.4,0,0,-1390455.9,0,0,1761206};
-VP(0.05,0.299999,0){0,0,20.358382,0,0,-61.109432,0,0,101.96355,0,0,-142.98836,0,0,184.2584};
-
-VP(0.0599998,1e-06,0){0,0,3690588.4,0,0,3690594.1,0,0,3690600.5,0,0,3690636.8,0,0,3690680.2};
-VP(0.0599998,0.010000933,0){0,0,3685584.9,0,0,3645126.5,0,0,3564649.5,0,0,3445067.6,0,0,3287702};
-VP(0.0599998,0.020000867,0){0,0,3670339.3,0,0,3509847.2,0,0,3195872,0,0,2742162.2,0,0,2168469.5};
-VP(0.0599998,0.0300008,0){0,0,3645265.4,0,0,3288523.2,0,0,2610025.4,0,0,1676315.4,0,0,578890.16};
-VP(0.0599998,0.040000733,0){0,0,3610072.7,0,0,2985916.8,0,0,1845500.4,0,0,385975.87,0,0,-1140557.6};
-VP(0.0599998,0.050000667,0){0,0,3564932.8,0,0,2609563.8,0,0,954567.28,0,0,-956764.73,0,0,-2612108.6};
-VP(0.0599998,0.0600006,0){0,0,3509883.5,0,0,2169100.8,0,0,-294.39187,0,0,-2169556.7,0,0,-3509772.8};
-VP(0.0599998,0.070000533,0){0,0,3445521.6,0,0,1675462,0,0,-955345.58,0,0,-3095407.5,0,0,-3645237};
-VP(0.0599998,0.080000467,0){0,0,3371542.1,0,0,1140096.9,0,0,-1845826.2,0,0,-3610004.7,0,0,-2985003.9};
-VP(0.0599998,0.0900004,0){0,0,3288201,0,0,577167.05,0,0,-2609684.2,0,0,-3644941.6,0,0,-1675304};
-VP(0.0599998,0.10000033,0){0,0,3196255,0,0,-266.67806,0,0,-3196667.6,0,0,-3195888.6,0,0,1895.9665};
-VP(0.0599998,0.11000027,0){0,0,3095213.4,0,0,-577563.51,0,0,-3564996.6,0,0,-2321862.4,0,0,1676966};
-VP(0.0599998,0.1200002,0){0,0,2985745.7,0,0,-1140533.3,0,0,-3690547,0,0,-1140417.7,0,0,2985531.4};
-VP(0.0599998,0.13000013,0){0,0,2868135,0,0,-1675511.4,0,0,-3564775.9,0,0,193668.06,0,0,3645303.7};
-VP(0.0599998,0.14000007,0){0,0,2742731.7,0,0,-2169340.9,0,0,-3196135,0,0,1501116.1,0,0,3509766.4};
-VP(0.0599998,0.15,0){0,0,2609657.8,0,0,-2609701.8,0,0,-2609700.4,0,0,2609527.5,0,0,2610132.1};
-VP(0.0599998,0.15999993,0){0,0,2469577.5,0,0,-2985824.1,0,0,-1845633.7,0,0,3371429.8,0,0,1142123};
-VP(0.0599998,0.16999987,0){0,0,2322691.7,0,0,-3288363,0,0,-955637.58,0,0,3685705.9,0,0,-576298.25};
-VP(0.0599998,0.1799998,0){0,0,2169321.2,0,0,-3510087.5,0,0,216.20285,0,0,3509911.2,0,0,-2169952.5};
-VP(0.0599998,0.18999973,0){0,0,2010122.2,0,0,-3645257.3,0,0,955123.64,0,0,2868380.8,0,0,-3288529.5};
-VP(0.0599998,0.19999967,0){0,0,1845424.5,0,0,-3690692.7,0,0,1844767.2,0,0,1846485.8,0,0,-3690994.8};
-VP(0.0599998,0.2099996,0){0,0,1675514.1,0,0,-3645174.5,0,0,2609662.4,0,0,577237.71,0,0,-3288394.8};
-VP(0.0599998,0.21999953,0){0,0,1501136.6,0,0,-3510009.9,0,0,3196091.5,0,0,-767114.35,0,0,-2169373.8};
-VP(0.0599998,0.22999947,0){0,0,1322529.6,0,0,-3288249.1,0,0,3564963.2,0,0,-2010624.3,0,0,-576282.31};
-VP(0.0599998,0.2399994,0){0,0,1140476.2,0,0,-2985787.6,0,0,3690602.4,0,0,-2985686.8,0,0,1140031.4};
-VP(0.0599998,0.24999933,0){0,0,955300.73,0,0,-2609900.4,0,0,3565088.7,0,0,-3564807.1,0,0,2609057.9};
-VP(0.0599998,0.25999927,0){0,0,767278.73,0,0,-2169195.9,0,0,3196149.1,0,0,-3670645.8,0,0,3510558.2};
-VP(0.0599998,0.2699992,0){0,0,577333.05,0,0,-1675470.1,0,0,2609593.5,0,0,-3288335.9,0,0,3645415};
-VP(0.0599998,0.27999913,0){0,0,385693.71,0,0,-1140199.5,0,0,1844814.4,0,0,-2468724.5,0,0,2984639.7};
-VP(0.0599998,0.28999907,0){0,0,193213.14,0,0,-577508.25,0,0,955436.41,0,0,-1322824.6,0,0,1675692.8};
-VP(0.0599998,0.299999,0){0,0,19.283606,0,0,-57.905204,0,0,96.689606,0,0,-135.74246,0,0,175.18876};
-
-VP(0.0699996,1e-06,0){0,0,3139667.6,0,0,3139665.7,0,0,3139654,0,0,3139650.6,0,0,3139470.9};
-VP(0.0699996,0.010000933,0){0,0,3135125.8,0,0,3100793.8,0,0,3032495.7,0,0,2930991.9,0,0,2797379};
-VP(0.0699996,0.020000867,0){0,0,3122310.7,0,0,2985675.5,0,0,2718374.1,0,0,2332119.2,0,0,1843762.7};
-VP(0.0699996,0.0300008,0){0,0,3100693,0,0,2797093.6,0,0,2219652.4,0,0,1424992.4,0,0,490900.05};
-VP(0.0699996,0.040000733,0){0,0,3070823,0,0,2539797.2,0,0,1569564.7,0,0,327908.52,0,0,-970491.93};
-VP(0.0699996,0.050000667,0){0,0,3032468.4,0,0,2219799.1,0,0,812200.29,0,0,-813120.94,0,0,-2220596.8};
-VP(0.0699996,0.0600006,0){0,0,2985875.8,0,0,1845377.2,0,0,-26.355008,0,0,-1845513.3,0,0,-2986315.5};
-VP(0.0699996,0.070000533,0){0,0,2931046.3,0,0,1425283.6,0,0,-812900.53,0,0,-2633729.7,0,0,-3101410.7};
-VP(0.0699996,0.080000467,0){0,0,2868112.6,0,0,970159.55,0,0,-1569836.3,0,0,-3071130.7,0,0,-2540487.8};
-VP(0.0699996,0.0900004,0){0,0,2797210.7,0,0,490941.67,0,0,-2219930.9,0,0,-3100375.4,0,0,-1424891.3};
-VP(0.0699996,0.10000033,0){0,0,2718885.1,0,0,-182.57461,0,0,-2719058.7,0,0,-2718531.8,0,0,941.97383};
-VP(0.0699996,0.11000027,0){0,0,2632913.9,0,0,-491153,0,0,-3032434.9,0,0,-1975629.9,0,0,1425271.2};
-VP(0.0699996,0.1200002,0){0,0,2539899.6,0,0,-970217.44,0,0,-3139555.4,0,0,-970209.87,0,0,2540083.9};
-VP(0.0699996,0.13000013,0){0,0,2439510.8,0,0,-1425266,0,0,-3031770.5,0,0,164758.65,0,0,3099617.8};
-VP(0.0699996,0.14000007,0){0,0,2332905.6,0,0,-1845309.2,0,0,-2718594,0,0,1277417,0,0,2985507.9};
-VP(0.0699996,0.15,0){0,0,2219941.4,0,0,-2219958.1,0,0,-2219904.1,0,0,2219980.5,0,0,2219784.8};
-VP(0.0699996,0.15999993,0){0,0,2100779.8,0,0,-2539856.5,0,0,-1570056.5,0,0,2867818.8,0,0,971425.75};
-VP(0.0699996,0.16999987,0){0,0,1975781.8,0,0,-2797264.2,0,0,-812705.41,0,0,3135157.1,0,0,-490750.14};
-VP(0.0699996,0.1799998,0){0,0,1845356.9,0,0,-2985850.3,0,0,78.136475,0,0,2985657.3,0,0,-1845159.5};
-VP(0.0699996,0.18999973,0){0,0,1709803.1,0,0,-3100588.9,0,0,812407.05,0,0,2439581.7,0,0,-2797000.3};
-VP(0.0699996,0.19999967,0){0,0,1569746.1,0,0,-3139424.2,0,0,1569485.9,0,0,1570117.5,0,0,-3139429.6};
-VP(0.0699996,0.2099996,0){0,0,1425263.5,0,0,-3100589,0,0,2219581.7,0,0,490836.14,0,0,-2795721.5};
-VP(0.0699996,0.21999953,0){0,0,1277056.4,0,0,-2985909.1,0,0,2718460.4,0,0,-651766.98,0,0,-1846051.6};
-VP(0.0699996,0.22999947,0){0,0,1125152.1,0,0,-2797513.7,0,0,3032908.3,0,0,-1710337.8,0,0,-490994.33};
-VP(0.0699996,0.2399994,0){0,0,970112.98,0,0,-2539826.8,0,0,3139496.3,0,0,-2539996.3,0,0,970367.78};
-VP(0.0699996,0.24999933,0){0,0,812572.07,0,0,-2220016.4,0,0,3032735.9,0,0,-3033096.1,0,0,2221151.5};
-VP(0.0699996,0.25999927,0){0,0,652805.93,0,0,-1845499.8,0,0,2718972.8,0,0,-3122098.8,0,0,2985084.7};
-VP(0.0699996,0.2699992,0){0,0,491084.34,0,0,-1425170.4,0,0,2219732.5,0,0,-2796996.6,0,0,3100323.4};
-VP(0.0699996,0.27999913,0){0,0,328256.73,0,0,-970421.4,0,0,1570170.2,0,0,-2101272.7,0,0,2540471.6};
-VP(0.0699996,0.28999907,0){0,0,164340.78,0,0,-491233.16,0,0,812780.8,0,0,-1125482,0,0,1426000.8};
-VP(0.0699996,0.299999,0){0,0,16.421384,0,0,-49.30993,0,0,82.335561,0,0,-115.58739,0,0,149.15898};
-
-VP(0.0799994,1e-06,0){0,0,2280727.8,0,0,2280773.4,0,0,2280859.1,0,0,2280998.1,0,0,2281181.3};
-VP(0.0799994,0.010000933,0){0,0,2278135,0,0,2253241,0,0,2203682.2,0,0,2129941.2,0,0,2032549};
-VP(0.0799994,0.020000867,0){0,0,2268484.2,0,0,2169326.1,0,0,1975330.1,0,0,1694973.6,0,0,1340374.1};
-VP(0.0799994,0.0300008,0){0,0,2252922.6,0,0,2032386.7,0,0,1612868.3,0,0,1035393.9,0,0,356377.56};
-VP(0.0799994,0.040000733,0){0,0,2231419.5,0,0,1845768.6,0,0,1141095.2,0,0,239142.92,0,0,-704394.97};
-VP(0.0799994,0.050000667,0){0,0,2203162.8,0,0,1612856.7,0,0,590370.34,0,0,-590352.65,0,0,-1612864.9};
-VP(0.0799994,0.0600006,0){0,0,2169276.5,0,0,1340623.4,0,0,-76.71712,0,0,-1340625.6,0,0,-2168934.4};
-VP(0.0799994,0.070000533,0){0,0,2129506.4,0,0,1035589.6,0,0,-590316.24,0,0,-1913067.2,0,0,-2253364};
-VP(0.0799994,0.080000467,0){0,0,2084053.6,0,0,704937.17,0,0,-1140774.2,0,0,-2231740.4,0,0,-1845983.4};
-VP(0.0799994,0.0900004,0){0,0,2032426.1,0,0,356710.38,0,0,-1613120.2,0,0,-2253001.3,0,0,-1035367.5};
-VP(0.0799994,0.10000033,0){0,0,1975085.9,0,0,113.85229,0,0,-1974864.7,0,0,-1975020.8,0,0,-380.74858};
-VP(0.0799994,0.11000027,0){0,0,1913349,0,0,-357029.9,0,0,-2203984,0,0,-1435642.7,0,0,1036881.6};
-VP(0.0799994,0.1200002,0){0,0,1845350.6,0,0,-704873.21,0,0,-2281043.5,0,0,-704842.32,0,0,1845655.7};
-VP(0.0799994,0.13000013,0){0,0,1772745.6,0,0,-1035674.6,0,0,-2203648.2,0,0,119514.15,0,0,2254052.1};
-VP(0.0799994,0.14000007,0){0,0,1695180.1,0,0,-1340871,0,0,-1975338.9,0,0,927997.64,0,0,2169093.9};
-VP(0.0799994,0.15,0){0,0,1612825.4,0,0,-1612841.3,0,0,-1612543.8,0,0,1612521.2,0,0,1612058.3};
-VP(0.0799994,0.15999993,0){0,0,1526244.9,0,0,-1845398.3,0,0,-1140637.4,0,0,2084384,0,0,705209.01};
-VP(0.0799994,0.16999987,0){0,0,1435410.5,0,0,-2032217.3,0,0,-590458.98,0,0,2277698.2,0,0,-356556.54};
-VP(0.0799994,0.1799998,0){0,0,1340670.5,0,0,-2169027.1,0,0,-223.59127,0,0,2168584.1,0,0,-1339615};
-VP(0.0799994,0.18999973,0){0,0,1242273.6,0,0,-2252837.9,0,0,590435.56,0,0,1772500.8,0,0,-2032749.8};
-VP(0.0799994,0.19999967,0){0,0,1140442.6,0,0,-2280848.8,0,0,1140564.8,0,0,1139836,0,0,-2280532.3};
-VP(0.0799994,0.2099996,0){0,0,1035699,0,0,-2253241.8,0,0,1613083.8,0,0,357223.09,0,0,-2033463.9};
-VP(0.0799994,0.21999953,0){0,0,927861.35,0,0,-2169623.2,0,0,1975708.5,0,0,-474255.42,0,0,-1341466.6};
-VP(0.0799994,0.22999947,0){0,0,817383.1,0,0,-2032235.4,0,0,2203103.3,0,0,-1242264.5,0,0,-356700.4};
-VP(0.0799994,0.2399994,0){0,0,704847.79,0,0,-1845370.9,0,0,2281143.2,0,0,-1845622.6,0,0,705007.92};
-VP(0.0799994,0.24999933,0){0,0,590342.97,0,0,-1612830.2,0,0,2203126.1,0,0,-2203043.7,0,0,1612498.1};
-VP(0.0799994,0.25999927,0){0,0,474296.31,0,0,-1340926,0,0,1975847.2,0,0,-2269363.4,0,0,2170870.5};
-VP(0.0799994,0.2699992,0){0,0,356851.6,0,0,-1035659.4,0,0,1613192.7,0,0,-2032947.5,0,0,2253814.8};
-VP(0.0799994,0.27999913,0){0,0,238450.24,0,0,-704928.49,0,0,1140598.6,0,0,-1526410.3,0,0,1845458.3};
-VP(0.0799994,0.28999907,0){0,0,119436.21,0,0,-357043.47,0,0,590866.78,0,0,-818411.64,0,0,1037160.2};
-VP(0.0799994,0.299999,0){0,0,11.922335,0,0,-35.808474,0,0,59.818323,0,0,-84.031,0,0,108.55653};
-
-VP(0.0899992,1e-06,0){0,0,1199336.2,0,0,1199315.5,0,0,1199270.6,0,0,1199207.1,0,0,1199061.5};
-VP(0.0899992,0.010000933,0){0,0,1198153.6,0,0,1185145.9,0,0,1159246.6,0,0,1120701.4,0,0,1069776.6};
-VP(0.0899992,0.020000867,0){0,0,1192685.5,0,0,1140658.7,0,0,1038853.3,0,0,891683.02,0,0,705546.96};
-VP(0.0899992,0.0300008,0){0,0,1184754.2,0,0,1068843,0,0,848337.39,0,0,544778.53,0,0,187690.61};
-VP(0.0899992,0.040000733,0){0,0,1173715.6,0,0,970816.17,0,0,600039.89,0,0,125399.4,0,0,-371189.8};
-VP(0.0899992,0.050000667,0){0,0,1158276.9,0,0,847929.79,0,0,310324.29,0,0,-310562.7,0,0,-848307.62};
-VP(0.0899992,0.0600006,0){0,0,1140753.9,0,0,704922.14,0,0,-103.62936,0,0,-704829.95,0,0,-1139930.4};
-VP(0.0899992,0.070000533,0){0,0,1119714.7,0,0,544556.53,0,0,-310359.94,0,0,-1005943.5,0,0,-1184994.4};
-VP(0.0899992,0.080000467,0){0,0,1095985,0,0,370759.25,0,0,-600042.12,0,0,-1174023.1,0,0,-970761.2};
-VP(0.0899992,0.0900004,0){0,0,1068224.2,0,0,187464.52,0,0,-848034.87,0,0,-1184473.1,0,0,-543987.2};
-VP(0.0899992,0.10000033,0){0,0,1038500.2,0,0,-7.3678079,0,0,-1038769.7,0,0,-1039036.9,0,0,19.416784};
-VP(0.0899992,0.11000027,0){0,0,1006231.9,0,0,-187640.38,0,0,-1158657.2,0,0,-754841.71,0,0,544327.53};
-VP(0.0899992,0.1200002,0){0,0,970113.93,0,0,-370546.78,0,0,-1199019.8,0,0,-370452.42,0,0,969904.3};
-VP(0.0899992,0.13000013,0){0,0,932207.72,0,0,-544547.54,0,0,-1158917.9,0,0,62512.542,0,0,1185501.3};
-VP(0.0899992,0.14000007,0){0,0,891166.13,0,0,-704795.35,0,0,-1038385.7,0,0,487616.78,0,0,1140014.7};
-VP(0.0899992,0.15,0){0,0,848172.12,0,0,-848217.89,0,0,-847844.69,0,0,847957.13,0,0,847385.47};
-VP(0.0899992,0.15999993,0){0,0,802382.91,0,0,-970181.38,0,0,-599616,0,0,1095765.8,0,0,370693.9};
-VP(0.0899992,0.16999987,0){0,0,754932.06,0,0,-1069114.5,0,0,-310447.26,0,0,1199326.7,0,0,-188765.22};
-VP(0.0899992,0.1799998,0){0,0,704958.68,0,0,-1140556,0,0,-248.65236,0,0,1140833,0,0,-704695.97};
-VP(0.0899992,0.18999973,0){0,0,653304.28,0,0,-1184754,0,0,310423.05,0,0,932308.32,0,0,-1068648.6};
-VP(0.0899992,0.19999967,0){0,0,599602.09,0,0,-1199224.6,0,0,599650.17,0,0,599621.62,0,0,-1199377.5};
-VP(0.0899992,0.2099996,0){0,0,544463.23,0,0,-1184405,0,0,847712.47,0,0,187819.44,0,0,-1068128.6};
-VP(0.0899992,0.21999953,0){0,0,488042.66,0,0,-1141175.6,0,0,1039086.6,0,0,-249151.79,0,0,-706017.92};
-VP(0.0899992,0.22999947,0){0,0,429815.99,0,0,-1068649,0,0,1158547.7,0,0,-653406.34,0,0,-187225.04};
-VP(0.0899992,0.2399994,0){0,0,370690.77,0,0,-970386.82,0,0,1199251.8,0,0,-970007.4,0,0,370681.55};
-VP(0.0899992,0.24999933,0){0,0,310390.11,0,0,-848004.17,0,0,1158394,0,0,-1158345.1,0,0,847660.27};
-VP(0.0899992,0.25999927,0){0,0,249481.19,0,0,-705373.73,0,0,1039488.2,0,0,-1194110.6,0,0,1142537.4};
-VP(0.0899992,0.2699992,0){0,0,187639.98,0,0,-544577.4,0,0,848281.6,0,0,-1069054.9,0,0,1185439.9};
-VP(0.0899992,0.27999913,0){0,0,125326.47,0,0,-370529.74,0,0,599621.01,0,0,-802628.46,0,0,970771.43};
-VP(0.0899992,0.28999907,0){0,0,62802.689,0,0,-187757.37,0,0,310765.55,0,0,-430542.75,0,0,545801.11};
-VP(0.0899992,0.299999,0){0,0,6.2583854,0,0,-18.797492,0,0,31.403123,0,0,-44.11748,0,0,56.993715};
-
-VP(0.099999,1e-06,0){0,0,122.2717,0,0,122.22832,0,0,122.14101,0,0,122.01002,0,0,121.86309};
-VP(0.099999,0.010000933,0){0,0,122.46834,0,0,121.03483,0,0,118.188,0,0,113.96935,0,0,108.45126};
-VP(0.099999,0.020000867,0){0,0,121.65209,0,0,116.30315,0,0,105.84466,0,0,90.745939,0,0,71.692521};
-VP(0.099999,0.0300008,0){0,0,120.92677,0,0,109.03403,0,0,86.442932,0,0,55.42058,0,0,19.030381};
-VP(0.099999,0.040000733,0){0,0,119.81359,0,0,99.026732,0,0,61.114881,0,0,12.749458,0,0,-37.607293};
-VP(0.099999,0.050000667,0){0,0,118.01358,0,0,86.395547,0,0,31.616736,0,0,-31.666664,0,0,-86.534566};
-VP(0.099999,0.0600006,0){0,0,116.54411,0,0,71.981358,0,0,-0.080387563,0,0,-72.054845,0,0,-116.34883};
-VP(0.099999,0.070000533,0){0,0,113.96494,0,0,55.410296,0,0,-31.568102,0,0,-102.23279,0,0,-120.27103};
-VP(0.099999,0.080000467,0){0,0,111.95143,0,0,37.861744,0,0,-61.14624,0,0,-119.46009,0,0,-98.614086};
-VP(0.099999,0.0900004,0){0,0,109.0775,0,0,19.117811,0,0,-86.499053,0,0,-120.62539,0,0,-55.236718};
-VP(0.099999,0.10000033,0){0,0,105.77638,0,0,0.00038661946,0,0,-105.70057,0,0,-105.62659,0,0,-0.051360586};
-VP(0.099999,0.11000027,0){0,0,102.7882,0,0,-19.209807,0,0,-118.33606,0,0,-76.968209,0,0,55.676392};
-VP(0.099999,0.1200002,0){0,0,98.846941,0,0,-37.738544,0,0,-122.08846,0,0,-37.705367,0,0,98.674581};
-VP(0.099999,0.13000013,0){0,0,95.300608,0,0,-55.682035,0,0,-118.32145,0,0,6.458813,0,0,120.72836};
-VP(0.099999,0.14000007,0){0,0,90.928246,0,0,-71.860492,0,0,-105.76253,0,0,49.552905,0,0,115.61076};
-VP(0.099999,0.15,0){0,0,86.649422,0,0,-86.706263,0,0,-86.885509,0,0,87.051255,0,0,87.455122};
-VP(0.099999,0.15999993,0){0,0,81.849309,0,0,-98.902526,0,0,-61.030293,0,0,111.30685,0,0,37.639146};
-VP(0.099999,0.16999987,0){0,0,77.088885,0,0,-109.08576,0,0,-31.684924,0,0,122.02127,0,0,-19.059934};
-VP(0.099999,0.1799998,0){0,0,71.759796,0,0,-116.12022,0,0,0.019236055,0,0,116.11968,0,0,-71.659577};
-VP(0.099999,0.18999973,0){0,0,66.548862,0,0,-120.64907,0,0,31.583707,0,0,94.841601,0,0,-108.58648};
-VP(0.099999,0.19999967,0){0,0,61.196684,0,0,-122.402,0,0,61.194661,0,0,61.284233,0,0,-122.59119};
-VP(0.099999,0.2099996,0){0,0,55.531956,0,0,-120.7904,0,0,86.420086,0,0,19.214407,0,0,-108.928};
-VP(0.099999,0.21999953,0){0,0,49.83612,0,0,-116.47011,0,0,105.95411,0,0,-25.423519,0,0,-71.555205};
-VP(0.099999,0.22999947,0){0,0,43.75017,0,0,-108.75091,0,0,117.84066,0,0,-66.39418,0,0,-19.092177};
-VP(0.099999,0.2399994,0){0,0,37.88541,0,0,-99.152242,0,0,122.47173,0,0,-98.953555,0,0,37.716317};
-VP(0.099999,0.24999933,0){0,0,31.620091,0,0,-86.395681,0,0,118.04104,0,0,-118.0743,0,0,86.383089};
-VP(0.099999,0.25999927,0){0,0,25.461477,0,0,-71.929935,0,0,105.82597,0,0,-121.26089,0,0,115.61847};
-VP(0.099999,0.2699992,0){0,0,19.15621,0,0,-55.565276,0,0,86.458221,0,0,-108.78237,0,0,120.35713};
-VP(0.099999,0.27999913,0){0,0,12.779823,0,0,-37.770607,0,0,61.080654,0,0,-81.673399,0,0,98.626637};
-VP(0.099999,0.28999907,0){0,0,6.4118062,0,0,-19.149794,0,0,31.63223,0,0,-43.692585,0,0,55.184315};
-VP(0.099999,0.299999,0){0,0,0.00063643529,0,0,-0.0019081723,0,0,0.0031765239,0,0,-0.0044392302,0,0,0.0056895141};
-
-};
diff --git a/tutorial/view3.pos b/tutorial/view3.pos
deleted file mode 100644
index e044f81e2df03f52badc57edc5908ed5387edc4d..0000000000000000000000000000000000000000
--- a/tutorial/view3.pos
+++ /dev/null
@@ -1,2506 +0,0 @@
-View "a 3D scalar map" {
-SS(-1,-1,-0.25,-0.86742481,-0.86548068,-0.14483364,-1,-0.70523324,-0.21165758,-1,-0.77608598,0.00064487429){2.0422973,1.5085891,1.5222776,1.5844414};
-SS(0.13402468,0.11673163,-0.1460819,0,0,-0.25,0.29173763,0,-0.20843742,0.22032809,0,-9.1119885e-05){0.039337265,0.044304329,0.1134179,0.027339551};
-SS(0.88049681,0.87960137,0.13412341,1,1,0.25,1,0.70834898,0.20844998,1,0.77979347,0.00010253841){1.5518824,2.0447444,1.5291243,1.5887874};
-SS(0.68966181,1,0.19790566,0.88049681,0.87960137,0.13412341,0.78186447,1,3.3673518e-05,0.82853688,1,0.32125076){1.492557,1.5518824,1.5923176,1.7703132};
-SS(-0.8827276,-0.88146034,0.13123348,-1,-1,-6.9388939e-15,-1,-1,0.25,-1,-0.77608598,0.00064487429){1.5595365,1.9831286,2.0427074,1.5844414};
-SS(-0.8827276,-0.88146034,0.13123348,-1,-1,0.25,-1,-0.70710233,0.21356199,-1,-0.77608598,0.00064487429){1.5595365,2.0427074,1.5280688,1.5844414};
-SS(-1,-1,0.25,-0.8827276,-0.88146034,0.13123348,-0.70832062,-1,0.2082538,-0.77973152,-1,-0.0001062007){2.0427074,1.5595365,1.5291125,1.588155};
-SS(0.88354722,0.11667767,-0.13069643,1,0,-0.25,1,0,-6.9388939e-15,0.77985819,0,-0.00014691753){0.79839767,1.043399,0.9846322,0.58919206};
-SS(0.35689191,0.091376279,-0.36932783,0.25,0,-0.5,0.5,0,-0.5,0.50007058,0,-0.27987971){0.26145514,0.28810477,0.48471812,0.31006895};
-SS(-0.1159097,-0.14329028,0.19302206,0,0,0.25,0,-0.29157012,0.20836692,0,-0.22019801,5.0496855e-05){0.055235283,0.045060365,0.11172813,0.029059683};
-SS(0,-0.75,-0.5,-0.11754465,-0.65214472,-0.32749638,0,-0.70830496,-0.20826096,0,-0.49997234,-0.27965571){0.79460868,0.53347202,0.5287181,0.30906942};
-SS(-0.75,-1,-0.5,-0.6448883,-0.87343314,-0.36731947,-0.70823063,-1,-0.20843533,-0.49995867,-1,-0.27986665){1.7946951,1.296688,1.5240742,1.3082069};
-SS(0.87272604,0.35900693,0.37172569,1,0.25,0.5,1,0.29178008,0.20838772,1,0.50005385,0.27984222){1.0107603,1.2942978,1.1084285,1.3085441};
-SS(0.87272604,0.35900693,0.37172569,1,0.25,0.5,0.78912399,0.50423732,0.5,0.81143387,0.18901581,0.5){1.0107603,1.2942978,1.1096027,0.9265446};
-SS(0.62860594,0.86645525,0.049037492,0.4450496,1,-0.00012892076,0.68966181,1,0.19790566,0.78186447,1,3.3673518e-05){1.1303867,1.179155,1.492557,1.5923176};
-SS(0,-1,-0.25,-0.12233239,-0.87748906,-0.13583418,-0.29168215,-1,-0.20844865,-0.22019153,-1,-0.00010416607){1.0435946,0.78823805,1.1132023,1.0287732};
-SS(-0.12233239,-0.87748906,-0.13583418,0,-1,-0.25,0,-0.70830496,-0.20826096,0,-0.77970171,0.00010845427){0.78823805,1.0435946,0.5287181,0.58842154};
-SS(1,0.75,0.5,0.87881231,0.64063264,0.37220388,1,0.70834898,0.20844998,1,0.50005385,0.27984222){1.7930237,1.3069719,1.5291243,1.3085441};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.25,-1,-0.5,-0.50377808,-0.78884267,-0.5,-0.18848435,-0.81110947,-0.5){1.0307746,1.2929607,1.1087956,0.92571371};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.25,-1,-0.5,-0.29168215,-1,-0.20844865,-0.49995867,-1,-0.27986665){1.0307746,1.2929607,1.1132023,1.3082069};
-SS(1,0.25,-0.5,0.87867265,0.36391919,-0.37720578,0.78906409,0.5041626,-0.5,0.81149777,0.18885984,-0.5){1.2935113,1.03034,1.1105402,0.92750237};
-SS(1,0.25,-0.5,0.87867265,0.36391919,-0.37720578,1,0.2917639,-0.20827961,1,0.50010355,-0.27968748){1.2935113,1.03034,1.1127834,1.3071084};
-SS(-0.63815223,-0.88141187,0.37488811,-0.75,-1,0.5,-0.70832062,-1,0.2082538,-0.4999534,-1,0.27968311){1.3088768,1.7943537,1.5291125,1.3075402};
-SS(0.88049681,0.87960137,0.13412341,1,1,0.25,0.78186447,1,3.3673518e-05,0.82853688,1,0.32125076){1.5518824,2.0447444,1.5923176,1.7703132};
-SS(-1,-1,-6.9388939e-15,-0.8827276,-0.88146034,0.13123348,-1,-1,0.25,-0.77973152,-1,-0.0001062007){1.9831286,1.5595365,2.0427074,1.588155};
-SS(1,0,-0.25,0.88354722,0.11667767,-0.13069643,1,0,-6.9388939e-15,1,0.2203628,5.6826691e-05){1.043399,0.79839767,0.9846322,1.0268649};
-SS(0.88354722,0.11667767,-0.13069643,1,0,-0.25,1,0.2917639,-0.20827961,1,0.2203628,5.6826691e-05){0.79839767,1.043399,1.1127834,1.0268649};
-SS(1,0,-0.25,0.88354722,0.11667767,-0.13069643,0.70841775,0,-0.20847891,0.77985819,0,-0.00014691753){1.043399,0.79839767,0.52293439,0.58919206};
-SS(-1,-0.00021427218,0.00011802244,-0.88905946,-0.098697315,-0.13184676,-1,-0.25140376,-0.1934451,-1,-0.00018427889,-0.26378916){0.98080906,0.8023886,1.0790534,1.0508045};
-SS(-0.88905946,-0.098697315,-0.13184676,-1,-0.00021427218,0.00011802244,-1,-0.25140376,-0.1934451,-1,-0.20076836,0.00061221676){0.8023886,0.98080906,1.0790534,1.0172898};
-SS(0.50761134,0.34933779,0.39015973,0.37492492,0.49312259,0.5,0.37501462,0.2307626,0.5,0.5725222,0.50074158,0.5){0.51484928,0.61809871,0.42590445,0.8121357};
-SS(0.67112401,0.32933441,0.5,0.50761134,0.34933779,0.39015973,0.37501462,0.2307626,0.5,0.5725222,0.50074158,0.5){0.79210069,0.51484928,0.42590445,0.8121357};
-SS(-0.098950987,-0.13391411,-0.14594667,0,0,-0.25,0,0,-6.9388939e-15,0,-0.22019801,5.0496855e-05){0.03512721,0.044304329,-0.017891206,0.029059683};
-SS(0,0,-0.25,-0.098950987,-0.13391411,-0.14594667,0,-0.29164705,-0.20823955,0,-0.22019801,5.0496855e-05){0.044304329,0.03512721,0.11473247,0.029059683};
-SS(-0.49284988,-0.37485679,0.5,-0.34549718,-0.50098866,0.4105565,-0.23048975,-0.37484721,0.5,-0.50050976,-0.57246927,0.5){0.6163523,0.5260109,0.42714666,0.81219504};
-SS(-0.34549718,-0.50098866,0.4105565,-0.32897755,-0.67088709,0.5,-0.23048975,-0.37484721,0.5,-0.50050976,-0.57246927,0.5){0.5260109,0.79643001,0.42714666,0.81219504};
-SS(0.37492492,0.49312259,0.5,0.35567295,0.65317229,0.39545235,0.21512427,0.73211919,0.5,0.45042372,0.78359022,0.5){0.61809871,0.69293227,0.81521474,1.0496179};
-SS(0.25,0,-0.5,0.35689191,0.091376279,-0.36932783,0.29173763,0,-0.20843742,0.50007058,0,-0.27987971){0.28810477,0.26145514,0.1134179,0.31006895};
-SS(-1,0.49991607,0.0031934521,-0.89426176,0.41257007,-0.12932618,-1,0.25105097,-0.19350143,-1,0.47527469,-0.27513051){1.2302733,0.974079,1.0825888,1.2834809};
-SS(-0.89426176,0.41257007,-0.12932618,-1,0.49991607,0.0031934521,-1,0.25105097,-0.19350143,-1,0.29928494,0.0012550607){0.974079,1.2302733,1.0825888,1.0718665};
-SS(-1,1,-0.25,-0.89962374,0.8609561,-0.16698164,-1,1,-6.9388939e-15,-1,0.77631186,0.00053339564){2.0450698,1.5692753,1.9810426,1.5817554};
-SS(-0.89962374,0.8609561,-0.16698164,-1,1,-0.25,-1,0.70529035,-0.21162945,-1,0.77631186,0.00053339564){1.5692753,2.0450698,1.520296,1.5817554};
-SS(-1,1,-0.25,-0.89962374,0.8609561,-0.16698164,-1,0.70529035,-0.21162945,-1,0.83964442,-0.3309874){2.0450698,1.5692753,1.520296,1.7979585};
-SS(-1,-0.11111111,0.5,-0.89646962,-0.32955067,0.34017365,-1,-0.33333333,0.5,-1,-0.24887753,0.1953112){1.2390062,1.0133061,1.3443603,1.0768014};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.33333333,0.5,-1,-0.24887753,0.1953112,-1,-0.47520831,0.27427507){1.0133061,1.3443603,1.0768014,1.2822693};
-SS(-0.89804207,0.11676539,-0.10792088,-1,-0.00021427218,0.00011802244,-1,0.25105097,-0.19350143,-1,-0.00018427889,-0.26378916){0.82300022,0.98080906,1.0825888,1.0508045};
-SS(-1,-0.00021427218,0.00011802244,-0.89804207,0.11676539,-0.10792088,-1,0.25105097,-0.19350143,-1,0.29928494,0.0012550607){0.98080906,0.82300022,1.0825888,1.0718665};
-SS(-1,0.33333333,0.5,-0.91004595,0.15296589,0.33139812,-1,0.11111111,0.5,-1,0.24865949,0.19540364){1.3403692,0.94743142,1.246301,1.0814407};
-SS(-0.91004595,0.15296589,0.33139812,-1,0.11111111,0.5,-1,0.24865949,0.19540364,-1,-0.00012222908,0.26646899){0.94743142,1.246301,1.0814407,1.0506696};
-SS(0.34720309,0.90097601,-0.12745168,0.4450496,1,-0.00012892076,0.43683247,1,-0.26068681,0.24937941,1,-0.00011138016){0.93504792,1.179155,1.2435523,1.0446566};
-SS(0.17426348,1,-0.18078905,0.34720309,0.90097601,-0.12745168,0.43683247,1,-0.26068681,0.24937941,1,-0.00011138016){1.045853,0.93504792,1.2435523,1.0446566};
-SS(0.27123349,0.36190713,0.41476339,0.37492492,0.49312259,0.5,0.11523872,0.30161582,0.5,0.37501462,0.2307626,0.5){0.36300231,0.61809871,0.33546792,0.42590445};
-SS(0.37492492,0.49312259,0.5,0.27123349,0.36190713,0.41476339,0.11523872,0.30161582,0.5,0.16321322,0.50838432,0.5){0.61809871,0.36300231,0.33546792,0.52238519};
-SS(-0.49284988,-0.37485679,0.5,-0.37661764,-0.26006406,0.40868766,-0.30122568,-0.11513872,0.5,-0.23048975,-0.37484721,0.5){0.6163523,0.36234206,0.33848202,0.42714666};
-SS(-0.37661764,-0.26006406,0.40868766,-0.49284988,-0.37485679,0.5,-0.30122568,-0.11513872,0.5,-0.50807239,-0.16307462,0.5){0.36234206,0.6163523,0.33848202,0.52416601};
-SS(-0.16643696,-0.21791406,0.42402077,0,-0.25,0.5,-0.30122568,-0.11513872,0.5,-0.23048975,-0.37484721,0.5){0.23818505,0.28720824,0.33848202,0.42714666};
-SS(0,-0.25,0.5,-0.16643696,-0.21791406,0.42402077,-0.30122568,-0.11513872,0.5,-0.17669296,0.011023676,0.5){0.28720824,0.23818505,0.33848202,0.26322593};
-SS(0.37549445,0.49317282,-0.5,0.27170325,0.36204749,-0.4201745,0.11583535,0.30145324,-0.5,0.37532516,0.23078833,-0.5){0.61648995,0.36885377,0.33954703,0.42551454};
-SS(0.27170325,0.36204749,-0.4201745,0.37549445,0.49317282,-0.5,0.11583535,0.30145324,-0.5,0.16368264,0.50834729,-0.5){0.36885377,0.61648995,0.33954703,0.52115901};
-SS(0,0,-6.9388939e-15,0.13913358,0.10014326,0.18199659,0,0,0.25,0.22032809,0,-9.1119885e-05){-0.017891206,0.045990896,0.045060365,0.027339551};
-SS(0,0,0.25,0.13913358,0.10014326,0.18199659,0.29175541,0,0.20824909,0.22032809,0,-9.1119885e-05){0.045060365,0.045990896,0.1093371,0.027339551};
-SS(-0.92571354,0.17249619,-0.34283108,-1,0.33333333,-0.5,-1,0.11111111,-0.5,-1,0.25105097,-0.19350143){0.99158484,1.3393331,1.2464205,1.0825888};
-SS(-1,0.11111111,-0.5,-0.92571354,0.17249619,-0.34283108,-1,0.25105097,-0.19350143,-1,-0.00018427889,-0.26378916){1.2464205,0.99158484,1.0825888,1.0508045};
-SS(-1,-0.55555556,0.5,-0.89663862,-0.69397302,0.37275403,-1,-0.77777778,0.5,-1,-0.70710233,0.21356199){1.5359657,1.4119512,1.8434331,1.5280688};
-SS(-1,-0.55555556,0.5,-0.89663862,-0.69397302,0.37275403,-0.67513028,-0.66529728,0.5,-0.80635543,-0.81164184,0.5){1.5359657,1.4119512,1.1284607,1.5410993};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.55555556,-0.5,-1,-0.77777778,-0.5,-1,-0.70523324,-0.21165758){1.4249306,1.5366945,1.8436809,1.5222776};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.55555556,-0.5,-0.67495489,-0.6652659,-0.5,-0.80632325,-0.81147186,-0.5){1.4249306,1.5366945,1.1276355,1.5409894};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.55555556,-0.5,-1,-0.70523324,-0.21165758,-1,-0.47540235,-0.27521785){1.4249306,1.5366945,1.5222776,1.2841965};
-SS(-1,-0.77777778,-0.5,-0.91414606,-0.68082467,-0.37109558,-1,-0.70523324,-0.21165758,-1,-0.83959635,-0.33115777){1.8436809,1.4249306,1.5222776,1.7998257};
-SS(-1,1,-6.9388939e-15,-0.93582873,0.86427167,0.14668289,-1,1,0.25,-1,0.77631186,0.00053339564){1.9810426,1.6320629,2.0473025,1.5817554};
-SS(-1,1,0.25,-0.93582873,0.86427167,0.14668289,-1,0.70725984,0.21334539,-1,0.77631186,0.00053339564){2.0473025,1.6320629,1.5286486,1.5817554};
-SS(-0.93582873,0.86427167,0.14668289,-1,1,0.25,-1,0.70725984,0.21334539,-1,0.84108515,0.33242406){1.6320629,2.0473025,1.5286486,1.8031397};
-SS(-0.073421274,-0.375,-0.38984354,0,-0.5,-0.5,0,-0.25,-0.5,0,-0.49997234,-0.27965571){0.28201081,0.4845449,0.29677328,0.30906942};
-SS(-0.073421274,-0.375,-0.38984354,0,-0.25,-0.5,0,-0.29164705,-0.20823955,0,-0.49997234,-0.27965571){0.28201081,0.29677328,0.11473247,0.30906942};
-SS(0,-0.25,-0.5,-0.073421274,-0.375,-0.38984354,0,-0.29164705,-0.20823955,0,-0.16143077,-0.33843101){0.29677328,0.28201081,0.11473247,0.12966739};
-SS(-0.41648151,0.41684878,0.5,-0.29261734,0.53193925,0.43339885,-0.3132159,0.69976014,0.5,-0.18136176,0.40461939,0.5){0.58097186,0.53993003,0.82050522,0.42386795};
-SS(-0.29261734,0.53193925,0.43339885,-0.41648151,0.41684878,0.5,-0.3132159,0.69976014,0.5,-0.48141868,0.60085372,0.5){0.53993003,0.58097186,0.82050522,0.82306978};
-SS(-0.29261734,0.53193925,0.43339885,-0.033588837,0.5879061,0.5,-0.3132159,0.69976014,0.5,-0.18136176,0.40461939,0.5){0.53993003,0.57806214,0.82050522,0.42386795};
-SS(-0.58754442,0.033885734,-0.5,-0.41767704,0.010770256,-0.44072823,-0.30131805,-0.11512588,-0.5,-0.40408872,0.18166381,-0.5){0.58180393,0.35514259,0.3368451,0.42526168};
-SS(-0.41767704,0.010770256,-0.44072823,-0.58754442,0.033885734,-0.5,-0.30131805,-0.11512588,-0.5,-0.50815189,-0.16301678,-0.5){0.35514259,0.58180393,0.3368451,0.52110597};
-SS(-0.41767704,0.010770256,-0.44072823,-0.30131805,-0.11512588,-0.5,-0.40408872,0.18166381,-0.5,-0.19007896,0.04567822,-0.5){0.35514259,0.3368451,0.42526168,0.27736807};
-SS(-1,-0.00021427218,0.00011802244,-0.91347537,0.15552497,0.067511395,-1,0.24865949,0.19540364,-1,-0.00012222908,0.26646899){0.98080906,0.85045394,1.0814407,1.0506696};
-SS(-0.91347537,0.15552497,0.067511395,-1,-0.00021427218,0.00011802244,-1,0.24865949,0.19540364,-1,0.29928494,0.0012550607){0.85045394,0.98080906,1.0814407,1.0718665};
-SS(0.0011150345,0.93517443,-0.37389303,0.11111111,1,-0.5,-0.11111111,1,-0.5,-0.088882135,1,-0.23281641){1.0026385,1.2422682,1.2528065,1.0431215};
-SS(0.0011150345,0.93517443,-0.37389303,0.11111111,1,-0.5,-0.088882135,1,-0.23281641,0.2222976,1,-0.35617554){1.0026385,1.2422682,1.0431215,1.1585843};
-SS(0.17426348,1,-0.18078905,0.0011150345,0.93517443,-0.37389303,-0.088882135,1,-0.23281641,0.2222976,1,-0.35617554){1.045853,1.0026385,1.0431215,1.1585843};
-SS(0.37549445,0.49317282,-0.5,0.50136923,0.34587735,-0.44862257,0.37532516,0.23078833,-0.5,0.57309542,0.50075776,-0.5){0.61648995,0.56260896,0.42551454,0.81773274};
-SS(0.50136923,0.34587735,-0.44862257,0.671223,0.32907594,-0.5,0.37532516,0.23078833,-0.5,0.57309542,0.50075776,-0.5){0.56260896,0.79435762,0.42551454,0.81773274};
-SS(0.671223,0.32907594,-0.5,0.50136923,0.34587735,-0.44862257,0.37532516,0.23078833,-0.5,0.6251418,0.1440922,-0.5){0.79435762,0.56260896,0.42551454,0.63751638};
-SS(0.64232771,0.84838332,0.46476191,0.77777778,1,0.5,0.55555556,1,0.5,0.81191124,0.80644944,0.5){1.3339184,1.8450917,1.5357742,1.5425973};
-SS(0.55555556,1,0.5,0.64232771,0.84838332,0.46476191,0.66554141,0.67524133,0.5,0.45042372,0.78359022,0.5){1.5357742,1.3339184,1.1271263,1.0496179};
-SS(0.64232771,0.84838332,0.46476191,0.55555556,1,0.5,0.66554141,0.67524133,0.5,0.81191124,0.80644944,0.5){1.3339184,1.5357742,1.1271263,1.5425973};
-SS(0.25,0,0.5,0.26083053,0.15082484,0.37728795,0.1615172,0,0.33845519,0.12517622,0.12515553,0.5){0.29281005,0.21918499,0.13068911,0.27156885};
-SS(-1,0.70529035,-0.21162945,-0.83248216,0.76782327,-0.31292259,-1,0.83964442,-0.3309874,-0.89962374,0.8609561,-0.16698164){1.520296,1.366757,1.7979585,1.5692753};
-SS(0.51674933,0.64481281,-0.39755292,0.49866453,0.63973666,-0.21510859,0.34412919,0.6158316,-0.3427703,0.48047723,0.47791267,-0.33071402){0.82858869,0.68344633,0.59958408,0.55795418};
-SS(0.37549445,0.49317282,-0.5,0.50136923,0.34587735,-0.44862257,0.57309542,0.50075776,-0.5,0.48047723,0.47791267,-0.33071402){0.61648995,0.56260896,0.81773274,0.55795418};
-SS(0.098704003,0.67249079,0.1943501,0.11458044,0.70010244,0.010073529,0.24404834,0.79519787,0.082231238,0.26064395,0.61953306,0.12890567){0.47957633,0.49378055,0.68472542,0.45328252};
-SS(-0.65355936,0.25468043,-0.1897796,-0.49391083,0.27907498,-0.27264436,-0.62938155,0.17932964,-0.37445272,-0.63048479,0.37587985,-0.34368186){0.51379882,0.37398026,0.55109073,0.64388066};
-SS(-0.32897755,-0.67088709,0.5,-0.40125956,-0.65699374,0.33213173,-0.50050976,-0.57246927,0.5,-0.34549718,-0.50098866,0.4105565){0.79643001,0.69449311,0.81219504,0.5260109};
-SS(0,0,-0.25,-0.16707278,-0.087678023,-0.31121894,0,-0.16143077,-0.33843101,-0.098950987,-0.13391411,-0.14594667){0.044304329,0.11599041,0.12966739,0.03512721};
-SS(0,-1,0.25,-0.12988976,-0.86995226,0.20452896,-0.16134158,-1,0.33850563,0,-0.83845667,0.33864852){1.0438639,0.79894991,1.129042,0.80178572};
-SS(-0.52470763,0.46530444,0.33754711,-0.41648151,0.41684878,0.5,-0.48141868,0.60085372,0.5,-0.61509744,0.47589965,0.5){0.59371518,0.58097186,0.82306978,0.84259202};
-SS(0.27170325,0.36204749,-0.4201745,0.11583535,0.30145324,-0.5,0.20129651,0.21389912,-0.31902192,0.09693172,0.3918681,-0.3370861){0.36885377,0.33954703,0.16839385,0.26256104};
-SS(0.8781758,0.86708556,-0.1989731,1,1,-0.25,1,0.83864447,-0.33847614,0.82865019,1,-0.3214153){1.5462283,2.0438315,1.8065101,1.7714679};
-SS(0.11583535,0.30145324,-0.5,0.27170325,0.36204749,-0.4201745,0.16368264,0.50834729,-0.5,0.09693172,0.3918681,-0.3370861){0.33954703,0.36885377,0.52115901,0.26256104};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.7055892,-0.50616462,-0.017961589,-0.52487586,-0.5117405,-0.017639258,-0.61549046,-0.35581383,-0.12962263){0.7287475,0.74484897,0.51812974,0.50877487};
-SS(-0.36145429,0.13293621,0.35430528,-0.24000819,0.17660305,0.5,-0.4543958,0.20406131,0.5,-0.40752783,0.030201366,0.5){0.26360063,0.3210912,0.48353653,0.40526498};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.65631386,-0.59724887,0.13822882,-0.52487586,-0.5117405,-0.017639258,-0.59094649,-0.40495207,0.12834587){0.74484897,0.7890621,0.51812974,0.51475101};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.24163432,0.33561251,-0.055881164,-0.096302334,0.43534175,-0.056072844,-0.19461387,0.3919517,0.10437587){0.32892635,0.16437697,0.18078295,0.19075448};
-SS(0.51674933,0.64481281,-0.39755292,0.37549445,0.49317282,-0.5,0.57309542,0.50075776,-0.5,0.48047723,0.47791267,-0.33071402){0.82858869,0.61648995,0.81773274,0.55795418};
-SS(-0.16015893,0.67694077,0.39025863,-0.3132159,0.69976014,0.5,-0.1827732,0.83017807,0.5,-0.30949447,0.8262402,0.33528492){0.6265216,0.82050522,0.95598938,0.87388961};
-SS(0.11458044,0.70010244,0.010073529,0.098704003,0.67249079,0.1943501,0.086744979,0.52712982,0.027891324,0.26064395,0.61953306,0.12890567){0.49378055,0.47957633,0.26660844,0.45328252};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.49292178,-0.37477565,-0.5,-0.50036547,-0.57239096,-0.5,-0.62341011,-0.46880832,-0.38153973){0.57811658,0.6115465,0.81333009,0.73807879};
-SS(0.37549445,0.49317282,-0.5,0.51674933,0.64481281,-0.39755292,0.34412919,0.6158316,-0.3427703,0.48047723,0.47791267,-0.33071402){0.61648995,0.82858869,0.59958408,0.55795418};
-SS(-0.10743676,0.85847111,-0.11136175,-0.012406168,1,-0.034358602,-0.035654771,0.78507762,0.045007896,0.094968532,0.84539386,-0.087484586){0.7462212,0.99121748,0.60161266,0.71839764};
-SS(-0.58934795,0.84141567,-0.18062024,-0.74249217,0.75399014,-0.15399718,-0.65756371,0.81308934,-0.3429452,-0.6293812,0.63993291,-0.28812602){1.0736489,1.1267767,1.1958888,0.87296464};
-SS(-0.30122568,-0.11513872,0.5,-0.37661764,-0.26006406,0.40868766,-0.50807239,-0.16307462,0.5,-0.40506391,-0.079541407,0.3303193){0.33848202,0.36234206,0.52416601,0.26156128};
-SS(-0.39806707,0.15776443,0.15870839,-0.26986228,0.26051837,0.22418657,-0.41843781,0.30742585,0.3397996,-0.36145429,0.13293621,0.35430528){0.19317292,0.1749353,0.37011438,0.26360063};
-SS(-0.52470763,0.46530444,0.33754711,-0.54640726,0.34339216,0.19847863,-0.41843781,0.30742585,0.3397996,-0.61674646,0.25215289,0.3447871){0.59371518,0.43575493,0.37011438,0.54607287};
-SS(-0.10037172,0.18891947,0.20844359,0,0,0.25,-0.20045203,0.067929244,0.29301468,-0.15128303,0.02253305,0.11422928){0.074828316,0.045060365,0.10955402,0.025420414};
-SS(0.57309542,0.50075776,-0.5,0.50136923,0.34587735,-0.44862257,0.67125235,0.44297685,-0.31879306,0.48047723,0.47791267,-0.33071402){0.81773274,0.56260896,0.72773009,0.55795418};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.3533559,-0.49437708,0.037576204,-0.52487586,-0.5117405,-0.017639258,-0.50537844,-0.68762812,0.023695348){0.52757348,0.35575629,0.51812974,0.71483247};
-SS(0.0011150345,0.93517443,-0.37389303,-0.11111111,1,-0.5,0.00024312215,0.80750011,-0.5,-0.18268367,0.83021756,-0.5){1.0026385,1.2528065,0.88610119,0.9573479};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.65956212,-0.52273243,-0.19262862,-0.82285362,-0.63420593,-0.0683896,-0.85520613,-0.46088631,-0.14784569){0.74484897,0.7287475,1.0691297,0.95161001};
-SS(-0.0073778212,0.36022468,0.15230712,-0.10037172,0.18891947,0.20844359,0.050277172,0.20853018,0.30186362,-0.11614487,0.30919383,0.33918095){0.13675819,0.074828316,0.12181545,0.20820823};
-SS(-0.58258855,0.14037208,-0.067351147,-0.65355936,0.25468043,-0.1897796,-0.78848723,0.26584533,-0.068869999,-0.63246299,0.29145388,0.035195127){0.34532741,0.51379882,0.68151298,0.47226275};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.4433427,0.53576375,-0.12560501,-0.54631436,0.45612147,-0.00074796238,-0.45563594,0.60375179,0.095527884){0.32892635,0.48429505,0.48593017,0.56263538};
-SS(0.11583535,0.30145324,-0.5,0.09693172,0.3918681,-0.3370861,0.16368264,0.50834729,-0.5,-0.029932551,0.40748663,-0.5){0.33954703,0.26256104,0.52115901,0.4038008};
-SS(-0.7489605,0.18190923,0.13647301,-0.91347537,0.15552497,0.067511395,-0.76752638,0.004448061,-0.013214377,-0.84289574,0.018333867,0.1608607){0.59564173,0.85045394,0.5734925,0.72430843};
-SS(0.27123349,0.36190713,0.41476339,0.11523872,0.30161582,0.5,0.16321322,0.50838432,0.5,0.085954007,0.41736025,0.32943097){0.36300231,0.33546792,0.52238519,0.27115576};
-SS(-0.79227163,-0.79754897,0.0021844777,-1,-0.77608598,0.00064487429,-0.8827276,-0.88146034,0.13123348,-0.83996275,-0.66999882,0.11765553){1.2530106,1.5844414,1.5595365,1.1553131};
-SS(0.25248643,0.73785598,-0.13082591,0.11458044,0.70010244,0.010073529,0.24404834,0.79519787,0.082231238,0.094968532,0.84539386,-0.087484586){0.60350215,0.49378055,0.68472542,0.71839764};
-SS(-0.48255002,0.69900846,-0.19155417,-0.39032311,0.63241857,-0.34621958,-0.50782983,0.50249565,-0.29902586,-0.6293812,0.63993291,-0.28812602){0.74365966,0.65630059,0.58612549,0.87296464};
-SS(-0.48255002,0.69900846,-0.19155417,-0.4433427,0.53576375,-0.12560501,-0.50782983,0.50249565,-0.29902586,-0.39032311,0.63241857,-0.34621958){0.74365966,0.48429505,0.58612549,0.65630059};
-SS(-0.74249217,0.75399014,-0.15399718,-0.83248216,0.76782327,-0.31292259,-0.65756371,0.81308934,-0.3429452,-0.6293812,0.63993291,-0.28812602){1.1267767,1.366757,1.1958888,0.87296464};
-SS(0.59416595,0.14141347,0.32656529,0.50011436,0,0.27961788,0.42621669,0.19017509,0.30505062,0.46476684,0.14382827,0.12247557){0.46498444,0.30940041,0.29714896,0.23450402};
-SS(0.13913358,0.10014326,0.18199659,0,0,0.25,0.1615172,0,0.33845519,0.050277172,0.20853018,0.30186362){0.045990896,0.045060365,0.13068911,0.12181545};
-SS(0.61535375,0.70719289,-0.095218388,0.45788353,0.76094781,-0.0096633567,0.62860594,0.86645525,0.049037492,0.54700908,0.85955032,-0.16345766){0.87858083,0.76853994,1.1303867,1.0528061};
-SS(-0.30122568,-0.11513872,0.5,-0.40506391,-0.079541407,0.3303193,-0.50807239,-0.16307462,0.5,-0.40752783,0.030201366,0.5){0.33848202,0.26156128,0.52416601,0.40526498};
-SS(0.50136923,0.34587735,-0.44862257,0.671223,0.32907594,-0.5,0.57309542,0.50075776,-0.5,0.67125235,0.44297685,-0.31879306){0.56260896,0.79435762,0.81773274,0.72773009};
-SS(-1,-0.00021427218,0.00011802244,-0.89804207,0.11676539,-0.10792088,-0.76752638,0.004448061,-0.013214377,-0.88905946,-0.098697315,-0.13184676){0.98080906,0.82300022,0.5734925,0.8023886};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.29237157,-0.11865629,-0.17606411,-0.1971424,-0.26981885,-0.30750196,-0.098950987,-0.13391411,-0.14594667){0.11599041,0.11404163,0.19280289,0.03512721};
-SS(-0.14850787,-0.69358405,-0.087583548,0,-0.70830496,-0.20826096,0,-0.77970171,0.00010845427,-0.12233239,-0.87748906,-0.13583418){0.49763432,0.5287181,0.58842154,0.78823805};
-SS(-0.83248216,0.76782327,-0.31292259,-0.74249217,0.75399014,-0.15399718,-0.80558396,0.5878127,-0.29244037,-0.6293812,0.63993291,-0.28812602){1.366757,1.1267767,1.0616703,0.87296464};
-SS(-0.34310942,-0.010167032,0.1509038,-0.15128303,0.02253305,0.11422928,-0.20656092,-0.13938028,0.029547229,-0.28278924,0.041190137,-0.04219563){0.12661586,0.025420414,0.048278496,0.063480395};
-SS(0.29175541,0,0.20824909,0.13913358,0.10014326,0.18199659,0.1615172,0,0.33845519,0.26083053,0.15082484,0.37728795){0.1093371,0.045990896,0.13068911,0.21918499};
-SS(-1,-0.00021427218,0.00011802244,-0.91347537,0.15552497,0.067511395,-0.76752638,0.004448061,-0.013214377,-0.89804207,0.11676539,-0.10792088){0.98080906,0.85045394,0.5734925,0.82300022};
-SS(-0.62450053,-0.31310845,0.38575928,-0.73174745,-0.21491043,0.5,-0.50807239,-0.16307462,0.5,-0.64009684,-0.10188458,0.37412975){0.62379151,0.81377033,0.52416601,0.54631619};
-SS(-0.48255002,0.69900846,-0.19155417,-0.58934795,0.84141567,-0.18062024,-0.48952189,0.78345034,0.019065462,-0.38143574,0.84373572,-0.12387887){0.74365966,1.0736489,0.83409809,0.85864479};
-SS(0.35689191,0.091376279,-0.36932783,0.29173763,0,-0.20843742,0.50007058,0,-0.27987971,0.37137652,0.1767682,-0.19801193){0.26145514,0.1134179,0.31006895,0.19205628};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.29164705,-0.20823955,-0.1971424,-0.26981885,-0.30750196,-0.098950987,-0.13391411,-0.14594667){0.14783141,0.11473247,0.19280289,0.03512721};
-SS(-0.91347537,0.15552497,0.067511395,-1,0.29928494,0.0012550607,-0.78848723,0.26584533,-0.068869999,-0.89804207,0.11676539,-0.10792088){0.85045394,1.0718665,0.68151298,0.82300022};
-SS(-0.68637718,0.43295764,-0.18031685,-0.65355936,0.25468043,-0.1897796,-0.83127473,0.33505962,-0.32026923,-0.63048479,0.37587985,-0.34368186){0.67437813,0.51379882,0.89071695,0.64388066};
-SS(-0.82285362,-0.63420593,-0.0683896,-0.7055892,-0.50616462,-0.017961589,-0.82595855,-0.48031431,0.11444494,-0.83996275,-0.66999882,0.11765553){1.0691297,0.74484897,0.90887195,1.1553131};
-SS(0.11458044,0.70010244,0.010073529,-0.0089783977,0.64320989,-0.13441642,-0.035654771,0.78507762,0.045007896,0.094968532,0.84539386,-0.087484586){0.49378055,0.41358858,0.60161266,0.71839764};
-SS(-0.52427834,0.10778268,0.27208728,-0.39806707,0.15776443,0.15870839,-0.41843781,0.30742585,0.3397996,-0.36145429,0.13293621,0.35430528){0.34448415,0.19317292,0.37011438,0.26360063};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.65631386,-0.59724887,0.13822882,-0.82595855,-0.48031431,0.11444494,-0.83996275,-0.66999882,0.11765553){0.74484897,0.7890621,0.90887195,1.1553131};
-SS(-1,-0.77608598,0.00064487429,-0.79227163,-0.79754897,0.0021844777,-0.82285362,-0.63420593,-0.0683896,-0.83996275,-0.66999882,0.11765553){1.5844414,1.2530106,1.0691297,1.1553131};
-SS(0.050277172,0.20853018,0.30186362,0.11523872,0.30161582,0.5,-0.045146113,0.19012269,0.5,0.12517622,0.12515553,0.5){0.12181545,0.33546792,0.27176836,0.27156885};
-SS(-0.11111111,1,-0.5,-0.33333333,1,-0.5,-0.18268367,0.83021756,-0.5,-0.23070339,1,-0.34855306){1.2528065,1.3407278,0.9573479,1.1599423};
-SS(0.11111111,1,-0.5,0.0011150345,0.93517443,-0.37389303,-0.11111111,1,-0.5,0.00024312215,0.80750011,-0.5){1.2422682,1.0026385,1.2528065,0.88610119};
-SS(-0.65631386,-0.59724887,0.13822882,-0.83996275,-0.66999882,0.11765553,-0.79575191,-0.55547687,0.30538166,-0.82595855,-0.48031431,0.11444494){0.7890621,1.1553131,1.0192798,0.90887195};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.30131805,-0.11512588,-0.5,-0.19007896,0.04567822,-0.5,-0.12484866,-0.12486094,-0.5){0.11599041,0.3368451,0.27736807,0.26766045};
-SS(-0.30131805,-0.11512588,-0.5,-0.41767704,0.010770256,-0.44072823,-0.50815189,-0.16301678,-0.5,-0.38492375,-0.20017574,-0.33650716){0.3368451,0.35514259,0.52110597,0.28705324};
-SS(-0.31289368,0.69974287,-0.5,-0.39032311,0.63241857,-0.34621958,-0.50014045,0.79673357,-0.5,-0.4813337,0.60105459,-0.5){0.82323564,0.65630059,1.1145783,0.83133251};
-SS(-0.48255002,0.69900846,-0.19155417,-0.6293812,0.63993291,-0.28812602,-0.50782983,0.50249565,-0.29902586,-0.62332411,0.59900263,-0.10904345){0.74365966,0.87296464,0.58612549,0.74800561};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.16707278,-0.087678023,-0.31121894,-0.1971424,-0.26981885,-0.30750196,-0.38492375,-0.20017574,-0.33650716){0.11404163,0.11599041,0.19280289,0.28705324};
-SS(-0.4433427,0.53576375,-0.12560501,-0.48255002,0.69900846,-0.19155417,-0.50782983,0.50249565,-0.29902586,-0.62332411,0.59900263,-0.10904345){0.48429505,0.74365966,0.58612549,0.74800561};
-SS(0.50761134,0.34933779,0.39015973,0.37492492,0.49312259,0.5,0.5725222,0.50074158,0.5,0.47723835,0.52605258,0.30619083){0.51484928,0.61809871,0.8121357,0.58228229};
-SS(-0.91347537,0.15552497,0.067511395,-1,-0.00021427218,0.00011802244,-0.76752638,0.004448061,-0.013214377,-0.84289574,0.018333867,0.1608607){0.85045394,0.98080906,0.5734925,0.72430843};
-SS(-0.80727304,0.00024662976,0.5,-0.91004595,0.15296589,0.33139812,-0.83006559,0.18329805,0.5,-0.72768327,0.10310141,0.33233484){0.88515177,0.94743142,0.96159482,0.63492881};
-SS(-0.48255002,0.69900846,-0.19155417,-0.58934795,0.84141567,-0.18062024,-0.65756371,0.81308934,-0.3429452,-0.6293812,0.63993291,-0.28812602){0.74365966,1.0736489,1.1958888,0.87296464};
-SS(0,-0.70830496,-0.20826096,-0.11754465,-0.65214472,-0.32749638,-0.2399131,-0.76005145,-0.25989531,-0.14850787,-0.69358405,-0.087583548){0.5287181,0.53347202,0.6848256,0.49763432};
-SS(0.39612945,0.70614162,0.21524614,0.36841015,0.87909734,0.37310922,0.22886345,0.79287946,0.30210005,0.35567295,0.65317229,0.39545235){0.68453461,1.0362544,0.75332396,0.69293227};
-SS(0.61535375,0.70719289,-0.095218388,0.65062064,0.64268786,0.069510863,0.77861211,0.77861193,-0.067175459,0.62860594,0.86645525,0.049037492){0.87858083,0.82620698,1.1981052,1.1303867};
-SS(-0.17603462,0.24070348,-0.5,-0.1182182,0.15955837,-0.3159857,-0.19007896,0.04567822,-0.5,-0.010543702,0.17712261,-0.5){0.32537509,0.11990198,0.27736807,0.25750364};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.85520613,-0.46088631,-0.14784569,-0.7907607,-0.33838097,-0.28342271,-0.81387526,-0.53653555,-0.3209601){0.7287475,0.95161001,0.80149819,1.0406635};
-SS(-0.073421274,-0.375,-0.38984354,0,-0.29164705,-0.20823955,0,-0.16143077,-0.33843101,-0.1971424,-0.26981885,-0.30750196){0.28201081,0.11473247,0.12966739,0.19280289};
-SS(-1,0.33333333,-0.5,-0.92571354,0.17249619,-0.34283108,-1,0.11111111,-0.5,-0.82994199,0.18319278,-0.5){1.3393331,0.99158484,1.2464205,0.95993957};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.77777778,0.5,-1,-0.84092895,0.33252059,-0.80635543,-0.81164184,0.5){1.4119512,1.8434331,1.8030746,1.5410993};
-SS(0,-0.29164705,-0.20823955,-0.15923414,-0.34171533,-0.15079999,-0.1971424,-0.26981885,-0.30750196,-0.073421274,-0.375,-0.38984354){0.11473247,0.14783141,0.19280289,0.28201081};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.47540235,-0.27521785,-0.7907607,-0.33838097,-0.28342271,-0.81387526,-0.53653555,-0.3209601){0.95161001,1.2841965,0.80149819,1.0406635};
-SS(0,0,0.25,-0.1159097,-0.14329028,0.19302206,-0.20045203,0.067929244,0.29301468,-0.15128303,0.02253305,0.11422928){0.045060365,0.055235283,0.10955402,0.025420414};
-SS(-0.65631386,-0.59724887,0.13822882,-0.7055892,-0.50616462,-0.017961589,-0.82595855,-0.48031431,0.11444494,-0.59094649,-0.40495207,0.12834587){0.7890621,0.74484897,0.90887195,0.51475101};
-SS(0.35689191,0.091376279,-0.36932783,0.50007058,0,-0.27987971,0.51910919,0.22553632,-0.31417891,0.37137652,0.1767682,-0.19801193){0.26145514,0.31006895,0.40112301,0.19205628};
-SS(-0.19461387,0.3919517,0.10437587,-0.0073778212,0.36022468,0.15230712,-0.096302334,0.43534175,-0.056072844,-0.098708274,0.55956225,0.10505678){0.19075448,0.13675819,0.18078295,0.31633913};
-SS(-0.39806707,0.15776443,0.15870839,-0.34310942,-0.010167032,0.1509038,-0.52427834,0.10778268,0.27208728,-0.5555987,0.045150158,0.095162244){0.19317292,0.12661586,0.34448415,0.29993682};
-SS(-0.41767704,0.010770256,-0.44072823,-0.30131805,-0.11512588,-0.5,-0.19007896,0.04567822,-0.5,-0.29413589,0.046284299,-0.31274881){0.35514259,0.3368451,0.27736807,0.1681493};
-SS(-0.52470763,0.46530444,0.33754711,-0.54640726,0.34339216,0.19847863,-0.35521568,0.4957142,0.26668635,-0.41843781,0.30742585,0.3397996){0.59371518,0.43575493,0.42001946,0.37011438};
-SS(-0.26986228,0.26051837,0.22418657,-0.10037172,0.18891947,0.20844359,-0.13709741,0.19518884,0.034033465,-0.19461387,0.3919517,0.10437587){0.1749353,0.074828316,0.040184006,0.19075448};
-SS(0.60662231,0.34516964,-0.13972301,0.74440038,0.22095066,-0.087839409,0.77491511,0.22516452,-0.26425516,0.82562789,0.37565656,-0.12707714){0.48782847,0.59875958,0.70313431,0.82387041};
-SS(0.25126435,0.28098512,0.24657435,0.18202227,0.38279251,0.10350409,0.26138985,0.51848551,0.281015,0.36016656,0.41044152,0.1594367){0.18575023,0.17617817,0.40200156,0.3073722};
-SS(0.00029730467,0.80760978,0.5,-0.16015893,0.67694077,0.39025863,-0.1827732,0.83017807,0.5,-0.043441254,0.79173928,0.29440137){0.88423684,0.6265216,0.95598938,0.69563564};
-SS(-0.32897755,-0.67088709,0.5,-0.40125956,-0.65699374,0.33213173,-0.50400314,-0.78879927,0.5,-0.50050976,-0.57246927,0.5){0.79643001,0.69449311,1.1086821,0.81219504};
-SS(0,-0.25,-0.5,0,0,-0.5,-0.12484866,-0.12486094,-0.5,0,-0.16143077,-0.33843101){0.29677328,0.23465449,0.26766045,0.12966739};
-SS(0,0,0.5,0.25,0,0.5,0.1615172,0,0.33845519,0.12517622,0.12515553,0.5){0.23153294,0.29281005,0.13068911,0.27156885};
-SS(-0.26986228,0.26051837,0.22418657,-0.39806707,0.15776443,0.15870839,-0.20045203,0.067929244,0.29301468,-0.36145429,0.13293621,0.35430528){0.1749353,0.19317292,0.10955402,0.26360063};
-SS(-0.91004595,0.15296589,0.33139812,-1,0.11111111,0.5,-0.80727304,0.00024662976,0.5,-0.83006559,0.18329805,0.5){0.94743142,1.246301,0.88515177,0.96159482};
-SS(0.1615172,0,0.33845519,0.13913358,0.10014326,0.18199659,0.050277172,0.20853018,0.30186362,0.26083053,0.15082484,0.37728795){0.13068911,0.045990896,0.12181545,0.21918499};
-SS(0.098704003,0.67249079,0.1943501,0.26064395,0.61953306,0.12890567,0.24404834,0.79519787,0.082231238,0.22886345,0.79287946,0.30210005){0.47957633,0.45328252,0.68472542,0.75332396};
-SS(0.26064395,0.61953306,0.12890567,0.39612945,0.70614162,0.21524614,0.24404834,0.79519787,0.082231238,0.22886345,0.79287946,0.30210005){0.45328252,0.68453461,0.68472542,0.75332396};
-SS(-0.41648151,0.41684878,0.5,-0.52470763,0.46530444,0.33754711,-0.35521568,0.4957142,0.26668635,-0.41843781,0.30742585,0.3397996){0.58097186,0.59371518,0.42001946,0.37011438};
-SS(0,-0.16143077,-0.33843101,-0.16707278,-0.087678023,-0.31121894,-0.1971424,-0.26981885,-0.30750196,-0.098950987,-0.13391411,-0.14594667){0.12966739,0.11599041,0.19280289,0.03512721};
-SS(0.49866453,0.63973666,-0.21510859,0.42864323,0.48543211,-0.13804456,0.34412919,0.6158316,-0.3427703,0.48047723,0.47791267,-0.33071402){0.68344633,0.42022283,0.59958408,0.55795418};
-SS(0.671223,0.32907594,-0.5,0.67125235,0.44297685,-0.31879306,0.78906409,0.5041626,-0.5,0.57309542,0.50075776,-0.5){0.79435762,0.72773009,1.1105402,0.81773274};
-SS(0.65062064,0.64268786,0.069510863,0.61535375,0.70719289,-0.095218388,0.45788353,0.76094781,-0.0096633567,0.62860594,0.86645525,0.049037492){0.82620698,0.87858083,0.76853994,1.1303867};
-SS(-0.50807239,-0.16307462,0.5,-0.37661764,-0.26006406,0.40868766,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.52416601,0.36234206,0.36443271,0.26156128};
-SS(0,0,0.25,-0.10037172,0.18891947,0.20844359,0.050277172,0.20853018,0.30186362,0.13913358,0.10014326,0.18199659){0.045060365,0.074828316,0.12181545,0.045990896};
-SS(-0.6293812,0.63993291,-0.28812602,-0.68637718,0.43295764,-0.18031685,-0.50782983,0.50249565,-0.29902586,-0.62332411,0.59900263,-0.10904345){0.87296464,0.67437813,0.58612549,0.74800561};
-SS(-0.41648151,0.41684878,0.5,-0.29261734,0.53193925,0.43339885,-0.35521568,0.4957142,0.26668635,-0.52470763,0.46530444,0.33754711){0.58097186,0.53993003,0.42001946,0.59371518};
-SS(0.25126435,0.28098512,0.24657435,0.26083053,0.15082484,0.37728795,0.42621669,0.19017509,0.30505062,0.27123349,0.36190713,0.41476339){0.18575023,0.21918499,0.29714896,0.36300231};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.77777778,-0.5,-0.80632325,-0.81147186,-0.5,-1,-0.83959635,-0.33115777){1.4249306,1.8436809,1.5409894,1.7998257};
-SS(0.27123349,0.36190713,0.41476339,0.16321322,0.50838432,0.5,0.26138985,0.51848551,0.281015,0.085954007,0.41736025,0.32943097){0.36300231,0.52238519,0.40200156,0.27115576};
-SS(0.26083053,0.15082484,0.37728795,0.37501462,0.2307626,0.5,0.42621669,0.19017509,0.30505062,0.27123349,0.36190713,0.41476339){0.21918499,0.42590445,0.29714896,0.36300231};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.26064395,0.61953306,0.12890567,0.086744979,0.52712982,0.027891324,0.18202227,0.38279251,0.10350409){0.32377482,0.45328252,0.26660844,0.17617817};
-SS(-0.11754465,-0.65214472,-0.32749638,0,-0.75,-0.5,-0.18848435,-0.81110947,-0.5,-0.14376826,-0.62489354,-0.5){0.53347202,0.79460868,0.92571371,0.6489606};
-SS(-0.63048479,0.37587985,-0.34368186,-0.69937066,0.31351533,-0.5,-0.79644003,0.50064951,-0.5,-0.61503712,0.4760032,-0.5){0.64388066,0.81965428,1.115532,0.83978547};
-SS(-1,1,0.25,-0.93582873,0.86427167,0.14668289,-0.84394966,1,0.33504415,-1,0.84108515,0.33242406){2.0473025,1.6320629,1.8084725,1.8031397};
-SS(0.61535375,0.70719289,-0.095218388,0.49866453,0.63973666,-0.21510859,0.45788353,0.76094781,-0.0096633567,0.54700908,0.85955032,-0.16345766){0.87858083,0.68344633,0.76853994,1.0528061};
-SS(-1,0.77777778,-0.5,-0.83248216,0.76782327,-0.31292259,-0.80479144,0.80504612,-0.5,-1,0.83964442,-0.3309874){1.8398372,1.366757,1.5255891,1.7979585};
-SS(0.49866453,0.63973666,-0.21510859,0.61535375,0.70719289,-0.095218388,0.68900489,0.77311276,-0.28043733,0.54700908,0.85955032,-0.16345766){0.68344633,0.87858083,1.1326816,1.0528061};
-SS(-0.41767704,0.010770256,-0.44072823,-0.58754442,0.033885734,-0.5,-0.50815189,-0.16301678,-0.5,-0.64012388,-0.10177177,-0.37237302){0.35514259,0.58180393,0.52110597,0.54269073};
-SS(-0.49284988,-0.37485679,0.5,-0.62450053,-0.31310845,0.38575928,-0.50807239,-0.16307462,0.5,-0.37661764,-0.26006406,0.40868766){0.6163523,0.62379151,0.52416601,0.36234206};
-SS(0.59416595,0.14141347,0.32656529,0.52843461,0.32737897,0.19102935,0.42621669,0.19017509,0.30505062,0.50761134,0.34933779,0.39015973){0.46498444,0.40790135,0.29714896,0.51484928};
-SS(-0.84289574,0.018333867,0.1608607,-0.67616985,-0.069078192,0.18801024,-0.84084014,-0.14895162,0.31636914,-0.82279039,-0.18997945,0.10657137){0.72430843,0.47948004,0.81273381,0.70945047};
-SS(-0.40125956,-0.65699374,0.33213173,-0.42889738,-0.75253072,0.17523232,-0.22656331,-0.68065623,0.28194433,-0.349759,-0.84853211,0.35590634){0.69449311,0.75958282,0.57683818,0.94981364};
-SS(0.50136923,0.34587735,-0.44862257,0.37549445,0.49317282,-0.5,0.37532516,0.23078833,-0.5,0.27170325,0.36204749,-0.4201745){0.56260896,0.61648995,0.42551454,0.36885377};
-SS(0.13913358,0.10014326,0.18199659,0.25126435,0.28098512,0.24657435,0.050277172,0.20853018,0.30186362,0.26083053,0.15082484,0.37728795){0.045990896,0.18575023,0.12181545,0.21918499};
-SS(0.36841015,0.87909734,0.37310922,0.21512427,0.73211919,0.5,0.22886345,0.79287946,0.30210005,0.35567295,0.65317229,0.39545235){1.0362544,0.81521474,0.75332396,0.69293227};
-SS(0.39612945,0.70614162,0.21524614,0.35567295,0.65317229,0.39545235,0.26138985,0.51848551,0.281015,0.47723835,0.52605258,0.30619083){0.68453461,0.69293227,0.40200156,0.58228229};
-SS(0,-0.29164705,-0.20823955,-0.15923414,-0.34171533,-0.15079999,0,-0.22019801,5.0496855e-05,-0.098950987,-0.13391411,-0.14594667){0.11473247,0.14783141,0.029059683,0.03512721};
-SS(-1,0.25105097,-0.19350143,-0.92571354,0.17249619,-0.34283108,-0.77267892,0.13105707,-0.24874664,-0.89804207,0.11676539,-0.10792088){1.0825888,0.99158484,0.65386325,0.82300022};
-SS(-0.83996275,-0.66999882,0.11765553,-1,-0.70710233,0.21356199,-1,-0.77608598,0.00064487429,-0.8827276,-0.88146034,0.13123348){1.1553131,1.5280688,1.5844414,1.5595365};
-SS(-1,-0.70710233,0.21356199,-0.89663862,-0.69397302,0.37275403,-0.77091496,-0.77159441,0.2629049,-0.83996275,-0.66999882,0.11765553){1.5280688,1.4119512,1.2433034,1.1553131};
-SS(-0.40125956,-0.65699374,0.33213173,-0.32897755,-0.67088709,0.5,-0.50400314,-0.78879927,0.5,-0.349759,-0.84853211,0.35590634){0.69449311,0.79643001,1.1086821,0.94981364};
-SS(-1,-0.70710233,0.21356199,-0.83996275,-0.66999882,0.11765553,-0.77091496,-0.77159441,0.2629049,-0.8827276,-0.88146034,0.13123348){1.5280688,1.1553131,1.2433034,1.5595365};
-SS(-0.77091496,-0.77159441,0.2629049,-0.79227163,-0.79754897,0.0021844777,-0.8827276,-0.88146034,0.13123348,-0.83996275,-0.66999882,0.11765553){1.2433034,1.2530106,1.5595365,1.1553131};
-SS(-0.67616985,-0.069078192,0.18801024,-0.84289574,0.018333867,0.1608607,-0.76752638,0.004448061,-0.013214377,-0.82279039,-0.18997945,0.10657137){0.47948004,0.72430843,0.5734925,0.70945047};
-SS(-0.31289368,0.69974287,-0.5,-0.17097214,0.64900986,-0.39927747,-0.35455825,0.80859576,-0.32177549,-0.39032311,0.63241857,-0.34621958){0.82323564,0.59741335,0.86460259,0.65630059};
-SS(-1,0.25105097,-0.19350143,-0.89426176,0.41257007,-0.12932618,-1,0.29928494,0.0012550607,-0.78848723,0.26584533,-0.068869999){1.0825888,0.974079,1.0718665,0.68151298};
-SS(-0.10037172,0.18891947,0.20844359,-0.0073778212,0.36022468,0.15230712,-0.13709741,0.19518884,0.034033465,-0.19461387,0.3919517,0.10437587){0.074828316,0.13675819,0.040184006,0.19075448};
-SS(0.37137652,0.1767682,-0.19801193,0.50007058,0,-0.27987971,0.51910919,0.22553632,-0.31417891,0.57129187,0.13526053,-0.13726946){0.19205628,0.31006895,0.40112301,0.35115136};
-SS(0.26064395,0.61953306,0.12890567,0.30434906,0.49798107,-4.0114635e-05,0.36016656,0.41044152,0.1594367,0.18202227,0.38279251,0.10350409){0.45328252,0.32377482,0.3073722,0.17617817};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.36174,-0.40052234,-0.23665811,-0.56113743,-0.28920115,-0.29204918,-0.38492375,-0.20017574,-0.33650716){0.26094507,0.32480953,0.46850822,0.28705324};
-SS(-0.65355936,0.25468043,-0.1897796,-0.68637718,0.43295764,-0.18031685,-0.49391083,0.27907498,-0.27264436,-0.63048479,0.37587985,-0.34368186){0.51379882,0.67437813,0.37398026,0.64388066};
-SS(0.37549445,0.49317282,-0.5,0.50136923,0.34587735,-0.44862257,0.48047723,0.47791267,-0.33071402,0.27170325,0.36204749,-0.4201745){0.61648995,0.56260896,0.55795418,0.36885377};
-SS(-0.55555556,1,0.5,-0.60421932,0.82298164,0.34468578,-0.66659408,1,0.32529585,-0.44431425,1,0.36245944){1.5418081,1.1449713,1.5364848,1.3152029};
-SS(-0.0073778212,0.36022468,0.15230712,-0.11614487,0.30919383,0.33918095,0.050277172,0.20853018,0.30186362,0.085954007,0.41736025,0.32943097){0.13675819,0.20820823,0.12181545,0.27115576};
-SS(0.60662231,0.34516964,-0.13972301,0.74440038,0.22095066,-0.087839409,0.63998586,0.17856447,0.051345521,0.57129187,0.13526053,-0.13726946){0.48782847,0.59875958,0.42570365,0.35115136};
-SS(0,-0.29157012,0.20836692,-0.10133362,-0.40777162,0.1162396,0,-0.49989758,0.27983937,-0.1853821,-0.42358473,0.30866054){0.11172813,0.17697987,0.30650831,0.29143101};
-SS(-1,-0.70710233,0.21356199,-0.89663862,-0.69397302,0.37275403,-1,-0.84092895,0.33252059,-0.77091496,-0.77159441,0.2629049){1.5280688,1.4119512,1.8030746,1.2433034};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.50159539,-0.29258506,7.2987381e-06,-0.4720473,-0.063494476,-0.036829327,-0.65367362,-0.16081953,0.0014934597){0.26094507,0.32068114,0.21285629,0.4344691};
-SS(-0.58934795,0.84141567,-0.18062024,-0.48255002,0.69900846,-0.19155417,-0.62332411,0.59900263,-0.10904345,-0.6293812,0.63993291,-0.28812602){1.0736489,0.74365966,0.74800561,0.87296464};
-SS(-0.39806707,0.15776443,0.15870839,-0.34310942,-0.010167032,0.1509038,-0.20045203,0.067929244,0.29301468,-0.36145429,0.13293621,0.35430528){0.19317292,0.12661586,0.10955402,0.26360063};
-SS(-0.54640726,0.34339216,0.19847863,-0.61674646,0.25215289,0.3447871,-0.52427834,0.10778268,0.27208728,-0.41843781,0.30742585,0.3397996){0.43575493,0.54607287,0.34448415,0.37011438};
-SS(0.29173763,0,-0.20843742,0.35689191,0.091376279,-0.36932783,0.20129651,0.21389912,-0.31902192,0.37137652,0.1767682,-0.19801193){0.1134179,0.26145514,0.16839385,0.19205628};
-SS(-0.39032311,0.63241857,-0.34621958,-0.31289368,0.69974287,-0.5,-0.50014045,0.79673357,-0.5,-0.35455825,0.80859576,-0.32177549){0.65630059,0.82323564,1.1145783,0.86460259};
-SS(-0.37661764,-0.26006406,0.40868766,-0.25897908,-0.24013326,0.26450313,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.36234206,0.17775565,0.36443271,0.26156128};
-SS(-0.74249217,0.75399014,-0.15399718,-0.58934795,0.84141567,-0.18062024,-0.62332411,0.59900263,-0.10904345,-0.6293812,0.63993291,-0.28812602){1.1267767,1.0736489,0.74800561,0.87296464};
-SS(-0.41651431,0.41690828,-0.5,-0.50782983,0.50249565,-0.29902586,-0.4813337,0.60105459,-0.5,-0.61503712,0.4760032,-0.5){0.57523437,0.58612549,0.83133251,0.83978547};
-SS(0,-0.29164705,-0.20823955,-0.098950987,-0.13391411,-0.14594667,0,-0.16143077,-0.33843101,-0.1971424,-0.26981885,-0.30750196){0.11473247,0.03512721,0.12966739,0.19280289};
-SS(-0.65367362,-0.16081953,0.0014934597,-0.67616985,-0.069078192,0.18801024,-0.76752638,0.004448061,-0.013214377,-0.82279039,-0.18997945,0.10657137){0.4344691,0.47948004,0.5734925,0.70945047};
-SS(-0.62450053,-0.31310845,0.38575928,-0.50807239,-0.16307462,0.5,-0.50874333,-0.23900991,0.2620444,-0.64009684,-0.10188458,0.37412975){0.62379151,0.52416601,0.36443271,0.54631619};
-SS(-0.24163432,0.33561251,-0.055881164,-0.13709741,0.19518884,0.034033465,-0.096302334,0.43534175,-0.056072844,-0.19461387,0.3919517,0.10437587){0.16437697,0.040184006,0.18078295,0.19075448};
-SS(0.25126435,0.28098512,0.24657435,0.27123349,0.36190713,0.41476339,0.26138985,0.51848551,0.281015,0.085954007,0.41736025,0.32943097){0.18575023,0.36300231,0.40200156,0.27115576};
-SS(-0.0073778212,0.36022468,0.15230712,-0.19461387,0.3919517,0.10437587,-0.11618574,0.50328545,0.29980467,-0.098708274,0.55956225,0.10505678){0.13675819,0.19075448,0.33969293,0.31633913};
-SS(-0.89804207,0.11676539,-0.10792088,-1,0.25105097,-0.19350143,-1,0.29928494,0.0012550607,-0.78848723,0.26584533,-0.068869999){0.82300022,1.0825888,1.0718665,0.68151298};
-SS(0.26083053,0.15082484,0.37728795,0.1615172,0,0.33845519,0.12517622,0.12515553,0.5,0.050277172,0.20853018,0.30186362){0.21918499,0.13068911,0.27156885,0.12181545};
-SS(-0.66659408,1,0.32529585,-0.60421932,0.82298164,0.34468578,-0.76389013,0.77728265,0.25513738,-0.61311838,0.85766427,0.15491279){1.5364848,1.1449713,1.2358334,1.1216468};
-SS(0.21512427,0.73211919,0.5,0.10211023,0.6404511,0.38011645,0.22886345,0.79287946,0.30210005,0.35567295,0.65317229,0.39545235){0.81521474,0.55160362,0.75332396,0.69293227};
-SS(0,-0.70830496,-0.20826096,-0.14850787,-0.69358405,-0.087583548,-0.2399131,-0.76005145,-0.25989531,-0.12233239,-0.87748906,-0.13583418){0.5287181,0.49763432,0.6848256,0.78823805};
-SS(0.10162062,0.65400865,-0.37913628,0.17777709,0.54047543,-0.2567554,-0.01813809,0.53618118,-0.30537166,0.09693172,0.3918681,-0.3370861){0.5665506,0.36840304,0.36567785,0.26256104};
-SS(0.29173763,0,-0.20843742,0.35689191,0.091376279,-0.36932783,0.16149165,0,-0.33864688,0.20129651,0.21389912,-0.31902192){0.1134179,0.26145514,0.12746835,0.16839385};
-SS(0.52843461,0.32737897,0.19102935,0.59416595,0.14141347,0.32656529,0.42621669,0.19017509,0.30505062,0.46476684,0.14382827,0.12247557){0.40790135,0.46498444,0.29714896,0.23450402};
-SS(-0.58754442,0.033885734,-0.5,-0.41767704,0.010770256,-0.44072823,-0.49808619,0.0026201378,-0.26387206,-0.64012388,-0.10177177,-0.37237302){0.58180393,0.35514259,0.29810596,0.54269073};
-SS(-1,0.11111111,-0.5,-0.92571354,0.17249619,-0.34283108,-0.80728146,0.00010990719,-0.5,-0.82994199,0.18319278,-0.5){1.2464205,0.99158484,0.88195685,0.95993957};
-SS(0.16321322,0.50838432,0.5,0.10211023,0.6404511,0.38011645,0.26138985,0.51848551,0.281015,0.085954007,0.41736025,0.32943097){0.52238519,0.55160362,0.40200156,0.27115576};
-SS(0.21512427,0.73211919,0.5,0.36841015,0.87909734,0.37310922,0.45042372,0.78359022,0.5,0.35567295,0.65317229,0.39545235){0.81521474,1.0362544,1.0496179,0.69293227};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.12484866,-0.12486094,-0.5,0,-0.16143077,-0.33843101,-0.1971424,-0.26981885,-0.30750196){0.11599041,0.26766045,0.12966739,0.19280289};
-SS(-0.32897755,-0.67088709,0.5,-0.40125956,-0.65699374,0.33213173,-0.22656331,-0.68065623,0.28194433,-0.349759,-0.84853211,0.35590634){0.79643001,0.69449311,0.57683818,0.94981364};
-SS(0.39612945,0.70614162,0.21524614,0.40637652,0.87094343,0.13060843,0.24404834,0.79519787,0.082231238,0.22886345,0.79287946,0.30210005){0.68453461,0.92399337,0.68472542,0.75332396};
-SS(0.35567295,0.65317229,0.39545235,0.37492492,0.49312259,0.5,0.26138985,0.51848551,0.281015,0.47723835,0.52605258,0.30619083){0.69293227,0.61809871,0.40200156,0.58228229};
-SS(-0.57994589,-0.69256437,0.31204703,-0.67513028,-0.66529728,0.5,-0.50400314,-0.78879927,0.5,-0.50050976,-0.57246927,0.5){0.89957508,1.1284607,1.1086821,0.81219504};
-SS(-0.76760867,-0.33664988,-0.028298027,-0.7055892,-0.50616462,-0.017961589,-0.85520613,-0.46088631,-0.14784569,-0.61549046,-0.35581383,-0.12962263){0.68479998,0.74484897,0.95161001,0.50877487};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.10743676,0.85847111,-0.11136175,-0.035654771,0.78507762,0.045007896,0.094968532,0.84539386,-0.087484586){0.41358858,0.7462212,0.60161266,0.71839764};
-SS(0.34720309,0.90097601,-0.12745168,0.4450496,1,-0.00012892076,0.45788353,0.76094781,-0.0096633567,0.54700908,0.85955032,-0.16345766){0.93504792,1.179155,0.76853994,1.0528061};
-SS(-0.3548152,-0.48825703,0.21848985,-0.40125956,-0.65699374,0.33213173,-0.22656331,-0.68065623,0.28194433,-0.34549718,-0.50098866,0.4105565){0.38862106,0.69449311,0.57683818,0.5260109};
-SS(0.4450496,1,-0.00012892076,0.40637652,0.87094343,0.13060843,0.45788353,0.76094781,-0.0096633567,0.62860594,0.86645525,0.049037492){1.179155,0.92399337,0.76853994,1.1303867};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.65956212,-0.52273243,-0.19262862,-0.7907607,-0.33838097,-0.28342271,-0.81387526,-0.53653555,-0.3209601){0.73807879,0.7287475,0.80149819,1.0406635};
-SS(-0.78315651,-0.45008839,-0.5,-0.62341011,-0.46880832,-0.38153973,-0.7907607,-0.33838097,-0.28342271,-0.81387526,-0.53653555,-0.3209601){1.0467962,0.73807879,0.80149819,1.0406635};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.61549046,-0.35581383,-0.12962263,-0.52487586,-0.5117405,-0.017639258,-0.59094649,-0.40495207,0.12834587){0.32068114,0.50877487,0.51812974,0.51475101};
-SS(-0.10037172,0.18891947,0.20844359,-0.26986228,0.26051837,0.22418657,-0.20045203,0.067929244,0.29301468,-0.11614487,0.30919383,0.33918095){0.074828316,0.1749353,0.10955402,0.20820823};
-SS(-0.77091496,-0.77159441,0.2629049,-0.89663862,-0.69397302,0.37275403,-0.79575191,-0.55547687,0.30538166,-0.83996275,-0.66999882,0.11765553){1.2433034,1.4119512,1.0192798,1.1553131};
-SS(-0.50807239,-0.16307462,0.5,-0.62450053,-0.31310845,0.38575928,-0.50874333,-0.23900991,0.2620444,-0.37661764,-0.26006406,0.40868766){0.52416601,0.62379151,0.36443271,0.36234206};
-SS(-0.68637718,0.43295764,-0.18031685,-0.6293812,0.63993291,-0.28812602,-0.80558396,0.5878127,-0.29244037,-0.62332411,0.59900263,-0.10904345){0.67437813,0.87296464,1.0616703,0.74800561};
-SS(-0.76760867,-0.33664988,-0.028298027,-0.7055892,-0.50616462,-0.017961589,-0.82595855,-0.48031431,0.11444494,-0.85520613,-0.46088631,-0.14784569){0.68479998,0.74484897,0.90887195,0.95161001};
-SS(-0.36145429,0.13293621,0.35430528,-0.24000819,0.17660305,0.5,-0.17669296,0.011023676,0.5,-0.20045203,0.067929244,0.29301468){0.26360063,0.3210912,0.26322593,0.10955402};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.65956212,-0.52273243,-0.19262862,-0.85520613,-0.46088631,-0.14784569,-0.61549046,-0.35581383,-0.12962263){0.74484897,0.7287475,0.95161001,0.50877487};
-SS(0,0,-0.25,-0.056808231,0.14323286,-0.13367928,0,0,-6.9388939e-15,0.13402468,0.11673163,-0.1460819){0.044304329,0.022140076,-0.017891206,0.039337265};
-SS(-0.14850787,-0.69358405,-0.087583548,0,-0.77970171,0.00010845427,-0.22302806,-0.77703925,0.068353305,-0.12233239,-0.87748906,-0.13583418){0.49763432,0.58842154,0.64063544,0.78823805};
-SS(-0.61115597,1,-0.10200355,-0.58934795,0.84141567,-0.18062024,-0.76988954,1,-0.26944904,-0.56041637,1,-0.29784853){1.3611038,1.0736489,1.6463902,1.3856141};
-SS(0.36841015,0.87909734,0.37310922,0.43654676,1,0.2604635,0.55555177,0.82262944,0.31125158,0.40637652,0.87094343,0.13060843){1.0362544,1.2403655,1.0671623,0.92399337};
-SS(0.51674933,0.64481281,-0.39755292,0.57309542,0.50075776,-0.5,0.67125235,0.44297685,-0.31879306,0.48047723,0.47791267,-0.33071402){0.82858869,0.81773274,0.72773009,0.55795418};
-SS(-0.34310942,-0.010167032,0.1509038,-0.39806707,0.15776443,0.15870839,-0.52427834,0.10778268,0.27208728,-0.36145429,0.13293621,0.35430528){0.12661586,0.19317292,0.34448415,0.26360063};
-SS(-0.74954172,1,0.13574231,-0.61311838,0.85766427,0.15491279,-0.76389013,0.77728265,0.25513738,-0.79370724,0.81084643,0.045877226){1.562759,1.1216468,1.2358334,1.270911};
-SS(0.26138985,0.51848551,0.281015,0.26064395,0.61953306,0.12890567,0.36016656,0.41044152,0.1594367,0.18202227,0.38279251,0.10350409){0.40200156,0.45328252,0.3073722,0.17617817};
-SS(-0.40125956,-0.65699374,0.33213173,-0.32897755,-0.67088709,0.5,-0.22656331,-0.68065623,0.28194433,-0.34549718,-0.50098866,0.4105565){0.69449311,0.79643001,0.57683818,0.5260109};
-SS(-0.86742481,-0.86548068,-0.14483364,-1,-1,-0.25,-1,-0.83959635,-0.33115777,-0.83846289,-1,-0.33858677){1.5085891,2.0422973,1.7998257,1.8019179};
-SS(-0.65631386,-0.59724887,0.13822882,-0.83996275,-0.66999882,0.11765553,-0.77091496,-0.77159441,0.2629049,-0.79575191,-0.55547687,0.30538166){0.7890621,1.1553131,1.2433034,1.0192798};
-SS(-0.11614487,0.30919383,0.33918095,-0.0073778212,0.36022468,0.15230712,-0.11618574,0.50328545,0.29980467,0.085954007,0.41736025,0.32943097){0.20820823,0.13675819,0.33969293,0.27115576};
-SS(-0.91004595,0.15296589,0.33139812,-0.7489605,0.18190923,0.13647301,-0.72768327,0.10310141,0.33233484,-0.84289574,0.018333867,0.1608607){0.94743142,0.59564173,0.63492881,0.72430843};
-SS(0.50136923,0.34587735,-0.44862257,0.34662081,0.36199915,-0.25068724,0.51910919,0.22553632,-0.31417891,0.48047723,0.47791267,-0.33071402){0.56260896,0.29696992,0.40112301,0.55795418};
-SS(-0.65631386,-0.59724887,0.13822882,-0.7055892,-0.50616462,-0.017961589,-0.82285362,-0.63420593,-0.0683896,-0.83996275,-0.66999882,0.11765553){0.7890621,0.74484897,1.0691297,1.1553131};
-SS(-0.62332411,0.59900263,-0.10904345,-0.65776896,0.64141588,0.074371921,-0.54631436,0.45612147,-0.00074796238,-0.45563594,0.60375179,0.095527884){0.74800561,0.83514199,0.48593017,0.56263538};
-SS(-0.84394966,1,0.33504415,-1,1,0.5,-1,1,0.25,-1,0.84108515,0.33242406){1.8084725,2.2338249,2.0473025,1.8031397};
-SS(-0.6293812,0.63993291,-0.28812602,-0.74249217,0.75399014,-0.15399718,-0.80558396,0.5878127,-0.29244037,-0.62332411,0.59900263,-0.10904345){0.87296464,1.1267767,1.0616703,0.74800561};
-SS(0.39612945,0.70614162,0.21524614,0.40637652,0.87094343,0.13060843,0.45788353,0.76094781,-0.0096633567,0.24404834,0.79519787,0.082231238){0.68453461,0.92399337,0.76853994,0.68472542};
-SS(-0.89426176,0.41257007,-0.12932618,-1,0.25105097,-0.19350143,-1,0.47527469,-0.27513051,-0.83127473,0.33505962,-0.32026923){0.974079,1.0825888,1.2834809,0.89071695};
-SS(0.50136923,0.34587735,-0.44862257,0.34662081,0.36199915,-0.25068724,0.48047723,0.47791267,-0.33071402,0.27170325,0.36204749,-0.4201745){0.56260896,0.29696992,0.55795418,0.36885377};
-SS(0.40637652,0.87094343,0.13060843,0.4450496,1,-0.00012892076,0.45788353,0.76094781,-0.0096633567,0.34720309,0.90097601,-0.12745168){0.92399337,1.179155,0.76853994,0.93504792};
-SS(-0.83248216,0.76782327,-0.31292259,-1,0.70529035,-0.21162945,-0.74249217,0.75399014,-0.15399718,-0.89962374,0.8609561,-0.16698164){1.366757,1.520296,1.1267767,1.5692753};
-SS(-0.58934795,0.84141567,-0.18062024,-0.76988954,1,-0.26944904,-0.56041637,1,-0.29784853,-0.65756371,0.81308934,-0.3429452){1.0736489,1.6463902,1.3856141,1.1958888};
-SS(0.09693172,0.3918681,-0.3370861,-0.029932551,0.40748663,-0.5,-0.12449617,0.36606215,-0.28273955,-0.01813809,0.53618118,-0.30537166){0.26256104,0.4038008,0.21185338,0.36567785};
-SS(-0.83006559,0.18329805,0.5,-0.91004595,0.15296589,0.33139812,-0.83851866,0.33014205,0.32623765,-0.72768327,0.10310141,0.33233484){0.96159482,0.94743142,0.89937894,0.63492881};
-SS(-0.30131805,-0.11512588,-0.5,-0.16707278,-0.087678023,-0.31121894,-0.19007896,0.04567822,-0.5,-0.29413589,0.046284299,-0.31274881){0.3368451,0.11599041,0.27736807,0.1681493};
-SS(-0.73174678,-0.21478859,-0.5,-0.64012388,-0.10177177,-0.37237302,-0.80728146,0.00010990719,-0.5,-0.85707128,-0.1416783,-0.34083416){0.81151292,0.54269073,0.88195685,0.85441326};
-SS(-0.40125956,-0.65699374,0.33213173,-0.50400314,-0.78879927,0.5,-0.50050976,-0.57246927,0.5,-0.57994589,-0.69256437,0.31204703){0.69449311,1.1086821,0.81219504,0.89957508};
-SS(0.671223,0.32907594,-0.5,0.50136923,0.34587735,-0.44862257,0.6251418,0.1440922,-0.5,0.51910919,0.22553632,-0.31417891){0.79435762,0.56260896,0.63751638,0.40112301};
-SS(-0.24163432,0.33561251,-0.055881164,-0.32064519,0.49448821,1.4739833e-06,-0.39654734,0.26661646,0.019312696,-0.19461387,0.3919517,0.10437587){0.16437697,0.32892635,0.20710489,0.19075448};
-SS(-0.29261734,0.53193925,0.43339885,-0.41648151,0.41684878,0.5,-0.48141868,0.60085372,0.5,-0.52470763,0.46530444,0.33754711){0.53993003,0.58097186,0.82306978,0.59371518};
-SS(0.68985253,1,-0.19792707,0.54326203,0.87223293,-0.356993,0.68900489,0.77311276,-0.28043733,0.54700908,0.85955032,-0.16345766){1.495304,1.1662147,1.1326816,1.0528061};
-SS(-0.58755791,0.033814853,0.5,-0.64009684,-0.10188458,0.37412975,-0.80727304,0.00024662976,0.5,-0.72768327,0.10310141,0.33233484){0.57778723,0.54631619,0.88515177,0.63492881};
-SS(0.13402468,0.11673163,-0.1460819,0.29173763,0,-0.20843742,0.16149165,0,-0.33864688,0.20129651,0.21389912,-0.31902192){0.039337265,0.1134179,0.12746835,0.16839385};
-SS(-0.69937066,0.31351533,-0.5,-0.63048479,0.37587985,-0.34368186,-0.83127473,0.33505962,-0.32026923,-0.62938155,0.17932964,-0.37445272){0.81965428,0.64388066,0.89071695,0.55109073};
-SS(-0.92571354,0.17249619,-0.34283108,-1,0.25105097,-0.19350143,-1,-0.00018427889,-0.26378916,-0.89804207,0.11676539,-0.10792088){0.99158484,1.0825888,1.0508045,0.82300022};
-SS(0.10162062,0.65400865,-0.37913628,0.16368264,0.50834729,-0.5,0.17777709,0.54047543,-0.2567554,0.09693172,0.3918681,-0.3370861){0.5665506,0.52115901,0.36840304,0.26256104};
-SS(-0.4543958,0.20406131,0.5,-0.36145429,0.13293621,0.35430528,-0.52427834,0.10778268,0.27208728,-0.41843781,0.30742585,0.3397996){0.48353653,0.26360063,0.34448415,0.37011438};
-SS(-0.89804207,0.11676539,-0.10792088,-1,-0.00021427218,0.00011802244,-1,-0.00018427889,-0.26378916,-0.88905946,-0.098697315,-0.13184676){0.82300022,0.98080906,1.0508045,0.8023886};
-SS(0.74440038,0.22095066,-0.087839409,0.70841775,0,-0.20847891,0.77491511,0.22516452,-0.26425516,0.88354722,0.11667767,-0.13069643){0.59875958,0.52293439,0.70313431,0.79839767};
-SS(-0.30122568,-0.11513872,0.5,-0.16643696,-0.21791406,0.42402077,-0.23048975,-0.37484721,0.5,-0.37661764,-0.26006406,0.40868766){0.33848202,0.23818505,0.42714666,0.36234206};
-SS(-0.49284988,-0.37485679,0.5,-0.37661764,-0.26006406,0.40868766,-0.23048975,-0.37484721,0.5,-0.34549718,-0.50098866,0.4105565){0.6163523,0.36234206,0.42714666,0.5260109};
-SS(0.45062041,0.7833899,-0.5,0.51674933,0.64481281,-0.39755292,0.33386283,0.81592026,-0.31808704,0.34412919,0.6158316,-0.3427703){1.0506853,0.82858869,0.86115027,0.59958408};
-SS(-0.63815223,-0.88141187,0.37488811,-0.67513028,-0.66529728,0.5,-0.50400314,-0.78879927,0.5,-0.57994589,-0.69256437,0.31204703){1.3088768,1.1284607,1.1086821,0.89957508};
-SS(-0.49284988,-0.37485679,0.5,-0.34549718,-0.50098866,0.4105565,-0.50050976,-0.57246927,0.5,-0.56348952,-0.47594309,0.3052276){0.6163523,0.5260109,0.81219504,0.61776713};
-SS(-1,-1,0.5,-0.8385203,-1,0.33846229,-1,-1,0.25,-1,-0.84092895,0.33252059){2.2322143,1.8024192,2.0427074,1.8030746};
-SS(-0.92571354,0.17249619,-0.34283108,-1,-0.00018427889,-0.26378916,-0.77267892,0.13105707,-0.24874664,-0.89804207,0.11676539,-0.10792088){0.99158484,1.0508045,0.65386325,0.82300022};
-SS(0.36841015,0.87909734,0.37310922,0.33333333,1,0.5,0.43654676,1,0.2604635,0.23106485,1,0.31398279){1.0362544,1.3466764,1.2403655,1.1340577};
-SS(0,-1,0.5,0,-0.83845667,0.33864852,0,-1,0.25,-0.16134158,-1,0.33850563){1.232491,0.80178572,1.0438639,1.129042};
-SS(1,0.16156328,-0.33847781,1,0,-0.5,1,0,-0.25,0.83867599,0,-0.33865964){1.1261583,1.2327879,1.043399,0.80182539};
-SS(0,-0.83851883,-0.33849865,0,-1,-0.5,0,-1,-0.25,-0.16144976,-1,-0.33863959){0.80235204,1.2333742,1.0435946,1.1250711};
-SS(1,0,0.5,1,0.16158711,0.33859063,1,0,0.25,0.83866368,0,0.33843958){1.2336156,1.1259698,1.0436257,0.80106313};
-SS(-0.34310942,-0.010167032,0.1509038,-0.1159097,-0.14329028,0.19302206,-0.20656092,-0.13938028,0.029547229,-0.15128303,0.02253305,0.11422928){0.12661586,0.055235283,0.048278496,0.025420414};
-SS(-0.55555556,1,0.5,-0.60421932,0.82298164,0.34468578,-0.44431425,1,0.36245944,-0.50037,0.79662088,0.5){1.5418081,1.1449713,1.3152029,1.1183194};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.15923414,-0.34171533,-0.15079999,-0.1971424,-0.26981885,-0.30750196,-0.098950987,-0.13391411,-0.14594667){0.11404163,0.14783141,0.19280289,0.03512721};
-SS(-0.40125956,-0.65699374,0.33213173,-0.3548152,-0.48825703,0.21848985,-0.56348952,-0.47594309,0.3052276,-0.34549718,-0.50098866,0.4105565){0.69449311,0.38862106,0.61776713,0.5260109};
-SS(-0.52487586,-0.5117405,-0.017639258,-0.7055892,-0.50616462,-0.017961589,-0.59094649,-0.40495207,0.12834587,-0.61549046,-0.35581383,-0.12962263){0.51812974,0.74484897,0.51475101,0.50877487};
-SS(-0.36145429,0.13293621,0.35430528,-0.24000819,0.17660305,0.5,-0.40752783,0.030201366,0.5,-0.17669296,0.011023676,0.5){0.26360063,0.3210912,0.40526498,0.26322593};
-SS(0.86971177,0.13024645,0.1427188,1,0,0.25,1,0.16158711,0.33859063,0.83866368,0,0.33843958){0.77797836,1.0436257,1.1259698,0.80106313};
-SS(-0.65355936,0.25468043,-0.1897796,-0.68637718,0.43295764,-0.18031685,-0.78848723,0.26584533,-0.068869999,-0.63246299,0.29145388,0.035195127){0.51379882,0.67437813,0.68151298,0.47226275};
-SS(-1,0.70725984,0.21334539,-0.8480722,0.62150313,0.12164012,-0.76389013,0.77728265,0.25513738,-0.87046532,0.63071146,0.35630423){1.5286486,1.1084494,1.2358334,1.2666006};
-SS(-0.65776896,0.64141588,0.074371921,-0.8480722,0.62150313,0.12164012,-0.76389013,0.77728265,0.25513738,-0.79370724,0.81084643,0.045877226){0.83514199,1.1084494,1.2358334,1.270911};
-SS(-0.64009684,-0.10188458,0.37412975,-0.50807239,-0.16307462,0.5,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.54631619,0.52416601,0.36443271,0.26156128};
-SS(0.11523872,0.30161582,0.5,0.26083053,0.15082484,0.37728795,0.12517622,0.12515553,0.5,0.050277172,0.20853018,0.30186362){0.33546792,0.21918499,0.27156885,0.12181545};
-SS(-0.16643696,-0.21791406,0.42402077,-0.30122568,-0.11513872,0.5,-0.25897908,-0.24013326,0.26450313,-0.37661764,-0.26006406,0.40868766){0.23818505,0.33848202,0.17775565,0.36234206};
-SS(-0.83846289,-1,-0.33858677,-1,-1,-0.5,-1,-1,-0.25,-1,-0.83959635,-0.33115777){1.8019179,2.2321573,2.0422973,1.7998257};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.19461387,0.3919517,0.10437587,-0.096302334,0.43534175,-0.056072844,-0.098708274,0.55956225,0.10505678){0.32892635,0.19075448,0.18078295,0.31633913};
-SS(-0.79227163,-0.79754897,0.0021844777,-1,-0.77608598,0.00064487429,-0.82285362,-0.63420593,-0.0683896,-0.86742481,-0.86548068,-0.14483364){1.2530106,1.5844414,1.0691297,1.5085891};
-SS(-0.50050976,-0.57246927,0.5,-0.40125956,-0.65699374,0.33213173,-0.56348952,-0.47594309,0.3052276,-0.34549718,-0.50098866,0.4105565){0.81219504,0.69449311,0.61776713,0.5260109};
-SS(0.27123349,0.36190713,0.41476339,0.37501462,0.2307626,0.5,0.42621669,0.19017509,0.30505062,0.50761134,0.34933779,0.39015973){0.36300231,0.42590445,0.29714896,0.51484928};
-SS(0,0,-0.5,-0.16707278,-0.087678023,-0.31121894,-0.12484866,-0.12486094,-0.5,0,-0.16143077,-0.33843101){0.23465449,0.11599041,0.26766045,0.12966739};
-SS(0.36021608,0.23247759,-0.012351094,0.24635331,0.35131343,-0.096025322,0.13261259,0.21336316,0.036566127,0.18202227,0.38279251,0.10350409){0.16110593,0.18045455,0.046199082,0.17617817};
-SS(0.17426348,1,-0.18078905,0.34720309,0.90097601,-0.12745168,0.24937941,1,-0.00011138016,0.094968532,0.84539386,-0.087484586){1.045853,0.93504792,1.0446566,0.71839764};
-SS(-0.67801153,0.56076489,0.29217382,-0.66546973,0.66566005,0.5,-0.79641575,0.50054117,0.5,-0.61509744,0.47589965,0.5){0.83617727,1.1224691,1.1180299,0.84259202};
-SS(0.24635331,0.35131343,-0.096025322,0.30434906,0.49798107,-4.0114635e-05,0.086744979,0.52712982,0.027891324,0.18202227,0.38279251,0.10350409){0.18045455,0.32377482,0.26660844,0.17617817};
-SS(0.10162062,0.65400865,-0.37913628,-0.033284914,0.58770906,-0.5,0.16368264,0.50834729,-0.5,-0.01813809,0.53618118,-0.30537166){0.5665506,0.58301644,0.52115901,0.36567785};
-SS(-1,1,-0.25,-0.89962374,0.8609561,-0.16698164,-0.76988954,1,-0.26944904,-0.81095336,1,-0.07156149){2.0450698,1.5692753,1.6463902,1.6471359};
-SS(-0.098708274,0.55956225,0.10505678,-0.0073778212,0.36022468,0.15230712,-0.096302334,0.43534175,-0.056072844,0.086744979,0.52712982,0.027891324){0.31633913,0.13675819,0.18078295,0.26660844};
-SS(1,1,0.25,0.88049681,0.87960137,0.13412341,1,0.83856906,0.33864755,0.82853688,1,0.32125076){2.0447444,1.5518824,1.8033242,1.7703132};
-SS(-0.75,-1,-0.5,-0.6448883,-0.87343314,-0.36731947,-0.80632325,-0.81147186,-0.5,-0.83846289,-1,-0.33858677){1.7946951,1.296688,1.5409894,1.8019179};
-SS(0.37492492,0.49312259,0.5,0.27123349,0.36190713,0.41476339,0.16321322,0.50838432,0.5,0.26138985,0.51848551,0.281015){0.61809871,0.36300231,0.52238519,0.40200156};
-SS(-0.4433427,0.53576375,-0.12560501,-0.54631436,0.45612147,-0.00074796238,-0.45563594,0.60375179,0.095527884,-0.62332411,0.59900263,-0.10904345){0.48429505,0.48593017,0.56263538,0.74800561};
-SS(-0.10037172,0.18891947,0.20844359,-0.26986228,0.26051837,0.22418657,-0.11614487,0.30919383,0.33918095,-0.19461387,0.3919517,0.10437587){0.074828316,0.1749353,0.20820823,0.19075448};
-SS(-0.91004595,0.15296589,0.33139812,-1,0.33333333,0.5,-1,0.11111111,0.5,-0.83006559,0.18329805,0.5){0.94743142,1.3403692,1.246301,0.96159482};
-SS(-0.40125956,-0.65699374,0.33213173,-0.50050976,-0.57246927,0.5,-0.56348952,-0.47594309,0.3052276,-0.57994589,-0.69256437,0.31204703){0.69449311,0.81219504,0.61776713,0.89957508};
-SS(-0.83248216,0.76782327,-0.31292259,-0.66548665,0.66585508,-0.5,-0.80479144,0.80504612,-0.5,-0.65756371,0.81308934,-0.3429452){1.366757,1.1221664,1.5255891,1.1958888};
-SS(0.74440038,0.22095066,-0.087839409,0.77491511,0.22516452,-0.26425516,0.82562789,0.37565656,-0.12707714,0.88354722,0.11667767,-0.13069643){0.59875958,0.70313431,0.82387041,0.79839767};
-SS(-1,-1,0.25,-0.8827276,-0.88146034,0.13123348,-1,-0.84092895,0.33252059,-0.8385203,-1,0.33846229){2.0427074,1.5595365,1.8030746,1.8024192};
-SS(0.16368264,0.50834729,-0.5,0.10162062,0.65400865,-0.37913628,-0.01813809,0.53618118,-0.30537166,0.09693172,0.3918681,-0.3370861){0.52115901,0.5665506,0.36567785,0.26256104};
-SS(0.87881231,0.64063264,0.37220388,1,0.75,0.5,1,0.83856906,0.33864755,0.81191124,0.80644944,0.5){1.3069719,1.7930237,1.8033242,1.5425973};
-SS(-0.36145429,0.13293621,0.35430528,-0.34310942,-0.010167032,0.1509038,-0.20045203,0.067929244,0.29301468,-0.40506391,-0.079541407,0.3303193){0.26360063,0.12661586,0.10955402,0.26156128};
-SS(-0.41651431,0.41690828,-0.5,-0.39032311,0.63241857,-0.34621958,-0.4813337,0.60105459,-0.5,-0.50782983,0.50249565,-0.29902586){0.57523437,0.65630059,0.83133251,0.58612549};
-SS(-0.4433427,0.53576375,-0.12560501,-0.68637718,0.43295764,-0.18031685,-0.54631436,0.45612147,-0.00074796238,-0.62332411,0.59900263,-0.10904345){0.48429505,0.67437813,0.48593017,0.74800561};
-SS(0.34662081,0.36199915,-0.25068724,0.27170325,0.36204749,-0.4201745,0.20129651,0.21389912,-0.31902192,0.09693172,0.3918681,-0.3370861){0.29696992,0.36885377,0.16839385,0.26256104};
-SS(-0.5555987,0.045150158,0.095162244,-0.67616985,-0.069078192,0.18801024,-0.76752638,0.004448061,-0.013214377,-0.65367362,-0.16081953,0.0014934597){0.29993682,0.47948004,0.5734925,0.4344691};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.76760867,-0.33664988,-0.028298027,-0.82595855,-0.48031431,0.11444494,-0.59094649,-0.40495207,0.12834587){0.74484897,0.68479998,0.90887195,0.51475101};
-SS(-0.61674646,0.25215289,0.3447871,-0.4543958,0.20406131,0.5,-0.52427834,0.10778268,0.27208728,-0.41843781,0.30742585,0.3397996){0.54607287,0.48353653,0.34448415,0.37011438};
-SS(0.24635331,0.35131343,-0.096025322,0.34662081,0.36199915,-0.25068724,0.36021608,0.23247759,-0.012351094,0.37137652,0.1767682,-0.19801193){0.18045455,0.29696992,0.16110593,0.19205628};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.24163432,0.33561251,-0.055881164,-0.39654734,0.26661646,0.019312696,-0.34372617,0.39779568,-0.18541051){0.32892635,0.16437697,0.20710489,0.29650146};
-SS(0.671223,0.32907594,-0.5,0.87867265,0.36391919,-0.37720578,0.78906409,0.5041626,-0.5,0.67125235,0.44297685,-0.31879306){0.79435762,1.03034,1.1105402,0.72773009};
-SS(-0.23583358,-0.36008743,0.0071767184,-0.3533559,-0.49437708,0.037576204,-0.18618058,-0.5161726,-0.15035515,-0.19247216,-0.56000521,0.088357129){0.16465457,0.35575629,0.30914003,0.34206231};
-SS(-0.12233239,-0.87748906,-0.13583418,0,-1,-0.25,-0.16144976,-1,-0.33863959,0,-0.83851883,-0.33849865){0.78823805,1.0435946,1.1250711,0.80235204};
-SS(-0.39032311,0.63241857,-0.34621958,-0.4813337,0.60105459,-0.5,-0.50782983,0.50249565,-0.29902586,-0.6293812,0.63993291,-0.28812602){0.65630059,0.83133251,0.58612549,0.87296464};
-SS(-1,0.70725984,0.21334539,-0.93582873,0.86427167,0.14668289,-1,0.84108515,0.33242406,-0.76389013,0.77728265,0.25513738){1.5286486,1.6320629,1.8031397,1.2358334};
-SS(0.29173763,0,-0.20843742,0.37137652,0.1767682,-0.19801193,0.20129651,0.21389912,-0.31902192,0.13402468,0.11673163,-0.1460819){0.1134179,0.19205628,0.16839385,0.039337265};
-SS(-0.93582873,0.86427167,0.14668289,-1,0.70725984,0.21334539,-1,0.77631186,0.00053339564,-0.8480722,0.62150313,0.12164012){1.6320629,1.5286486,1.5817554,1.1084494};
-SS(0.27123349,0.36190713,0.41476339,0.37492492,0.49312259,0.5,0.37501462,0.2307626,0.5,0.50761134,0.34933779,0.39015973){0.36300231,0.61809871,0.42590445,0.51484928};
-SS(-0.75,-1,0.5,-0.63815223,-0.88141187,0.37488811,-0.8385203,-1,0.33846229,-0.80635543,-0.81164184,0.5){1.7943537,1.3088768,1.8024192,1.5410993};
-SS(0.36841015,0.87909734,0.37310922,0.39612945,0.70614162,0.21524614,0.22886345,0.79287946,0.30210005,0.40637652,0.87094343,0.13060843){1.0362544,0.68453461,0.75332396,0.92399337};
-SS(-0.68637718,0.43295764,-0.18031685,-0.62332411,0.59900263,-0.10904345,-0.80558396,0.5878127,-0.29244037,-0.8068077,0.56885008,-0.063754108){0.67437813,0.74800561,1.0616703,0.96112076};
-SS(0.87881231,0.64063264,0.37220388,1,0.70834898,0.20844998,1,0.50005385,0.27984222,0.84582719,0.572243,0.1361951){1.3069719,1.5291243,1.3085441,1.0417018};
-SS(0,0,-6.9388939e-15,-0.098950987,-0.13391411,-0.14594667,0,-0.22019801,5.0496855e-05,-0.20656092,-0.13938028,0.029547229){-0.017891206,0.03512721,0.029059683,0.048278496};
-SS(0.61535375,0.70719289,-0.095218388,0.75922048,0.56990614,-0.17060419,0.68900489,0.77311276,-0.28043733,0.77861211,0.77861193,-0.067175459){0.87858083,0.91133836,1.1326816,1.1981052};
-SS(-0.38143574,0.84373572,-0.12387887,-0.42762906,1,-0.0094860889,-0.48952189,0.78345034,0.019065462,-0.32294154,0.86180803,0.13108841){0.85864479,1.169501,0.83409809,0.84829643};
-SS(-0.25897908,-0.24013326,0.26450313,-0.3727858,-0.19869367,0.11195566,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.17775565,0.16948569,0.36443271,0.26156128};
-SS(-0.47972312,1,0.18932995,-0.60421932,0.82298164,0.34468578,-0.66659408,1,0.32529585,-0.61311838,0.85766427,0.15491279){1.2473472,1.1449713,1.5364848,1.1216468};
-SS(-0.83127473,0.33505962,-0.32026923,-0.65355936,0.25468043,-0.1897796,-0.62938155,0.17932964,-0.37445272,-0.63048479,0.37587985,-0.34368186){0.89071695,0.51379882,0.55109073,0.64388066};
-SS(-0.63815223,-0.88141187,0.37488811,-0.77091496,-0.77159441,0.2629049,-0.57994589,-0.69256437,0.31204703,-0.61978497,-0.82706917,0.12738472){1.3088768,1.2433034,0.89957508,1.0681409};
-SS(-1,-0.5000565,0.0033661208,-0.83996275,-0.66999882,0.11765553,-0.82285362,-0.63420593,-0.0683896,-0.82595855,-0.48031431,0.11444494){1.2263361,1.1553131,1.0691297,0.90887195};
-SS(-0.68637718,0.43295764,-0.18031685,-0.4433427,0.53576375,-0.12560501,-0.50782983,0.50249565,-0.29902586,-0.62332411,0.59900263,-0.10904345){0.67437813,0.48429505,0.58612549,0.74800561};
-SS(-0.23048975,-0.37484721,0.5,-0.16643696,-0.21791406,0.42402077,-0.25897908,-0.24013326,0.26450313,-0.37661764,-0.26006406,0.40868766){0.42714666,0.23818505,0.17775565,0.36234206};
-SS(-0.93582873,0.86427167,0.14668289,-1,0.77631186,0.00053339564,-0.79370724,0.81084643,0.045877226,-0.8480722,0.62150313,0.12164012){1.6320629,1.5817554,1.270911,1.1084494};
-SS(1,0.25,0.5,0.87272604,0.35900693,0.37172569,1,0.16158711,0.33859063,0.81143387,0.18901581,0.5){1.2942978,1.0107603,1.1259698,0.9265446};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.61549046,-0.35581383,-0.12962263,-0.76760867,-0.33664988,-0.028298027,-0.65367362,-0.16081953,0.0014934597){0.32068114,0.50877487,0.68479998,0.4344691};
-SS(-0.24163432,0.33561251,-0.055881164,-0.26297351,0.20404986,-0.17122089,-0.39654734,0.26661646,0.019312696,-0.34372617,0.39779568,-0.18541051){0.16437697,0.12773981,0.20710489,0.29650146};
-SS(-0.14850787,-0.69358405,-0.087583548,-0.35582611,-0.64426575,-0.070000747,-0.22302806,-0.77703925,0.068353305,-0.19247216,-0.56000521,0.088357129){0.49763432,0.52757348,0.64063544,0.34206231};
-SS(0.39612945,0.70614162,0.21524614,0.36841015,0.87909734,0.37310922,0.55555177,0.82262944,0.31125158,0.40637652,0.87094343,0.13060843){0.68453461,1.0362544,1.0671623,0.92399337};
-SS(-0.64009684,-0.10188458,0.37412975,-0.73174745,-0.21491043,0.5,-0.80727304,0.00024662976,0.5,-0.84084014,-0.14895162,0.31636914){0.54631619,0.81377033,0.88515177,0.81273381};
-SS(-0.39806707,0.15776443,0.15870839,-0.54640726,0.34339216,0.19847863,-0.52427834,0.10778268,0.27208728,-0.41843781,0.30742585,0.3397996){0.19317292,0.43575493,0.34448415,0.37011438};
-SS(-0.76389013,0.77728265,0.25513738,-0.93582873,0.86427167,0.14668289,-0.79370724,0.81084643,0.045877226,-0.8480722,0.62150313,0.12164012){1.2358334,1.6320629,1.270911,1.1084494};
-SS(0.85153485,0.65148612,-0.35468846,1,0.75,-0.5,0.81205362,0.80656044,-0.5,1,0.83864447,-0.33847614){1.2568282,1.7924126,1.5391707,1.8065101};
-SS(-0.16643696,-0.21791406,0.42402077,-0.23048975,-0.37484721,0.5,-0.25897908,-0.24013326,0.26450313,-0.1853821,-0.42358473,0.30866054){0.23818505,0.42714666,0.17775565,0.29143101};
-SS(-0.033284914,0.58770906,-0.5,-0.17097214,0.64900986,-0.39927747,-0.01813809,0.53618118,-0.30537166,0.10162062,0.65400865,-0.37913628){0.58301644,0.59741335,0.36567785,0.5665506};
-SS(0.4450496,1,-0.00012892076,0.34720309,0.90097601,-0.12745168,0.43683247,1,-0.26068681,0.54700908,0.85955032,-0.16345766){1.179155,0.93504792,1.2435523,1.0528061};
-SS(-0.222315,1,-0.00011890035,-0.10743676,0.85847111,-0.11136175,-0.088882135,1,-0.23281641,-0.012406168,1,-0.034358602){1.0307381,0.7462212,1.0431215,0.99121748};
-SS(0.08017426,0.31429474,-0.16745504,0.24635331,0.35131343,-0.096025322,0.13261259,0.21336316,0.036566127,0.13402468,0.11673163,-0.1460819){0.11103103,0.18045455,0.046199082,0.039337265};
-SS(-0.0073778212,0.36022468,0.15230712,-0.10037172,0.18891947,0.20844359,-0.11614487,0.30919383,0.33918095,-0.19461387,0.3919517,0.10437587){0.13675819,0.074828316,0.20820823,0.19075448};
-SS(0.43683247,1,-0.26068681,0.34720309,0.90097601,-0.12745168,0.33386283,0.81592026,-0.31808704,0.54700908,0.85955032,-0.16345766){1.2435523,0.93504792,0.86115027,1.0528061};
-SS(-0.29261734,0.53193925,0.43339885,-0.41648151,0.41684878,0.5,-0.35521568,0.4957142,0.26668635,-0.41843781,0.30742585,0.3397996){0.53993003,0.58097186,0.42001946,0.37011438};
-SS(0.68900489,0.77311276,-0.28043733,0.61535375,0.70719289,-0.095218388,0.77861211,0.77861193,-0.067175459,0.54700908,0.85955032,-0.16345766){1.1326816,0.87858083,1.1981052,1.0528061};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.76760867,-0.33664988,-0.028298027,-0.7907607,-0.33838097,-0.28342271,-0.85520613,-0.46088631,-0.14784569){0.50877487,0.68479998,0.80149819,0.95161001};
-SS(0.54326203,0.87223293,-0.356993,0.43683247,1,-0.26068681,0.33386283,0.81592026,-0.31808704,0.54700908,0.85955032,-0.16345766){1.1662147,1.2435523,0.86115027,1.0528061};
-SS(-0.61311838,0.85766427,0.15491279,-0.65776896,0.64141588,0.074371921,-0.76389013,0.77728265,0.25513738,-0.79370724,0.81084643,0.045877226){1.1216468,0.83514199,1.2358334,1.270911};
-SS(-0.62332411,0.59900263,-0.10904345,-0.74249217,0.75399014,-0.15399718,-0.80558396,0.5878127,-0.29244037,-0.8068077,0.56885008,-0.063754108){0.74800561,1.1267767,1.0616703,0.96112076};
-SS(-0.65355936,0.25468043,-0.1897796,-0.77267892,0.13105707,-0.24874664,-0.83127473,0.33505962,-0.32026923,-0.62938155,0.17932964,-0.37445272){0.51379882,0.65386325,0.89071695,0.55109073};
-SS(0.77861211,0.77861193,-0.067175459,0.61535375,0.70719289,-0.095218388,0.62860594,0.86645525,0.049037492,0.54700908,0.85955032,-0.16345766){1.1981052,0.87858083,1.1303867,1.0528061};
-SS(-0.63815223,-0.88141187,0.37488811,-0.70832062,-1,0.2082538,-0.77091496,-0.77159441,0.2629049,-0.61978497,-0.82706917,0.12738472){1.3088768,1.5291125,1.2433034,1.0681409};
-SS(0.46476684,0.14382827,0.12247557,0.29175541,0,0.20824909,0.50011436,0,0.27961788,0.42621669,0.19017509,0.30505062){0.23450402,0.1093371,0.30940041,0.29714896};
-SS(-0.31377045,0.30492781,-0.36427962,-0.26297351,0.20404986,-0.17122089,-0.12449617,0.36606215,-0.28273955,-0.34372617,0.39779568,-0.18541051){0.30770932,0.12773981,0.21185338,0.29650146};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.70710233,0.21356199,-0.79575191,-0.55547687,0.30538166,-0.83996275,-0.66999882,0.11765553){1.4119512,1.5280688,1.0192798,1.1553131};
-SS(-0.26297351,0.20404986,-0.17122089,-0.24163432,0.33561251,-0.055881164,-0.12449617,0.36606215,-0.28273955,-0.34372617,0.39779568,-0.18541051){0.12773981,0.16437697,0.21185338,0.29650146};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.82285362,-0.63420593,-0.0683896,-0.82595855,-0.48031431,0.11444494,-0.85520613,-0.46088631,-0.14784569){0.74484897,1.0691297,0.90887195,0.95161001};
-SS(-0.34310942,-0.010167032,0.1509038,-0.36145429,0.13293621,0.35430528,-0.52427834,0.10778268,0.27208728,-0.40506391,-0.079541407,0.3303193){0.12661586,0.26360063,0.34448415,0.26156128};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.61549046,-0.35581383,-0.12962263,-0.7907607,-0.33838097,-0.28342271,-0.85520613,-0.46088631,-0.14784569){0.7287475,0.50877487,0.80149819,0.95161001};
-SS(-0.26297351,0.20404986,-0.17122089,-0.31377045,0.30492781,-0.36427962,-0.49391083,0.27907498,-0.27264436,-0.34372617,0.39779568,-0.18541051){0.12773981,0.30770932,0.37398026,0.29650146};
-SS(-0.11111111,1,-0.5,0.0011150345,0.93517443,-0.37389303,-0.088882135,1,-0.23281641,-0.23070339,1,-0.34855306){1.2528065,1.0026385,1.0431215,1.1599423};
-SS(-0.93582873,0.86427167,0.14668289,-0.74954172,1,0.13574231,-0.76389013,0.77728265,0.25513738,-0.79370724,0.81084643,0.045877226){1.6320629,1.562759,1.2358334,1.270911};
-SS(1,0,-0.25,0.88354722,0.11667767,-0.13069643,1,0.16156328,-0.33847781,0.83867599,0,-0.33865964){1.043399,0.79839767,1.1261583,0.80182539};
-SS(-0.32879066,-0.67072359,-0.5,-0.11754465,-0.65214472,-0.32749638,-0.14376826,-0.62489354,-0.5,-0.26056819,-0.54975154,-0.34323516){0.79007105,0.53347202,0.6489606,0.46884495};
-SS(-0.63048479,0.37587985,-0.34368186,-0.41651431,0.41690828,-0.5,-0.61503712,0.4760032,-0.5,-0.50782983,0.50249565,-0.29902586){0.64388066,0.57523437,0.83978547,0.58612549};
-SS(0.27123349,0.36190713,0.41476339,0.25126435,0.28098512,0.24657435,0.26138985,0.51848551,0.281015,0.36016656,0.41044152,0.1594367){0.36300231,0.18575023,0.40200156,0.3073722};
-SS(-0.61978497,-0.82706917,0.12738472,-0.65631386,-0.59724887,0.13822882,-0.77091496,-0.77159441,0.2629049,-0.57994589,-0.69256437,0.31204703){1.0681409,0.7890621,1.2433034,0.89957508};
-SS(0,0,-0.5,-0.16707278,-0.087678023,-0.31121894,-0.19007896,0.04567822,-0.5,-0.12484866,-0.12486094,-0.5){0.23465449,0.11599041,0.27736807,0.26766045};
-SS(-0.24000819,0.17660305,0.5,-0.11614487,0.30919383,0.33918095,-0.18136176,0.40461939,0.5,-0.045146113,0.19012269,0.5){0.3210912,0.20820823,0.42386795,0.27176836};
-SS(1,0.2917639,-0.20827961,0.87867265,0.36391919,-0.37720578,1,0.16156328,-0.33847781,0.77491511,0.22516452,-0.26425516){1.1127834,1.03034,1.1261583,0.70313431};
-SS(-0.31377045,0.30492781,-0.36427962,-0.17603462,0.24070348,-0.5,-0.12449617,0.36606215,-0.28273955,-0.1182182,0.15955837,-0.3159857){0.30770932,0.32537509,0.21185338,0.11990198};
-SS(1,0.25,-0.5,0.87867265,0.36391919,-0.37720578,0.81149777,0.18885984,-0.5,1,0.16156328,-0.33847781){1.2935113,1.03034,0.92750237,1.1261583};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.25,-1,-0.5,-0.18848435,-0.81110947,-0.5,-0.16144976,-1,-0.33863959){1.0307746,1.2929607,0.92571371,1.1250711};
-SS(0.16368264,0.50834729,-0.5,0.27170325,0.36204749,-0.4201745,0.17777709,0.54047543,-0.2567554,0.09693172,0.3918681,-0.3370861){0.52115901,0.36885377,0.36840304,0.26256104};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.55555556,-0.5,-1,-0.47540235,-0.27521785,-0.81387526,-0.53653555,-0.3209601){1.4249306,1.5366945,1.2841965,1.0406635};
-SS(-0.79227163,-0.79754897,0.0021844777,-0.77091496,-0.77159441,0.2629049,-0.61978497,-0.82706917,0.12738472,-0.83996275,-0.66999882,0.11765553){1.2530106,1.2433034,1.0681409,1.1553131};
-SS(-1,0.33333333,-0.5,-0.92571354,0.17249619,-0.34283108,-0.82994199,0.18319278,-0.5,-0.83127473,0.33505962,-0.32026923){1.3393331,0.99158484,0.95993957,0.89071695};
-SS(-0.63815223,-0.88141187,0.37488811,-0.70832062,-1,0.2082538,-0.8385203,-1,0.33846229,-0.77091496,-0.77159441,0.2629049){1.3088768,1.5291125,1.8024192,1.2433034};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.76760867,-0.33664988,-0.028298027,-0.59094649,-0.40495207,0.12834587,-0.61549046,-0.35581383,-0.12962263){0.74484897,0.68479998,0.51475101,0.50877487};
-SS(-0.8480722,0.62150313,0.12164012,-0.65776896,0.64141588,0.074371921,-0.79172217,0.43302343,0.13373134,-0.8068077,0.56885008,-0.063754108){1.1084494,0.83514199,0.80968993,0.96112076};
-SS(-0.24000819,0.17660305,0.5,-0.36145429,0.13293621,0.35430528,-0.4543958,0.20406131,0.5,-0.41843781,0.30742585,0.3397996){0.3210912,0.26360063,0.48353653,0.37011438};
-SS(-0.62332411,0.59900263,-0.10904345,-0.65776896,0.64141588,0.074371921,-0.74249217,0.75399014,-0.15399718,-0.8068077,0.56885008,-0.063754108){0.74800561,0.83514199,1.1267767,0.96112076};
-SS(-0.89426176,0.41257007,-0.12932618,-0.68637718,0.43295764,-0.18031685,-0.80558396,0.5878127,-0.29244037,-0.8068077,0.56885008,-0.063754108){0.974079,0.67437813,1.0616703,0.96112076};
-SS(-0.36145429,0.13293621,0.35430528,-0.40752783,0.030201366,0.5,-0.52427834,0.10778268,0.27208728,-0.40506391,-0.079541407,0.3303193){0.26360063,0.40526498,0.34448415,0.26156128};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.29237157,-0.11865629,-0.17606411,-0.29413589,0.046284299,-0.31274881,-0.38492375,-0.20017574,-0.33650716){0.11599041,0.11404163,0.1681493,0.28705324};
-SS(-0.61674646,0.25215289,0.3447871,-0.69937107,0.31347586,0.5,-0.83006559,0.18329805,0.5,-0.72768327,0.10310141,0.33233484){0.54607287,0.8165723,0.96159482,0.63492881};
-SS(-0.26297351,0.20404986,-0.17122089,-0.31377045,0.30492781,-0.36427962,-0.12449617,0.36606215,-0.28273955,-0.1182182,0.15955837,-0.3159857){0.12773981,0.30770932,0.21185338,0.11990198};
-SS(-1,0.70725984,0.21334539,-0.93582873,0.86427167,0.14668289,-0.76389013,0.77728265,0.25513738,-0.8480722,0.62150313,0.12164012){1.5286486,1.6320629,1.2358334,1.1084494};
-SS(0.4450496,1,-0.00012892076,0.40637652,0.87094343,0.13060843,0.24937941,1,-0.00011138016,0.34720309,0.90097601,-0.12745168){1.179155,0.92399337,1.0446566,0.93504792};
-SS(-0.26297351,0.20404986,-0.17122089,-0.4182056,0.11248126,-0.14182463,-0.29413589,0.046284299,-0.31274881,-0.28278924,0.041190137,-0.04219563){0.12773981,0.19428145,0.1681493,0.063480395};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.29164705,-0.20823955,0,-0.49997234,-0.27965571,-0.073421274,-0.375,-0.38984354){0.14783141,0.11473247,0.30906942,0.28201081};
-SS(-0.8480722,0.62150313,0.12164012,-0.65776896,0.64141588,0.074371921,-0.8068077,0.56885008,-0.063754108,-0.79370724,0.81084643,0.045877226){1.1084494,0.83514199,0.96112076,1.270911};
-SS(1,0.2917639,-0.20827961,0.87867265,0.36391919,-0.37720578,0.77491511,0.22516452,-0.26425516,0.82562789,0.37565656,-0.12707714){1.1127834,1.03034,0.70313431,0.82387041};
-SS(-0.20984637,0.69532212,0.20809493,-0.16015893,0.67694077,0.39025863,-0.043441254,0.79173928,0.29440137,-0.30949447,0.8262402,0.33528492){0.55022745,0.6265216,0.69563564,0.87388961};
-SS(-0.8827276,-0.88146034,0.13123348,-1,-0.70710233,0.21356199,-1,-0.84092895,0.33252059,-0.77091496,-0.77159441,0.2629049){1.5595365,1.5280688,1.8030746,1.2433034};
-SS(0.88354722,0.11667767,-0.13069643,1,0.2917639,-0.20827961,1,0.16156328,-0.33847781,0.77491511,0.22516452,-0.26425516){0.79839767,1.1127834,1.1261583,0.70313431};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.19007896,0.04567822,-0.5,-0.29413589,0.046284299,-0.31274881,-0.1182182,0.15955837,-0.3159857){0.11599041,0.27736807,0.1681493,0.11990198};
-SS(-0.033588837,0.5879061,0.5,0.10211023,0.6404511,0.38011645,0.16321322,0.50838432,0.5,0.085954007,0.41736025,0.32943097){0.57806214,0.55160362,0.52238519,0.27115576};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.45843014,-0.20445062,-0.15988901,-0.49808619,0.0026201378,-0.26387206,-0.38492375,-0.20017574,-0.33650716){0.11404163,0.26094507,0.29810596,0.28705324};
-SS(-0.63048479,0.37587985,-0.34368186,-0.68637718,0.43295764,-0.18031685,-0.50782983,0.50249565,-0.29902586,-0.6293812,0.63993291,-0.28812602){0.64388066,0.67437813,0.58612549,0.87296464};
-SS(0.70841775,0,-0.20847891,0.88354722,0.11667767,-0.13069643,0.83867599,0,-0.33865964,0.77491511,0.22516452,-0.26425516){0.52293439,0.79839767,0.80182539,0.70313431};
-SS(-0.65631386,-0.59724887,0.13822882,-0.7055892,-0.50616462,-0.017961589,-0.52487586,-0.5117405,-0.017639258,-0.50537844,-0.68762812,0.023695348){0.7890621,0.74484897,0.51812974,0.71483247};
-SS(0.74440038,0.22095066,-0.087839409,0.60662231,0.34516964,-0.13972301,0.77491511,0.22516452,-0.26425516,0.57129187,0.13526053,-0.13726946){0.59875958,0.48782847,0.70313431,0.35115136};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.70523324,-0.21165758,-1,-0.83959635,-0.33115777,-0.76546557,-0.72634686,-0.27513208){1.4249306,1.5222776,1.7998257,1.1696133};
-SS(1,0.70844226,-0.20827687,0.8781758,0.86708556,-0.1989731,1,0.83864447,-0.33847614,0.85153485,0.65148612,-0.35468846){1.5310675,1.5462283,1.8065101,1.2568282};
-SS(1,0.77979347,0.00010253841,0.8988736,0.63809662,-0.070284173,0.77861211,0.77861193,-0.067175459,0.8781758,0.86708556,-0.1989731){1.5887874,1.2046527,1.1981052,1.5462283};
-SS(0.36841015,0.87909734,0.37310922,0.55555556,1,0.5,0.33333333,1,0.5,0.45042372,0.78359022,0.5){1.0362544,1.5357742,1.3466764,1.0496179};
-SS(-0.349759,-0.84853211,0.35590634,-0.25,-1,0.5,-0.16134158,-1,0.33850563,-0.18863677,-0.81113033,0.5){0.94981364,1.2918821,1.129042,0.92459822};
-SS(-0.1182182,0.15955837,-0.3159857,0,0,-0.5,-0.19007896,0.04567822,-0.5,-0.010543702,0.17712261,-0.5){0.11990198,0.23465449,0.27736807,0.25750364};
-SS(0.67112401,0.32933441,0.5,0.59416595,0.14141347,0.32656529,0.62515059,0.14422159,0.5,0.50761134,0.34933779,0.39015973){0.79210069,0.46498444,0.64726001,0.51484928};
-SS(-0.11754465,-0.65214472,-0.32749638,0,-0.70830496,-0.20826096,-0.18618058,-0.5161726,-0.15035515,-0.14850787,-0.69358405,-0.087583548){0.53347202,0.5287181,0.30914003,0.49763432};
-SS(1,0.70844226,-0.20827687,0.8988736,0.63809662,-0.070284173,1,0.77979347,0.00010253841,0.8781758,0.86708556,-0.1989731){1.5310675,1.2046527,1.5887874,1.5462283};
-SS(-0.73479965,-0.34302295,0.24038072,-0.62450053,-0.31310845,0.38575928,-0.56348952,-0.47594309,0.3052276,-0.59094649,-0.40495207,0.12834587){0.69668046,0.62379151,0.61776713,0.51475101};
-SS(0,-0.70830496,-0.20826096,-0.11754465,-0.65214472,-0.32749638,0,-0.83851883,-0.33849865,-0.2399131,-0.76005145,-0.25989531){0.5287181,0.53347202,0.80235204,0.6848256};
-SS(-0.4182056,0.11248126,-0.14182463,-0.26297351,0.20404986,-0.17122089,-0.39654734,0.26661646,0.019312696,-0.28278924,0.041190137,-0.04219563){0.19428145,0.12773981,0.20710489,0.063480395};
-SS(-0.31289368,0.69974287,-0.5,-0.17097214,0.64900986,-0.39927747,-0.18268367,0.83021756,-0.5,-0.35455825,0.80859576,-0.32177549){0.82323564,0.59741335,0.9573479,0.86460259};
-SS(-0.88905946,-0.098697315,-0.13184676,-1,-0.25140376,-0.1934451,-1,-0.00018427889,-0.26378916,-0.85707128,-0.1416783,-0.34083416){0.8023886,1.0790534,1.0508045,0.85441326};
-SS(0.54326203,0.87223293,-0.356993,0.68985253,1,-0.19792707,0.43683247,1,-0.26068681,0.54700908,0.85955032,-0.16345766){1.1662147,1.495304,1.2435523,1.0528061};
-SS(-0.37661764,-0.26006406,0.40868766,-0.30122568,-0.11513872,0.5,-0.25897908,-0.24013326,0.26450313,-0.40506391,-0.079541407,0.3303193){0.36234206,0.33848202,0.17775565,0.26156128};
-SS(-0.33333333,1,0.5,-0.55555556,1,0.5,-0.44431425,1,0.36245944,-0.50037,0.79662088,0.5){1.3433112,1.5418081,1.3152029,1.1183194};
-SS(-0.60421932,0.82298164,0.34468578,-0.47972312,1,0.18932995,-0.66659408,1,0.32529585,-0.44431425,1,0.36245944){1.1449713,1.2473472,1.5364848,1.3152029};
-SS(0.26083053,0.15082484,0.37728795,0.11523872,0.30161582,0.5,0.37501462,0.2307626,0.5,0.27123349,0.36190713,0.41476339){0.21918499,0.33546792,0.42590445,0.36300231};
-SS(-0.22656331,-0.68065623,0.28194433,-0.32897755,-0.67088709,0.5,-0.18863677,-0.81113033,0.5,-0.14394692,-0.62481063,0.5){0.57683818,0.79643001,0.92459822,0.63866347};
-SS(0.70841775,0,-0.20847891,0.74440038,0.22095066,-0.087839409,0.77491511,0.22516452,-0.26425516,0.57129187,0.13526053,-0.13726946){0.52293439,0.59875958,0.70313431,0.35115136};
-SS(-0.0089783977,0.64320989,-0.13441642,0.10162062,0.65400865,-0.37913628,0.17777709,0.54047543,-0.2567554,-0.01813809,0.53618118,-0.30537166){0.41358858,0.5665506,0.36840304,0.36567785};
-SS(-0.77091496,-0.77159441,0.2629049,-0.79227163,-0.79754897,0.0021844777,-0.61978497,-0.82706917,0.12738472,-0.8827276,-0.88146034,0.13123348){1.2433034,1.2530106,1.0681409,1.5595365};
-SS(-0.2399131,-0.76005145,-0.25989531,-0.11754465,-0.65214472,-0.32749638,-0.18618058,-0.5161726,-0.15035515,-0.14850787,-0.69358405,-0.087583548){0.6848256,0.53347202,0.30914003,0.49763432};
-SS(0.70841775,0,-0.20847891,0.74440038,0.22095066,-0.087839409,0.77985819,0,-0.00014691753,0.88354722,0.11667767,-0.13069643){0.52293439,0.59875958,0.58919206,0.79839767};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.30131805,-0.11512588,-0.5,-0.1971424,-0.26981885,-0.30750196,-0.38492375,-0.20017574,-0.33650716){0.11599041,0.3368451,0.19280289,0.28705324};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.61549046,-0.35581383,-0.12962263,-0.65367362,-0.16081953,0.0014934597,-0.45843014,-0.20445062,-0.15988901){0.32068114,0.50877487,0.4344691,0.26094507};
-SS(-0.84289574,0.018333867,0.1608607,-0.67616985,-0.069078192,0.18801024,-0.7489605,0.18190923,0.13647301,-0.72768327,0.10310141,0.33233484){0.72430843,0.47948004,0.59564173,0.63492881};
-SS(0.18202227,0.38279251,0.10350409,0.25126435,0.28098512,0.24657435,0.26138985,0.51848551,0.281015,0.085954007,0.41736025,0.32943097){0.17617817,0.18575023,0.40200156,0.27115576};
-SS(-0.23048975,-0.37484721,0.5,-0.37661764,-0.26006406,0.40868766,-0.25897908,-0.24013326,0.26450313,-0.1853821,-0.42358473,0.30866054){0.42714666,0.36234206,0.17775565,0.29143101};
-SS(-0.3533559,-0.49437708,0.037576204,-0.35582611,-0.64426575,-0.070000747,-0.18618058,-0.5161726,-0.15035515,-0.19247216,-0.56000521,0.088357129){0.35575629,0.52757348,0.30914003,0.34206231};
-SS(0.54700908,0.85955032,-0.16345766,0.4450496,1,-0.00012892076,0.45788353,0.76094781,-0.0096633567,0.62860594,0.86645525,0.049037492){1.0528061,1.179155,0.76853994,1.1303867};
-SS(0,-0.75,-0.5,-0.11754465,-0.65214472,-0.32749638,-0.18848435,-0.81110947,-0.5,0,-0.83851883,-0.33849865){0.79460868,0.53347202,0.92571371,0.80235204};
-SS(-0.62450053,-0.31310845,0.38575928,-0.73479965,-0.34302295,0.24038072,-0.50874333,-0.23900991,0.2620444,-0.59094649,-0.40495207,0.12834587){0.62379151,0.69668046,0.36443271,0.51475101};
-SS(-1,0.49991607,0.0031934521,-0.8480722,0.62150313,0.12164012,-0.79172217,0.43302343,0.13373134,-0.8068077,0.56885008,-0.063754108){1.2302733,1.1084494,0.80968993,0.96112076};
-SS(-0.81095336,1,-0.07156149,-0.89962374,0.8609561,-0.16698164,-0.74249217,0.75399014,-0.15399718,-0.79370724,0.81084643,0.045877226){1.6471359,1.5692753,1.1267767,1.270911};
-SS(-0.098950987,-0.13391411,-0.14594667,-0.29237157,-0.11865629,-0.17606411,-0.20656092,-0.13938028,0.029547229,-0.28278924,0.041190137,-0.04219563){0.03512721,0.11404163,0.048278496,0.063480395};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.11458044,0.70010244,0.010073529,0.086744979,0.52712982,0.027891324,0.26064395,0.61953306,0.12890567){0.32377482,0.49378055,0.26660844,0.45328252};
-SS(-0.62450053,-0.31310845,0.38575928,-0.50874333,-0.23900991,0.2620444,-0.56348952,-0.47594309,0.3052276,-0.59094649,-0.40495207,0.12834587){0.62379151,0.36443271,0.61776713,0.51475101};
-SS(-0.91004595,0.15296589,0.33139812,-1,0.33333333,0.5,-0.83006559,0.18329805,0.5,-0.83851866,0.33014205,0.32623765){0.94743142,1.3403692,0.96159482,0.89937894};
-SS(-0.7489605,0.18190923,0.13647301,-0.91347537,0.15552497,0.067511395,-0.84289574,0.018333867,0.1608607,-0.91004595,0.15296589,0.33139812){0.59564173,0.85045394,0.72430843,0.94743142};
-SS(0.094968532,0.84539386,-0.087484586,0.17426348,1,-0.18078905,-0.012406168,1,-0.034358602,0.24937941,1,-0.00011138016){0.71839764,1.045853,0.99121748,1.0446566};
-SS(1,1,-0.25,1,1,-0.5,1,0.83864447,-0.33847614,0.82865019,1,-0.3214153){2.0438315,2.2331531,1.8065101,1.7714679};
-SS(-0.70832062,-1,0.2082538,-0.8827276,-0.88146034,0.13123348,-0.8385203,-1,0.33846229,-0.77091496,-0.77159441,0.2629049){1.5291125,1.5595365,1.8024192,1.2433034};
-SS(1,1,0.5,1,1,0.25,1,0.83856906,0.33864755,0.82853688,1,0.32125076){2.2317116,2.0447444,1.8033242,1.7703132};
-SS(-0.26297351,0.20404986,-0.17122089,-0.24163432,0.33561251,-0.055881164,-0.13709741,0.19518884,0.034033465,-0.056808231,0.14323286,-0.13367928){0.12773981,0.16437697,0.040184006,0.022140076};
-SS(-0.34310942,-0.010167032,0.1509038,-0.3727858,-0.19869367,0.11195566,-0.25897908,-0.24013326,0.26450313,-0.40506391,-0.079541407,0.3303193){0.12661586,0.16948569,0.17775565,0.26156128};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.4182056,0.11248126,-0.14182463,-0.4720473,-0.063494476,-0.036829327,-0.28278924,0.041190137,-0.04219563){0.11404163,0.19428145,0.21285629,0.063480395};
-SS(-0.88905946,-0.098697315,-0.13184676,-0.70236545,-0.13062851,-0.19140485,-0.76752638,0.004448061,-0.013214377,-0.65367362,-0.16081953,0.0014934597){0.8023886,0.5265969,0.5734925,0.4344691};
-SS(0.34720309,0.90097601,-0.12745168,0.17426348,1,-0.18078905,0.25248643,0.73785598,-0.13082591,0.094968532,0.84539386,-0.087484586){0.93504792,1.045853,0.60350215,0.71839764};
-SS(-0.76752638,0.004448061,-0.013214377,-0.91347537,0.15552497,0.067511395,-0.78848723,0.26584533,-0.068869999,-0.89804207,0.11676539,-0.10792088){0.5734925,0.85045394,0.68151298,0.82300022};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.14850787,-0.69358405,-0.087583548,-0.18618058,-0.5161726,-0.15035515,-0.19247216,-0.56000521,0.088357129){0.52757348,0.49763432,0.30914003,0.34206231};
-SS(0.51674933,0.64481281,-0.39755292,0.45062041,0.7833899,-0.5,0.33386283,0.81592026,-0.31808704,0.54326203,0.87223293,-0.356993){0.82858869,1.0506853,0.86115027,1.1662147};
-SS(-0.19461387,0.3919517,0.10437587,-0.0073778212,0.36022468,0.15230712,-0.11618574,0.50328545,0.29980467,-0.11614487,0.30919383,0.33918095){0.19075448,0.13675819,0.33969293,0.20820823};
-SS(-0.58934795,0.84141567,-0.18062024,-0.48255002,0.69900846,-0.19155417,-0.35455825,0.80859576,-0.32177549,-0.38143574,0.84373572,-0.12387887){1.0736489,0.74365966,0.86460259,0.85864479};
-SS(-0.40506391,-0.079541407,0.3303193,-0.58755791,0.033814853,0.5,-0.50807239,-0.16307462,0.5,-0.40752783,0.030201366,0.5){0.26156128,0.57778723,0.52416601,0.40526498};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.30131805,-0.11512588,-0.5,-0.12484866,-0.12486094,-0.5,-0.1971424,-0.26981885,-0.30750196){0.11599041,0.3368451,0.26766045,0.19280289};
-SS(-0.85520613,-0.46088631,-0.14784569,-0.65956212,-0.52273243,-0.19262862,-0.82285362,-0.63420593,-0.0683896,-0.81387526,-0.53653555,-0.3209601){0.95161001,0.7287475,1.0691297,1.0406635};
-SS(-0.26297351,0.20404986,-0.17122089,-0.056808231,0.14323286,-0.13367928,-0.13709741,0.19518884,0.034033465,-0.28278924,0.041190137,-0.04219563){0.12773981,0.022140076,0.040184006,0.063480395};
-SS(-0.30949447,0.8262402,0.33528492,-0.20984637,0.69532212,0.20809493,-0.47185361,0.73769401,0.24072705,-0.32294154,0.86180803,0.13108841){0.87388961,0.55022745,0.80384956,0.84829643};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.61549046,-0.35581383,-0.12962263,-0.56113743,-0.28920115,-0.29204918,-0.62341011,-0.46880832,-0.38153973){0.7287475,0.50877487,0.46850822,0.73807879};
-SS(-0.68637718,0.43295764,-0.18031685,-0.65355936,0.25468043,-0.1897796,-0.78848723,0.26584533,-0.068869999,-0.83127473,0.33505962,-0.32026923){0.67437813,0.51379882,0.68151298,0.89071695};
-SS(-0.65355936,0.25468043,-0.1897796,-0.77267892,0.13105707,-0.24874664,-0.78848723,0.26584533,-0.068869999,-0.83127473,0.33505962,-0.32026923){0.51379882,0.65386325,0.68151298,0.89071695};
-SS(0.10211023,0.6404511,0.38011645,0.21512427,0.73211919,0.5,0.16321322,0.50838432,0.5,0.35567295,0.65317229,0.39545235){0.55160362,0.81521474,0.52238519,0.69293227};
-SS(-0.12988976,-0.86995226,0.20452896,-0.29157863,-1,0.20827581,-0.16134158,-1,0.33850563,-0.349759,-0.84853211,0.35590634){0.79894991,1.1139248,1.129042,0.94981364};
-SS(-0.29168215,-1,-0.20844865,-0.36340067,-0.87821042,-0.37678589,-0.49995867,-1,-0.27986665,-0.42066299,-0.84356131,-0.12906413){1.1132023,1.0307746,1.3082069,0.88525127};
-SS(-0.63246299,0.29145388,0.035195127,-0.54640726,0.34339216,0.19847863,-0.39654734,0.26661646,0.019312696,-0.54631436,0.45612147,-0.00074796238){0.47226275,0.43575493,0.20710489,0.48593017};
-SS(0.17426348,1,-0.18078905,0.0011150345,0.93517443,-0.37389303,0.2222976,1,-0.35617554,0.081865095,0.80626877,-0.27867109){1.045853,1.0026385,1.1585843,0.71703623};
-SS(-0.58258855,0.14037208,-0.067351147,-0.63246299,0.29145388,0.035195127,-0.7489605,0.18190923,0.13647301,-0.5555987,0.045150158,0.095162244){0.34532741,0.47226275,0.59564173,0.29993682};
-SS(-0.4433427,0.53576375,-0.12560501,-0.48255002,0.69900846,-0.19155417,-0.24654336,0.57133462,-0.25396354,-0.39032311,0.63241857,-0.34621958){0.48429505,0.74365966,0.42991415,0.65630059};
-SS(-0.69937066,0.31351533,-0.5,-0.63048479,0.37587985,-0.34368186,-0.79644003,0.50064951,-0.5,-0.83127473,0.33505962,-0.32026923){0.81965428,0.64388066,1.115532,0.89071695};
-SS(0.69383766,0.49492178,-0.021800115,0.60662231,0.34516964,-0.13972301,0.75922048,0.56990614,-0.17060419,0.82562789,0.37565656,-0.12707714){0.71284258,0.48782847,0.91133836,0.82387041};
-SS(0.0011150345,0.93517443,-0.37389303,-0.088882135,1,-0.23281641,-0.23070339,1,-0.34855306,-0.14847812,0.78021305,-0.27623142){1.0026385,1.0431215,1.1599423,0.68882385};
-SS(0.60662231,0.34516964,-0.13972301,0.69383766,0.49492178,-0.021800115,0.77315808,0.36766952,0.075951375,0.82562789,0.37565656,-0.12707714){0.48782847,0.71284258,0.71793497,0.82387041};
-SS(0.27170325,0.36204749,-0.4201745,0.34662081,0.36199915,-0.25068724,0.17777709,0.54047543,-0.2567554,0.09693172,0.3918681,-0.3370861){0.36885377,0.29696992,0.36840304,0.26256104};
-SS(-0.74954172,1,0.13574231,-0.61311838,0.85766427,0.15491279,-0.66659408,1,0.32529585,-0.76389013,0.77728265,0.25513738){1.562759,1.1216468,1.5364848,1.2358334};
-SS(-0.89962374,0.8609561,-0.16698164,-1,1,-0.25,-1,1,-6.9388939e-15,-0.81095336,1,-0.07156149){1.5692753,2.0450698,1.9810426,1.6471359};
-SS(-0.89426176,0.41257007,-0.12932618,-0.68637718,0.43295764,-0.18031685,-0.78848723,0.26584533,-0.068869999,-0.83127473,0.33505962,-0.32026923){0.974079,0.67437813,0.68151298,0.89071695};
-SS(0.13402468,0.11673163,-0.1460819,0,0,-6.9388939e-15,0.22032809,0,-9.1119885e-05,0.13261259,0.21336316,0.036566127){0.039337265,-0.017891206,0.027339551,0.046199082};
-SS(0.69383766,0.49492178,-0.021800115,0.65062064,0.64268786,0.069510863,0.75922048,0.56990614,-0.17060419,0.61535375,0.70719289,-0.095218388){0.71284258,0.82620698,0.91133836,0.87858083};
-SS(-0.18268367,0.83021756,-0.5,-0.17097214,0.64900986,-0.39927747,-0.14847812,0.78021305,-0.27623142,-0.35455825,0.80859576,-0.32177549){0.9573479,0.59741335,0.68882385,0.86460259};
-SS(0.34662081,0.36199915,-0.25068724,0.24635331,0.35131343,-0.096025322,0.20129651,0.21389912,-0.31902192,0.37137652,0.1767682,-0.19801193){0.29696992,0.18045455,0.16839385,0.19205628};
-SS(0.88354722,0.11667767,-0.13069643,1,0.2917639,-0.20827961,0.77491511,0.22516452,-0.26425516,0.82562789,0.37565656,-0.12707714){0.79839767,1.1127834,0.70313431,0.82387041};
-SS(-0.4433427,0.53576375,-0.12560501,-0.24654336,0.57133462,-0.25396354,-0.50782983,0.50249565,-0.29902586,-0.39032311,0.63241857,-0.34621958){0.48429505,0.42991415,0.58612549,0.65630059};
-SS(-0.1159097,-0.14329028,0.19302206,0,0,-6.9388939e-15,-0.20656092,-0.13938028,0.029547229,-0.15128303,0.02253305,0.11422928){0.055235283,-0.017891206,0.048278496,0.025420414};
-SS(-0.41767704,0.010770256,-0.44072823,-0.30131805,-0.11512588,-0.5,-0.29413589,0.046284299,-0.31274881,-0.38492375,-0.20017574,-0.33650716){0.35514259,0.3368451,0.1681493,0.28705324};
-SS(0.68966181,1,0.19790566,0.88049681,0.87960137,0.13412341,0.82853688,1,0.32125076,0.76099919,0.76690574,0.25750996){1.492557,1.5518824,1.7703132,1.2143065};
-SS(0.74440038,0.22095066,-0.087839409,0.60662231,0.34516964,-0.13972301,0.77315808,0.36766952,0.075951375,0.82562789,0.37565656,-0.12707714){0.59875958,0.48782847,0.71793497,0.82387041};
-SS(-0.76988954,1,-0.26944904,-0.83248216,0.76782327,-0.31292259,-0.74249217,0.75399014,-0.15399718,-0.89962374,0.8609561,-0.16698164){1.6463902,1.366757,1.1267767,1.5692753};
-SS(-0.92571354,0.17249619,-0.34283108,-1,0.25105097,-0.19350143,-0.77267892,0.13105707,-0.24874664,-0.83127473,0.33505962,-0.32026923){0.99158484,1.0825888,0.65386325,0.89071695};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.5000565,0.0033661208,-0.82285362,-0.63420593,-0.0683896,-0.82595855,-0.48031431,0.11444494){0.95161001,1.2263361,1.0691297,0.90887195};
-SS(0.098704003,0.67249079,0.1943501,0.11458044,0.70010244,0.010073529,0.086744979,0.52712982,0.027891324,-0.098708274,0.55956225,0.10505678){0.47957633,0.49378055,0.26660844,0.31633913};
-SS(0.34720309,0.90097601,-0.12745168,0.25248643,0.73785598,-0.13082591,0.45788353,0.76094781,-0.0096633567,0.24404834,0.79519787,0.082231238){0.93504792,0.60350215,0.76853994,0.68472542};
-SS(0.0011150345,0.93517443,-0.37389303,-0.11111111,1,-0.5,-0.18268367,0.83021756,-0.5,-0.23070339,1,-0.34855306){1.0026385,1.2528065,0.9573479,1.1599423};
-SS(0,0,-6.9388939e-15,-0.1159097,-0.14329028,0.19302206,0,0,0.25,-0.15128303,0.02253305,0.11422928){-0.017891206,0.055235283,0.045060365,0.025420414};
-SS(-1,1,0.25,-0.93582873,0.86427167,0.14668289,-0.74954172,1,0.13574231,-0.84394966,1,0.33504415){2.0473025,1.6320629,1.562759,1.8084725};
-SS(0,-0.49997234,-0.27965571,-0.11754465,-0.65214472,-0.32749638,-0.18618058,-0.5161726,-0.15035515,-0.26056819,-0.54975154,-0.34323516){0.30906942,0.53347202,0.30914003,0.46884495};
-SS(0,-0.25,-0.5,-0.073421274,-0.375,-0.38984354,0,-0.16143077,-0.33843101,-0.1971424,-0.26981885,-0.30750196){0.29677328,0.28201081,0.12966739,0.19280289};
-SS(0.88049681,0.87960137,0.13412341,0.68966181,1,0.19790566,0.78186447,1,3.3673518e-05,0.62860594,0.86645525,0.049037492){1.5518824,1.492557,1.5923176,1.1303867};
-SS(-0.056808231,0.14323286,-0.13367928,0.08017426,0.31429474,-0.16745504,0.13261259,0.21336316,0.036566127,0.13402468,0.11673163,-0.1460819){0.022140076,0.11103103,0.046199082,0.039337265};
-SS(-0.11754465,-0.65214472,-0.32749638,-0.2399131,-0.76005145,-0.25989531,-0.18618058,-0.5161726,-0.15035515,-0.26056819,-0.54975154,-0.34323516){0.53347202,0.6848256,0.30914003,0.46884495};
-SS(0.6657623,0.67544754,-0.5,0.85153485,0.65148612,-0.35468846,0.81205362,0.80656044,-0.5,0.68900489,0.77311276,-0.28043733){1.1304562,1.2568282,1.5391707,1.1326816};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.4433427,0.53576375,-0.12560501,-0.24654336,0.57133462,-0.25396354,-0.34372617,0.39779568,-0.18541051){0.32892635,0.48429505,0.42991415,0.29650146};
-SS(-0.83996275,-0.66999882,0.11765553,-0.65631386,-0.59724887,0.13822882,-0.77091496,-0.77159441,0.2629049,-0.61978497,-0.82706917,0.12738472){1.1553131,0.7890621,1.2433034,1.0681409};
-SS(0.51674933,0.64481281,-0.39755292,0.6657623,0.67544754,-0.5,0.45062041,0.7833899,-0.5,0.54326203,0.87223293,-0.356993){0.82858869,1.1304562,1.0506853,1.1662147};
-SS(-0.32294154,0.86180803,0.13108841,-0.222315,1,-0.00011890035,-0.22223836,1,0.2622369,-0.084253952,1,0.13733396){0.84829643,1.0307381,1.0984067,1.0073117};
-SS(-0.57994589,-0.69256437,0.31204703,-0.65631386,-0.59724887,0.13822882,-0.77091496,-0.77159441,0.2629049,-0.79575191,-0.55547687,0.30538166){0.89957508,0.7890621,1.2433034,1.0192798};
-SS(-0.87046532,0.63071146,0.35630423,-0.66546973,0.66566005,0.5,-0.79641575,0.50054117,0.5,-0.67801153,0.56076489,0.29217382){1.2666006,1.1224691,1.1180299,0.83617727};
-SS(0.51674933,0.64481281,-0.39755292,0.49866453,0.63973666,-0.21510859,0.33386283,0.81592026,-0.31808704,0.34412919,0.6158316,-0.3427703){0.82858869,0.68344633,0.86115027,0.59958408};
-SS(-0.2401666,0.74114092,-0.051302261,-0.38143574,0.84373572,-0.12387887,-0.48952189,0.78345034,0.019065462,-0.32294154,0.86180803,0.13108841){0.58653028,0.85864479,0.83409809,0.84829643};
-SS(-0.50815189,-0.16301678,-0.5,-0.64012388,-0.10177177,-0.37237302,-0.56113743,-0.28920115,-0.29204918,-0.38492375,-0.20017574,-0.33650716){0.52110597,0.54269073,0.46850822,0.28705324};
-SS(0.35567295,0.65317229,0.39545235,0.37492492,0.49312259,0.5,0.16321322,0.50838432,0.5,0.26138985,0.51848551,0.281015){0.69293227,0.61809871,0.52238519,0.40200156};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.70725984,0.21334539,-1,0.84108515,0.33242406,-0.76389013,0.77728265,0.25513738){1.2666006,1.5286486,1.8031397,1.2358334};
-SS(-0.76389013,0.77728265,0.25513738,-0.8480722,0.62150313,0.12164012,-0.67801153,0.56076489,0.29217382,-0.87046532,0.63071146,0.35630423){1.2358334,1.1084494,0.83617727,1.2666006};
-SS(0.8781758,0.86708556,-0.1989731,0.68985253,1,-0.19792707,0.82865019,1,-0.3214153,0.68900489,0.77311276,-0.28043733){1.5462283,1.495304,1.7714679,1.1326816};
-SS(0.45042372,0.78359022,0.5,0.36841015,0.87909734,0.37310922,0.55555177,0.82262944,0.31125158,0.35567295,0.65317229,0.39545235){1.0496179,1.0362544,1.0671623,0.69293227};
-SS(-0.17097214,0.64900986,-0.39927747,-0.24654336,0.57133462,-0.25396354,-0.35455825,0.80859576,-0.32177549,-0.39032311,0.63241857,-0.34621958){0.59741335,0.42991415,0.86460259,0.65630059};
-SS(0.09693172,0.3918681,-0.3370861,0.16368264,0.50834729,-0.5,-0.029932551,0.40748663,-0.5,-0.01813809,0.53618118,-0.30537166){0.26256104,0.52115901,0.4038008,0.36567785};
-SS(-0.01813809,0.53618118,-0.30537166,-0.033284914,0.58770906,-0.5,0.16368264,0.50834729,-0.5,-0.029932551,0.40748663,-0.5){0.36567785,0.58301644,0.52115901,0.4038008};
-SS(-0.40408872,0.18166381,-0.5,-0.41767704,0.010770256,-0.44072823,-0.19007896,0.04567822,-0.5,-0.29413589,0.046284299,-0.31274881){0.42526168,0.35514259,0.27736807,0.1681493};
-SS(-0.4182056,0.11248126,-0.14182463,-0.58258855,0.14037208,-0.067351147,-0.49808619,0.0026201378,-0.26387206,-0.4720473,-0.063494476,-0.036829327){0.19428145,0.34532741,0.29810596,0.21285629};
-SS(0.50010751,0,-0.00013054911,0.46476684,0.14382827,0.12247557,0.63998586,0.17856447,0.051345521,0.57129187,0.13526053,-0.13726946){0.22823279,0.23450402,0.42570365,0.35115136};
-SS(0.10211023,0.6404511,0.38011645,0.098704003,0.67249079,0.1943501,-0.043441254,0.79173928,0.29440137,0.22886345,0.79287946,0.30210005){0.55160362,0.47957633,0.69563564,0.75332396};
-SS(0.55555556,1,0.5,0.64232771,0.84838332,0.46476191,0.45042372,0.78359022,0.5,0.55555177,0.82262944,0.31125158){1.5357742,1.3339184,1.0496179,1.0671623};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.50159539,-0.29258506,7.2987381e-06,-0.76760867,-0.33664988,-0.028298027,-0.59094649,-0.40495207,0.12834587){0.50877487,0.32068114,0.68479998,0.51475101};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.29237157,-0.11865629,-0.17606411,-0.49808619,0.0026201378,-0.26387206,-0.4720473,-0.063494476,-0.036829327){0.26094507,0.11404163,0.29810596,0.21285629};
-SS(-0.30949447,0.8262402,0.33528492,-0.33333333,1,0.5,-0.22223836,1,0.2622369,-0.44431425,1,0.36245944){0.87388961,1.3433112,1.0984067,1.3152029};
-SS(-0.45563594,0.60375179,0.095527884,-0.65776896,0.64141588,0.074371921,-0.47185361,0.73769401,0.24072705,-0.48952189,0.78345034,0.019065462){0.56263538,0.83514199,0.80384956,0.83409809};
-SS(-0.16707278,-0.087678023,-0.31121894,0,0,-0.5,0,0,-0.25,0,-0.16143077,-0.33843101){0.11599041,0.23465449,0.044304329,0.12966739};
-SS(-0.70832062,-1,0.2082538,-0.8827276,-0.88146034,0.13123348,-0.77091496,-0.77159441,0.2629049,-0.61978497,-0.82706917,0.12738472){1.5291125,1.5595365,1.2433034,1.0681409};
-SS(-1,0.24865949,0.19540364,-0.91347537,0.15552497,0.067511395,-0.7489605,0.18190923,0.13647301,-0.91004595,0.15296589,0.33139812){1.0814407,0.85045394,0.59564173,0.94743142};
-SS(0.50136923,0.34587735,-0.44862257,0.51910919,0.22553632,-0.31417891,0.67125235,0.44297685,-0.31879306,0.48047723,0.47791267,-0.33071402){0.56260896,0.40112301,0.72773009,0.55795418};
-SS(-0.58755791,0.033814853,0.5,-0.61674646,0.25215289,0.3447871,-0.52427834,0.10778268,0.27208728,-0.72768327,0.10310141,0.33233484){0.57778723,0.54607287,0.34448415,0.63492881};
-SS(-0.17097214,0.64900986,-0.39927747,0.00024312215,0.80750011,-0.5,-0.18268367,0.83021756,-0.5,-0.14847812,0.78021305,-0.27623142){0.59741335,0.88610119,0.9573479,0.68882385};
-SS(-0.67495489,-0.6652659,-0.5,-0.62341011,-0.46880832,-0.38153973,-0.78315651,-0.45008839,-0.5,-0.81387526,-0.53653555,-0.3209601){1.1276355,0.73807879,1.0467962,1.0406635};
-SS(-0.088882135,1,-0.23281641,0.0011150345,0.93517443,-0.37389303,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142){1.0431215,1.0026385,0.71703623,0.68882385};
-SS(0.59416595,0.14141347,0.32656529,0.67112401,0.32933441,0.5,0.62515059,0.14422159,0.5,0.73568363,0.23203612,0.2735765){0.46498444,0.79210069,0.64726001,0.6509231};
-SS(-0.349759,-0.84853211,0.35590634,-0.32897755,-0.67088709,0.5,-0.18863677,-0.81113033,0.5,-0.22656331,-0.68065623,0.28194433){0.94981364,0.79643001,0.92459822,0.57683818};
-SS(-0.10743676,0.85847111,-0.11136175,-0.088882135,1,-0.23281641,-0.012406168,1,-0.034358602,0.094968532,0.84539386,-0.087484586){0.7462212,1.0431215,0.99121748,0.71839764};
-SS(1,0.70834898,0.20844998,0.87881231,0.64063264,0.37220388,1,0.83856906,0.33864755,0.76099919,0.76690574,0.25750996){1.5291243,1.3069719,1.8033242,1.2143065};
-SS(0.00024312215,0.80750011,-0.5,0.0011150345,0.93517443,-0.37389303,-0.18268367,0.83021756,-0.5,-0.14847812,0.78021305,-0.27623142){0.88610119,1.0026385,0.9573479,0.68882385};
-SS(-0.63048479,0.37587985,-0.34368186,-0.68637718,0.43295764,-0.18031685,-0.49391083,0.27907498,-0.27264436,-0.50782983,0.50249565,-0.29902586){0.64388066,0.67437813,0.37398026,0.58612549};
-SS(-0.4182056,0.11248126,-0.14182463,-0.29237157,-0.11865629,-0.17606411,-0.29413589,0.046284299,-0.31274881,-0.28278924,0.041190137,-0.04219563){0.19428145,0.11404163,0.1681493,0.063480395};
-SS(0.86971177,0.13024645,0.1427188,0.70845584,0,0.20819814,0.83866368,0,0.33843958,0.73568363,0.23203612,0.2735765){0.77797836,0.52761363,0.80106313,0.6509231};
-SS(-0.49292178,-0.37477565,-0.5,-0.4581749,-0.5263483,-0.32801665,-0.56113743,-0.28920115,-0.29204918,-0.62341011,-0.46880832,-0.38153973){0.6115465,0.57811658,0.46850822,0.73807879};
-SS(0.16368264,0.50834729,-0.5,0.10162062,0.65400865,-0.37913628,0.17777709,0.54047543,-0.2567554,0.34412919,0.6158316,-0.3427703){0.52115901,0.5665506,0.36840304,0.59958408};
-SS(-0.49292178,-0.37477565,-0.5,-0.38492375,-0.20017574,-0.33650716,-0.50815189,-0.16301678,-0.5,-0.56113743,-0.28920115,-0.29204918){0.6115465,0.28705324,0.52110597,0.46850822};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.67495489,-0.6652659,-0.5,-0.80632325,-0.81147186,-0.5,-0.76546557,-0.72634686,-0.27513208){1.296688,1.1276355,1.5409894,1.1696133};
-SS(-0.24654336,0.57133462,-0.25396354,-0.4433427,0.53576375,-0.12560501,-0.50782983,0.50249565,-0.29902586,-0.34372617,0.39779568,-0.18541051){0.42991415,0.48429505,0.58612549,0.29650146};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.61549046,-0.35581383,-0.12962263,-0.56113743,-0.28920115,-0.29204918,-0.45843014,-0.20445062,-0.15988901){0.5265969,0.50877487,0.46850822,0.26094507};
-SS(-0.65776896,0.64141588,0.074371921,-0.8480722,0.62150313,0.12164012,-0.79172217,0.43302343,0.13373134,-0.67801153,0.56076489,0.29217382){0.83514199,1.1084494,0.80968993,0.83617727};
-SS(0,0,-6.9388939e-15,0.13913358,0.10014326,0.18199659,0.22032809,0,-9.1119885e-05,0.13261259,0.21336316,0.036566127){-0.017891206,0.045990896,0.027339551,0.046199082};
-SS(0.67112401,0.32933441,0.5,0.87272604,0.35900693,0.37172569,0.81143387,0.18901581,0.5,0.73568363,0.23203612,0.2735765){0.79210069,1.0107603,0.9265446,0.6509231};
-SS(-0.25897908,-0.24013326,0.26450313,-0.1159097,-0.14329028,0.19302206,-0.20656092,-0.13938028,0.029547229,-0.3727858,-0.19869367,0.11195566){0.17775565,0.055235283,0.048278496,0.16948569};
-SS(-1,-0.70523324,-0.21165758,-0.91414606,-0.68082467,-0.37109558,-1,-0.47540235,-0.27521785,-0.81387526,-0.53653555,-0.3209601){1.5222776,1.4249306,1.2841965,1.0406635};
-SS(-0.49808619,0.0026201378,-0.26387206,-0.41767704,0.010770256,-0.44072823,-0.29413589,0.046284299,-0.31274881,-0.38492375,-0.20017574,-0.33650716){0.29810596,0.35514259,0.1681493,0.28705324};
-SS(-0.8480722,0.62150313,0.12164012,-1,0.70725984,0.21334539,-1,0.4752276,0.27420758,-0.87046532,0.63071146,0.35630423){1.1084494,1.5286486,1.2803563,1.2666006};
-SS(-0.61311838,0.85766427,0.15491279,-0.47972312,1,0.18932995,-0.74954172,1,0.13574231,-0.66659408,1,0.32529585){1.1216468,1.2473472,1.562759,1.5364848};
-SS(-0.0089783977,0.64320989,-0.13441642,0.11458044,0.70010244,0.010073529,0.25248643,0.73785598,-0.13082591,0.094968532,0.84539386,-0.087484586){0.41358858,0.49378055,0.60350215,0.71839764};
-SS(-0.23048975,-0.37484721,0.5,-0.37661764,-0.26006406,0.40868766,-0.1853821,-0.42358473,0.30866054,-0.34549718,-0.50098866,0.4105565){0.42714666,0.36234206,0.29143101,0.5260109};
-SS(-0.64009684,-0.10188458,0.37412975,-0.58755791,0.033814853,0.5,-0.50807239,-0.16307462,0.5,-0.40506391,-0.079541407,0.3303193){0.54631619,0.57778723,0.52416601,0.26156128};
-SS(0.36016656,0.41044152,0.1594367,0.52843461,0.32737897,0.19102935,0.47723835,0.52605258,0.30619083,0.50761134,0.34933779,0.39015973){0.3073722,0.40790135,0.58228229,0.51484928};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.24887753,0.1953112,-0.84084014,-0.14895162,0.31636914,-0.82279039,-0.18997945,0.10657137){1.0133061,1.0768014,0.81273381,0.70945047};
-SS(-0.3533559,-0.49437708,0.037576204,-0.50159539,-0.29258506,7.2987381e-06,-0.52487586,-0.5117405,-0.017639258,-0.59094649,-0.40495207,0.12834587){0.35575629,0.32068114,0.51812974,0.51475101};
-SS(-1,-0.70523324,-0.21165758,-0.86742481,-0.86548068,-0.14483364,-1,-0.83959635,-0.33115777,-0.76546557,-0.72634686,-0.27513208){1.5222776,1.5085891,1.7998257,1.1696133};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.10743676,0.85847111,-0.11136175,-0.2401666,0.74114092,-0.051302261,-0.035654771,0.78507762,0.045007896){0.41358858,0.7462212,0.58653028,0.60161266};
-SS(0.40637652,0.87094343,0.13060843,0.45788353,0.76094781,-0.0096633567,0.24404834,0.79519787,0.082231238,0.34720309,0.90097601,-0.12745168){0.92399337,0.76853994,0.68472542,0.93504792};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.70236545,-0.13062851,-0.19140485,-0.76760867,-0.33664988,-0.028298027,-0.65367362,-0.16081953,0.0014934597){0.50877487,0.5265969,0.68479998,0.4344691};
-SS(-0.4182056,0.11248126,-0.14182463,-0.29237157,-0.11865629,-0.17606411,-0.49808619,0.0026201378,-0.26387206,-0.29413589,0.046284299,-0.31274881){0.19428145,0.11404163,0.29810596,0.1681493};
-SS(0.42864323,0.48543211,-0.13804456,0.34662081,0.36199915,-0.25068724,0.34412919,0.6158316,-0.3427703,0.48047723,0.47791267,-0.33071402){0.42022283,0.29696992,0.59958408,0.55795418};
-SS(-0.64009684,-0.10188458,0.37412975,-0.58755791,0.033814853,0.5,-0.52427834,0.10778268,0.27208728,-0.72768327,0.10310141,0.33233484){0.54631619,0.57778723,0.34448415,0.63492881};
-SS(0.10211023,0.6404511,0.38011645,-0.033588837,0.5879061,0.5,0.00029730467,0.80760978,0.5,-0.16015893,0.67694077,0.39025863){0.55160362,0.57806214,0.88423684,0.6265216};
-SS(0.36841015,0.87909734,0.37310922,0.39612945,0.70614162,0.21524614,0.55555177,0.82262944,0.31125158,0.35567295,0.65317229,0.39545235){1.0362544,0.68453461,1.0671623,0.69293227};
-SS(-0.4543958,0.20406131,0.5,-0.36145429,0.13293621,0.35430528,-0.40752783,0.030201366,0.5,-0.52427834,0.10778268,0.27208728){0.48353653,0.26360063,0.40526498,0.34448415};
-SS(-0.67616985,-0.069078192,0.18801024,-0.64009684,-0.10188458,0.37412975,-0.52427834,0.10778268,0.27208728,-0.72768327,0.10310141,0.33233484){0.47948004,0.54631619,0.34448415,0.63492881};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.098708274,0.55956225,0.10505678,-0.096302334,0.43534175,-0.056072844,0.086744979,0.52712982,0.027891324){0.41358858,0.31633913,0.18078295,0.26660844};
-SS(0.50136923,0.34587735,-0.44862257,0.37532516,0.23078833,-0.5,0.6251418,0.1440922,-0.5,0.51910919,0.22553632,-0.31417891){0.56260896,0.42551454,0.63751638,0.40112301};
-SS(-0.6293812,0.63993291,-0.28812602,-0.66548665,0.66585508,-0.5,-0.4813337,0.60105459,-0.5,-0.61503712,0.4760032,-0.5){0.87296464,1.1221664,0.83133251,0.83978547};
-SS(0.65062064,0.64268786,0.069510863,0.69383766,0.49492178,-0.021800115,0.52218723,0.46943947,0.022097553,0.61535375,0.70719289,-0.095218388){0.82620698,0.71284258,0.46892029,0.87858083};
-SS(-0.82994199,0.18319278,-0.5,-0.92571354,0.17249619,-0.34283108,-0.77267892,0.13105707,-0.24874664,-0.83127473,0.33505962,-0.32026923){0.95993957,0.99158484,0.65386325,0.89071695};
-SS(0.88049681,0.87960137,0.13412341,1,0.70834898,0.20844998,1,0.83856906,0.33864755,0.76099919,0.76690574,0.25750996){1.5518824,1.5291243,1.8033242,1.2143065};
-SS(-0.033284914,0.58770906,-0.5,-0.01813809,0.53618118,-0.30537166,-0.20381263,0.45499536,-0.5,-0.029932551,0.40748663,-0.5){0.58301644,0.36567785,0.478983,0.4038008};
-SS(-0.73479965,-0.34302295,0.24038072,-0.89646962,-0.32955067,0.34017365,-0.84084014,-0.14895162,0.31636914,-0.82279039,-0.18997945,0.10657137){0.69668046,1.0133061,0.81273381,0.70945047};
-SS(-0.31377045,0.30492781,-0.36427962,-0.17603462,0.24070348,-0.5,-0.20381263,0.45499536,-0.5,-0.12449617,0.36606215,-0.28273955){0.30770932,0.32537509,0.478983,0.21185338};
-SS(-0.17097214,0.64900986,-0.39927747,-0.24654336,0.57133462,-0.25396354,-0.14847812,0.78021305,-0.27623142,-0.35455825,0.80859576,-0.32177549){0.59741335,0.42991415,0.68882385,0.86460259};
-SS(-0.67495489,-0.6652659,-0.5,-0.91414606,-0.68082467,-0.37109558,-0.80632325,-0.81147186,-0.5,-0.76546557,-0.72634686,-0.27513208){1.1276355,1.4249306,1.5409894,1.1696133};
-SS(-0.73174745,-0.21491043,0.5,-0.62450053,-0.31310845,0.38575928,-0.84084014,-0.14895162,0.31636914,-0.64009684,-0.10188458,0.37412975){0.81377033,0.62379151,0.81273381,0.54631619};
-SS(0.59365279,0.65503723,0.24444947,0.39612945,0.70614162,0.21524614,0.47723835,0.52605258,0.30619083,0.35567295,0.65317229,0.39545235){0.82252715,0.68453461,0.58228229,0.69293227};
-SS(-0.056808231,0.14323286,-0.13367928,0,0,-0.25,0,0,-6.9388939e-15,-0.098950987,-0.13391411,-0.14594667){0.022140076,0.044304329,-0.017891206,0.03512721};
-SS(-0.62938155,0.17932964,-0.37445272,-0.69937066,0.31351533,-0.5,-0.82994199,0.18319278,-0.5,-0.83127473,0.33505962,-0.32026923){0.55109073,0.81965428,0.95993957,0.89071695};
-SS(0,0,-6.9388939e-15,-0.056808231,0.14323286,-0.13367928,0.13261259,0.21336316,0.036566127,0.13402468,0.11673163,-0.1460819){-0.017891206,0.022140076,0.046199082,0.039337265};
-SS(-0.11754465,-0.65214472,-0.32749638,0,-0.70830496,-0.20826096,0,-0.49997234,-0.27965571,-0.18618058,-0.5161726,-0.15035515){0.53347202,0.5287181,0.30906942,0.30914003};
-SS(-0.1971424,-0.26981885,-0.30750196,0,-0.25,-0.5,-0.12484866,-0.12486094,-0.5,0,-0.16143077,-0.33843101){0.19280289,0.29677328,0.26766045,0.12966739};
-SS(-0.91004595,0.15296589,0.33139812,-0.7489605,0.18190923,0.13647301,-0.83851866,0.33014205,0.32623765,-0.72768327,0.10310141,0.33233484){0.94743142,0.59564173,0.89937894,0.63492881};
-SS(-0.50537844,-0.68762812,0.023695348,-0.65631386,-0.59724887,0.13822882,-0.63348211,-0.7706683,-0.074889286,-0.61978497,-0.82706917,0.12738472){0.71483247,0.7890621,0.97907785,1.0681409};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.29168215,-1,-0.20844865,-0.16144976,-1,-0.33863959,-0.2399131,-0.76005145,-0.25989531){1.0307746,1.1132023,1.1250711,0.6848256};
-SS(0.34720309,0.90097601,-0.12745168,0.17426348,1,-0.18078905,0.43683247,1,-0.26068681,0.2222976,1,-0.35617554){0.93504792,1.045853,1.2435523,1.1585843};
-SS(0.24937941,1,-0.00011138016,0.40637652,0.87094343,0.13060843,0.24404834,0.79519787,0.082231238,0.34720309,0.90097601,-0.12745168){1.0446566,0.92399337,0.68472542,0.93504792};
-SS(-0.86742481,-0.86548068,-0.14483364,-1,-0.70523324,-0.21165758,-1,-0.77608598,0.00064487429,-0.82285362,-0.63420593,-0.0683896){1.5085891,1.5222776,1.5844414,1.0691297};
-SS(0.6657623,0.67544754,-0.5,0.51674933,0.64481281,-0.39755292,0.68900489,0.77311276,-0.28043733,0.54326203,0.87223293,-0.356993){1.1304562,0.82858869,1.1326816,1.1662147};
-SS(-0.14850787,-0.69358405,-0.087583548,0,-0.49997946,0.00010199173,-0.18618058,-0.5161726,-0.15035515,-0.19247216,-0.56000521,0.088357129){0.49763432,0.22811872,0.30914003,0.34206231};
-SS(-0.70832062,-1,0.2082538,-0.63815223,-0.88141187,0.37488811,-0.4999534,-1,0.27968311,-0.61978497,-0.82706917,0.12738472){1.5291125,1.3088768,1.3075402,1.0681409};
-SS(-0.4813337,0.60105459,-0.5,-0.6293812,0.63993291,-0.28812602,-0.61503712,0.4760032,-0.5,-0.50782983,0.50249565,-0.29902586){0.83133251,0.87296464,0.83978547,0.58612549};
-SS(0.10211023,0.6404511,0.38011645,0.00029730467,0.80760978,0.5,-0.043441254,0.79173928,0.29440137,-0.16015893,0.67694077,0.39025863){0.55160362,0.88423684,0.69563564,0.6265216};
-SS(-0.10743676,0.85847111,-0.11136175,-0.0089783977,0.64320989,-0.13441642,0.081865095,0.80626877,-0.27867109,0.094968532,0.84539386,-0.087484586){0.7462212,0.41358858,0.71703623,0.71839764};
-SS(-0.83248216,0.76782327,-0.31292259,-0.76988954,1,-0.26944904,-0.74249217,0.75399014,-0.15399718,-0.65756371,0.81308934,-0.3429452){1.366757,1.6463902,1.1267767,1.1958888};
-SS(0.10211023,0.6404511,0.38011645,0.16321322,0.50838432,0.5,0.26138985,0.51848551,0.281015,0.35567295,0.65317229,0.39545235){0.55160362,0.52238519,0.40200156,0.69293227};
-SS(-0.12233239,-0.87748906,-0.13583418,0,-0.70830496,-0.20826096,0,-0.83851883,-0.33849865,-0.2399131,-0.76005145,-0.25989531){0.78823805,0.5287181,0.80235204,0.6848256};
-SS(-0.3548152,-0.48825703,0.21848985,-0.34549718,-0.50098866,0.4105565,-0.22656331,-0.68065623,0.28194433,-0.1853821,-0.42358473,0.30866054){0.38862106,0.5260109,0.57683818,0.29143101};
-SS(1,0,-6.9388939e-15,0.88354722,0.11667767,-0.13069643,0.77985819,0,-0.00014691753,0.86971177,0.13024645,0.1427188){0.9846322,0.79839767,0.58919206,0.77797836};
-SS(0.88354722,0.11667767,-0.13069643,1,0,-6.9388939e-15,1,0.2203628,5.6826691e-05,0.86971177,0.13024645,0.1427188){0.79839767,0.9846322,1.0268649,0.77797836};
-SS(-0.29168215,-1,-0.20844865,-0.12233239,-0.87748906,-0.13583418,-0.16144976,-1,-0.33863959,-0.2399131,-0.76005145,-0.25989531){1.1132023,0.78823805,1.1250711,0.6848256};
-SS(-0.61674646,0.25215289,0.3447871,-0.7489605,0.18190923,0.13647301,-0.52427834,0.10778268,0.27208728,-0.72768327,0.10310141,0.33233484){0.54607287,0.59564173,0.34448415,0.63492881};
-SS(1,0.70834898,0.20844998,0.87881231,0.64063264,0.37220388,0.76099919,0.76690574,0.25750996,0.84582719,0.572243,0.1361951){1.5291243,1.3069719,1.2143065,1.0417018};
-SS(0.54326203,0.87223293,-0.356993,0.49866453,0.63973666,-0.21510859,0.68900489,0.77311276,-0.28043733,0.54700908,0.85955032,-0.16345766){1.1662147,0.68344633,1.1326816,1.0528061};
-SS(0.52843461,0.32737897,0.19102935,0.50761134,0.34933779,0.39015973,0.6902006,0.50015172,0.27072419,0.47723835,0.52605258,0.30619083){0.40790135,0.51484928,0.77938072,0.58228229};
-SS(-0.65631386,-0.59724887,0.13822882,-0.57994589,-0.69256437,0.31204703,-0.56348952,-0.47594309,0.3052276,-0.79575191,-0.55547687,0.30538166){0.7890621,0.89957508,0.61776713,1.0192798};
-SS(-0.65776896,0.64141588,0.074371921,-0.61311838,0.85766427,0.15491279,-0.47185361,0.73769401,0.24072705,-0.48952189,0.78345034,0.019065462){0.83514199,1.1216468,0.80384956,0.83409809};
-SS(0.64232771,0.84838332,0.46476191,0.66554141,0.67524133,0.5,0.45042372,0.78359022,0.5,0.55555177,0.82262944,0.31125158){1.3339184,1.1271263,1.0496179,1.0671623};
-SS(0.88049681,0.87960137,0.13412341,0.78186447,1,3.3673518e-05,0.77861211,0.77861193,-0.067175459,0.62860594,0.86645525,0.049037492){1.5518824,1.5923176,1.1981052,1.1303867};
-SS(-0.91347537,0.15552497,0.067511395,-0.7489605,0.18190923,0.13647301,-0.76752638,0.004448061,-0.013214377,-0.78848723,0.26584533,-0.068869999){0.85045394,0.59564173,0.5734925,0.68151298};
-SS(-0.79227163,-0.79754897,0.0021844777,-1,-0.77608598,0.00064487429,-0.86742481,-0.86548068,-0.14483364,-0.8827276,-0.88146034,0.13123348){1.2530106,1.5844414,1.5085891,1.5595365};
-SS(0.50761134,0.34933779,0.39015973,0.5725222,0.50074158,0.5,0.6902006,0.50015172,0.27072419,0.47723835,0.52605258,0.30619083){0.51484928,0.8121357,0.77938072,0.58228229};
-SS(-0.91347537,0.15552497,0.067511395,-1,-0.00012222908,0.26646899,-0.84289574,0.018333867,0.1608607,-0.91004595,0.15296589,0.33139812){0.85045394,1.0506696,0.72430843,0.94743142};
-SS(-0.65776896,0.64141588,0.074371921,-0.62332411,0.59900263,-0.10904345,-0.48952189,0.78345034,0.019065462,-0.45563594,0.60375179,0.095527884){0.83514199,0.74800561,0.83409809,0.56263538};
-SS(-0.073421274,-0.375,-0.38984354,0,-0.25,-0.5,-0.12484866,-0.12486094,-0.5,-0.1971424,-0.26981885,-0.30750196){0.28201081,0.29677328,0.26766045,0.19280289};
-SS(-0.12449617,0.36606215,-0.28273955,-0.17603462,0.24070348,-0.5,-0.20381263,0.45499536,-0.5,-0.029932551,0.40748663,-0.5){0.21185338,0.32537509,0.478983,0.4038008};
-SS(0.67112401,0.32933441,0.5,0.73568363,0.23203612,0.2735765,0.81143387,0.18901581,0.5,0.62515059,0.14422159,0.5){0.79210069,0.6509231,0.9265446,0.64726001};
-SS(0.35689191,0.091376279,-0.36932783,0.25,0,-0.5,0.16149165,0,-0.33864688,0.20129651,0.21389912,-0.31902192){0.26145514,0.28810477,0.12746835,0.16839385};
-SS(0.11458044,0.70010244,0.010073529,0.098704003,0.67249079,0.1943501,-0.035654771,0.78507762,0.045007896,-0.098708274,0.55956225,0.10505678){0.49378055,0.47957633,0.60161266,0.31633913};
-SS(0.34720309,0.90097601,-0.12745168,0.17426348,1,-0.18078905,0.2222976,1,-0.35617554,0.33386283,0.81592026,-0.31808704){0.93504792,1.045853,1.1585843,0.86115027};
-SS(0.43683247,1,-0.26068681,0.34720309,0.90097601,-0.12745168,0.2222976,1,-0.35617554,0.33386283,0.81592026,-0.31808704){1.2435523,0.93504792,1.1585843,0.86115027};
-SS(0.11136938,1,0.13859714,0.094968532,0.84539386,-0.087484586,-0.012406168,1,-0.034358602,0.24937941,1,-0.00011138016){1.0072058,0.71839764,0.99121748,1.0446566};
-SS(-0.83248216,0.76782327,-0.31292259,-0.66548665,0.66585508,-0.5,-0.65756371,0.81308934,-0.3429452,-0.6293812,0.63993291,-0.28812602){1.366757,1.1221664,1.1958888,0.87296464};
-SS(-0.11614487,0.30919383,0.33918095,0.11523872,0.30161582,0.5,-0.045146113,0.19012269,0.5,0.050277172,0.20853018,0.30186362){0.20820823,0.33546792,0.27176836,0.12181545};
-SS(0.21543771,0.73213875,-0.5,0.10162062,0.65400865,-0.37913628,0.16368264,0.50834729,-0.5,0.34412919,0.6158316,-0.3427703){0.81134051,0.5665506,0.52115901,0.59958408};
-SS(0.26064395,0.61953306,0.12890567,0.39612945,0.70614162,0.21524614,0.45788353,0.76094781,-0.0096633567,0.24404834,0.79519787,0.082231238){0.45328252,0.68453461,0.76853994,0.68472542};
-SS(-0.77973152,-1,-0.0001062007,-0.79227163,-0.79754897,0.0021844777,-0.86742481,-0.86548068,-0.14483364,-0.8827276,-0.88146034,0.13123348){1.588155,1.2530106,1.5085891,1.5595365};
-SS(-0.89426176,0.41257007,-0.12932618,-1,0.47527469,-0.27513051,-0.80558396,0.5878127,-0.29244037,-0.83127473,0.33505962,-0.32026923){0.974079,1.2834809,1.0616703,0.89071695};
-SS(-0.32294154,0.86180803,0.13108841,-0.47972312,1,0.18932995,-0.42762906,1,-0.0094860889,-0.48952189,0.78345034,0.019065462){0.84829643,1.2473472,1.169501,0.83409809};
-SS(0.70845584,0,0.20819814,0.86971177,0.13024645,0.1427188,0.77985819,0,-0.00014691753,0.63998586,0.17856447,0.051345521){0.52761363,0.77797836,0.58919206,0.42570365};
-SS(-0.65631386,-0.59724887,0.13822882,-0.50537844,-0.68762812,0.023695348,-0.42889738,-0.75253072,0.17523232,-0.61978497,-0.82706917,0.12738472){0.7890621,0.71483247,0.75958282,1.0681409};
-SS(-0.30131805,-0.11512588,-0.5,-0.16707278,-0.087678023,-0.31121894,-0.29413589,0.046284299,-0.31274881,-0.38492375,-0.20017574,-0.33650716){0.3368451,0.11599041,0.1681493,0.28705324};
-SS(0.21543771,0.73213875,-0.5,0.34412919,0.6158316,-0.3427703,0.45062041,0.7833899,-0.5,0.33386283,0.81592026,-0.31808704){0.81134051,0.59958408,1.0506853,0.86115027};
-SS(-0.59094649,-0.40495207,0.12834587,-0.73479965,-0.34302295,0.24038072,-0.76760867,-0.33664988,-0.028298027,-0.82595855,-0.48031431,0.11444494){0.51475101,0.69668046,0.68479998,0.90887195};
-SS(-0.033284914,0.58770906,-0.5,-0.17097214,0.64900986,-0.39927747,-0.20381263,0.45499536,-0.5,-0.01813809,0.53618118,-0.30537166){0.58301644,0.59741335,0.478983,0.36567785};
-SS(-0.8480722,0.62150313,0.12164012,-0.65776896,0.64141588,0.074371921,-0.76389013,0.77728265,0.25513738,-0.67801153,0.56076489,0.29217382){1.1084494,0.83514199,1.2358334,0.83617727};
-SS(-0.74954172,1,0.13574231,-0.76389013,0.77728265,0.25513738,-0.66659408,1,0.32529585,-0.84394966,1,0.33504415){1.562759,1.2358334,1.5364848,1.8084725};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.29168215,-1,-0.20844865,-0.2399131,-0.76005145,-0.25989531,-0.42066299,-0.84356131,-0.12906413){1.0307746,1.1132023,0.6848256,0.88525127};
-SS(-0.31377045,0.30492781,-0.36427962,-0.26297351,0.20404986,-0.17122089,-0.29413589,0.046284299,-0.31274881,-0.1182182,0.15955837,-0.3159857){0.30770932,0.12773981,0.1681493,0.11990198};
-SS(-0.76988954,1,-0.26944904,-0.58934795,0.84141567,-0.18062024,-0.74249217,0.75399014,-0.15399718,-0.65756371,0.81308934,-0.3429452){1.6463902,1.0736489,1.1267767,1.1958888};
-SS(-0.29261734,0.53193925,0.43339885,-0.033588837,0.5879061,0.5,-0.11618574,0.50328545,0.29980467,-0.16015893,0.67694077,0.39025863){0.53993003,0.57806214,0.33969293,0.6265216};
-SS(0.51674933,0.64481281,-0.39755292,0.49866453,0.63973666,-0.21510859,0.68900489,0.77311276,-0.28043733,0.54326203,0.87223293,-0.356993){0.82858869,0.68344633,1.1326816,1.1662147};
-SS(-0.36608751,-0.8951802,0.074405883,-0.22019153,-1,-0.00010416607,-0.22302806,-0.77703925,0.068353305,-0.12988976,-0.86995226,0.20452896){0.92652515,1.0287732,0.64063544,0.79894991};
-SS(-0.36608751,-0.8951802,0.074405883,-0.29157863,-1,0.20827581,-0.22019153,-1,-0.00010416607,-0.12988976,-0.86995226,0.20452896){0.92652515,1.1139248,1.0287732,0.79894991};
-SS(0.60662231,0.34516964,-0.13972301,0.82562789,0.37565656,-0.12707714,0.77491511,0.22516452,-0.26425516,0.67125235,0.44297685,-0.31879306){0.48782847,0.82387041,0.70313431,0.72773009};
-SS(0.5,0,0.5,0.59416595,0.14141347,0.32656529,0.50011436,0,0.27961788,0.42621669,0.19017509,0.30505062){0.47735984,0.46498444,0.30940041,0.29714896};
-SS(-0.19461387,0.3919517,0.10437587,-0.0073778212,0.36022468,0.15230712,-0.13709741,0.19518884,0.034033465,-0.096302334,0.43534175,-0.056072844){0.19075448,0.13675819,0.040184006,0.18078295};
-SS(-0.10743676,0.85847111,-0.11136175,-0.088882135,1,-0.23281641,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142){0.7462212,1.0431215,0.71703623,0.68882385};
-SS(0,-0.7082575,0.2084616,-0.12988976,-0.86995226,0.20452896,0,-0.83845667,0.33864852,-0.22656331,-0.68065623,0.28194433){0.52387062,0.79894991,0.80178572,0.57683818};
-SS(-0.38143574,0.84373572,-0.12387887,-0.222315,1,-0.00011890035,-0.36992714,1,-0.22970445,-0.42762906,1,-0.0094860889){0.85864479,1.0307381,1.1684568,1.169501};
-SS(-0.91347537,0.15552497,0.067511395,-1,0.24865949,0.19540364,-1,-0.00012222908,0.26646899,-0.91004595,0.15296589,0.33139812){0.85045394,1.0814407,1.0506696,0.94743142};
-SS(-0.38143574,0.84373572,-0.12387887,-0.222315,1,-0.00011890035,-0.42762906,1,-0.0094860889,-0.32294154,0.86180803,0.13108841){0.85864479,1.0307381,1.169501,0.84829643};
-SS(-0.10133362,-0.40777162,0.1162396,-0.3548152,-0.48825703,0.21848985,-0.19247216,-0.56000521,0.088357129,-0.1853821,-0.42358473,0.30866054){0.17697987,0.38862106,0.34206231,0.29143101};
-SS(0.36841015,0.87909734,0.37310922,0.55555556,1,0.5,0.45042372,0.78359022,0.5,0.55555177,0.82262944,0.31125158){1.0362544,1.5357742,1.0496179,1.0671623};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.61549046,-0.35581383,-0.12962263,-0.7907607,-0.33838097,-0.28342271,-0.56113743,-0.28920115,-0.29204918){0.5265969,0.50877487,0.80149819,0.46850822};
-SS(-0.59094649,-0.40495207,0.12834587,-0.65631386,-0.59724887,0.13822882,-0.73479965,-0.34302295,0.24038072,-0.82595855,-0.48031431,0.11444494){0.51475101,0.7890621,0.69668046,0.90887195};
-SS(-1,0.25105097,-0.19350143,-0.89426176,0.41257007,-0.12932618,-0.78848723,0.26584533,-0.068869999,-0.83127473,0.33505962,-0.32026923){1.0825888,0.974079,0.68151298,0.89071695};
-SS(-0.60421932,0.82298164,0.34468578,-0.47972312,1,0.18932995,-0.47185361,0.73769401,0.24072705,-0.61311838,0.85766427,0.15491279){1.1449713,1.2473472,0.80384956,1.1216468};
-SS(0.35567295,0.65317229,0.39545235,0.39612945,0.70614162,0.21524614,0.26138985,0.51848551,0.281015,0.22886345,0.79287946,0.30210005){0.69293227,0.68453461,0.40200156,0.75332396};
-SS(0.10211023,0.6404511,0.38011645,0.26138985,0.51848551,0.281015,0.22886345,0.79287946,0.30210005,0.35567295,0.65317229,0.39545235){0.55160362,0.40200156,0.75332396,0.69293227};
-SS(-0.41767704,0.010770256,-0.44072823,-0.58754442,0.033885734,-0.5,-0.49808619,0.0026201378,-0.26387206,-0.62938155,0.17932964,-0.37445272){0.35514259,0.58180393,0.29810596,0.55109073};
-SS(0.11458044,0.70010244,0.010073529,0.25248643,0.73785598,-0.13082591,0.24404834,0.79519787,0.082231238,0.26064395,0.61953306,0.12890567){0.49378055,0.60350215,0.68472542,0.45328252};
-SS(-0.033284914,0.58770906,-0.5,-0.17097214,0.64900986,-0.39927747,0.00024312215,0.80750011,-0.5,-0.18268367,0.83021756,-0.5){0.58301644,0.59741335,0.88610119,0.9573479};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.70710233,0.21356199,-1,-0.47520831,0.27427507,-0.79575191,-0.55547687,0.30538166){1.4119512,1.5280688,1.2822693,1.0192798};
-SS(-1,-0.00021427218,0.00011802244,-0.91347537,0.15552497,0.067511395,-1,-0.00012222908,0.26646899,-0.84289574,0.018333867,0.1608607){0.98080906,0.85045394,1.0506696,0.72430843};
-SS(-0.67616985,-0.069078192,0.18801024,-0.84289574,0.018333867,0.1608607,-0.7489605,0.18190923,0.13647301,-0.76752638,0.004448061,-0.013214377){0.47948004,0.72430843,0.59564173,0.5734925};
-SS(0.82562789,0.37565656,-0.12707714,0.60662231,0.34516964,-0.13972301,0.75922048,0.56990614,-0.17060419,0.67125235,0.44297685,-0.31879306){0.82387041,0.48782847,0.91133836,0.72773009};
-SS(-0.1159097,-0.14329028,0.19302206,-0.34310942,-0.010167032,0.1509038,-0.20045203,0.067929244,0.29301468,-0.15128303,0.02253305,0.11422928){0.055235283,0.12661586,0.10955402,0.025420414};
-SS(-0.4182056,0.11248126,-0.14182463,-0.58258855,0.14037208,-0.067351147,-0.4720473,-0.063494476,-0.036829327,-0.5555987,0.045150158,0.095162244){0.19428145,0.34532741,0.21285629,0.29993682};
-SS(-0.58755791,0.033814853,0.5,-0.52427834,0.10778268,0.27208728,-0.4543958,0.20406131,0.5,-0.40752783,0.030201366,0.5){0.57778723,0.34448415,0.48353653,0.40526498};
-SS(-0.16015893,0.67694077,0.39025863,-0.1827732,0.83017807,0.5,-0.043441254,0.79173928,0.29440137,-0.30949447,0.8262402,0.33528492){0.6265216,0.95598938,0.69563564,0.87388961};
-SS(0.26083053,0.15082484,0.37728795,0.25,0,0.5,0.37501462,0.2307626,0.5,0.12517622,0.12515553,0.5){0.21918499,0.29281005,0.42590445,0.27156885};
-SS(-0.035654771,0.78507762,0.045007896,0.11136938,1,0.13859714,-0.012406168,1,-0.034358602,-0.084253952,1,0.13733396){0.60161266,1.0072058,0.99121748,1.0073117};
-SS(0.10162062,0.65400865,-0.37913628,0.21543771,0.73213875,-0.5,0.00024312215,0.80750011,-0.5,0.081865095,0.80626877,-0.27867109){0.5665506,0.81134051,0.88610119,0.71703623};
-SS(0.37492492,0.49312259,0.5,0.35567295,0.65317229,0.39545235,0.5725222,0.50074158,0.5,0.47723835,0.52605258,0.30619083){0.61809871,0.69293227,0.8121357,0.58228229};
-SS(0.11111111,1,0.5,-0.11111111,1,0.5,-0.014815866,1,0.31001515,0.00029730467,0.80760978,0.5){1.2368521,1.2487078,1.0772324,0.88423684};
-SS(0.87867265,0.36391919,-0.37720578,1,0.2917639,-0.20827961,1,0.50010355,-0.27968748,0.82562789,0.37565656,-0.12707714){1.03034,1.1127834,1.3071084,0.82387041};
-SS(0.11523872,0.30161582,0.5,0.26083053,0.15082484,0.37728795,0.37501462,0.2307626,0.5,0.12517622,0.12515553,0.5){0.33546792,0.21918499,0.42590445,0.27156885};
-SS(-0.12988976,-0.86995226,0.20452896,0,-0.7082575,0.2084616,0,-0.77970171,0.00010845427,-0.22302806,-0.77703925,0.068353305){0.79894991,0.52387062,0.58842154,0.64063544};
-SS(-0.58934795,0.84141567,-0.18062024,-0.61115597,1,-0.10200355,-0.42762906,1,-0.0094860889,-0.38143574,0.84373572,-0.12387887){1.0736489,1.3611038,1.169501,0.85864479};
-SS(-1,-0.25140376,-0.1934451,-0.85520613,-0.46088631,-0.14784569,-1,-0.47540235,-0.27521785,-0.7907607,-0.33838097,-0.28342271){1.0790534,0.95161001,1.2841965,0.80149819};
-SS(-0.29261734,0.53193925,0.43339885,-0.48141868,0.60085372,0.5,-0.35521568,0.4957142,0.26668635,-0.52470763,0.46530444,0.33754711){0.53993003,0.82306978,0.42001946,0.59371518};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.81387526,-0.53653555,-0.3209601,-0.76546557,-0.72634686,-0.27513208,-0.82285362,-0.63420593,-0.0683896){0.7287475,1.0406635,1.1696133,1.0691297};
-SS(-1,-0.70523324,-0.21165758,-0.86742481,-0.86548068,-0.14483364,-0.76546557,-0.72634686,-0.27513208,-0.82285362,-0.63420593,-0.0683896){1.5222776,1.5085891,1.1696133,1.0691297};
-SS(-0.65631386,-0.59724887,0.13822882,-0.79227163,-0.79754897,0.0021844777,-0.61978497,-0.82706917,0.12738472,-0.83996275,-0.66999882,0.11765553){0.7890621,1.2530106,1.0681409,1.1553131};
-SS(-0.62450053,-0.31310845,0.38575928,-0.49284988,-0.37485679,0.5,-0.50874333,-0.23900991,0.2620444,-0.37661764,-0.26006406,0.40868766){0.62379151,0.6163523,0.36443271,0.36234206};
-SS(0.26064395,0.61953306,0.12890567,0.098704003,0.67249079,0.1943501,0.26138985,0.51848551,0.281015,0.22886345,0.79287946,0.30210005){0.45328252,0.47957633,0.40200156,0.75332396};
-SS(0.39612945,0.70614162,0.21524614,0.26064395,0.61953306,0.12890567,0.26138985,0.51848551,0.281015,0.22886345,0.79287946,0.30210005){0.68453461,0.45328252,0.40200156,0.75332396};
-SS(0.0011150345,0.93517443,-0.37389303,0.00024312215,0.80750011,-0.5,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142){1.0026385,0.88610119,0.71703623,0.68882385};
-SS(0.08017426,0.31429474,-0.16745504,0.09693172,0.3918681,-0.3370861,-0.12449617,0.36606215,-0.28273955,-0.01813809,0.53618118,-0.30537166){0.11103103,0.26256104,0.21185338,0.36567785};
-SS(-0.40125956,-0.65699374,0.33213173,-0.42889738,-0.75253072,0.17523232,-0.349759,-0.84853211,0.35590634,-0.57994589,-0.69256437,0.31204703){0.69449311,0.75958282,0.94981364,0.89957508};
-SS(-0.35455825,0.80859576,-0.32177549,-0.18268367,0.83021756,-0.5,-0.23070339,1,-0.34855306,-0.14847812,0.78021305,-0.27623142){0.86460259,0.9573479,1.1599423,0.68882385};
-SS(-0.58754442,0.033885734,-0.5,-0.41767704,0.010770256,-0.44072823,-0.40408872,0.18166381,-0.5,-0.62938155,0.17932964,-0.37445272){0.58180393,0.35514259,0.42526168,0.55109073};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.38492375,-0.20017574,-0.33650716,-0.49808619,0.0026201378,-0.26387206,-0.29413589,0.046284299,-0.31274881){0.11404163,0.28705324,0.29810596,0.1681493};
-SS(-0.63246299,0.29145388,0.035195127,-0.58258855,0.14037208,-0.067351147,-0.7489605,0.18190923,0.13647301,-0.78848723,0.26584533,-0.068869999){0.47226275,0.34532741,0.59564173,0.68151298};
-SS(-0.50537844,-0.68762812,0.023695348,-0.42889738,-0.75253072,0.17523232,-0.61978497,-0.82706917,0.12738472,-0.36608751,-0.8951802,0.074405883){0.71483247,0.75958282,1.0681409,0.92652515};
-SS(0.65062064,0.64268786,0.069510863,0.59365279,0.65503723,0.24444947,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){0.82620698,0.82252715,0.77938072,1.0417018};
-SS(-1,0.25105097,-0.19350143,-0.89804207,0.11676539,-0.10792088,-0.77267892,0.13105707,-0.24874664,-0.78848723,0.26584533,-0.068869999){1.0825888,0.82300022,0.65386325,0.68151298};
-SS(-0.32879066,-0.67072359,-0.5,-0.11754465,-0.65214472,-0.32749638,-0.18848435,-0.81110947,-0.5,-0.14376826,-0.62489354,-0.5){0.79007105,0.53347202,0.92571371,0.6489606};
-SS(-1,0.70529035,-0.21162945,-0.83248216,0.76782327,-0.31292259,-0.74249217,0.75399014,-0.15399718,-0.80558396,0.5878127,-0.29244037){1.520296,1.366757,1.1267767,1.0616703};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.45843014,-0.20445062,-0.15988901,-0.4720473,-0.063494476,-0.036829327,-0.3727858,-0.19869367,0.11195566){0.32068114,0.26094507,0.21285629,0.16948569};
-SS(-0.16015893,0.67694077,0.39025863,-0.033588837,0.5879061,0.5,0.00029730467,0.80760978,0.5,-0.1827732,0.83017807,0.5){0.6265216,0.57806214,0.88423684,0.95598938};
-SS(-1,0.77777778,0.5,-0.87046532,0.63071146,0.35630423,-1,0.84108515,0.33242406,-0.80481649,0.80494069,0.5){1.8402752,1.2666006,1.8031397,1.5232843};
-SS(0.27170325,0.36204749,-0.4201745,0.37549445,0.49317282,-0.5,0.34412919,0.6158316,-0.3427703,0.48047723,0.47791267,-0.33071402){0.36885377,0.61648995,0.59958408,0.55795418};
-SS(0.13913358,0.10014326,0.18199659,0.29175541,0,0.20824909,0.25126435,0.28098512,0.24657435,0.26083053,0.15082484,0.37728795){0.045990896,0.1093371,0.18575023,0.21918499};
-SS(-0.32897755,-0.67088709,0.5,-0.34549718,-0.50098866,0.4105565,-0.14394692,-0.62481063,0.5,-0.22656331,-0.68065623,0.28194433){0.79643001,0.5260109,0.63866347,0.57683818};
-SS(0.37492492,0.49312259,0.5,0.27123349,0.36190713,0.41476339,0.26138985,0.51848551,0.281015,0.47723835,0.52605258,0.30619083){0.61809871,0.36300231,0.40200156,0.58228229};
-SS(-1,-0.24887753,0.1953112,-0.89646962,-0.32955067,0.34017365,-0.73479965,-0.34302295,0.24038072,-0.82279039,-0.18997945,0.10657137){1.0768014,1.0133061,0.69668046,0.70945047};
-SS(-1,-0.5000565,0.0033661208,-0.85520613,-0.46088631,-0.14784569,-0.76760867,-0.33664988,-0.028298027,-0.82595855,-0.48031431,0.11444494){1.2263361,0.95161001,0.68479998,0.90887195};
-SS(0.098704003,0.67249079,0.1943501,0.10211023,0.6404511,0.38011645,0.26138985,0.51848551,0.281015,0.22886345,0.79287946,0.30210005){0.47957633,0.55160362,0.40200156,0.75332396};
-SS(-0.65776896,0.64141588,0.074371921,-0.79370724,0.81084643,0.045877226,-0.74249217,0.75399014,-0.15399718,-0.8068077,0.56885008,-0.063754108){0.83514199,1.270911,1.1267767,0.96112076};
-SS(-0.68637718,0.43295764,-0.18031685,-0.89426176,0.41257007,-0.12932618,-0.80558396,0.5878127,-0.29244037,-0.83127473,0.33505962,-0.32026923){0.67437813,0.974079,1.0616703,0.89071695};
-SS(-1,-1,-6.9388939e-15,-0.8827276,-0.88146034,0.13123348,-0.77973152,-1,-0.0001062007,-0.86742481,-0.86548068,-0.14483364){1.9831286,1.5595365,1.588155,1.5085891};
-SS(0.33333333,1,-0.5,0.33386283,0.81592026,-0.31808704,0.43683247,1,-0.26068681,0.2222976,1,-0.35617554){1.342474,0.86115027,1.2435523,1.1585843};
-SS(-0.36174,-0.40052234,-0.23665811,-0.15923414,-0.34171533,-0.15079999,-0.23583358,-0.36008743,0.0071767184,-0.18618058,-0.5161726,-0.15035515){0.32480953,0.14783141,0.16465457,0.30914003};
-SS(-0.50400314,-0.78879927,0.5,-0.40125956,-0.65699374,0.33213173,-0.349759,-0.84853211,0.35590634,-0.57994589,-0.69256437,0.31204703){1.1086821,0.69449311,0.94981364,0.89957508};
-SS(-0.65631386,-0.59724887,0.13822882,-0.61978497,-0.82706917,0.12738472,-0.42889738,-0.75253072,0.17523232,-0.57994589,-0.69256437,0.31204703){0.7890621,1.0681409,0.75958282,0.89957508};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.10743676,0.85847111,-0.11136175,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142){0.41358858,0.7462212,0.71703623,0.68882385};
-SS(-0.89962374,0.8609561,-0.16698164,-1,1,-0.25,-0.76988954,1,-0.26944904,-1,0.83964442,-0.3309874){1.5692753,2.0450698,1.6463902,1.7979585};
-SS(-0.29261734,0.53193925,0.43339885,-0.033588837,0.5879061,0.5,-0.18136176,0.40461939,0.5,-0.11618574,0.50328545,0.29980467){0.53993003,0.57806214,0.42386795,0.33969293};
-SS(-0.8827276,-0.88146034,0.13123348,-1,-1,-6.9388939e-15,-1,-0.77608598,0.00064487429,-0.86742481,-0.86548068,-0.14483364){1.5595365,1.9831286,1.5844414,1.5085891};
-SS(-0.61503712,0.4760032,-0.5,-0.63048479,0.37587985,-0.34368186,-0.50782983,0.50249565,-0.29902586,-0.6293812,0.63993291,-0.28812602){0.83978547,0.64388066,0.58612549,0.87296464};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.36174,-0.40052234,-0.23665811,-0.56113743,-0.28920115,-0.29204918,-0.45843014,-0.20445062,-0.15988901){0.50877487,0.32480953,0.46850822,0.26094507};
-SS(-0.1159097,-0.14329028,0.19302206,0,0,-6.9388939e-15,0,-0.22019801,5.0496855e-05,-0.20656092,-0.13938028,0.029547229){0.055235283,-0.017891206,0.029059683,0.048278496};
-SS(-0.93582873,0.86427167,0.14668289,-1,1,-6.9388939e-15,-0.81095336,1,-0.07156149,-0.79370724,0.81084643,0.045877226){1.6320629,1.9810426,1.6471359,1.270911};
-SS(0.66554141,0.67524133,0.5,0.64232771,0.84838332,0.46476191,0.81191124,0.80644944,0.5,0.76099919,0.76690574,0.25750996){1.1271263,1.3339184,1.5425973,1.2143065};
-SS(-0.66548665,0.66585508,-0.5,-0.83248216,0.76782327,-0.31292259,-0.80558396,0.5878127,-0.29244037,-0.6293812,0.63993291,-0.28812602){1.1221664,1.366757,1.0616703,0.87296464};
-SS(-0.89663862,-0.69397302,0.37275403,-0.67513028,-0.66529728,0.5,-0.80635543,-0.81164184,0.5,-0.77091496,-0.77159441,0.2629049){1.4119512,1.1284607,1.5410993,1.2433034};
-SS(-0.69937107,0.31347586,0.5,-0.61674646,0.25215289,0.3447871,-0.83006559,0.18329805,0.5,-0.83851866,0.33014205,0.32623765){0.8165723,0.54607287,0.96159482,0.89937894};
-SS(-0.11614487,0.30919383,0.33918095,0.11523872,0.30161582,0.5,0.050277172,0.20853018,0.30186362,0.085954007,0.41736025,0.32943097){0.20820823,0.33546792,0.12181545,0.27115576};
-SS(-0.3548152,-0.48825703,0.21848985,-0.3533559,-0.49437708,0.037576204,-0.23583358,-0.36008743,0.0071767184,-0.19247216,-0.56000521,0.088357129){0.38862106,0.35575629,0.16465457,0.34206231};
-SS(-0.056808231,0.14323286,-0.13367928,-0.26297351,0.20404986,-0.17122089,-0.12449617,0.36606215,-0.28273955,-0.1182182,0.15955837,-0.3159857){0.022140076,0.12773981,0.21185338,0.11990198};
-SS(-0.63246299,0.29145388,0.035195127,-0.7489605,0.18190923,0.13647301,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999){0.47226275,0.59564173,0.80968993,0.68151298};
-SS(-0.11754465,-0.65214472,-0.32749638,-0.32879066,-0.67072359,-0.5,-0.2399131,-0.76005145,-0.25989531,-0.26056819,-0.54975154,-0.34323516){0.53347202,0.79007105,0.6848256,0.46884495};
-SS(-0.67495489,-0.6652659,-0.5,-0.91414606,-0.68082467,-0.37109558,-0.76546557,-0.72634686,-0.27513208,-0.81387526,-0.53653555,-0.3209601){1.1276355,1.4249306,1.1696133,1.0406635};
-SS(0.24635331,0.35131343,-0.096025322,0.08017426,0.31429474,-0.16745504,0.34662081,0.36199915,-0.25068724,0.20129651,0.21389912,-0.31902192){0.18045455,0.11103103,0.29696992,0.16839385};
-SS(-0.33333333,1,-0.5,-0.35455825,0.80859576,-0.32177549,-0.18268367,0.83021756,-0.5,-0.23070339,1,-0.34855306){1.3407278,0.86460259,0.9573479,1.1599423};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.4182056,0.11248126,-0.14182463,-0.49808619,0.0026201378,-0.26387206,-0.4720473,-0.063494476,-0.036829327){0.11404163,0.19428145,0.29810596,0.21285629};
-SS(-0.76546557,-0.72634686,-0.27513208,-0.79227163,-0.79754897,0.0021844777,-0.82285362,-0.63420593,-0.0683896,-0.86742481,-0.86548068,-0.14483364){1.1696133,1.2530106,1.0691297,1.5085891};
-SS(0.68985253,1,-0.19792707,0.8781758,0.86708556,-0.1989731,0.78186447,1,3.3673518e-05,0.77861211,0.77861193,-0.067175459){1.495304,1.5462283,1.5923176,1.1981052};
-SS(-0.61674646,0.25215289,0.3447871,-0.83006559,0.18329805,0.5,-0.83851866,0.33014205,0.32623765,-0.72768327,0.10310141,0.33233484){0.54607287,0.96159482,0.89937894,0.63492881};
-SS(0.88354722,0.11667767,-0.13069643,1,0.16156328,-0.33847781,0.83867599,0,-0.33865964,0.77491511,0.22516452,-0.26425516){0.79839767,1.1261583,0.80182539,0.70313431};
-SS(-0.043441254,0.79173928,0.29440137,-0.22223836,1,0.2622369,-0.014815866,1,0.31001515,-0.084253952,1,0.13733396){0.69563564,1.0984067,1.0772324,1.0073117};
-SS(-0.64009684,-0.10188458,0.37412975,-0.67616985,-0.069078192,0.18801024,-0.84084014,-0.14895162,0.31636914,-0.72768327,0.10310141,0.33233484){0.54631619,0.47948004,0.81273381,0.63492881};
-SS(-0.49391083,0.27907498,-0.27264436,-0.31377045,0.30492781,-0.36427962,-0.50782983,0.50249565,-0.29902586,-0.34372617,0.39779568,-0.18541051){0.37398026,0.30770932,0.58612549,0.29650146};
-SS(-0.93582873,0.86427167,0.14668289,-0.84394966,1,0.33504415,-1,0.84108515,0.33242406,-0.76389013,0.77728265,0.25513738){1.6320629,1.8084725,1.8031397,1.2358334};
-SS(0.81143387,0.18901581,0.5,0.59416595,0.14141347,0.32656529,0.62515059,0.14422159,0.5,0.73568363,0.23203612,0.2735765){0.9265446,0.46498444,0.64726001,0.6509231};
-SS(-1,1,-6.9388939e-15,-0.93582873,0.86427167,0.14668289,-1,0.77631186,0.00053339564,-0.79370724,0.81084643,0.045877226){1.9810426,1.6320629,1.5817554,1.270911};
-SS(-0.47972312,1,0.18932995,-0.61311838,0.85766427,0.15491279,-0.42762906,1,-0.0094860889,-0.48952189,0.78345034,0.019065462){1.2473472,1.1216468,1.169501,0.83409809};
-SS(0.37492492,0.49312259,0.5,0.27123349,0.36190713,0.41476339,0.47723835,0.52605258,0.30619083,0.50761134,0.34933779,0.39015973){0.61809871,0.36300231,0.58228229,0.51484928};
-SS(-0.033588837,0.5879061,0.5,0.10211023,0.6404511,0.38011645,-0.11618574,0.50328545,0.29980467,-0.16015893,0.67694077,0.39025863){0.57806214,0.55160362,0.33969293,0.6265216};
-SS(1,0.2203628,5.6826691e-05,0.74440038,0.22095066,-0.087839409,0.82562789,0.37565656,-0.12707714,0.88354722,0.11667767,-0.13069643){1.0268649,0.59875958,0.82387041,0.79839767};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.24635331,0.35131343,-0.096025322,0.36021608,0.23247759,-0.012351094,0.18202227,0.38279251,0.10350409){0.32377482,0.18045455,0.16110593,0.17617817};
-SS(0.52843461,0.32737897,0.19102935,0.59416595,0.14141347,0.32656529,0.73568363,0.23203612,0.2735765,0.50761134,0.34933779,0.39015973){0.40790135,0.46498444,0.6509231,0.51484928};
-SS(0.24635331,0.35131343,-0.096025322,0.08017426,0.31429474,-0.16745504,0.20129651,0.21389912,-0.31902192,0.13402468,0.11673163,-0.1460819){0.18045455,0.11103103,0.16839385,0.039337265};
-SS(0.671223,0.32907594,-0.5,0.50136923,0.34587735,-0.44862257,0.51910919,0.22553632,-0.31417891,0.67125235,0.44297685,-0.31879306){0.79435762,0.56260896,0.40112301,0.72773009};
-SS(-0.58258855,0.14037208,-0.067351147,-0.65355936,0.25468043,-0.1897796,-0.77267892,0.13105707,-0.24874664,-0.78848723,0.26584533,-0.068869999){0.34532741,0.51379882,0.65386325,0.68151298};
-SS(-0.58934795,0.84141567,-0.18062024,-0.48255002,0.69900846,-0.19155417,-0.48952189,0.78345034,0.019065462,-0.62332411,0.59900263,-0.10904345){1.0736489,0.74365966,0.83409809,0.74800561};
-SS(0,-0.49997946,0.00010199173,-0.10133362,-0.40777162,0.1162396,-0.23583358,-0.36008743,0.0071767184,-0.19247216,-0.56000521,0.088357129){0.22811872,0.17697987,0.16465457,0.34206231};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.18202227,0.38279251,0.10350409,0.36021608,0.23247759,-0.012351094,0.36016656,0.41044152,0.1594367){0.32377482,0.17617817,0.16110593,0.3073722};
-SS(-0.8827276,-0.88146034,0.13123348,-1,-0.84092895,0.33252059,-0.8385203,-1,0.33846229,-0.77091496,-0.77159441,0.2629049){1.5595365,1.8030746,1.8024192,1.2433034};
-SS(-0.58755791,0.033814853,0.5,-0.72768327,0.10310141,0.33233484,-0.80727304,0.00024662976,0.5,-0.83006559,0.18329805,0.5){0.57778723,0.63492881,0.88515177,0.96159482};
-SS(-0.63348211,-0.7706683,-0.074889286,-0.79227163,-0.79754897,0.0021844777,-0.76546557,-0.72634686,-0.27513208,-0.86742481,-0.86548068,-0.14483364){0.97907785,1.2530106,1.1696133,1.5085891};
-SS(0.61535375,0.70719289,-0.095218388,0.65062064,0.64268786,0.069510863,0.75922048,0.56990614,-0.17060419,0.77861211,0.77861193,-0.067175459){0.87858083,0.82620698,0.91133836,1.1981052};
-SS(-0.91414606,-0.68082467,-0.37109558,-1,-0.70523324,-0.21165758,-0.76546557,-0.72634686,-0.27513208,-0.81387526,-0.53653555,-0.3209601){1.4249306,1.5222776,1.1696133,1.0406635};
-SS(-0.16643696,-0.21791406,0.42402077,0,0,0.5,0,-0.25,0.5,0,-0.16137283,0.3386068){0.23818505,0.23153294,0.28720824,0.12565914};
-SS(-0.83248216,0.76782327,-0.31292259,-0.76988954,1,-0.26944904,-1,0.83964442,-0.3309874,-0.89962374,0.8609561,-0.16698164){1.366757,1.6463902,1.7979585,1.5692753};
-SS(0.50136923,0.34587735,-0.44862257,0.37532516,0.23078833,-0.5,0.34662081,0.36199915,-0.25068724,0.27170325,0.36204749,-0.4201745){0.56260896,0.42551454,0.29696992,0.36885377};
-SS(-0.67513028,-0.66529728,0.5,-0.63815223,-0.88141187,0.37488811,-0.77091496,-0.77159441,0.2629049,-0.57994589,-0.69256437,0.31204703){1.1284607,1.3088768,1.2433034,0.89957508};
-SS(-0.32879066,-0.67072359,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.18848435,-0.81110947,-0.5,-0.2399131,-0.76005145,-0.25989531){0.79007105,1.0307746,0.92571371,0.6848256};
-SS(-0.48141868,0.60085372,0.5,-0.52470763,0.46530444,0.33754711,-0.61509744,0.47589965,0.5,-0.67801153,0.56076489,0.29217382){0.82306978,0.59371518,0.84259202,0.83617727};
-SS(0.87867265,0.36391919,-0.37720578,0.81149777,0.18885984,-0.5,1,0.16156328,-0.33847781,0.77491511,0.22516452,-0.26425516){1.03034,0.92750237,1.1261583,0.70313431};
-SS(0,-0.7082575,0.2084616,-0.12988976,-0.86995226,0.20452896,-0.22656331,-0.68065623,0.28194433,-0.22302806,-0.77703925,0.068353305){0.52387062,0.79894991,0.57683818,0.64063544};
-SS(0.70845584,0,0.20819814,0.59416595,0.14141347,0.32656529,0.83866368,0,0.33843958,0.73568363,0.23203612,0.2735765){0.52761363,0.46498444,0.80106313,0.6509231};
-SS(-0.67616985,-0.069078192,0.18801024,-0.84289574,0.018333867,0.1608607,-0.84084014,-0.14895162,0.31636914,-0.72768327,0.10310141,0.33233484){0.47948004,0.72430843,0.81273381,0.63492881};
-SS(0.34720309,0.90097601,-0.12745168,0.25248643,0.73785598,-0.13082591,0.24404834,0.79519787,0.082231238,0.094968532,0.84539386,-0.087484586){0.93504792,0.60350215,0.68472542,0.71839764};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.65956212,-0.52273243,-0.19262862,-0.7907607,-0.33838097,-0.28342271,-0.62341011,-0.46880832,-0.38153973){0.50877487,0.7287475,0.80149819,0.73807879};
-SS(1,0.2917639,-0.20827961,0.88354722,0.11667767,-0.13069643,1,0.2203628,5.6826691e-05,0.82562789,0.37565656,-0.12707714){1.1127834,0.79839767,1.0268649,0.82387041};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.7907607,-0.33838097,-0.28342271,-0.56113743,-0.28920115,-0.29204918,-0.62341011,-0.46880832,-0.38153973){0.50877487,0.80149819,0.46850822,0.73807879};
-SS(-0.5555987,0.045150158,0.095162244,-0.67616985,-0.069078192,0.18801024,-0.7489605,0.18190923,0.13647301,-0.76752638,0.004448061,-0.013214377){0.29993682,0.47948004,0.59564173,0.5734925};
-SS(0.74440038,0.22095066,-0.087839409,0.77985819,0,-0.00014691753,0.63998586,0.17856447,0.051345521,0.57129187,0.13526053,-0.13726946){0.59875958,0.58919206,0.42570365,0.35115136};
-SS(0,-0.75,-0.5,-0.11754465,-0.65214472,-0.32749638,0,-0.5,-0.5,-0.14376826,-0.62489354,-0.5){0.79460868,0.53347202,0.4845449,0.6489606};
-SS(0,-1,-0.5,0,-0.75,-0.5,-0.18848435,-0.81110947,-0.5,0,-0.83851883,-0.33849865){1.2333742,0.79460868,0.92571371,0.80235204};
-SS(-0.79227163,-0.79754897,0.0021844777,-0.63348211,-0.7706683,-0.074889286,-0.76546557,-0.72634686,-0.27513208,-0.82285362,-0.63420593,-0.0683896){1.2530106,0.97907785,1.1696133,1.0691297};
-SS(1,0,-0.5,1,0.25,-0.5,0.81149777,0.18885984,-0.5,1,0.16156328,-0.33847781){1.2327879,1.2935113,0.92750237,1.1261583};
-SS(0.75,0,-0.5,1,0,-0.5,0.81149777,0.18885984,-0.5,0.83867599,0,-0.33865964){0.79494611,1.2327879,0.92750237,0.80182539};
-SS(0.87881231,0.64063264,0.37220388,1,0.5,0.5,0.78912399,0.50423732,0.5,0.87272604,0.35900693,0.37172569){1.3069719,1.484684,1.1096027,1.0107603};
-SS(0,-1,0.5,0,-0.75,0.5,0,-0.83845667,0.33864852,-0.18863677,-0.81113033,0.5){1.232491,0.79557901,0.80178572,0.92459822};
-SS(0.77777778,1,0.5,0.64232771,0.84838332,0.46476191,0.82853688,1,0.32125076,0.81191124,0.80644944,0.5){1.8450917,1.3339184,1.7703132,1.5425973};
-SS(-0.5,-1,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.50377808,-0.78884267,-0.5,-0.6448883,-0.87343314,-0.36731947){1.4844013,1.0307746,1.1087956,1.296688};
-SS(-0.25,-1,-0.5,0,-1,-0.5,-0.18848435,-0.81110947,-0.5,-0.16144976,-1,-0.33863959){1.2929607,1.2333742,0.92571371,1.1250711};
-SS(1,0,0.5,1,0.25,0.5,1,0.16158711,0.33859063,0.81143387,0.18901581,0.5){1.2336156,1.2942978,1.1259698,0.9265446};
-SS(-0.58755791,0.033814853,0.5,-0.61674646,0.25215289,0.3447871,-0.4543958,0.20406131,0.5,-0.52427834,0.10778268,0.27208728){0.57778723,0.54607287,0.48353653,0.34448415};
-SS(-0.58754442,0.033885734,-0.5,-0.64012388,-0.10177177,-0.37237302,-0.49808619,0.0026201378,-0.26387206,-0.62938155,0.17932964,-0.37445272){0.58180393,0.54269073,0.29810596,0.55109073};
-SS(0.18202227,0.38279251,0.10350409,-0.0073778212,0.36022468,0.15230712,0.25126435,0.28098512,0.24657435,0.085954007,0.41736025,0.32943097){0.17617817,0.13675819,0.18575023,0.27115576};
-SS(-0.25,-1,0.5,0,-1,0.5,-0.16134158,-1,0.33850563,-0.18863677,-0.81113033,0.5){1.2918821,1.232491,1.129042,0.92459822};
-SS(-0.58934795,0.84141567,-0.18062024,-0.61115597,1,-0.10200355,-0.36992714,1,-0.22970445,-0.56041637,1,-0.29784853){1.0736489,1.3611038,1.1684568,1.3856141};
-SS(0.27170325,0.36204749,-0.4201745,0.37549445,0.49317282,-0.5,0.16368264,0.50834729,-0.5,0.34412919,0.6158316,-0.3427703){0.36885377,0.61648995,0.52115901,0.59958408};
-SS(0.75,0,0.5,1,0,0.5,0.83866368,0,0.33843958,0.81143387,0.18901581,0.5){0.79262349,1.2336156,0.80106313,0.9265446};
-SS(-0.01813809,0.53618118,-0.30537166,-0.20381263,0.45499536,-0.5,-0.029932551,0.40748663,-0.5,-0.12449617,0.36606215,-0.28273955){0.36567785,0.478983,0.4038008,0.21185338};
-SS(1,0.5,0.5,0.87881231,0.64063264,0.37220388,1,0.50005385,0.27984222,0.87272604,0.35900693,0.37172569){1.484684,1.3069719,1.3085441,1.0107603};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.5,-1,-0.5,-0.49995867,-1,-0.27986665,-0.6448883,-0.87343314,-0.36731947){1.0307746,1.4844013,1.3082069,1.296688};
-SS(-0.63815223,-0.88141187,0.37488811,-0.8385203,-1,0.33846229,-0.80635543,-0.81164184,0.5,-0.77091496,-0.77159441,0.2629049){1.3088768,1.8024192,1.5410993,1.2433034};
-SS(0.55555556,1,-0.5,0.54326203,0.87223293,-0.356993,0.33333333,1,-0.5,0.45062041,0.7833899,-0.5){1.5352494,1.1662147,1.342474,1.0506853};
-SS(0.43654676,1,0.2604635,0.36841015,0.87909734,0.37310922,0.23106485,1,0.31398279,0.40637652,0.87094343,0.13060843){1.2403655,1.0362544,1.1340577,0.92399337};
-SS(-0.24000819,0.17660305,0.5,-0.20045203,0.067929244,0.29301468,-0.045146113,0.19012269,0.5,-0.17669296,0.011023676,0.5){0.3210912,0.10955402,0.27176836,0.26322593};
-SS(-0.10743676,0.85847111,-0.11136175,-0.0089783977,0.64320989,-0.13441642,-0.2401666,0.74114092,-0.051302261,-0.14847812,0.78021305,-0.27623142){0.7462212,0.41358858,0.58653028,0.68882385};
-SS(0.77491511,0.22516452,-0.26425516,0.87867265,0.36391919,-0.37720578,0.67125235,0.44297685,-0.31879306,0.82562789,0.37565656,-0.12707714){0.70313431,1.03034,0.72773009,0.82387041};
-SS(-0.26986228,0.26051837,0.22418657,-0.10037172,0.18891947,0.20844359,-0.20045203,0.067929244,0.29301468,-0.15128303,0.02253305,0.11422928){0.1749353,0.074828316,0.10955402,0.025420414};
-SS(-0.89646962,-0.32955067,0.34017365,-0.73479965,-0.34302295,0.24038072,-0.79575191,-0.55547687,0.30538166,-0.82595855,-0.48031431,0.11444494){1.0133061,0.69668046,1.0192798,0.90887195};
-SS(0.87867265,0.36391919,-0.37720578,0.671223,0.32907594,-0.5,0.81149777,0.18885984,-0.5,0.77491511,0.22516452,-0.26425516){1.03034,0.79435762,0.92750237,0.70313431};
-SS(-0.79227163,-0.79754897,0.0021844777,-0.77973152,-1,-0.0001062007,-0.61978497,-0.82706917,0.12738472,-0.8827276,-0.88146034,0.13123348){1.2530106,1.588155,1.0681409,1.5595365};
-SS(0,-0.29157012,0.20836692,-0.16643696,-0.21791406,0.42402077,0,-0.16137283,0.3386068,-0.1159097,-0.14329028,0.19302206){0.11172813,0.23818505,0.12565914,0.055235283};
-SS(-0.58258855,0.14037208,-0.067351147,-0.5555987,0.045150158,0.095162244,-0.7489605,0.18190923,0.13647301,-0.76752638,0.004448061,-0.013214377){0.34532741,0.29993682,0.59564173,0.5734925};
-SS(0.8781758,0.86708556,-0.1989731,0.68985253,1,-0.19792707,0.68900489,0.77311276,-0.28043733,0.77861211,0.77861193,-0.067175459){1.5462283,1.495304,1.1326816,1.1981052};
-SS(-0.66546973,0.66566005,0.5,-0.67801153,0.56076489,0.29217382,-0.48141868,0.60085372,0.5,-0.61509744,0.47589965,0.5){1.1224691,0.83617727,0.82306978,0.84259202};
-SS(-0.41767704,0.010770256,-0.44072823,-0.50815189,-0.16301678,-0.5,-0.49808619,0.0026201378,-0.26387206,-0.64012388,-0.10177177,-0.37237302){0.35514259,0.52110597,0.29810596,0.54269073};
-SS(-0.80727304,0.00024662976,0.5,-0.64009684,-0.10188458,0.37412975,-0.84084014,-0.14895162,0.31636914,-0.72768327,0.10310141,0.33233484){0.88515177,0.54631619,0.81273381,0.63492881};
-SS(0.10211023,0.6404511,0.38011645,-0.033588837,0.5879061,0.5,-0.11618574,0.50328545,0.29980467,0.085954007,0.41736025,0.32943097){0.55160362,0.57806214,0.33969293,0.27115576};
-SS(0.24937941,1,-0.00011138016,0.34720309,0.90097601,-0.12745168,0.24404834,0.79519787,0.082231238,0.094968532,0.84539386,-0.087484586){1.0446566,0.93504792,0.68472542,0.71839764};
-SS(-0.222315,1,-0.00011890035,-0.10743676,0.85847111,-0.11136175,-0.2401666,0.74114092,-0.051302261,-0.38143574,0.84373572,-0.12387887){1.0307381,0.7462212,0.58653028,0.85864479};
-SS(-0.74954172,1,0.13574231,-0.93582873,0.86427167,0.14668289,-0.81095336,1,-0.07156149,-0.79370724,0.81084643,0.045877226){1.562759,1.6320629,1.6471359,1.270911};
-SS(-0.10133362,-0.40777162,0.1162396,0,-0.29157012,0.20836692,-0.25897908,-0.24013326,0.26450313,-0.1853821,-0.42358473,0.30866054){0.17697987,0.11172813,0.17775565,0.29143101};
-SS(0.77985819,0,-0.00014691753,0.74440038,0.22095066,-0.087839409,0.63998586,0.17856447,0.051345521,0.86971177,0.13024645,0.1427188){0.58919206,0.59875958,0.42570365,0.77797836};
-SS(0.57129187,0.13526053,-0.13726946,0.60662231,0.34516964,-0.13972301,0.77491511,0.22516452,-0.26425516,0.51910919,0.22553632,-0.31417891){0.35115136,0.48782847,0.70313431,0.40112301};
-SS(1,0.75,-0.5,1,1,-0.5,0.81205362,0.80656044,-0.5,1,0.83864447,-0.33847614){1.7924126,2.2331531,1.5391707,1.8065101};
-SS(-0.1159097,-0.14329028,0.19302206,-0.34310942,-0.010167032,0.1509038,-0.20656092,-0.13938028,0.029547229,-0.3727858,-0.19869367,0.11195566){0.055235283,0.12661586,0.048278496,0.16948569};
-SS(1,0.75,0.5,1,1,0.5,1,0.83856906,0.33864755,0.81191124,0.80644944,0.5){1.7930237,2.2317116,1.8033242,1.5425973};
-SS(0.35567295,0.65317229,0.39545235,0.37492492,0.49312259,0.5,0.21512427,0.73211919,0.5,0.16321322,0.50838432,0.5){0.69293227,0.61809871,0.81521474,0.52238519};
-SS(-0.82595855,-0.48031431,0.11444494,-0.65631386,-0.59724887,0.13822882,-0.73479965,-0.34302295,0.24038072,-0.79575191,-0.55547687,0.30538166){0.90887195,0.7890621,0.69668046,1.0192798};
-SS(0.55555556,1,0.5,0.36841015,0.87909734,0.37310922,0.33333333,1,0.5,0.43654676,1,0.2604635){1.5357742,1.0362544,1.3466764,1.2403655};
-SS(0.34662081,0.36199915,-0.25068724,0.27170325,0.36204749,-0.4201745,0.34412919,0.6158316,-0.3427703,0.48047723,0.47791267,-0.33071402){0.29696992,0.36885377,0.59958408,0.55795418};
-SS(-0.62938155,0.17932964,-0.37445272,-0.58754442,0.033885734,-0.5,-0.80728146,0.00010990719,-0.5,-0.82994199,0.18319278,-0.5){0.55109073,0.58180393,0.88195685,0.95993957};
-SS(-1,-1,0.5,-0.75,-1,0.5,-0.8385203,-1,0.33846229,-0.80635543,-0.81164184,0.5){2.2322143,1.7943537,1.8024192,1.5410993};
-SS(-0.62938155,0.17932964,-0.37445272,-0.82994199,0.18319278,-0.5,-0.77267892,0.13105707,-0.24874664,-0.83127473,0.33505962,-0.32026923){0.55109073,0.95993957,0.65386325,0.89071695};
-SS(-1,-1,-0.5,-0.75,-1,-0.5,-0.80632325,-0.81147186,-0.5,-0.83846289,-1,-0.33858677){2.2321573,1.7946951,1.5409894,1.8019179};
-SS(-0.47972312,1,0.18932995,-0.61311838,0.85766427,0.15491279,-0.48952189,0.78345034,0.019065462,-0.32294154,0.86180803,0.13108841){1.2473472,1.1216468,0.83409809,0.84829643};
-SS(0.11458044,0.70010244,0.010073529,-0.0089783977,0.64320989,-0.13441642,0.086744979,0.52712982,0.027891324,-0.098708274,0.55956225,0.10505678){0.49378055,0.41358858,0.26660844,0.31633913};
-SS(-0.67513028,-0.66529728,0.5,-0.63815223,-0.88141187,0.37488811,-0.80635543,-0.81164184,0.5,-0.77091496,-0.77159441,0.2629049){1.1284607,1.3088768,1.5410993,1.2433034};
-SS(-1,-0.47520831,0.27427507,-0.89646962,-0.32955067,0.34017365,-0.79575191,-0.55547687,0.30538166,-0.82595855,-0.48031431,0.11444494){1.2822693,1.0133061,1.0192798,0.90887195};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.14850787,-0.69358405,-0.087583548,-0.2399131,-0.76005145,-0.25989531,-0.18618058,-0.5161726,-0.15035515){0.52757348,0.49763432,0.6848256,0.30914003};
-SS(0,-0.49989758,0.27983937,-0.10133362,-0.40777162,0.1162396,-0.19247216,-0.56000521,0.088357129,-0.1853821,-0.42358473,0.30866054){0.30650831,0.17697987,0.34206231,0.29143101};
-SS(-1,0.24865949,0.19540364,-0.91004595,0.15296589,0.33139812,-0.7489605,0.18190923,0.13647301,-0.83851866,0.33014205,0.32623765){1.0814407,0.94743142,0.59564173,0.89937894};
-SS(-0.7489605,0.18190923,0.13647301,-0.61674646,0.25215289,0.3447871,-0.83851866,0.33014205,0.32623765,-0.72768327,0.10310141,0.33233484){0.59564173,0.54607287,0.89937894,0.63492881};
-SS(-0.63048479,0.37587985,-0.34368186,-0.68637718,0.43295764,-0.18031685,-0.80558396,0.5878127,-0.29244037,-0.83127473,0.33505962,-0.32026923){0.64388066,0.67437813,1.0616703,0.89071695};
-SS(0,-0.22019801,5.0496855e-05,-0.15923414,-0.34171533,-0.15079999,-0.20656092,-0.13938028,0.029547229,-0.098950987,-0.13391411,-0.14594667){0.029059683,0.14783141,0.048278496,0.03512721};
-SS(-0.93582873,0.86427167,0.14668289,-0.74954172,1,0.13574231,-0.84394966,1,0.33504415,-0.76389013,0.77728265,0.25513738){1.6320629,1.562759,1.8084725,1.2358334};
-SS(0.74440038,0.22095066,-0.087839409,0.70841775,0,-0.20847891,0.77985819,0,-0.00014691753,0.57129187,0.13526053,-0.13726946){0.59875958,0.52293439,0.58919206,0.35115136};
-SS(-0.58934795,0.84141567,-0.18062024,-0.42762906,1,-0.0094860889,-0.48952189,0.78345034,0.019065462,-0.38143574,0.84373572,-0.12387887){1.0736489,1.169501,0.83409809,0.85864479};
-SS(-0.54640726,0.34339216,0.19847863,-0.39806707,0.15776443,0.15870839,-0.26986228,0.26051837,0.22418657,-0.41843781,0.30742585,0.3397996){0.43575493,0.19317292,0.1749353,0.37011438};
-SS(-0.34310942,-0.010167032,0.1509038,-0.3727858,-0.19869367,0.11195566,-0.4720473,-0.063494476,-0.036829327,-0.20656092,-0.13938028,0.029547229){0.12661586,0.16948569,0.21285629,0.048278496};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.49997946,0.00010199173,-0.23583358,-0.36008743,0.0071767184,-0.18618058,-0.5161726,-0.15035515){0.14783141,0.22811872,0.16465457,0.30914003};
-SS(-0.8827276,-0.88146034,0.13123348,-0.70832062,-1,0.2082538,-0.77973152,-1,-0.0001062007,-0.61978497,-0.82706917,0.12738472){1.5595365,1.5291125,1.588155,1.0681409};
-SS(0.27170325,0.36204749,-0.4201745,0.11583535,0.30145324,-0.5,0.37532516,0.23078833,-0.5,0.20129651,0.21389912,-0.31902192){0.36885377,0.33954703,0.42551454,0.16839385};
-SS(-0.34310942,-0.010167032,0.1509038,-0.1159097,-0.14329028,0.19302206,-0.25897908,-0.24013326,0.26450313,-0.3727858,-0.19869367,0.11195566){0.12661586,0.055235283,0.17775565,0.16948569};
-SS(-0.61311838,0.85766427,0.15491279,-0.47185361,0.73769401,0.24072705,-0.48952189,0.78345034,0.019065462,-0.32294154,0.86180803,0.13108841){1.1216468,0.80384956,0.83409809,0.84829643};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.70236545,-0.13062851,-0.19140485,-0.65367362,-0.16081953,0.0014934597,-0.45843014,-0.20445062,-0.15988901){0.50877487,0.5265969,0.4344691,0.26094507};
-SS(0.86971177,0.13024645,0.1427188,0.70845584,0,0.20819814,0.73568363,0.23203612,0.2735765,0.63998586,0.17856447,0.051345521){0.77797836,0.52761363,0.6509231,0.42570365};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.4581749,-0.5263483,-0.32801665,-0.49676106,-0.69523221,-0.26913048,-0.62341011,-0.46880832,-0.38153973){0.7287475,0.57811658,0.78043195,0.73807879};
-SS(0.59365279,0.65503723,0.24444947,0.65062064,0.64268786,0.069510863,0.76099919,0.76690574,0.25750996,0.84582719,0.572243,0.1361951){0.82252715,0.82620698,1.2143065,1.0417018};
-SS(0,-0.49997234,-0.27965571,-0.11754465,-0.65214472,-0.32749638,-0.26056819,-0.54975154,-0.34323516,-0.073421274,-0.375,-0.38984354){0.30906942,0.53347202,0.46884495,0.28201081};
-SS(-0.88905946,-0.098697315,-0.13184676,-0.76752638,0.004448061,-0.013214377,-0.82279039,-0.18997945,0.10657137,-0.65367362,-0.16081953,0.0014934597){0.8023886,0.5734925,0.70945047,0.4344691};
-SS(-0.89426176,0.41257007,-0.12932618,-1,0.49991607,0.0031934521,-0.79172217,0.43302343,0.13373134,-0.8068077,0.56885008,-0.063754108){0.974079,1.2302733,0.80968993,0.96112076};
-SS(0.085954007,0.41736025,0.32943097,-0.0073778212,0.36022468,0.15230712,0.25126435,0.28098512,0.24657435,0.050277172,0.20853018,0.30186362){0.27115576,0.13675819,0.18575023,0.12181545};
-SS(0,0,0.5,0.050277172,0.20853018,0.30186362,-0.045146113,0.19012269,0.5,0.12517622,0.12515553,0.5){0.23153294,0.12181545,0.27176836,0.27156885};
-SS(0.27123349,0.36190713,0.41476339,0.25126435,0.28098512,0.24657435,0.050277172,0.20853018,0.30186362,0.085954007,0.41736025,0.32943097){0.36300231,0.18575023,0.12181545,0.27115576};
-SS(-0.68637718,0.43295764,-0.18031685,-0.63048479,0.37587985,-0.34368186,-0.80558396,0.5878127,-0.29244037,-0.6293812,0.63993291,-0.28812602){0.67437813,0.64388066,1.0616703,0.87296464};
-SS(-0.0089783977,0.64320989,-0.13441642,0.094968532,0.84539386,-0.087484586,0.25248643,0.73785598,-0.13082591,0.081865095,0.80626877,-0.27867109){0.41358858,0.71839764,0.60350215,0.71703623};
-SS(-0.28278924,0.041190137,-0.04219563,-0.34310942,-0.010167032,0.1509038,-0.4720473,-0.063494476,-0.036829327,-0.20656092,-0.13938028,0.029547229){0.063480395,0.12661586,0.21285629,0.048278496};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.28278924,0.041190137,-0.04219563,-0.4720473,-0.063494476,-0.036829327,-0.20656092,-0.13938028,0.029547229){0.11404163,0.063480395,0.21285629,0.048278496};
-SS(-0.61115597,1,-0.10200355,-0.58934795,0.84141567,-0.18062024,-0.42762906,1,-0.0094860889,-0.48952189,0.78345034,0.019065462){1.3611038,1.0736489,1.169501,0.83409809};
-SS(0.11523872,0.30161582,0.5,0.27123349,0.36190713,0.41476339,0.050277172,0.20853018,0.30186362,0.085954007,0.41736025,0.32943097){0.33546792,0.36300231,0.12181545,0.27115576};
-SS(0,-0.49997946,0.00010199173,-0.15923414,-0.34171533,-0.15079999,-0.23583358,-0.36008743,0.0071767184,-0.10133362,-0.40777162,0.1162396){0.22811872,0.14783141,0.16465457,0.17697987};
-SS(-0.222315,1,-0.00011890035,-0.10743676,0.85847111,-0.11136175,-0.012406168,1,-0.034358602,-0.084253952,1,0.13733396){1.0307381,0.7462212,0.99121748,1.0073117};
-SS(-0.10743676,0.85847111,-0.11136175,-0.012406168,1,-0.034358602,-0.084253952,1,0.13733396,-0.035654771,0.78507762,0.045007896){0.7462212,0.99121748,1.0073117,0.60161266};
-SS(0.87881231,0.64063264,0.37220388,0.66554141,0.67524133,0.5,0.81191124,0.80644944,0.5,0.76099919,0.76690574,0.25750996){1.3069719,1.1271263,1.5425973,1.2143065};
-SS(-0.59094649,-0.40495207,0.12834587,-0.50159539,-0.29258506,7.2987381e-06,-0.76760867,-0.33664988,-0.028298027,-0.65367362,-0.16081953,0.0014934597){0.51475101,0.32068114,0.68479998,0.4344691};
-SS(-0.24163432,0.33561251,-0.055881164,-0.39654734,0.26661646,0.019312696,-0.13709741,0.19518884,0.034033465,-0.19461387,0.3919517,0.10437587){0.16437697,0.20710489,0.040184006,0.19075448};
-SS(-0.088882135,1,-0.23281641,-0.10743676,0.85847111,-0.11136175,0.081865095,0.80626877,-0.27867109,0.094968532,0.84539386,-0.087484586){1.0431215,0.7462212,0.71703623,0.71839764};
-SS(-0.17097214,0.64900986,-0.39927747,-0.033284914,0.58770906,-0.5,0.00024312215,0.80750011,-0.5,0.10162062,0.65400865,-0.37913628){0.59741335,0.58301644,0.88610119,0.5665506};
-SS(-0.222315,1,-0.00011890035,-0.10743676,0.85847111,-0.11136175,-0.084253952,1,0.13733396,-0.035654771,0.78507762,0.045007896){1.0307381,0.7462212,1.0073117,0.60161266};
-SS(-0.40506391,-0.079541407,0.3303193,-0.58755791,0.033814853,0.5,-0.40752783,0.030201366,0.5,-0.52427834,0.10778268,0.27208728){0.26156128,0.57778723,0.40526498,0.34448415};
-SS(-0.222315,1,-0.00011890035,-0.38143574,0.84373572,-0.12387887,-0.2401666,0.74114092,-0.051302261,-0.32294154,0.86180803,0.13108841){1.0307381,0.85864479,0.58653028,0.84829643};
-SS(-0.65631386,-0.59724887,0.13822882,-0.59094649,-0.40495207,0.12834587,-0.73479965,-0.34302295,0.24038072,-0.56348952,-0.47594309,0.3052276){0.7890621,0.51475101,0.69668046,0.61776713};
-SS(-0.47185361,0.73769401,0.24072705,-0.45563594,0.60375179,0.095527884,-0.48952189,0.78345034,0.019065462,-0.32294154,0.86180803,0.13108841){0.80384956,0.56263538,0.83409809,0.84829643};
-SS(0.55555556,1,0.5,0.36841015,0.87909734,0.37310922,0.43654676,1,0.2604635,0.55555177,0.82262944,0.31125158){1.5357742,1.0362544,1.2403655,1.0671623};
-SS(-0.41651431,0.41690828,-0.5,-0.63048479,0.37587985,-0.34368186,-0.49391083,0.27907498,-0.27264436,-0.50782983,0.50249565,-0.29902586){0.57523437,0.64388066,0.37398026,0.58612549};
-SS(-0.61311838,0.85766427,0.15491279,-0.47972312,1,0.18932995,-0.47185361,0.73769401,0.24072705,-0.32294154,0.86180803,0.13108841){1.1216468,1.2473472,0.80384956,0.84829643};
-SS(0,-0.29157012,0.20836692,-0.10133362,-0.40777162,0.1162396,-0.25897908,-0.24013326,0.26450313,-0.1159097,-0.14329028,0.19302206){0.11172813,0.17697987,0.17775565,0.055235283};
-SS(-1,-0.55555556,0.5,-0.89663862,-0.69397302,0.37275403,-1,-0.47520831,0.27427507,-0.79575191,-0.55547687,0.30538166){1.5359657,1.4119512,1.2822693,1.0192798};
-SS(-0.78327322,-0.45013966,0.5,-0.62450053,-0.31310845,0.38575928,-0.73479965,-0.34302295,0.24038072,-0.89646962,-0.32955067,0.34017365){1.0435491,0.62379151,0.69668046,1.0133061};
-SS(-0.73479965,-0.34302295,0.24038072,-0.82279039,-0.18997945,0.10657137,-0.76760867,-0.33664988,-0.028298027,-0.82595855,-0.48031431,0.11444494){0.69668046,0.70945047,0.68479998,0.90887195};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.45843014,-0.20445062,-0.15988901,-0.4720473,-0.063494476,-0.036829327,-0.65367362,-0.16081953,0.0014934597){0.5265969,0.26094507,0.21285629,0.4344691};
-SS(0,-0.5,-0.5,-0.073421274,-0.375,-0.38984354,-0.23055166,-0.37480907,-0.5,-0.14376826,-0.62489354,-0.5){0.4845449,0.28201081,0.41992239,0.6489606};
-SS(-0.89962374,0.8609561,-0.16698164,-0.76988954,1,-0.26944904,-0.81095336,1,-0.07156149,-0.74249217,0.75399014,-0.15399718){1.5692753,1.6463902,1.6471359,1.1267767};
-SS(0.69383766,0.49492178,-0.021800115,0.65062064,0.64268786,0.069510863,0.84582719,0.572243,0.1361951,0.8988736,0.63809662,-0.070284173){0.71284258,0.82620698,1.0417018,1.2046527};
-SS(0.52843461,0.32737897,0.19102935,0.36016656,0.41044152,0.1594367,0.36021608,0.23247759,-0.012351094,0.46476684,0.14382827,0.12247557){0.40790135,0.3073722,0.16110593,0.23450402};
-SS(-0.79227163,-0.79754897,0.0021844777,-0.65631386,-0.59724887,0.13822882,-0.82285362,-0.63420593,-0.0683896,-0.83996275,-0.66999882,0.11765553){1.2530106,0.7890621,1.0691297,1.1553131};
-SS(-0.18268367,0.83021756,-0.5,0.0011150345,0.93517443,-0.37389303,-0.23070339,1,-0.34855306,-0.14847812,0.78021305,-0.27623142){0.9573479,1.0026385,1.1599423,0.68882385};
-SS(-0.3548152,-0.48825703,0.21848985,-0.1853821,-0.42358473,0.30866054,-0.22656331,-0.68065623,0.28194433,-0.19247216,-0.56000521,0.088357129){0.38862106,0.29143101,0.57683818,0.34206231};
-SS(0.37532516,0.23078833,-0.5,0.50136923,0.34587735,-0.44862257,0.34662081,0.36199915,-0.25068724,0.51910919,0.22553632,-0.31417891){0.42551454,0.56260896,0.29696992,0.40112301};
-SS(-0.84289574,0.018333867,0.1608607,-1,-0.00021427218,0.00011802244,-0.76752638,0.004448061,-0.013214377,-0.82279039,-0.18997945,0.10657137){0.72430843,0.98080906,0.5734925,0.70945047};
-SS(-0.67616985,-0.069078192,0.18801024,-0.82279039,-0.18997945,0.10657137,-0.73479965,-0.34302295,0.24038072,-0.84084014,-0.14895162,0.31636914){0.47948004,0.70945047,0.69668046,0.81273381};
-SS(-0.78327322,-0.45013966,0.5,-0.89646962,-0.32955067,0.34017365,-0.73479965,-0.34302295,0.24038072,-0.79575191,-0.55547687,0.30538166){1.0435491,1.0133061,0.69668046,1.0192798};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.58754442,0.033885734,-0.5,-0.73174678,-0.21478859,-0.5,-0.80728146,0.00010990719,-0.5){0.54269073,0.58180393,0.81151292,0.88195685};
-SS(0.11523872,0.30161582,0.5,0.27123349,0.36190713,0.41476339,0.25126435,0.28098512,0.24657435,0.050277172,0.20853018,0.30186362){0.33546792,0.36300231,0.18575023,0.12181545};
-SS(0.75922048,0.56990614,-0.17060419,0.69383766,0.49492178,-0.021800115,0.82562789,0.37565656,-0.12707714,0.8988736,0.63809662,-0.070284173){0.91133836,0.71284258,0.82387041,1.2046527};
-SS(-0.88905946,-0.098697315,-0.13184676,-1,-0.00021427218,0.00011802244,-1,-0.20076836,0.00061221676,-0.82279039,-0.18997945,0.10657137){0.8023886,0.98080906,1.0172898,0.70945047};
-SS(0.24635331,0.35131343,-0.096025322,0.08017426,0.31429474,-0.16745504,0.17777709,0.54047543,-0.2567554,0.09693172,0.3918681,-0.3370861){0.18045455,0.11103103,0.36840304,0.26256104};
-SS(0.59416595,0.14141347,0.32656529,0.67112401,0.32933441,0.5,0.73568363,0.23203612,0.2735765,0.50761134,0.34933779,0.39015973){0.46498444,0.79210069,0.6509231,0.51484928};
-SS(-0.58754442,0.033885734,-0.5,-0.64012388,-0.10177177,-0.37237302,-0.73174678,-0.21478859,-0.5,-0.50815189,-0.16301678,-0.5){0.58180393,0.54269073,0.81151292,0.52110597};
-SS(0.49866453,0.63973666,-0.21510859,0.61535375,0.70719289,-0.095218388,0.75922048,0.56990614,-0.17060419,0.68900489,0.77311276,-0.28043733){0.68344633,0.87858083,0.91133836,1.1326816};
-SS(-0.58755791,0.033814853,0.5,-0.64009684,-0.10188458,0.37412975,-0.73174745,-0.21491043,0.5,-0.80727304,0.00024662976,0.5){0.57778723,0.54631619,0.81377033,0.88515177};
-SS(-0.35455825,0.80859576,-0.32177549,-0.33333333,1,-0.5,-0.36992714,1,-0.22970445,-0.23070339,1,-0.34855306){0.86460259,1.3407278,1.1684568,1.1599423};
-SS(-1,-0.11111111,-0.5,-0.85707128,-0.1416783,-0.34083416,-0.73174678,-0.21478859,-0.5,-0.80728146,0.00010990719,-0.5){1.2438655,0.85441326,0.81151292,0.88195685};
-SS(-0.073421274,-0.375,-0.38984354,0,-0.25,-0.5,-0.23055166,-0.37480907,-0.5,-0.12484866,-0.12486094,-0.5){0.28201081,0.29677328,0.41992239,0.26766045};
-SS(0.88049681,0.87960137,0.13412341,1,0.83856906,0.33864755,0.82853688,1,0.32125076,0.76099919,0.76690574,0.25750996){1.5518824,1.8033242,1.7703132,1.2143065};
-SS(-0.60421932,0.82298164,0.34468578,-0.66546973,0.66566005,0.5,-0.80481649,0.80494069,0.5,-0.76389013,0.77728265,0.25513738){1.1449713,1.1224691,1.5232843,1.2358334};
-SS(0,-0.49997946,0.00010199173,-0.19247216,-0.56000521,0.088357129,-0.23583358,-0.36008743,0.0071767184,-0.18618058,-0.5161726,-0.15035515){0.22811872,0.34206231,0.16465457,0.30914003};
-SS(-0.16643696,-0.21791406,0.42402077,0,-0.29157012,0.20836692,-0.25897908,-0.24013326,0.26450313,-0.1159097,-0.14329028,0.19302206){0.23818505,0.11172813,0.17775565,0.055235283};
-SS(-0.24654336,0.57133462,-0.25396354,-0.17097214,0.64900986,-0.39927747,-0.14847812,0.78021305,-0.27623142,-0.01813809,0.53618118,-0.30537166){0.42991415,0.59741335,0.68882385,0.36567785};
-SS(0.094968532,0.84539386,-0.087484586,0.17426348,1,-0.18078905,0.25248643,0.73785598,-0.13082591,0.081865095,0.80626877,-0.27867109){0.71839764,1.045853,0.60350215,0.71703623};
-SS(0.10211023,0.6404511,0.38011645,0.098704003,0.67249079,0.1943501,0.26138985,0.51848551,0.281015,0.085954007,0.41736025,0.32943097){0.55160362,0.47957633,0.40200156,0.27115576};
-SS(0.77985819,0,-0.00014691753,0.74440038,0.22095066,-0.087839409,0.86971177,0.13024645,0.1427188,0.88354722,0.11667767,-0.13069643){0.58919206,0.59875958,0.77797836,0.79839767};
-SS(-0.61115597,1,-0.10200355,-0.38143574,0.84373572,-0.12387887,-0.36992714,1,-0.22970445,-0.42762906,1,-0.0094860889){1.3611038,0.85864479,1.1684568,1.169501};
-SS(-1,-0.84092895,0.33252059,-0.89663862,-0.69397302,0.37275403,-0.80635543,-0.81164184,0.5,-0.77091496,-0.77159441,0.2629049){1.8030746,1.4119512,1.5410993,1.2433034};
-SS(0.18202227,0.38279251,0.10350409,0.25126435,0.28098512,0.24657435,0.36021608,0.23247759,-0.012351094,0.36016656,0.41044152,0.1594367){0.17617817,0.18575023,0.16110593,0.3073722};
-SS(0.42864323,0.48543211,-0.13804456,0.60662231,0.34516964,-0.13972301,0.34662081,0.36199915,-0.25068724,0.48047723,0.47791267,-0.33071402){0.42022283,0.48782847,0.29696992,0.55795418};
-SS(0.08017426,0.31429474,-0.16745504,0.09693172,0.3918681,-0.3370861,0.34662081,0.36199915,-0.25068724,0.20129651,0.21389912,-0.31902192){0.11103103,0.26256104,0.29696992,0.16839385};
-SS(0.49866453,0.63973666,-0.21510859,0.51674933,0.64481281,-0.39755292,0.67125235,0.44297685,-0.31879306,0.48047723,0.47791267,-0.33071402){0.68344633,0.82858869,0.72773009,0.55795418};
-SS(-0.50815189,-0.16301678,-0.5,-0.41767704,0.010770256,-0.44072823,-0.49808619,0.0026201378,-0.26387206,-0.38492375,-0.20017574,-0.33650716){0.52110597,0.35514259,0.29810596,0.28705324};
-SS(-0.0089783977,0.64320989,-0.13441642,0.11458044,0.70010244,0.010073529,-0.035654771,0.78507762,0.045007896,-0.098708274,0.55956225,0.10505678){0.41358858,0.49378055,0.60161266,0.31633913};
-SS(0.59365279,0.65503723,0.24444947,0.76099919,0.76690574,0.25750996,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){0.82252715,1.2143065,0.77938072,1.0417018};
-SS(-0.11754465,-0.65214472,-0.32749638,-0.32879066,-0.67072359,-0.5,-0.18848435,-0.81110947,-0.5,-0.2399131,-0.76005145,-0.25989531){0.53347202,0.79007105,0.92571371,0.6848256};
-SS(-0.89804207,0.11676539,-0.10792088,-1,-0.00018427889,-0.26378916,-0.77267892,0.13105707,-0.24874664,-0.88905946,-0.098697315,-0.13184676){0.82300022,1.0508045,0.65386325,0.8023886};
-SS(-0.64009684,-0.10188458,0.37412975,-0.58755791,0.033814853,0.5,-0.73174745,-0.21491043,0.5,-0.50807239,-0.16307462,0.5){0.54631619,0.57778723,0.81377033,0.52416601};
-SS(-0.92571354,0.17249619,-0.34283108,-0.80728146,0.00010990719,-0.5,-0.82994199,0.18319278,-0.5,-0.77267892,0.13105707,-0.24874664){0.99158484,0.88195685,0.95993957,0.65386325};
-SS(0.11523872,0.30161582,0.5,0.26083053,0.15082484,0.37728795,0.25126435,0.28098512,0.24657435,0.27123349,0.36190713,0.41476339){0.33546792,0.21918499,0.18575023,0.36300231};
-SS(-0.66548665,0.66585508,-0.5,-0.6293812,0.63993291,-0.28812602,-0.50014045,0.79673357,-0.5,-0.65756371,0.81308934,-0.3429452){1.1221664,0.87296464,1.1145783,1.1958888};
-SS(-0.89663862,-0.69397302,0.37275403,-0.67513028,-0.66529728,0.5,-0.77091496,-0.77159441,0.2629049,-0.79575191,-0.55547687,0.30538166){1.4119512,1.1284607,1.2433034,1.0192798};
-SS(0.87867265,0.36391919,-0.37720578,0.671223,0.32907594,-0.5,0.77491511,0.22516452,-0.26425516,0.67125235,0.44297685,-0.31879306){1.03034,0.79435762,0.70313431,0.72773009};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.2399131,-0.76005145,-0.25989531,-0.49676106,-0.69523221,-0.26913048,-0.42066299,-0.84356131,-0.12906413){1.0307746,0.6848256,0.78043195,0.88525127};
-SS(0.48047723,0.47791267,-0.33071402,0.60662231,0.34516964,-0.13972301,0.51910919,0.22553632,-0.31417891,0.67125235,0.44297685,-0.31879306){0.55795418,0.48782847,0.40112301,0.72773009};
-SS(-0.10037172,0.18891947,0.20844359,-0.26986228,0.26051837,0.22418657,-0.13709741,0.19518884,0.034033465,-0.15128303,0.02253305,0.11422928){0.074828316,0.1749353,0.040184006,0.025420414};
-SS(0.11136938,1,0.13859714,0.094968532,0.84539386,-0.087484586,0.24937941,1,-0.00011138016,0.24404834,0.79519787,0.082231238){1.0072058,0.71839764,1.0446566,0.68472542};
-SS(0,-0.5,-0.5,-0.11754465,-0.65214472,-0.32749638,0,-0.49997234,-0.27965571,-0.073421274,-0.375,-0.38984354){0.4845449,0.53347202,0.30906942,0.28201081};
-SS(0.26083053,0.15082484,0.37728795,0.29175541,0,0.20824909,0.25126435,0.28098512,0.24657435,0.42621669,0.19017509,0.30505062){0.21918499,0.1093371,0.18575023,0.29714896};
-SS(0.26083053,0.15082484,0.37728795,0.11523872,0.30161582,0.5,0.25126435,0.28098512,0.24657435,0.050277172,0.20853018,0.30186362){0.21918499,0.33546792,0.18575023,0.12181545};
-SS(-0.30949447,0.8262402,0.33528492,-0.33333333,1,0.5,-0.44431425,1,0.36245944,-0.50037,0.79662088,0.5){0.87388961,1.3433112,1.3152029,1.1183194};
-SS(-0.80635543,-0.81164184,0.5,-1,-1,0.5,-1,-0.77777778,0.5,-1,-0.84092895,0.33252059){1.5410993,2.2322143,1.8434331,1.8030746};
-SS(0.08017426,0.31429474,-0.16745504,0.24635331,0.35131343,-0.096025322,0.34662081,0.36199915,-0.25068724,0.09693172,0.3918681,-0.3370861){0.11103103,0.18045455,0.29696992,0.26256104};
-SS(0.46476684,0.14382827,0.12247557,0.50010751,0,-0.00013054911,0.36021608,0.23247759,-0.012351094,0.57129187,0.13526053,-0.13726946){0.23450402,0.22823279,0.16110593,0.35115136};
-SS(-0.34310942,-0.010167032,0.1509038,-0.39806707,0.15776443,0.15870839,-0.20045203,0.067929244,0.29301468,-0.15128303,0.02253305,0.11422928){0.12661586,0.19317292,0.10955402,0.025420414};
-SS(-0.1182182,0.15955837,-0.3159857,-0.17603462,0.24070348,-0.5,-0.19007896,0.04567822,-0.5,-0.29413589,0.046284299,-0.31274881){0.11990198,0.32537509,0.27736807,0.1681493};
-SS(-0.4433427,0.53576375,-0.12560501,-0.32064519,0.49448821,1.4739833e-06,-0.54631436,0.45612147,-0.00074796238,-0.34372617,0.39779568,-0.18541051){0.48429505,0.32892635,0.48593017,0.29650146};
-SS(-0.57994589,-0.69256437,0.31204703,-0.67513028,-0.66529728,0.5,-0.50050976,-0.57246927,0.5,-0.56348952,-0.47594309,0.3052276){0.89957508,1.1284607,0.81219504,0.61776713};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.32879066,-0.67072359,-0.5,-0.50036547,-0.57239096,-0.5,-0.26056819,-0.54975154,-0.34323516){0.57811658,0.79007105,0.81333009,0.46884495};
-SS(0.59416595,0.14141347,0.32656529,0.52843461,0.32737897,0.19102935,0.63998586,0.17856447,0.051345521,0.46476684,0.14382827,0.12247557){0.46498444,0.40790135,0.42570365,0.23450402};
-SS(0.10162062,0.65400865,-0.37913628,0.21543771,0.73213875,-0.5,0.33386283,0.81592026,-0.31808704,0.34412919,0.6158316,-0.3427703){0.5665506,0.81134051,0.86115027,0.59958408};
-SS(0.10211023,0.6404511,0.38011645,-0.033588837,0.5879061,0.5,0.21512427,0.73211919,0.5,0.00029730467,0.80760978,0.5){0.55160362,0.57806214,0.81521474,0.88423684};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.50537844,-0.68762812,0.023695348,-0.42066299,-0.84356131,-0.12906413,-0.36608751,-0.8951802,0.074405883){0.52757348,0.71483247,0.88525127,0.92652515};
-SS(-0.65631386,-0.59724887,0.13822882,-0.79227163,-0.79754897,0.0021844777,-0.63348211,-0.7706683,-0.074889286,-0.61978497,-0.82706917,0.12738472){0.7890621,1.2530106,0.97907785,1.0681409};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.50815189,-0.16301678,-0.5,-0.49808619,0.0026201378,-0.26387206,-0.38492375,-0.20017574,-0.33650716){0.54269073,0.52110597,0.29810596,0.28705324};
-SS(0.094968532,0.84539386,-0.087484586,0.17426348,1,-0.18078905,-0.088882135,1,-0.23281641,-0.012406168,1,-0.034358602){0.71839764,1.045853,1.0431215,0.99121748};
-SS(-0.19461387,0.3919517,0.10437587,-0.26986228,0.26051837,0.22418657,-0.39654734,0.26661646,0.019312696,-0.13709741,0.19518884,0.034033465){0.19075448,0.1749353,0.20710489,0.040184006};
-SS(-0.55555556,1,-0.5,-0.65756371,0.81308934,-0.3429452,-0.50014045,0.79673357,-0.5,-0.56041637,1,-0.29784853){1.5379273,1.1958888,1.1145783,1.3856141};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.73174678,-0.21478859,-0.5,-0.50815189,-0.16301678,-0.5,-0.56113743,-0.28920115,-0.29204918){0.54269073,0.81151292,0.52110597,0.46850822};
-SS(0.094968532,0.84539386,-0.087484586,0.11136938,1,0.13859714,-0.012406168,1,-0.034358602,-0.035654771,0.78507762,0.045007896){0.71839764,1.0072058,0.99121748,0.60161266};
-SS(0.13913358,0.10014326,0.18199659,0.25126435,0.28098512,0.24657435,0.13261259,0.21336316,0.036566127,0.050277172,0.20853018,0.30186362){0.045990896,0.18575023,0.046199082,0.12181545};
-SS(-0.93582873,0.86427167,0.14668289,-1,1,-6.9388939e-15,-0.74954172,1,0.13574231,-0.81095336,1,-0.07156149){1.6320629,1.9810426,1.562759,1.6471359};
-SS(-0.11754465,-0.65214472,-0.32749638,-0.18848435,-0.81110947,-0.5,0,-0.83851883,-0.33849865,-0.2399131,-0.76005145,-0.25989531){0.53347202,0.92571371,0.80235204,0.6848256};
-SS(0.68985253,1,-0.19792707,0.54700908,0.85955032,-0.16345766,0.68900489,0.77311276,-0.28043733,0.77861211,0.77861193,-0.067175459){1.495304,1.0528061,1.1326816,1.1981052};
-SS(0,-0.22019801,5.0496855e-05,-0.15923414,-0.34171533,-0.15079999,-0.23583358,-0.36008743,0.0071767184,-0.20656092,-0.13938028,0.029547229){0.029059683,0.14783141,0.16465457,0.048278496};
-SS(-0.62450053,-0.31310845,0.38575928,-0.73479965,-0.34302295,0.24038072,-0.84084014,-0.14895162,0.31636914,-0.64009684,-0.10188458,0.37412975){0.62379151,0.69668046,0.81273381,0.54631619};
-SS(-0.15923414,-0.34171533,-0.15079999,-0.29237157,-0.11865629,-0.17606411,-0.20656092,-0.13938028,0.029547229,-0.098950987,-0.13391411,-0.14594667){0.14783141,0.11404163,0.048278496,0.03512721};
-SS(0.68966181,1,0.19790566,0.88049681,0.87960137,0.13412341,0.76099919,0.76690574,0.25750996,0.62860594,0.86645525,0.049037492){1.492557,1.5518824,1.2143065,1.1303867};
-SS(0.60662231,0.34516964,-0.13972301,0.37137652,0.1767682,-0.19801193,0.51910919,0.22553632,-0.31417891,0.57129187,0.13526053,-0.13726946){0.48782847,0.19205628,0.40112301,0.35115136};
-SS(-1,-1,-0.5,-0.80632325,-0.81147186,-0.5,-1,-0.77777778,-0.5,-1,-0.83959635,-0.33115777){2.2321573,1.5409894,1.8436809,1.7998257};
-SS(-0.31377045,0.30492781,-0.36427962,-0.41651431,0.41690828,-0.5,-0.49391083,0.27907498,-0.27264436,-0.50782983,0.50249565,-0.29902586){0.30770932,0.57523437,0.37398026,0.58612549};
-SS(-0.10133362,-0.40777162,0.1162396,-0.3548152,-0.48825703,0.21848985,-0.23583358,-0.36008743,0.0071767184,-0.19247216,-0.56000521,0.088357129){0.17697987,0.38862106,0.16465457,0.34206231};
-SS(0.70845584,0,0.20819814,0.59416595,0.14141347,0.32656529,0.73568363,0.23203612,0.2735765,0.63998586,0.17856447,0.051345521){0.52761363,0.46498444,0.6509231,0.42570365};
-SS(0.39612945,0.70614162,0.21524614,0.59365279,0.65503723,0.24444947,0.55555177,0.82262944,0.31125158,0.35567295,0.65317229,0.39545235){0.68453461,0.82252715,1.0671623,0.69293227};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.65956212,-0.52273243,-0.19262862,-0.63348211,-0.7706683,-0.074889286,-0.82285362,-0.63420593,-0.0683896){0.74484897,0.7287475,0.97907785,1.0691297};
-SS(0.10162062,0.65400865,-0.37913628,-0.033284914,0.58770906,-0.5,0.21543771,0.73213875,-0.5,0.16368264,0.50834729,-0.5){0.5665506,0.58301644,0.81134051,0.52115901};
-SS(0.37549445,0.49317282,-0.5,0.34412919,0.6158316,-0.3427703,0.21543771,0.73213875,-0.5,0.16368264,0.50834729,-0.5){0.61648995,0.59958408,0.81134051,0.52115901};
-SS(-0.61115597,1,-0.10200355,-0.58934795,0.84141567,-0.18062024,-0.36992714,1,-0.22970445,-0.38143574,0.84373572,-0.12387887){1.3611038,1.0736489,1.1684568,0.85864479};
-SS(1,0.83856906,0.33864755,0.87881231,0.64063264,0.37220388,0.81191124,0.80644944,0.5,0.76099919,0.76690574,0.25750996){1.8033242,1.3069719,1.5425973,1.2143065};
-SS(-0.49284988,-0.37485679,0.5,-0.62450053,-0.31310845,0.38575928,-0.73174745,-0.21491043,0.5,-0.50807239,-0.16307462,0.5){0.6163523,0.62379151,0.81377033,0.52416601};
-SS(0.67125235,0.44297685,-0.31879306,0.6657623,0.67544754,-0.5,0.78906409,0.5041626,-0.5,0.57309542,0.50075776,-0.5){0.72773009,1.1304562,1.1105402,0.81773274};
-SS(-0.73174745,-0.21491043,0.5,-0.62450053,-0.31310845,0.38575928,-0.78327322,-0.45013966,0.5,-0.89646962,-0.32955067,0.34017365){0.81377033,0.62379151,1.0435491,1.0133061};
-SS(0.23106485,1,0.31398279,0.36841015,0.87909734,0.37310922,0.22886345,0.79287946,0.30210005,0.40637652,0.87094343,0.13060843){1.1340577,1.0362544,0.75332396,0.92399337};
-SS(-0.32879066,-0.67072359,-0.5,-0.4581749,-0.5263483,-0.32801665,-0.50036547,-0.57239096,-0.5,-0.49676106,-0.69523221,-0.26913048){0.79007105,0.57811658,0.81333009,0.78043195};
-SS(-0.033284914,0.58770906,-0.5,0.10162062,0.65400865,-0.37913628,0.21543771,0.73213875,-0.5,0.00024312215,0.80750011,-0.5){0.58301644,0.5665506,0.81134051,0.88610119};
-SS(0.66554141,0.67524133,0.5,0.64232771,0.84838332,0.46476191,0.76099919,0.76690574,0.25750996,0.55555177,0.82262944,0.31125158){1.1271263,1.3339184,1.2143065,1.0671623};
-SS(0.24635331,0.35131343,-0.096025322,0.36021608,0.23247759,-0.012351094,0.13261259,0.21336316,0.036566127,0.13402468,0.11673163,-0.1460819){0.18045455,0.16110593,0.046199082,0.039337265};
-SS(-0.36608751,-0.8951802,0.074405883,-0.35582611,-0.64426575,-0.070000747,-0.22302806,-0.77703925,0.068353305,-0.42066299,-0.84356131,-0.12906413){0.92652515,0.52757348,0.64063544,0.88525127};
-SS(0.0011150345,0.93517443,-0.37389303,0.17426348,1,-0.18078905,-0.088882135,1,-0.23281641,0.081865095,0.80626877,-0.27867109){1.0026385,1.045853,1.0431215,0.71703623};
-SS(0.59416595,0.14141347,0.32656529,0.52843461,0.32737897,0.19102935,0.73568363,0.23203612,0.2735765,0.63998586,0.17856447,0.051345521){0.46498444,0.40790135,0.6509231,0.42570365};
-SS(0.5,0,-0.5,0.35689191,0.091376279,-0.36932783,0.50007058,0,-0.27987971,0.51910919,0.22553632,-0.31417891){0.48471812,0.26145514,0.31006895,0.40112301};
-SS(-1,-0.33333333,0.5,-0.89646962,-0.32955067,0.34017365,-1,-0.55555556,0.5,-1,-0.47520831,0.27427507){1.3443603,1.0133061,1.5359657,1.2822693};
-SS(0.60662231,0.34516964,-0.13972301,0.74440038,0.22095066,-0.087839409,0.77315808,0.36766952,0.075951375,0.63998586,0.17856447,0.051345521){0.48782847,0.59875958,0.71793497,0.42570365};
-SS(-0.68637718,0.43295764,-0.18031685,-0.65355936,0.25468043,-0.1897796,-0.54631436,0.45612147,-0.00074796238,-0.63246299,0.29145388,0.035195127){0.67437813,0.51379882,0.48593017,0.47226275};
-SS(-0.033588837,0.5879061,0.5,0.10211023,0.6404511,0.38011645,0.21512427,0.73211919,0.5,0.16321322,0.50838432,0.5){0.57806214,0.55160362,0.81521474,0.52238519};
-SS(0.65062064,0.64268786,0.069510863,0.69383766,0.49492178,-0.021800115,0.75922048,0.56990614,-0.17060419,0.8988736,0.63809662,-0.070284173){0.82620698,0.71284258,0.91133836,1.2046527};
-SS(-0.67513028,-0.66529728,0.5,-0.57994589,-0.69256437,0.31204703,-0.77091496,-0.77159441,0.2629049,-0.79575191,-0.55547687,0.30538166){1.1284607,0.89957508,1.2433034,1.0192798};
-SS(0.54326203,0.87223293,-0.356993,0.55555556,1,-0.5,0.33333333,1,-0.5,0.43683247,1,-0.26068681){1.1662147,1.5352494,1.342474,1.2435523};
-SS(-0.16643696,-0.21791406,0.42402077,0,0,0.5,0,-0.16137283,0.3386068,-0.17669296,0.011023676,0.5){0.23818505,0.23153294,0.12565914,0.26322593};
-SS(0.10162062,0.65400865,-0.37913628,0.21543771,0.73213875,-0.5,0.081865095,0.80626877,-0.27867109,0.33386283,0.81592026,-0.31808704){0.5665506,0.81134051,0.71703623,0.86115027};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.29237157,-0.11865629,-0.17606411,-0.36174,-0.40052234,-0.23665811,-0.38492375,-0.20017574,-0.33650716){0.26094507,0.11404163,0.32480953,0.28705324};
-SS(-0.77777778,1,0.5,-1,1,0.5,-0.84394966,1,0.33504415,-0.80481649,0.80494069,0.5){1.8407438,2.2338249,1.8084725,1.5232843};
-SS(-0.10133362,-0.40777162,0.1162396,0,-0.29157012,0.20836692,0,-0.22019801,5.0496855e-05,-0.1159097,-0.14329028,0.19302206){0.17697987,0.11172813,0.029059683,0.055235283};
-SS(-0.89804207,0.11676539,-0.10792088,-0.77267892,0.13105707,-0.24874664,-0.76752638,0.004448061,-0.013214377,-0.88905946,-0.098697315,-0.13184676){0.82300022,0.65386325,0.5734925,0.8023886};
-SS(-0.23055166,-0.37480907,-0.5,-0.073421274,-0.375,-0.38984354,-0.12484866,-0.12486094,-0.5,-0.1971424,-0.26981885,-0.30750196){0.41992239,0.28201081,0.26766045,0.19280289};
-SS(-0.83127473,0.33505962,-0.32026923,-1,0.25105097,-0.19350143,-0.77267892,0.13105707,-0.24874664,-0.78848723,0.26584533,-0.068869999){0.89071695,1.0825888,0.65386325,0.68151298};
-SS(-0.26297351,0.20404986,-0.17122089,-0.24163432,0.33561251,-0.055881164,-0.39654734,0.26661646,0.019312696,-0.13709741,0.19518884,0.034033465){0.12773981,0.16437697,0.20710489,0.040184006};
-SS(0.69383766,0.49492178,-0.021800115,0.65062064,0.64268786,0.069510863,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){0.71284258,0.82620698,0.77938072,1.0417018};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.64012388,-0.10177177,-0.37237302,-0.7907607,-0.33838097,-0.28342271,-0.85707128,-0.1416783,-0.34083416){0.5265969,0.54269073,0.80149819,0.85441326};
-SS(-0.24000819,0.17660305,0.5,-0.36145429,0.13293621,0.35430528,-0.26986228,0.26051837,0.22418657,-0.20045203,0.067929244,0.29301468){0.3210912,0.26360063,0.1749353,0.10955402};
-SS(-0.79575191,-0.55547687,0.30538166,-0.65631386,-0.59724887,0.13822882,-0.73479965,-0.34302295,0.24038072,-0.56348952,-0.47594309,0.3052276){1.0192798,0.7890621,0.69668046,0.61776713};
-SS(-0.73479965,-0.34302295,0.24038072,-0.62450053,-0.31310845,0.38575928,-0.84084014,-0.14895162,0.31636914,-0.89646962,-0.32955067,0.34017365){0.69668046,0.62379151,0.81273381,1.0133061};
-SS(-0.62450053,-0.31310845,0.38575928,-0.73174745,-0.21491043,0.5,-0.84084014,-0.14895162,0.31636914,-0.89646962,-0.32955067,0.34017365){0.62379151,0.81377033,0.81273381,1.0133061};
-SS(-1,-0.00021427218,0.00011802244,-0.88905946,-0.098697315,-0.13184676,-0.76752638,0.004448061,-0.013214377,-0.82279039,-0.18997945,0.10657137){0.98080906,0.8023886,0.5734925,0.70945047};
-SS(0.77315808,0.36766952,0.075951375,0.69383766,0.49492178,-0.021800115,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){0.71793497,0.71284258,0.77938072,1.0417018};
-SS(-0.23055166,-0.37480907,-0.5,-0.073421274,-0.375,-0.38984354,-0.1971424,-0.26981885,-0.30750196,-0.26056819,-0.54975154,-0.34323516){0.41992239,0.28201081,0.19280289,0.46884495};
-SS(-0.0073778212,0.36022468,0.15230712,0.18202227,0.38279251,0.10350409,0.25126435,0.28098512,0.24657435,0.050277172,0.20853018,0.30186362){0.13675819,0.17617817,0.18575023,0.12181545};
-SS(-0.34549718,-0.50098866,0.4105565,-0.23048975,-0.37484721,0.5,-0.14394692,-0.62481063,0.5,-0.1853821,-0.42358473,0.30866054){0.5260109,0.42714666,0.63866347,0.29143101};
-SS(0.65062064,0.64268786,0.069510863,0.8988736,0.63809662,-0.070284173,0.75922048,0.56990614,-0.17060419,0.77861211,0.77861193,-0.067175459){0.82620698,1.2046527,0.91133836,1.1981052};
-SS(-0.48255002,0.69900846,-0.19155417,-0.4433427,0.53576375,-0.12560501,-0.48952189,0.78345034,0.019065462,-0.62332411,0.59900263,-0.10904345){0.74365966,0.48429505,0.83409809,0.74800561};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.65631386,-0.59724887,0.13822882,-0.63348211,-0.7706683,-0.074889286,-0.50537844,-0.68762812,0.023695348){0.74484897,0.7890621,0.97907785,0.71483247};
-SS(-0.18848435,-0.81110947,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.16144976,-1,-0.33863959,-0.2399131,-0.76005145,-0.25989531){0.92571371,1.0307746,1.1250711,0.6848256};
-SS(-0.58755791,0.033814853,0.5,-0.64009684,-0.10188458,0.37412975,-0.52427834,0.10778268,0.27208728,-0.40506391,-0.079541407,0.3303193){0.57778723,0.54631619,0.34448415,0.26156128};
-SS(-0.3548152,-0.48825703,0.21848985,-0.40125956,-0.65699374,0.33213173,-0.42889738,-0.75253072,0.17523232,-0.22656331,-0.68065623,0.28194433){0.38862106,0.69449311,0.75958282,0.57683818};
-SS(-0.39806707,0.15776443,0.15870839,-0.54640726,0.34339216,0.19847863,-0.39654734,0.26661646,0.019312696,-0.63246299,0.29145388,0.035195127){0.19317292,0.43575493,0.20710489,0.47226275};
-SS(-0.2401666,0.74114092,-0.051302261,-0.10743676,0.85847111,-0.11136175,-0.14847812,0.78021305,-0.27623142,-0.38143574,0.84373572,-0.12387887){0.58653028,0.7462212,0.68882385,0.85864479};
-SS(-0.62332411,0.59900263,-0.10904345,-0.68637718,0.43295764,-0.18031685,-0.54631436,0.45612147,-0.00074796238,-0.8068077,0.56885008,-0.063754108){0.74800561,0.67437813,0.48593017,0.96112076};
-SS(-0.65776896,0.64141588,0.074371921,-0.62332411,0.59900263,-0.10904345,-0.54631436,0.45612147,-0.00074796238,-0.8068077,0.56885008,-0.063754108){0.83514199,0.74800561,0.48593017,0.96112076};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.50537844,-0.68762812,0.023695348,-0.49676106,-0.69523221,-0.26913048,-0.42066299,-0.84356131,-0.12906413){0.52757348,0.71483247,0.78043195,0.88525127};
-SS(-0.60421932,0.82298164,0.34468578,-0.50037,0.79662088,0.5,-0.47185361,0.73769401,0.24072705,-0.30949447,0.8262402,0.33528492){1.1449713,1.1183194,0.80384956,0.87388961};
-SS(0.34662081,0.36199915,-0.25068724,0.27170325,0.36204749,-0.4201745,0.17777709,0.54047543,-0.2567554,0.34412919,0.6158316,-0.3427703){0.29696992,0.36885377,0.36840304,0.59958408};
-SS(-0.16144976,-1,-0.33863959,-0.12233239,-0.87748906,-0.13583418,0,-0.83851883,-0.33849865,-0.2399131,-0.76005145,-0.25989531){1.1250711,0.78823805,0.80235204,0.6848256};
-SS(0.87272604,0.35900693,0.37172569,1,0.29178008,0.20838772,1,0.16158711,0.33859063,0.73568363,0.23203612,0.2735765){1.0107603,1.1084285,1.1259698,0.6509231};
-SS(-0.42066299,-0.84356131,-0.12906413,-0.35582611,-0.64426575,-0.070000747,-0.2399131,-0.76005145,-0.25989531,-0.49676106,-0.69523221,-0.26913048){0.88525127,0.52757348,0.6848256,0.78043195};
-SS(0.20129651,0.21389912,-0.31902192,0.24635331,0.35131343,-0.096025322,0.13402468,0.11673163,-0.1460819,0.37137652,0.1767682,-0.19801193){0.16839385,0.18045455,0.039337265,0.19205628};
-SS(0.77315808,0.36766952,0.075951375,0.86971177,0.13024645,0.1427188,0.73568363,0.23203612,0.2735765,0.63998586,0.17856447,0.051345521){0.71793497,0.77797836,0.6509231,0.42570365};
-SS(0.08017426,0.31429474,-0.16745504,-0.056808231,0.14323286,-0.13367928,-0.12449617,0.36606215,-0.28273955,-0.1182182,0.15955837,-0.3159857){0.11103103,0.022140076,0.21185338,0.11990198};
-SS(0.27170325,0.36204749,-0.4201745,0.16368264,0.50834729,-0.5,0.17777709,0.54047543,-0.2567554,0.34412919,0.6158316,-0.3427703){0.36885377,0.52115901,0.36840304,0.59958408};
-SS(-0.50537844,-0.68762812,0.023695348,-0.63348211,-0.7706683,-0.074889286,-0.49676106,-0.69523221,-0.26913048,-0.42066299,-0.84356131,-0.12906413){0.71483247,0.97907785,0.78043195,0.88525127};
-SS(1,0.29178008,0.20838772,0.86971177,0.13024645,0.1427188,1,0.16158711,0.33859063,0.73568363,0.23203612,0.2735765){1.1084285,0.77797836,1.1259698,0.6509231};
-SS(0.36016656,0.41044152,0.1594367,0.52843461,0.32737897,0.19102935,0.52218723,0.46943947,0.022097553,0.47723835,0.52605258,0.30619083){0.3073722,0.40790135,0.46892029,0.58228229};
-SS(0.49866453,0.63973666,-0.21510859,0.51674933,0.64481281,-0.39755292,0.33386283,0.81592026,-0.31808704,0.54326203,0.87223293,-0.356993){0.68344633,0.82858869,0.86115027,1.1662147};
-SS(-0.47972312,1,0.18932995,-0.30949447,0.8262402,0.33528492,-0.22223836,1,0.2622369,-0.44431425,1,0.36245944){1.2473472,0.87388961,1.0984067,1.3152029};
-SS(-0.38492375,-0.20017574,-0.33650716,-0.29237157,-0.11865629,-0.17606411,-0.36174,-0.40052234,-0.23665811,-0.1971424,-0.26981885,-0.30750196){0.28705324,0.11404163,0.32480953,0.19280289};
-SS(-1,1,-6.9388939e-15,-0.89962374,0.8609561,-0.16698164,-0.81095336,1,-0.07156149,-0.79370724,0.81084643,0.045877226){1.9810426,1.5692753,1.6471359,1.270911};
-SS(-0.30949447,0.8262402,0.33528492,-0.47972312,1,0.18932995,-0.22223836,1,0.2622369,-0.32294154,0.86180803,0.13108841){0.87388961,1.2473472,1.0984067,0.84829643};
-SS(0.10162062,0.65400865,-0.37913628,-0.0089783977,0.64320989,-0.13441642,0.17777709,0.54047543,-0.2567554,0.081865095,0.80626877,-0.27867109){0.5665506,0.41358858,0.36840304,0.71703623};
-SS(0.77491511,0.22516452,-0.26425516,0.81149777,0.18885984,-0.5,1,0.16156328,-0.33847781,0.83867599,0,-0.33865964){0.70313431,0.92750237,1.1261583,0.80182539};
-SS(-0.66546973,0.66566005,0.5,-0.87046532,0.63071146,0.35630423,-0.80481649,0.80494069,0.5,-0.76389013,0.77728265,0.25513738){1.1224691,1.2666006,1.5232843,1.2358334};
-SS(-0.20984637,0.69532212,0.20809493,-0.29261734,0.53193925,0.43339885,-0.11618574,0.50328545,0.29980467,-0.16015893,0.67694077,0.39025863){0.55022745,0.53993003,0.33969293,0.6265216};
-SS(0.52843461,0.32737897,0.19102935,0.36016656,0.41044152,0.1594367,0.42621669,0.19017509,0.30505062,0.50761134,0.34933779,0.39015973){0.40790135,0.3073722,0.29714896,0.51484928};
-SS(-0.47972312,1,0.18932995,-0.30949447,0.8262402,0.33528492,-0.47185361,0.73769401,0.24072705,-0.32294154,0.86180803,0.13108841){1.2473472,0.87388961,0.80384956,0.84829643};
-SS(-1,-0.5000565,0.0033661208,-0.83996275,-0.66999882,0.11765553,-1,-0.77608598,0.00064487429,-0.82285362,-0.63420593,-0.0683896){1.2263361,1.1553131,1.5844414,1.0691297};
-SS(0.34662081,0.36199915,-0.25068724,0.24635331,0.35131343,-0.096025322,0.17777709,0.54047543,-0.2567554,0.09693172,0.3918681,-0.3370861){0.29696992,0.18045455,0.36840304,0.26256104};
-SS(0.42864323,0.48543211,-0.13804456,0.34662081,0.36199915,-0.25068724,0.17777709,0.54047543,-0.2567554,0.34412919,0.6158316,-0.3427703){0.42022283,0.29696992,0.36840304,0.59958408};
-SS(-1,1,0.5,-0.80481649,0.80494069,0.5,-1,0.77777778,0.5,-1,0.84108515,0.33242406){2.2338249,1.5232843,1.8402752,1.8031397};
-SS(0.49866453,0.63973666,-0.21510859,0.34412919,0.6158316,-0.3427703,0.25248643,0.73785598,-0.13082591,0.33386283,0.81592026,-0.31808704){0.68344633,0.59958408,0.60350215,0.86115027};
-SS(-0.20984637,0.69532212,0.20809493,-0.29261734,0.53193925,0.43339885,-0.35521568,0.4957142,0.26668635,-0.11618574,0.50328545,0.29980467){0.55022745,0.53993003,0.42001946,0.33969293};
-SS(1,0,-0.5,1,0.16156328,-0.33847781,0.81149777,0.18885984,-0.5,0.83867599,0,-0.33865964){1.2327879,1.1261583,0.92750237,0.80182539};
-SS(0.76099919,0.76690574,0.25750996,0.87881231,0.64063264,0.37220388,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){1.2143065,1.3069719,0.77938072,1.0417018};
-SS(0,-1,-0.5,0,-0.83851883,-0.33849865,-0.18848435,-0.81110947,-0.5,-0.16144976,-1,-0.33863959){1.2333742,0.80235204,0.92571371,1.1250711};
-SS(-0.89962374,0.8609561,-0.16698164,-1,1,-6.9388939e-15,-1,0.77631186,0.00053339564,-0.79370724,0.81084643,0.045877226){1.5692753,1.9810426,1.5817554,1.270911};
-SS(0,-1,0.5,0,-0.83845667,0.33864852,-0.16134158,-1,0.33850563,-0.18863677,-0.81113033,0.5){1.232491,0.80178572,1.129042,0.92459822};
-SS(0,0,-6.9388939e-15,-0.056808231,0.14323286,-0.13367928,-0.13709741,0.19518884,0.034033465,0.13261259,0.21336316,0.036566127){-0.017891206,0.022140076,0.040184006,0.046199082};
-SS(1,0,0.5,1,0.16158711,0.33859063,0.83866368,0,0.33843958,0.81143387,0.18901581,0.5){1.2336156,1.1259698,0.80106313,0.9265446};
-SS(-0.60421932,0.82298164,0.34468578,-0.47972312,1,0.18932995,-0.44431425,1,0.36245944,-0.47185361,0.73769401,0.24072705){1.1449713,1.2473472,1.3152029,0.80384956};
-SS(-0.58934795,0.84141567,-0.18062024,-0.61115597,1,-0.10200355,-0.81095336,1,-0.07156149,-0.74249217,0.75399014,-0.15399718){1.0736489,1.3611038,1.6471359,1.1267767};
-SS(-0.83996275,-0.66999882,0.11765553,-1,-0.47520831,0.27427507,-0.79575191,-0.55547687,0.30538166,-0.82595855,-0.48031431,0.11444494){1.1553131,1.2822693,1.0192798,0.90887195};
-SS(-0.26986228,0.26051837,0.22418657,-0.39806707,0.15776443,0.15870839,-0.39654734,0.26661646,0.019312696,-0.13709741,0.19518884,0.034033465){0.1749353,0.19317292,0.20710489,0.040184006};
-SS(-0.15128303,0.02253305,0.11422928,0,0,-6.9388939e-15,-0.20656092,-0.13938028,0.029547229,-0.28278924,0.041190137,-0.04219563){0.025420414,-0.017891206,0.048278496,0.063480395};
-SS(0.74440038,0.22095066,-0.087839409,1,0.2203628,5.6826691e-05,0.86971177,0.13024645,0.1427188,0.88354722,0.11667767,-0.13069643){0.59875958,1.0268649,0.77797836,0.79839767};
-SS(-0.41651431,0.41690828,-0.5,-0.31377045,0.30492781,-0.36427962,-0.17603462,0.24070348,-0.5,-0.20381263,0.45499536,-0.5){0.57523437,0.30770932,0.32537509,0.478983};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.73174678,-0.21478859,-0.5,-0.7907607,-0.33838097,-0.28342271,-0.85707128,-0.1416783,-0.34083416){0.54269073,0.81151292,0.80149819,0.85441326};
-SS(0.33386283,0.81592026,-0.31808704,0.17426348,1,-0.18078905,0.2222976,1,-0.35617554,0.081865095,0.80626877,-0.27867109){0.86115027,1.045853,1.1585843,0.71703623};
-SS(-0.28278924,0.041190137,-0.04219563,-0.26297351,0.20404986,-0.17122089,-0.39654734,0.26661646,0.019312696,-0.13709741,0.19518884,0.034033465){0.063480395,0.12773981,0.20710489,0.040184006};
-SS(0.6902006,0.50015172,0.27072419,0.67112401,0.32933441,0.5,0.78912399,0.50423732,0.5,0.5725222,0.50074158,0.5){0.77938072,0.79210069,1.1096027,0.8121357};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.61549046,-0.35581383,-0.12962263,-0.76760867,-0.33664988,-0.028298027,-0.7907607,-0.33838097,-0.28342271){0.5265969,0.50877487,0.68479998,0.80149819};
-SS(-0.7055892,-0.50616462,-0.017961589,-0.63348211,-0.7706683,-0.074889286,-0.52487586,-0.5117405,-0.017639258,-0.50537844,-0.68762812,0.023695348){0.74484897,0.97907785,0.51812974,0.71483247};
-SS(-0.36992714,1,-0.22970445,-0.58934795,0.84141567,-0.18062024,-0.35455825,0.80859576,-0.32177549,-0.38143574,0.84373572,-0.12387887){1.1684568,1.0736489,0.86460259,0.85864479};
-SS(0.59365279,0.65503723,0.24444947,0.66554141,0.67524133,0.5,0.76099919,0.76690574,0.25750996,0.55555177,0.82262944,0.31125158){0.82252715,1.1271263,1.2143065,1.0671623};
-SS(-0.49284988,-0.37485679,0.5,-0.62450053,-0.31310845,0.38575928,-0.50874333,-0.23900991,0.2620444,-0.56348952,-0.47594309,0.3052276){0.6163523,0.62379151,0.36443271,0.61776713};
-SS(0.11458044,0.70010244,0.010073529,-0.035654771,0.78507762,0.045007896,0.24404834,0.79519787,0.082231238,0.094968532,0.84539386,-0.087484586){0.49378055,0.60161266,0.68472542,0.71839764};
-SS(-0.60421932,0.82298164,0.34468578,-0.77777778,1,0.5,-0.66659408,1,0.32529585,-0.80481649,0.80494069,0.5){1.1449713,1.8407438,1.5364848,1.5232843};
-SS(-0.26986228,0.26051837,0.22418657,-0.19461387,0.3919517,0.10437587,-0.11618574,0.50328545,0.29980467,-0.11614487,0.30919383,0.33918095){0.1749353,0.19075448,0.33969293,0.20820823};
-SS(-0.48952189,0.78345034,0.019065462,-0.4433427,0.53576375,-0.12560501,-0.45563594,0.60375179,0.095527884,-0.62332411,0.59900263,-0.10904345){0.83409809,0.48429505,0.56263538,0.74800561};
-SS(0.24635331,0.35131343,-0.096025322,0.36021608,0.23247759,-0.012351094,0.13402468,0.11673163,-0.1460819,0.37137652,0.1767682,-0.19801193){0.18045455,0.16110593,0.039337265,0.19205628};
-SS(-0.80479144,0.80504612,-0.5,-1,1,-0.5,-1,0.77777778,-0.5,-1,0.83964442,-0.3309874){1.5255891,2.2287589,1.8398372,1.7979585};
-SS(-0.11614487,0.30919383,0.33918095,-0.24000819,0.17660305,0.5,-0.26986228,0.26051837,0.22418657,-0.20045203,0.067929244,0.29301468){0.20820823,0.3210912,0.1749353,0.10955402};
-SS(0.24635331,0.35131343,-0.096025322,0.08017426,0.31429474,-0.16745504,0.13261259,0.21336316,0.036566127,0.18202227,0.38279251,0.10350409){0.18045455,0.11103103,0.046199082,0.17617817};
-SS(0.09693172,0.3918681,-0.3370861,0.08017426,0.31429474,-0.16745504,0.17777709,0.54047543,-0.2567554,-0.01813809,0.53618118,-0.30537166){0.26256104,0.11103103,0.36840304,0.36567785};
-SS(-0.11754465,-0.65214472,-0.32749638,0,-0.5,-0.5,-0.14376826,-0.62489354,-0.5,-0.073421274,-0.375,-0.38984354){0.53347202,0.4845449,0.6489606,0.28201081};
-SS(-0.6293812,0.63993291,-0.28812602,-0.66548665,0.66585508,-0.5,-0.50014045,0.79673357,-0.5,-0.4813337,0.60105459,-0.5){0.87296464,1.1221664,1.1145783,0.83133251};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.70236545,-0.13062851,-0.19140485,-0.7907607,-0.33838097,-0.28342271,-0.56113743,-0.28920115,-0.29204918){0.54269073,0.5265969,0.80149819,0.46850822};
-SS(-1,-0.55555556,-0.5,-0.91414606,-0.68082467,-0.37109558,-0.78315651,-0.45008839,-0.5,-0.81387526,-0.53653555,-0.3209601){1.5366945,1.4249306,1.0467962,1.0406635};
-SS(-0.0073778212,0.36022468,0.15230712,-0.10037172,0.18891947,0.20844359,-0.13709741,0.19518884,0.034033465,0.13261259,0.21336316,0.036566127){0.13675819,0.074828316,0.040184006,0.046199082};
-SS(0.24635331,0.35131343,-0.096025322,0.34662081,0.36199915,-0.25068724,0.17777709,0.54047543,-0.2567554,0.42864323,0.48543211,-0.13804456){0.18045455,0.29696992,0.36840304,0.42022283};
-SS(-0.24654336,0.57133462,-0.25396354,-0.31377045,0.30492781,-0.36427962,-0.12449617,0.36606215,-0.28273955,-0.34372617,0.39779568,-0.18541051){0.42991415,0.30770932,0.21185338,0.29650146};
-SS(0.67112401,0.32933441,0.5,0.50761134,0.34933779,0.39015973,0.5725222,0.50074158,0.5,0.6902006,0.50015172,0.27072419){0.79210069,0.51484928,0.8121357,0.77938072};
-SS(0.54326203,0.87223293,-0.356993,0.33333333,1,-0.5,0.45062041,0.7833899,-0.5,0.33386283,0.81592026,-0.31808704){1.1662147,1.342474,1.0506853,0.86115027};
-SS(0.62515059,0.14422159,0.5,0.59416595,0.14141347,0.32656529,0.42621669,0.19017509,0.30505062,0.50761134,0.34933779,0.39015973){0.64726001,0.46498444,0.29714896,0.51484928};
-SS(-0.10037172,0.18891947,0.20844359,0.13261259,0.21336316,0.036566127,0.050277172,0.20853018,0.30186362,0.13913358,0.10014326,0.18199659){0.074828316,0.046199082,0.12181545,0.045990896};
-SS(0.26064395,0.61953306,0.12890567,0.39612945,0.70614162,0.21524614,0.26138985,0.51848551,0.281015,0.47723835,0.52605258,0.30619083){0.45328252,0.68453461,0.40200156,0.58228229};
-SS(-0.66546973,0.66566005,0.5,-0.87046532,0.63071146,0.35630423,-0.76389013,0.77728265,0.25513738,-0.67801153,0.56076489,0.29217382){1.1224691,1.2666006,1.2358334,0.83617727};
-SS(0.65062064,0.64268786,0.069510863,0.8988736,0.63809662,-0.070284173,0.77861211,0.77861193,-0.067175459,0.84582719,0.572243,0.1361951){0.82620698,1.2046527,1.1981052,1.0417018};
-SS(0,0,-6.9388939e-15,-0.15128303,0.02253305,0.11422928,-0.13709741,0.19518884,0.034033465,-0.28278924,0.041190137,-0.04219563){-0.017891206,0.025420414,0.040184006,0.063480395};
-SS(-0.60421932,0.82298164,0.34468578,-0.66546973,0.66566005,0.5,-0.76389013,0.77728265,0.25513738,-0.67801153,0.56076489,0.29217382){1.1449713,1.1224691,1.2358334,0.83617727};
-SS(-0.49676106,-0.69523221,-0.26913048,-0.32879066,-0.67072359,-0.5,-0.50377808,-0.78884267,-0.5,-0.50036547,-0.57239096,-0.5){0.78043195,0.79007105,1.1087956,0.81333009};
-SS(0.050277172,0.20853018,0.30186362,0,0,0.5,0.1615172,0,0.33845519,0.12517622,0.12515553,0.5){0.12181545,0.23153294,0.13068911,0.27156885};
-SS(-0.77267892,0.13105707,-0.24874664,-0.89804207,0.11676539,-0.10792088,-0.76752638,0.004448061,-0.013214377,-0.78848723,0.26584533,-0.068869999){0.65386325,0.82300022,0.5734925,0.68151298};
-SS(0.59416595,0.14141347,0.32656529,0.70845584,0,0.20819814,0.50011436,0,0.27961788,0.46476684,0.14382827,0.12247557){0.46498444,0.52761363,0.30940041,0.23450402};
-SS(0.35689191,0.091376279,-0.36932783,0.34662081,0.36199915,-0.25068724,0.20129651,0.21389912,-0.31902192,0.37137652,0.1767682,-0.19801193){0.26145514,0.29696992,0.16839385,0.19205628};
-SS(-0.24000819,0.17660305,0.5,-0.11614487,0.30919383,0.33918095,-0.045146113,0.19012269,0.5,-0.20045203,0.067929244,0.29301468){0.3210912,0.20820823,0.27176836,0.10955402};
-SS(0.25126435,0.28098512,0.24657435,0.18202227,0.38279251,0.10350409,0.36021608,0.23247759,-0.012351094,0.13261259,0.21336316,0.036566127){0.18575023,0.17617817,0.16110593,0.046199082};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.49808619,0.0026201378,-0.26387206,-0.56113743,-0.28920115,-0.29204918,-0.64012388,-0.10177177,-0.37237302){0.26094507,0.29810596,0.46850822,0.54269073};
-SS(0.69383766,0.49492178,-0.021800115,0.60662231,0.34516964,-0.13972301,0.52218723,0.46943947,0.022097553,0.42864323,0.48543211,-0.13804456){0.71284258,0.48782847,0.46892029,0.42022283};
-SS(0.74440038,0.22095066,-0.087839409,0.77315808,0.36766952,0.075951375,0.63998586,0.17856447,0.051345521,0.86971177,0.13024645,0.1427188){0.59875958,0.71793497,0.42570365,0.77797836};
-SS(-0.44431425,1,0.36245944,-0.60421932,0.82298164,0.34468578,-0.47185361,0.73769401,0.24072705,-0.30949447,0.8262402,0.33528492){1.3152029,1.1449713,0.80384956,0.87388961};
-SS(-0.12449617,0.36606215,-0.28273955,-0.24163432,0.33561251,-0.055881164,-0.096302334,0.43534175,-0.056072844,-0.34372617,0.39779568,-0.18541051){0.21185338,0.16437697,0.18078295,0.29650146};
-SS(-0.073421274,-0.375,-0.38984354,-0.23055166,-0.37480907,-0.5,-0.14376826,-0.62489354,-0.5,-0.26056819,-0.54975154,-0.34323516){0.28201081,0.41992239,0.6489606,0.46884495};
-SS(0.37501462,0.2307626,0.5,0.50761134,0.34933779,0.39015973,0.62515059,0.14422159,0.5,0.42621669,0.19017509,0.30505062){0.42590445,0.51484928,0.64726001,0.29714896};
-SS(-0.66659408,1,0.32529585,-0.77777778,1,0.5,-0.84394966,1,0.33504415,-0.80481649,0.80494069,0.5){1.5364848,1.8407438,1.8084725,1.5232843};
-SS(-0.23583358,-0.36008743,0.0071767184,-0.3727858,-0.19869367,0.11195566,-0.25897908,-0.24013326,0.26450313,-0.20656092,-0.13938028,0.029547229){0.16465457,0.16948569,0.17775565,0.048278496};
-SS(0.65062064,0.64268786,0.069510863,0.59365279,0.65503723,0.24444947,0.76099919,0.76690574,0.25750996,0.62860594,0.86645525,0.049037492){0.82620698,0.82252715,1.2143065,1.1303867};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.84108515,0.33242406,-0.80481649,0.80494069,0.5,-0.76389013,0.77728265,0.25513738){1.2666006,1.8031397,1.5232843,1.2358334};
-SS(-0.11111111,1,0.5,-0.043441254,0.79173928,0.29440137,-0.014815866,1,0.31001515,0.00029730467,0.80760978,0.5){1.2487078,0.69563564,1.0772324,0.88423684};
-SS(-0.84084014,-0.14895162,0.31636914,-1,-0.11111111,0.5,-0.73174745,-0.21491043,0.5,-0.80727304,0.00024662976,0.5){0.81273381,1.2390062,0.81377033,0.88515177};
-SS(0.25,0,-0.5,0.35689191,0.091376279,-0.36932783,0.5,0,-0.5,0.37532516,0.23078833,-0.5){0.28810477,0.26145514,0.48471812,0.42551454};
-SS(-0.79227163,-0.79754897,0.0021844777,-0.77973152,-1,-0.0001062007,-0.63348211,-0.7706683,-0.074889286,-0.61978497,-0.82706917,0.12738472){1.2530106,1.588155,0.97907785,1.0681409};
-SS(0.51910919,0.22553632,-0.31417891,0.5,0,-0.5,0.6251418,0.1440922,-0.5,0.50007058,0,-0.27987971){0.40112301,0.48471812,0.63751638,0.31006895};
-SS(0.66554141,0.67524133,0.5,0.6902006,0.50015172,0.27072419,0.78912399,0.50423732,0.5,0.5725222,0.50074158,0.5){1.1271263,0.77938072,1.1096027,0.8121357};
-SS(-1,-0.70710233,0.21356199,-0.83996275,-0.66999882,0.11765553,-1,-0.47520831,0.27427507,-0.79575191,-0.55547687,0.30538166){1.5280688,1.1553131,1.2822693,1.0192798};
-SS(-0.5555987,0.045150158,0.095162244,-0.67616985,-0.069078192,0.18801024,-0.52427834,0.10778268,0.27208728,-0.72768327,0.10310141,0.33233484){0.29993682,0.47948004,0.34448415,0.63492881};
-SS(-0.78848723,0.26584533,-0.068869999,-0.58258855,0.14037208,-0.067351147,-0.7489605,0.18190923,0.13647301,-0.76752638,0.004448061,-0.013214377){0.68151298,0.34532741,0.59564173,0.5734925};
-SS(0.6657623,0.67544754,-0.5,0.51674933,0.64481281,-0.39755292,0.57309542,0.50075776,-0.5,0.67125235,0.44297685,-0.31879306){1.1304562,0.82858869,0.81773274,0.72773009};
-SS(0.87867265,0.36391919,-0.37720578,1,0.5,-0.5,0.78906409,0.5041626,-0.5,0.85153485,0.65148612,-0.35468846){1.03034,1.4840091,1.1105402,1.2568282};
-SS(-0.0073778212,0.36022468,0.15230712,-0.10037172,0.18891947,0.20844359,0.13261259,0.21336316,0.036566127,0.050277172,0.20853018,0.30186362){0.13675819,0.074828316,0.046199082,0.12181545};
-SS(-0.39806707,0.15776443,0.15870839,-0.34310942,-0.010167032,0.1509038,-0.28278924,0.041190137,-0.04219563,-0.15128303,0.02253305,0.11422928){0.19317292,0.12661586,0.063480395,0.025420414};
-SS(0.34662081,0.36199915,-0.25068724,0.24635331,0.35131343,-0.096025322,0.36021608,0.23247759,-0.012351094,0.42864323,0.48543211,-0.13804456){0.29696992,0.18045455,0.16110593,0.42022283};
-SS(0.24635331,0.35131343,-0.096025322,0.30434906,0.49798107,-4.0114635e-05,0.36021608,0.23247759,-0.012351094,0.42864323,0.48543211,-0.13804456){0.18045455,0.32377482,0.16110593,0.42022283};
-SS(-0.55555556,1,0.5,-0.60421932,0.82298164,0.34468578,-0.77777778,1,0.5,-0.66659408,1,0.32529585){1.5418081,1.1449713,1.8407438,1.5364848};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.49997234,-0.27965571,-0.18618058,-0.5161726,-0.15035515,-0.073421274,-0.375,-0.38984354){0.14783141,0.30906942,0.30914003,0.28201081};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.22019801,5.0496855e-05,-0.23583358,-0.36008743,0.0071767184,-0.10133362,-0.40777162,0.1162396){0.14783141,0.029059683,0.16465457,0.17697987};
-SS(0.11458044,0.70010244,0.010073529,0.30434906,0.49798107,-4.0114635e-05,0.25248643,0.73785598,-0.13082591,0.26064395,0.61953306,0.12890567){0.49378055,0.32377482,0.60350215,0.45328252};
-SS(0.46476684,0.14382827,0.12247557,0.36021608,0.23247759,-0.012351094,0.63998586,0.17856447,0.051345521,0.57129187,0.13526053,-0.13726946){0.23450402,0.16110593,0.42570365,0.35115136};
-SS(1,0.5,-0.5,0.87867265,0.36391919,-0.37720578,1,0.50010355,-0.27968748,0.85153485,0.65148612,-0.35468846){1.4840091,1.03034,1.3071084,1.2568282};
-SS(0.49866453,0.63973666,-0.21510859,0.54326203,0.87223293,-0.356993,0.33386283,0.81592026,-0.31808704,0.54700908,0.85955032,-0.16345766){0.68344633,1.1662147,0.86115027,1.0528061};
-SS(0.26138985,0.51848551,0.281015,0.26064395,0.61953306,0.12890567,0.47723835,0.52605258,0.30619083,0.36016656,0.41044152,0.1594367){0.40200156,0.45328252,0.58228229,0.3073722};
-SS(-0.50537844,-0.68762812,0.023695348,-0.35582611,-0.64426575,-0.070000747,-0.42889738,-0.75253072,0.17523232,-0.36608751,-0.8951802,0.074405883){0.71483247,0.52757348,0.75958282,0.92652515};
-SS(-0.11111111,1,0.5,-0.043441254,0.79173928,0.29440137,0.00029730467,0.80760978,0.5,-0.1827732,0.83017807,0.5){1.2487078,0.69563564,0.88423684,0.95598938};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.55555556,0.5,-0.78327322,-0.45013966,0.5,-0.79575191,-0.55547687,0.30538166){1.4119512,1.5359657,1.0435491,1.0192798};
-SS(-0.056808231,0.14323286,-0.13367928,0,0,-6.9388939e-15,-0.13709741,0.19518884,0.034033465,-0.28278924,0.041190137,-0.04219563){0.022140076,-0.017891206,0.040184006,0.063480395};
-SS(-0.39806707,0.15776443,0.15870839,-0.26986228,0.26051837,0.22418657,-0.20045203,0.067929244,0.29301468,-0.15128303,0.02253305,0.11422928){0.19317292,0.1749353,0.10955402,0.025420414};
-SS(0,-0.29157012,0.20836692,-0.16643696,-0.21791406,0.42402077,-0.25897908,-0.24013326,0.26450313,-0.1853821,-0.42358473,0.30866054){0.11172813,0.23818505,0.17775565,0.29143101};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.34372617,0.39779568,-0.18541051,-0.39654734,0.26661646,0.019312696,-0.54631436,0.45612147,-0.00074796238){0.32892635,0.29650146,0.20710489,0.48593017};
-SS(-0.36608751,-0.8951802,0.074405883,-0.35582611,-0.64426575,-0.070000747,-0.42889738,-0.75253072,0.17523232,-0.22302806,-0.77703925,0.068353305){0.92652515,0.52757348,0.75958282,0.64063544};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.01813809,0.53618118,-0.30537166,-0.24654336,0.57133462,-0.25396354,-0.14847812,0.78021305,-0.27623142){0.41358858,0.36567785,0.42991415,0.68882385};
-SS(0.60662231,0.34516964,-0.13972301,0.67125235,0.44297685,-0.31879306,0.77491511,0.22516452,-0.26425516,0.51910919,0.22553632,-0.31417891){0.48782847,0.72773009,0.70313431,0.40112301};
-SS(-0.88905946,-0.098697315,-0.13184676,-0.70236545,-0.13062851,-0.19140485,-0.7907607,-0.33838097,-0.28342271,-0.85707128,-0.1416783,-0.34083416){0.8023886,0.5265969,0.80149819,0.85441326};
-SS(-0.31377045,0.30492781,-0.36427962,-0.41651431,0.41690828,-0.5,-0.40408872,0.18166381,-0.5,-0.49391083,0.27907498,-0.27264436){0.30770932,0.57523437,0.42526168,0.37398026};
-SS(-0.80632325,-0.81147186,-0.5,-0.91414606,-0.68082467,-0.37109558,-1,-0.83959635,-0.33115777,-0.76546557,-0.72634686,-0.27513208){1.5409894,1.4249306,1.7998257,1.1696133};
-SS(-0.7489605,0.18190923,0.13647301,-0.5555987,0.045150158,0.095162244,-0.52427834,0.10778268,0.27208728,-0.72768327,0.10310141,0.33233484){0.59564173,0.29993682,0.34448415,0.63492881};
-SS(0.87272604,0.35900693,0.37172569,1,0.16158711,0.33859063,0.81143387,0.18901581,0.5,0.73568363,0.23203612,0.2735765){1.0107603,1.1259698,0.9265446,0.6509231};
-SS(-0.49808619,0.0026201378,-0.26387206,-0.45843014,-0.20445062,-0.15988901,-0.56113743,-0.28920115,-0.29204918,-0.38492375,-0.20017574,-0.33650716){0.29810596,0.26094507,0.46850822,0.28705324};
-SS(-1,-0.25140376,-0.1934451,-0.88905946,-0.098697315,-0.13184676,-0.7907607,-0.33838097,-0.28342271,-0.85707128,-0.1416783,-0.34083416){1.0790534,0.8023886,0.80149819,0.85441326};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.45843014,-0.20445062,-0.15988901,-0.56113743,-0.28920115,-0.29204918,-0.64012388,-0.10177177,-0.37237302){0.5265969,0.26094507,0.46850822,0.54269073};
-SS(0.48047723,0.47791267,-0.33071402,0.60662231,0.34516964,-0.13972301,0.34662081,0.36199915,-0.25068724,0.51910919,0.22553632,-0.31417891){0.55795418,0.48782847,0.29696992,0.40112301};
-SS(-0.82285362,-0.63420593,-0.0683896,-0.65956212,-0.52273243,-0.19262862,-0.63348211,-0.7706683,-0.074889286,-0.76546557,-0.72634686,-0.27513208){1.0691297,0.7287475,0.97907785,1.1696133};
-SS(-0.4182056,0.11248126,-0.14182463,-0.26297351,0.20404986,-0.17122089,-0.49391083,0.27907498,-0.27264436,-0.34372617,0.39779568,-0.18541051){0.19428145,0.12773981,0.37398026,0.29650146};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.70523324,-0.21165758,-1,-0.47540235,-0.27521785,-0.81387526,-0.53653555,-0.3209601){0.95161001,1.5222776,1.2841965,1.0406635};
-SS(-0.30131805,-0.11512588,-0.5,-0.1971424,-0.26981885,-0.30750196,-0.23055166,-0.37480907,-0.5,-0.12484866,-0.12486094,-0.5){0.3368451,0.19280289,0.41992239,0.26766045};
-SS(-0.67616985,-0.069078192,0.18801024,-0.5555987,0.045150158,0.095162244,-0.7489605,0.18190923,0.13647301,-0.72768327,0.10310141,0.33233484){0.47948004,0.29993682,0.59564173,0.63492881};
-SS(-0.10037172,0.18891947,0.20844359,0,0,0.25,0.050277172,0.20853018,0.30186362,-0.20045203,0.067929244,0.29301468){0.074828316,0.045060365,0.12181545,0.10955402};
-SS(0.8988736,0.63809662,-0.070284173,1,0.70844226,-0.20827687,1,0.50010355,-0.27968748,0.75922048,0.56990614,-0.17060419){1.2046527,1.5310675,1.3071084,0.91133836};
-SS(0.52843461,0.32737897,0.19102935,0.63998586,0.17856447,0.051345521,0.77315808,0.36766952,0.075951375,0.73568363,0.23203612,0.2735765){0.40790135,0.42570365,0.71793497,0.6509231};
-SS(-0.80635543,-0.81164184,0.5,-1,-1,0.5,-1,-0.84092895,0.33252059,-0.8385203,-1,0.33846229){1.5410993,2.2322143,1.8030746,1.8024192};
-SS(-0.5,-1,0.5,-0.63815223,-0.88141187,0.37488811,-0.50400314,-0.78879927,0.5,-0.349759,-0.84853211,0.35590634){1.4840089,1.3088768,1.1086821,0.94981364};
-SS(-0.77091496,-0.77159441,0.2629049,-1,-0.84092895,0.33252059,-0.8385203,-1,0.33846229,-0.80635543,-0.81164184,0.5){1.2433034,1.8030746,1.8024192,1.5410993};
-SS(-0.47972312,1,0.18932995,-0.30949447,0.8262402,0.33528492,-0.44431425,1,0.36245944,-0.47185361,0.73769401,0.24072705){1.2473472,0.87388961,1.3152029,0.80384956};
-SS(0.36016656,0.41044152,0.1594367,0.52843461,0.32737897,0.19102935,0.42621669,0.19017509,0.30505062,0.46476684,0.14382827,0.12247557){0.3073722,0.40790135,0.29714896,0.23450402};
-SS(-0.11754465,-0.65214472,-0.32749638,-0.14376826,-0.62489354,-0.5,-0.26056819,-0.54975154,-0.34323516,-0.073421274,-0.375,-0.38984354){0.53347202,0.6489606,0.46884495,0.28201081};
-SS(0.33333333,1,-0.5,0.54326203,0.87223293,-0.356993,0.43683247,1,-0.26068681,0.33386283,0.81592026,-0.31808704){1.342474,1.1662147,1.2435523,0.86115027};
-SS(-0.65631386,-0.59724887,0.13822882,-0.7055892,-0.50616462,-0.017961589,-0.63348211,-0.7706683,-0.074889286,-0.82285362,-0.63420593,-0.0683896){0.7890621,0.74484897,0.97907785,1.0691297};
-SS(-0.63815223,-0.88141187,0.37488811,-0.5,-1,0.5,-0.4999534,-1,0.27968311,-0.349759,-0.84853211,0.35590634){1.3088768,1.4840089,1.3075402,0.94981364};
-SS(-0.30131805,-0.11512588,-0.5,-0.38492375,-0.20017574,-0.33650716,-0.23055166,-0.37480907,-0.5,-0.1971424,-0.26981885,-0.30750196){0.3368451,0.28705324,0.41992239,0.19280289};
-SS(0.10162062,0.65400865,-0.37913628,-0.0089783977,0.64320989,-0.13441642,0.081865095,0.80626877,-0.27867109,-0.01813809,0.53618118,-0.30537166){0.5665506,0.41358858,0.71703623,0.36567785};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.49808619,0.0026201378,-0.26387206,-0.56113743,-0.28920115,-0.29204918,-0.38492375,-0.20017574,-0.33650716){0.54269073,0.29810596,0.46850822,0.28705324};
-SS(-0.10037172,0.18891947,0.20844359,-0.045146113,0.19012269,0.5,0.050277172,0.20853018,0.30186362,-0.11614487,0.30919383,0.33918095){0.074828316,0.27176836,0.12181545,0.20820823};
-SS(0.77491511,0.22516452,-0.26425516,0.671223,0.32907594,-0.5,0.81149777,0.18885984,-0.5,0.6251418,0.1440922,-0.5){0.70313431,0.79435762,0.92750237,0.63751638};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.65956212,-0.52273243,-0.19262862,-0.56113743,-0.28920115,-0.29204918,-0.62341011,-0.46880832,-0.38153973){0.57811658,0.7287475,0.46850822,0.73807879};
-SS(0.62860594,0.86645525,0.049037492,0.68985253,1,-0.19792707,0.78186447,1,3.3673518e-05,0.77861211,0.77861193,-0.067175459){1.1303867,1.495304,1.5923176,1.1981052};
-SS(0.050277172,0.20853018,0.30186362,0,0,0.5,0,0,0.25,0.1615172,0,0.33845519){0.12181545,0.23153294,0.045060365,0.13068911};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.33333333,0.5,-1,-0.55555556,0.5,-0.78327322,-0.45013966,0.5){1.0133061,1.3443603,1.5359657,1.0435491};
-SS(-0.49292178,-0.37477565,-0.5,-0.4581749,-0.5263483,-0.32801665,-0.36174,-0.40052234,-0.23665811,-0.56113743,-0.28920115,-0.29204918){0.6115465,0.57811658,0.32480953,0.46850822};
-SS(1,0.70844226,-0.20827687,0.85153485,0.65148612,-0.35468846,1,0.50010355,-0.27968748,0.75922048,0.56990614,-0.17060419){1.5310675,1.2568282,1.3071084,0.91133836};
-SS(0.25248643,0.73785598,-0.13082591,0.10162062,0.65400865,-0.37913628,0.17777709,0.54047543,-0.2567554,0.081865095,0.80626877,-0.27867109){0.60350215,0.5665506,0.36840304,0.71703623};
-SS(0.5725222,0.50074158,0.5,0.59365279,0.65503723,0.24444947,0.6902006,0.50015172,0.27072419,0.47723835,0.52605258,0.30619083){0.8121357,0.82252715,0.77938072,0.58228229};
-SS(-0.88905946,-0.098697315,-0.13184676,-1,-0.20076836,0.00061221676,-0.76760867,-0.33664988,-0.028298027,-0.82279039,-0.18997945,0.10657137){0.8023886,1.0172898,0.68479998,0.70945047};
-SS(-1,-1,-0.5,-0.80632325,-0.81147186,-0.5,-1,-0.83959635,-0.33115777,-0.83846289,-1,-0.33858677){2.2321573,1.5409894,1.7998257,1.8019179};
-SS(-0.79227163,-0.79754897,0.0021844777,-0.65631386,-0.59724887,0.13822882,-0.63348211,-0.7706683,-0.074889286,-0.82285362,-0.63420593,-0.0683896){1.2530106,0.7890621,0.97907785,1.0691297};
-SS(-0.29168215,-1,-0.20844865,-0.12233239,-0.87748906,-0.13583418,-0.2399131,-0.76005145,-0.25989531,-0.42066299,-0.84356131,-0.12906413){1.1132023,0.78823805,0.6848256,0.88525127};
-SS(1,0.16158711,0.33859063,0.86971177,0.13024645,0.1427188,0.83866368,0,0.33843958,0.73568363,0.23203612,0.2735765){1.1259698,0.77797836,0.80106313,0.6509231};
-SS(-0.17603462,0.24070348,-0.5,-0.31377045,0.30492781,-0.36427962,-0.29413589,0.046284299,-0.31274881,-0.1182182,0.15955837,-0.3159857){0.32537509,0.30770932,0.1681493,0.11990198};
-SS(0.17426348,1,-0.18078905,0.094968532,0.84539386,-0.087484586,-0.088882135,1,-0.23281641,0.081865095,0.80626877,-0.27867109){1.045853,0.71839764,1.0431215,0.71703623};
-SS(0.13402468,0.11673163,-0.1460819,0.22032809,0,-9.1119885e-05,0.36021608,0.23247759,-0.012351094,0.13261259,0.21336316,0.036566127){0.039337265,0.027339551,0.16110593,0.046199082};
-SS(-0.60421932,0.82298164,0.34468578,-0.44431425,1,0.36245944,-0.50037,0.79662088,0.5,-0.30949447,0.8262402,0.33528492){1.1449713,1.3152029,1.1183194,0.87388961};
-SS(-0.54640726,0.34339216,0.19847863,-0.63246299,0.29145388,0.035195127,-0.79172217,0.43302343,0.13373134,-0.54631436,0.45612147,-0.00074796238){0.43575493,0.47226275,0.80968993,0.48593017};
-SS(0.68966181,1,0.19790566,0.62860594,0.86645525,0.049037492,0.76099919,0.76690574,0.25750996,0.55555177,0.82262944,0.31125158){1.492557,1.1303867,1.2143065,1.0671623};
-SS(1,1,-0.5,0.77777778,1,-0.5,0.81205362,0.80656044,-0.5,0.82865019,1,-0.3214153){2.2331531,1.8341362,1.5391707,1.7714679};
-SS(-0.36992714,1,-0.22970445,-0.58934795,0.84141567,-0.18062024,-0.56041637,1,-0.29784853,-0.35455825,0.80859576,-0.32177549){1.1684568,1.0736489,1.3856141,0.86460259};
-SS(-0.8068077,0.56885008,-0.063754108,-1,0.70529035,-0.21162945,-0.74249217,0.75399014,-0.15399718,-0.80558396,0.5878127,-0.29244037){0.96112076,1.520296,1.1267767,1.0616703};
-SS(-0.89426176,0.41257007,-0.12932618,-1,0.49991607,0.0031934521,-1,0.29928494,0.0012550607,-0.79172217,0.43302343,0.13373134){0.974079,1.2302733,1.0718665,0.80968993};
-SS(-0.67495489,-0.6652659,-0.5,-0.49676106,-0.69523221,-0.26913048,-0.50377808,-0.78884267,-0.5,-0.50036547,-0.57239096,-0.5){1.1276355,0.78043195,1.1087956,0.81333009};
-SS(-0.66546973,0.66566005,0.5,-0.60421932,0.82298164,0.34468578,-0.50037,0.79662088,0.5,-0.48141868,0.60085372,0.5){1.1224691,1.1449713,1.1183194,0.82306978};
-SS(-0.30949447,0.8262402,0.33528492,-0.33333333,1,0.5,-0.3132159,0.69976014,0.5,-0.1827732,0.83017807,0.5){0.87388961,1.3433112,0.82050522,0.95598938};
-SS(-0.58934795,0.84141567,-0.18062024,-0.61115597,1,-0.10200355,-0.76988954,1,-0.26944904,-0.81095336,1,-0.07156149){1.0736489,1.3611038,1.6463902,1.6471359};
-SS(-1,0.77631186,0.00053339564,-0.8480722,0.62150313,0.12164012,-0.8068077,0.56885008,-0.063754108,-0.79370724,0.81084643,0.045877226){1.5817554,1.1084494,0.96112076,1.270911};
-SS(-0.89962374,0.8609561,-0.16698164,-1,0.77631186,0.00053339564,-0.74249217,0.75399014,-0.15399718,-0.79370724,0.81084643,0.045877226){1.5692753,1.5817554,1.1267767,1.270911};
-SS(1,1,0.5,0.77777778,1,0.5,0.82853688,1,0.32125076,0.81191124,0.80644944,0.5){2.2317116,1.8450917,1.7703132,1.5425973};
-SS(0.21512427,0.73211919,0.5,0.10211023,0.6404511,0.38011645,0.00029730467,0.80760978,0.5,0.22886345,0.79287946,0.30210005){0.81521474,0.55160362,0.88423684,0.75332396};
-SS(0.26064395,0.61953306,0.12890567,0.39612945,0.70614162,0.21524614,0.47723835,0.52605258,0.30619083,0.36016656,0.41044152,0.1594367){0.45328252,0.68453461,0.58228229,0.3073722};
-SS(0.34662081,0.36199915,-0.25068724,0.35689191,0.091376279,-0.36932783,0.51910919,0.22553632,-0.31417891,0.37137652,0.1767682,-0.19801193){0.29696992,0.26145514,0.40112301,0.19205628};
-SS(-0.19247216,-0.56000521,0.088357129,0,-0.7082575,0.2084616,-0.22656331,-0.68065623,0.28194433,-0.22302806,-0.77703925,0.068353305){0.34206231,0.52387062,0.57683818,0.64063544};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.70236545,-0.13062851,-0.19140485,-0.49808619,0.0026201378,-0.26387206,-0.64012388,-0.10177177,-0.37237302){0.26094507,0.5265969,0.29810596,0.54269073};
-SS(-0.54640726,0.34339216,0.19847863,-0.61674646,0.25215289,0.3447871,-0.7489605,0.18190923,0.13647301,-0.52427834,0.10778268,0.27208728){0.43575493,0.54607287,0.59564173,0.34448415};
-SS(-0.83851866,0.33014205,0.32623765,-1,0.24865949,0.19540364,-1,0.4752276,0.27420758,-0.79172217,0.43302343,0.13373134){0.89937894,1.0814407,1.2803563,0.80968993};
-SS(-0.20984637,0.69532212,0.20809493,-0.098708274,0.55956225,0.10505678,-0.2401666,0.74114092,-0.051302261,-0.035654771,0.78507762,0.045007896){0.55022745,0.31633913,0.58653028,0.60161266};
-SS(0,0,-6.9388939e-15,-0.10037172,0.18891947,0.20844359,-0.13709741,0.19518884,0.034033465,-0.15128303,0.02253305,0.11422928){-0.017891206,0.074828316,0.040184006,0.025420414};
-SS(0.50010751,0,-0.00013054911,0.37137652,0.1767682,-0.19801193,0.36021608,0.23247759,-0.012351094,0.57129187,0.13526053,-0.13726946){0.22823279,0.19205628,0.16110593,0.35115136};
-SS(-0.79644003,0.50064951,-0.5,-0.63048479,0.37587985,-0.34368186,-0.80558396,0.5878127,-0.29244037,-0.83127473,0.33505962,-0.32026923){1.115532,0.64388066,1.0616703,0.89071695};
-SS(-0.50377808,-0.78884267,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.49676106,-0.69523221,-0.26913048,-0.6448883,-0.87343314,-0.36731947){1.1087956,1.0307746,0.78043195,1.296688};
-SS(1,0.2203628,5.6826691e-05,0.74440038,0.22095066,-0.087839409,0.77315808,0.36766952,0.075951375,0.82562789,0.37565656,-0.12707714){1.0268649,0.59875958,0.71793497,0.82387041};
-SS(-0.17097214,0.64900986,-0.39927747,-0.31289368,0.69974287,-0.5,-0.20381263,0.45499536,-0.5,-0.39032311,0.63241857,-0.34621958){0.59741335,0.82323564,0.478983,0.65630059};
-SS(-0.20984637,0.69532212,0.20809493,-0.16015893,0.67694077,0.39025863,-0.11618574,0.50328545,0.29980467,-0.043441254,0.79173928,0.29440137){0.55022745,0.6265216,0.33969293,0.69563564};
-SS(0.29175541,0,0.20824909,0.26083053,0.15082484,0.37728795,0.50011436,0,0.27961788,0.42621669,0.19017509,0.30505062){0.1093371,0.21918499,0.30940041,0.29714896};
-SS(-0.80728146,0.00010990719,-0.5,-0.62938155,0.17932964,-0.37445272,-0.82994199,0.18319278,-0.5,-0.77267892,0.13105707,-0.24874664){0.88195685,0.55109073,0.95993957,0.65386325};
-SS(0.57129187,0.13526053,-0.13726946,0.50010751,0,-0.00013054911,0.77985819,0,-0.00014691753,0.63998586,0.17856447,0.051345521){0.35115136,0.22823279,0.58919206,0.42570365};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.50159539,-0.29258506,7.2987381e-06,-0.36174,-0.40052234,-0.23665811,-0.45843014,-0.20445062,-0.15988901){0.50877487,0.32068114,0.32480953,0.26094507};
-SS(-0.24163432,0.33561251,-0.055881164,-0.32064519,0.49448821,1.4739833e-06,-0.096302334,0.43534175,-0.056072844,-0.34372617,0.39779568,-0.18541051){0.16437697,0.32892635,0.18078295,0.29650146};
-SS(-0.26056819,-0.54975154,-0.34323516,-0.23055166,-0.37480907,-0.5,-0.36174,-0.40052234,-0.23665811,-0.1971424,-0.26981885,-0.30750196){0.46884495,0.41992239,0.32480953,0.19280289};
-SS(0.25126435,0.28098512,0.24657435,0.36016656,0.41044152,0.1594367,0.42621669,0.19017509,0.30505062,0.46476684,0.14382827,0.12247557){0.18575023,0.3073722,0.29714896,0.23450402};
-SS(0.27170325,0.36204749,-0.4201745,0.37532516,0.23078833,-0.5,0.34662081,0.36199915,-0.25068724,0.20129651,0.21389912,-0.31902192){0.36885377,0.42551454,0.29696992,0.16839385};
-SS(0.18202227,0.38279251,0.10350409,-0.0073778212,0.36022468,0.15230712,0.13261259,0.21336316,0.036566127,0.050277172,0.20853018,0.30186362){0.17617817,0.13675819,0.046199082,0.12181545};
-SS(-0.60421932,0.82298164,0.34468578,-0.47185361,0.73769401,0.24072705,-0.76389013,0.77728265,0.25513738,-0.61311838,0.85766427,0.15491279){1.1449713,0.80384956,1.2358334,1.1216468};
-SS(0.25126435,0.28098512,0.24657435,0.18202227,0.38279251,0.10350409,0.13261259,0.21336316,0.036566127,0.050277172,0.20853018,0.30186362){0.18575023,0.17617817,0.046199082,0.12181545};
-SS(-0.16707278,-0.087678023,-0.31121894,0,0,-0.5,-0.19007896,0.04567822,-0.5,-0.1182182,0.15955837,-0.3159857){0.11599041,0.23465449,0.27736807,0.11990198};
-SS(-0.81387526,-0.53653555,-0.3209601,-1,-0.70523324,-0.21165758,-0.76546557,-0.72634686,-0.27513208,-0.82285362,-0.63420593,-0.0683896){1.0406635,1.5222776,1.1696133,1.0691297};
-SS(-0.29157863,-1,0.20827581,-0.36608751,-0.8951802,0.074405883,-0.4999534,-1,0.27968311,-0.349759,-0.84853211,0.35590634){1.1139248,0.92652515,1.3075402,0.94981364};
-SS(0.37549445,0.49317282,-0.5,0.51674933,0.64481281,-0.39755292,0.45062041,0.7833899,-0.5,0.34412919,0.6158316,-0.3427703){0.61648995,0.82858869,1.0506853,0.59958408};
-SS(0.68985253,1,-0.19792707,0.54700908,0.85955032,-0.16345766,0.77861211,0.77861193,-0.067175459,0.62860594,0.86645525,0.049037492){1.495304,1.0528061,1.1981052,1.1303867};
-SS(0.25126435,0.28098512,0.24657435,0.27123349,0.36190713,0.41476339,0.42621669,0.19017509,0.30505062,0.50761134,0.34933779,0.39015973){0.18575023,0.36300231,0.29714896,0.51484928};
-SS(0.87272604,0.35900693,0.37172569,0.67112401,0.32933441,0.5,0.78912399,0.50423732,0.5,0.6902006,0.50015172,0.27072419){1.0107603,0.79210069,1.1096027,0.77938072};
-SS(-0.37661764,-0.26006406,0.40868766,-0.49284988,-0.37485679,0.5,-0.50874333,-0.23900991,0.2620444,-0.56348952,-0.47594309,0.3052276){0.36234206,0.6163523,0.36443271,0.61776713};
-SS(-0.83248216,0.76782327,-0.31292259,-0.80479144,0.80504612,-0.5,-0.76988954,1,-0.26944904,-0.65756371,0.81308934,-0.3429452){1.366757,1.5255891,1.6463902,1.1958888};
-SS(-0.73479965,-0.34302295,0.24038072,-0.62450053,-0.31310845,0.38575928,-0.50874333,-0.23900991,0.2620444,-0.64009684,-0.10188458,0.37412975){0.69668046,0.62379151,0.36443271,0.54631619};
-SS(-0.39806707,0.15776443,0.15870839,-0.54640726,0.34339216,0.19847863,-0.26986228,0.26051837,0.22418657,-0.39654734,0.26661646,0.019312696){0.19317292,0.43575493,0.1749353,0.20710489};
-SS(-0.70823063,-1,-0.20843533,-0.6448883,-0.87343314,-0.36731947,-0.83846289,-1,-0.33858677,-0.76546557,-0.72634686,-0.27513208){1.5240742,1.296688,1.8019179,1.1696133};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.32879066,-0.67072359,-0.5,-0.50377808,-0.78884267,-0.5,-0.49676106,-0.69523221,-0.26913048){1.0307746,0.79007105,1.1087956,0.78043195};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.45843014,-0.20445062,-0.15988901,-0.49808619,0.0026201378,-0.26387206,-0.4720473,-0.063494476,-0.036829327){0.5265969,0.26094507,0.29810596,0.21285629};
-SS(0,0,-0.5,-0.16707278,-0.087678023,-0.31121894,0,0,-0.25,-0.1182182,0.15955837,-0.3159857){0.23465449,0.11599041,0.044304329,0.11990198};
-SS(-0.65756371,0.81308934,-0.3429452,-0.77777778,1,-0.5,-0.80479144,0.80504612,-0.5,-0.76988954,1,-0.26944904){1.1958888,1.8319852,1.5255891,1.6463902};
-SS(-0.4999534,-1,0.27968311,-0.36608751,-0.8951802,0.074405883,-0.42889738,-0.75253072,0.17523232,-0.349759,-0.84853211,0.35590634){1.3075402,0.92652515,0.75958282,0.94981364};
-SS(-1,0.33333333,0.5,-0.83851866,0.33014205,0.32623765,-0.69937107,0.31347586,0.5,-0.83006559,0.18329805,0.5){1.3403692,0.89937894,0.8165723,0.96159482};
-SS(0.6657623,0.67544754,-0.5,0.85153485,0.65148612,-0.35468846,0.78906409,0.5041626,-0.5,0.81205362,0.80656044,-0.5){1.1304562,1.2568282,1.1105402,1.5391707};
-SS(0.70845584,0,0.20819814,0.59416595,0.14141347,0.32656529,0.63998586,0.17856447,0.051345521,0.46476684,0.14382827,0.12247557){0.52761363,0.46498444,0.42570365,0.23450402};
-SS(-1,0.49991607,0.0031934521,-0.8480722,0.62150313,0.12164012,-1,0.4752276,0.27420758,-0.79172217,0.43302343,0.13373134){1.2302733,1.1084494,1.2803563,0.80968993};
-SS(-0.80481649,0.80494069,0.5,-1,1,0.5,-0.84394966,1,0.33504415,-1,0.84108515,0.33242406){1.5232843,2.2338249,1.8084725,1.8031397};
-SS(0.098704003,0.67249079,0.1943501,0.11458044,0.70010244,0.010073529,-0.035654771,0.78507762,0.045007896,0.24404834,0.79519787,0.082231238){0.47957633,0.49378055,0.60161266,0.68472542};
-SS(0,0,-0.25,0.13402468,0.11673163,-0.1460819,0.16149165,0,-0.33864688,0.20129651,0.21389912,-0.31902192){0.044304329,0.039337265,0.12746835,0.16839385};
-SS(-0.17097214,0.64900986,-0.39927747,-0.20381263,0.45499536,-0.5,-0.24654336,0.57133462,-0.25396354,-0.39032311,0.63241857,-0.34621958){0.59741335,0.478983,0.42991415,0.65630059};
-SS(-0.63246299,0.29145388,0.035195127,-0.58258855,0.14037208,-0.067351147,-0.39654734,0.26661646,0.019312696,-0.5555987,0.045150158,0.095162244){0.47226275,0.34532741,0.20710489,0.29993682};
-SS(-0.86742481,-0.86548068,-0.14483364,-0.70823063,-1,-0.20843533,-0.83846289,-1,-0.33858677,-0.76546557,-0.72634686,-0.27513208){1.5085891,1.5240742,1.8019179,1.1696133};
-SS(-0.10133362,-0.40777162,0.1162396,0,-0.22019801,5.0496855e-05,-0.23583358,-0.36008743,0.0071767184,-0.20656092,-0.13938028,0.029547229){0.17697987,0.029059683,0.16465457,0.048278496};
-SS(0.17426348,1,-0.18078905,0.34720309,0.90097601,-0.12745168,0.25248643,0.73785598,-0.13082591,0.33386283,0.81592026,-0.31808704){1.045853,0.93504792,0.60350215,0.86115027};
-SS(0.87881231,0.64063264,0.37220388,0.66554141,0.67524133,0.5,0.78912399,0.50423732,0.5,0.81191124,0.80644944,0.5){1.3069719,1.1271263,1.1096027,1.5425973};
-SS(-0.4720473,-0.063494476,-0.036829327,-0.5555987,0.045150158,0.095162244,-0.76752638,0.004448061,-0.013214377,-0.65367362,-0.16081953,0.0014934597){0.21285629,0.29993682,0.5734925,0.4344691};
-SS(-0.1853821,-0.42358473,0.30866054,0,-0.5,0.5,-0.23048975,-0.37484721,0.5,-0.14394692,-0.62481063,0.5){0.29143101,0.48207879,0.42714666,0.63866347};
-SS(0.87881231,0.64063264,0.37220388,0.78912399,0.50423732,0.5,0.6902006,0.50015172,0.27072419,0.87272604,0.35900693,0.37172569){1.3069719,1.1096027,0.77938072,1.0107603};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.67495489,-0.6652659,-0.5,-0.50377808,-0.78884267,-0.5,-0.80632325,-0.81147186,-0.5){1.296688,1.1276355,1.1087956,1.5409894};
-SS(-0.41648151,0.41684878,0.5,-0.52470763,0.46530444,0.33754711,-0.41843781,0.30742585,0.3397996,-0.61674646,0.25215289,0.3447871){0.58097186,0.59371518,0.37011438,0.54607287};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.80632325,-0.81147186,-0.5,-0.83846289,-1,-0.33858677,-0.76546557,-0.72634686,-0.27513208){1.296688,1.5409894,1.8019179,1.1696133};
-SS(0.36841015,0.87909734,0.37310922,0.33333333,1,0.5,0.21512427,0.73211919,0.5,0.45042372,0.78359022,0.5){1.0362544,1.3466764,0.81521474,1.0496179};
-SS(-0.3533559,-0.49437708,0.037576204,-0.36174,-0.40052234,-0.23665811,-0.23583358,-0.36008743,0.0071767184,-0.18618058,-0.5161726,-0.15035515){0.35575629,0.32480953,0.16465457,0.30914003};
-SS(0.59416595,0.14141347,0.32656529,0.5,0,0.5,0.62515059,0.14422159,0.5,0.42621669,0.19017509,0.30505062){0.46498444,0.47735984,0.64726001,0.29714896};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.88905946,-0.098697315,-0.13184676,-0.76760867,-0.33664988,-0.028298027,-0.65367362,-0.16081953,0.0014934597){0.5265969,0.8023886,0.68479998,0.4344691};
-SS(-0.54640726,0.34339216,0.19847863,-0.63246299,0.29145388,0.035195127,-0.7489605,0.18190923,0.13647301,-0.79172217,0.43302343,0.13373134){0.43575493,0.47226275,0.59564173,0.80968993};
-SS(0.35689191,0.091376279,-0.36932783,0.5,0,-0.5,0.6251418,0.1440922,-0.5,0.51910919,0.22553632,-0.31417891){0.26145514,0.48471812,0.63751638,0.40112301};
-SS(-0.76988954,1,-0.26944904,-0.58934795,0.84141567,-0.18062024,-0.81095336,1,-0.07156149,-0.74249217,0.75399014,-0.15399718){1.6463902,1.0736489,1.6471359,1.1267767};
-SS(0.11583535,0.30145324,-0.5,0.09693172,0.3918681,-0.3370861,-0.029932551,0.40748663,-0.5,-0.010543702,0.17712261,-0.5){0.33954703,0.26256104,0.4038008,0.25750364};
-SS(-0.41648151,0.41684878,0.5,-0.41843781,0.30742585,0.3397996,-0.24000819,0.17660305,0.5,-0.4543958,0.20406131,0.5){0.58097186,0.37011438,0.3210912,0.48353653};
-SS(-0.67513028,-0.66529728,0.5,-0.63815223,-0.88141187,0.37488811,-0.50400314,-0.78879927,0.5,-0.80635543,-0.81164184,0.5){1.1284607,1.3088768,1.1086821,1.5410993};
-SS(-0.36145429,0.13293621,0.35430528,-0.24000819,0.17660305,0.5,-0.26986228,0.26051837,0.22418657,-0.41843781,0.30742585,0.3397996){0.26360063,0.3210912,0.1749353,0.37011438};
-SS(-0.073421274,-0.375,-0.38984354,0,-0.49997234,-0.27965571,-0.18618058,-0.5161726,-0.15035515,-0.26056819,-0.54975154,-0.34323516){0.28201081,0.30906942,0.30914003,0.46884495};
-SS(0.27123349,0.36190713,0.41476339,0.26138985,0.51848551,0.281015,0.47723835,0.52605258,0.30619083,0.36016656,0.41044152,0.1594367){0.36300231,0.40200156,0.58228229,0.3073722};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.24635331,0.35131343,-0.096025322,0.17777709,0.54047543,-0.2567554,0.42864323,0.48543211,-0.13804456){0.32377482,0.18045455,0.36840304,0.42022283};
-SS(-0.73174678,-0.21478859,-0.5,-0.64012388,-0.10177177,-0.37237302,-0.7907607,-0.33838097,-0.28342271,-0.56113743,-0.28920115,-0.29204918){0.81151292,0.54269073,0.80149819,0.46850822};
-SS(-0.31377045,0.30492781,-0.36427962,-0.41651431,0.41690828,-0.5,-0.17603462,0.24070348,-0.5,-0.40408872,0.18166381,-0.5){0.30770932,0.57523437,0.32537509,0.42526168};
-SS(-0.3548152,-0.48825703,0.21848985,-0.3533559,-0.49437708,0.037576204,-0.52487586,-0.5117405,-0.017639258,-0.59094649,-0.40495207,0.12834587){0.38862106,0.35575629,0.51812974,0.51475101};
-SS(0.76099919,0.76690574,0.25750996,0.59365279,0.65503723,0.24444947,0.55555177,0.82262944,0.31125158,0.62860594,0.86645525,0.049037492){1.2143065,0.82252715,1.0671623,1.1303867};
-SS(-0.6293812,0.63993291,-0.28812602,-0.66548665,0.66585508,-0.5,-0.79644003,0.50064951,-0.5,-0.80558396,0.5878127,-0.29244037){0.87296464,1.1221664,1.115532,1.0616703};
-SS(-0.37661764,-0.26006406,0.40868766,-0.3548152,-0.48825703,0.21848985,-0.1853821,-0.42358473,0.30866054,-0.34549718,-0.50098866,0.4105565){0.36234206,0.38862106,0.29143101,0.5260109};
-SS(0,0,0.5,-0.20045203,0.067929244,0.29301468,0,0,0.25,-0.17669296,0.011023676,0.5){0.23153294,0.10955402,0.045060365,0.26322593};
-SS(-0.2401666,0.74114092,-0.051302261,-0.38143574,0.84373572,-0.12387887,-0.14847812,0.78021305,-0.27623142,-0.35455825,0.80859576,-0.32177549){0.58653028,0.85864479,0.68882385,0.86460259};
-SS(-0.5555987,0.045150158,0.095162244,-0.34310942,-0.010167032,0.1509038,-0.52427834,0.10778268,0.27208728,-0.40506391,-0.079541407,0.3303193){0.29993682,0.12661586,0.34448415,0.26156128};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.55555556,0.5,-1,0.4752276,0.27420758,-0.79641575,0.50054117,0.5){1.2666006,1.5401154,1.2803563,1.1180299};
-SS(-1,-0.33333333,0.5,-0.89646962,-0.32955067,0.34017365,-0.73174745,-0.21491043,0.5,-0.78327322,-0.45013966,0.5){1.3443603,1.0133061,0.81377033,1.0435491};
-SS(-0.76389013,0.77728265,0.25513738,-0.84394966,1,0.33504415,-1,0.84108515,0.33242406,-0.80481649,0.80494069,0.5){1.2358334,1.8084725,1.8031397,1.5232843};
-SS(-1,0.29928494,0.0012550607,-0.89426176,0.41257007,-0.12932618,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999){1.0718665,0.974079,0.80968993,0.68151298};
-SS(-0.66546973,0.66566005,0.5,-0.87046532,0.63071146,0.35630423,-0.79641575,0.50054117,0.5,-0.80481649,0.80494069,0.5){1.1224691,1.2666006,1.1180299,1.5232843};
-SS(-0.26297351,0.20404986,-0.17122089,-0.4182056,0.11248126,-0.14182463,-0.39654734,0.26661646,0.019312696,-0.34372617,0.39779568,-0.18541051){0.12773981,0.19428145,0.20710489,0.29650146};
-SS(-0.17097214,0.64900986,-0.39927747,-0.14847812,0.78021305,-0.27623142,-0.01813809,0.53618118,-0.30537166,0.10162062,0.65400865,-0.37913628){0.59741335,0.68882385,0.36567785,0.5665506};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.36016656,0.41044152,0.1594367,0.36021608,0.23247759,-0.012351094,0.52218723,0.46943947,0.022097553){0.32377482,0.3073722,0.16110593,0.46892029};
-SS(-0.045146113,0.19012269,0.5,-0.10037172,0.18891947,0.20844359,-0.20045203,0.067929244,0.29301468,-0.11614487,0.30919383,0.33918095){0.27176836,0.074828316,0.10955402,0.20820823};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.3533559,-0.49437708,0.037576204,-0.23583358,-0.36008743,0.0071767184,-0.3727858,-0.19869367,0.11195566){0.32068114,0.35575629,0.16465457,0.16948569};
-SS(-0.83127473,0.33505962,-0.32026923,-1,0.33333333,-0.5,-0.69937066,0.31351533,-0.5,-0.82994199,0.18319278,-0.5){0.89071695,1.3393331,0.81965428,0.95993957};
-SS(-0.66548665,0.66585508,-0.5,-0.6293812,0.63993291,-0.28812602,-0.79644003,0.50064951,-0.5,-0.61503712,0.4760032,-0.5){1.1221664,0.87296464,1.115532,0.83978547};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.50036547,-0.57239096,-0.5,-0.49676106,-0.69523221,-0.26913048,-0.62341011,-0.46880832,-0.38153973){0.57811658,0.81333009,0.78043195,0.73807879};
-SS(-0.61674646,0.25215289,0.3447871,-0.41648151,0.41684878,0.5,-0.4543958,0.20406131,0.5,-0.41843781,0.30742585,0.3397996){0.54607287,0.58097186,0.48353653,0.37011438};
-SS(0.35689191,0.091376279,-0.36932783,0.5,0,-0.5,0.37532516,0.23078833,-0.5,0.6251418,0.1440922,-0.5){0.26145514,0.48471812,0.42551454,0.63751638};
-SS(-0.64009684,-0.10188458,0.37412975,-0.67616985,-0.069078192,0.18801024,-0.73479965,-0.34302295,0.24038072,-0.84084014,-0.14895162,0.31636914){0.54631619,0.47948004,0.69668046,0.81273381};
-SS(1,0.75,-0.5,0.85153485,0.65148612,-0.35468846,1,0.70844226,-0.20827687,1,0.83864447,-0.33847614){1.7924126,1.2568282,1.5310675,1.8065101};
-SS(-1,-0.70523324,-0.21165758,-0.85520613,-0.46088631,-0.14784569,-0.82285362,-0.63420593,-0.0683896,-0.81387526,-0.53653555,-0.3209601){1.5222776,0.95161001,1.0691297,1.0406635};
-SS(-0.66548665,0.66585508,-0.5,-0.65756371,0.81308934,-0.3429452,-0.50014045,0.79673357,-0.5,-0.80479144,0.80504612,-0.5){1.1221664,1.1958888,1.1145783,1.5255891};
-SS(-0.349759,-0.84853211,0.35590634,-0.25,-1,0.5,-0.29157863,-1,0.20827581,-0.16134158,-1,0.33850563){0.94981364,1.2918821,1.1139248,1.129042};
-SS(-0.34310942,-0.010167032,0.1509038,-0.5555987,0.045150158,0.095162244,-0.4720473,-0.063494476,-0.036829327,-0.3727858,-0.19869367,0.11195566){0.12661586,0.29993682,0.21285629,0.16948569};
-SS(0.64232771,0.84838332,0.46476191,0.82853688,1,0.32125076,0.81191124,0.80644944,0.5,0.76099919,0.76690574,0.25750996){1.3339184,1.7703132,1.5425973,1.2143065};
-SS(-0.37661764,-0.26006406,0.40868766,-0.3548152,-0.48825703,0.21848985,-0.25897908,-0.24013326,0.26450313,-0.1853821,-0.42358473,0.30866054){0.36234206,0.38862106,0.17775565,0.29143101};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.4581749,-0.5263483,-0.32801665,-0.56113743,-0.28920115,-0.29204918,-0.61549046,-0.35581383,-0.12962263){0.7287475,0.57811658,0.46850822,0.50877487};
-SS(0,0,-6.9388939e-15,-0.098950987,-0.13391411,-0.14594667,-0.20656092,-0.13938028,0.029547229,-0.28278924,0.041190137,-0.04219563){-0.017891206,0.03512721,0.048278496,0.063480395};
-SS(-0.60421932,0.82298164,0.34468578,-0.66546973,0.66566005,0.5,-0.50037,0.79662088,0.5,-0.80481649,0.80494069,0.5){1.1449713,1.1224691,1.1183194,1.5232843};
-SS(0,-0.5,0.5,-0.1853821,-0.42358473,0.30866054,0,-0.49989758,0.27983937,-0.14394692,-0.62481063,0.5){0.48207879,0.29143101,0.30650831,0.63866347};
-SS(0.59416595,0.14141347,0.32656529,0.5,0,0.5,0.75,0,0.5,0.62515059,0.14422159,0.5){0.46498444,0.47735984,0.79262349,0.64726001};
-SS(-0.17603462,0.24070348,-0.5,-0.29413589,0.046284299,-0.31274881,-0.40408872,0.18166381,-0.5,-0.19007896,0.04567822,-0.5){0.32537509,0.1681493,0.42526168,0.27736807};
-SS(0.37532516,0.23078833,-0.5,0.35689191,0.091376279,-0.36932783,0.6251418,0.1440922,-0.5,0.51910919,0.22553632,-0.31417891){0.42551454,0.26145514,0.63751638,0.40112301};
-SS(-0.33333333,1,0.5,-0.30949447,0.8262402,0.33528492,-0.22223836,1,0.2622369,-0.1827732,0.83017807,0.5){1.3433112,0.87388961,1.0984067,0.95598938};
-SS(0,0,-0.5,-0.1182182,0.15955837,-0.3159857,0,0,-0.25,-0.010543702,0.17712261,-0.5){0.23465449,0.11990198,0.044304329,0.25750364};
-SS(-0.6293812,0.63993291,-0.28812602,-0.79644003,0.50064951,-0.5,-0.61503712,0.4760032,-0.5,-0.80558396,0.5878127,-0.29244037){0.87296464,1.115532,0.83978547,1.0616703};
-SS(-0.63815223,-0.88141187,0.37488811,-0.50400314,-0.78879927,0.5,-0.349759,-0.84853211,0.35590634,-0.57994589,-0.69256437,0.31204703){1.3088768,1.1086821,0.94981364,0.89957508};
-SS(-1,-0.00012222908,0.26646899,-0.84289574,0.018333867,0.1608607,-0.84084014,-0.14895162,0.31636914,-0.82279039,-0.18997945,0.10657137){1.0506696,0.72430843,0.81273381,0.70945047};
-SS(-0.39806707,0.15776443,0.15870839,-0.39654734,0.26661646,0.019312696,-0.5555987,0.045150158,0.095162244,-0.63246299,0.29145388,0.035195127){0.19317292,0.20710489,0.29993682,0.47226275};
-SS(0.25,0,0.5,0.26083053,0.15082484,0.37728795,0.29175541,0,0.20824909,0.1615172,0,0.33845519){0.29281005,0.21918499,0.1093371,0.13068911};
-SS(-0.76760867,-0.33664988,-0.028298027,-0.88905946,-0.098697315,-0.13184676,-0.82279039,-0.18997945,0.10657137,-0.65367362,-0.16081953,0.0014934597){0.68479998,0.8023886,0.70945047,0.4344691};
-SS(-0.58258855,0.14037208,-0.067351147,-0.65355936,0.25468043,-0.1897796,-0.49391083,0.27907498,-0.27264436,-0.4182056,0.11248126,-0.14182463){0.34532741,0.51379882,0.37398026,0.19428145};
-SS(0.60662231,0.34516964,-0.13972301,0.37137652,0.1767682,-0.19801193,0.34662081,0.36199915,-0.25068724,0.51910919,0.22553632,-0.31417891){0.48782847,0.19205628,0.29696992,0.40112301};
-SS(-0.88905946,-0.098697315,-0.13184676,-0.70236545,-0.13062851,-0.19140485,-0.77267892,0.13105707,-0.24874664,-0.76752638,0.004448061,-0.013214377){0.8023886,0.5265969,0.65386325,0.5734925};
-SS(-1,-0.83959635,-0.33115777,-0.86742481,-0.86548068,-0.14483364,-0.83846289,-1,-0.33858677,-0.76546557,-0.72634686,-0.27513208){1.7998257,1.5085891,1.8019179,1.1696133};
-SS(-0.41648151,0.41684878,0.5,-0.29261734,0.53193925,0.43339885,-0.18136176,0.40461939,0.5,-0.41843781,0.30742585,0.3397996){0.58097186,0.53993003,0.42386795,0.37011438};
-SS(-0.12988976,-0.86995226,0.20452896,-0.16134158,-1,0.33850563,0,-0.83845667,0.33864852,-0.18863677,-0.81113033,0.5){0.79894991,1.129042,0.80178572,0.92459822};
-SS(-0.4433427,0.53576375,-0.12560501,-0.49391083,0.27907498,-0.27264436,-0.50782983,0.50249565,-0.29902586,-0.34372617,0.39779568,-0.18541051){0.48429505,0.37398026,0.58612549,0.29650146};
-SS(-0.36608751,-0.8951802,0.074405883,-0.4999534,-1,0.27968311,-0.42889738,-0.75253072,0.17523232,-0.61978497,-0.82706917,0.12738472){0.92652515,1.3075402,0.75958282,1.0681409};
-SS(0.37532516,0.23078833,-0.5,0.35689191,0.091376279,-0.36932783,0.34662081,0.36199915,-0.25068724,0.20129651,0.21389912,-0.31902192){0.42551454,0.26145514,0.29696992,0.16839385};
-SS(0.11136938,1,0.13859714,-0.043441254,0.79173928,0.29440137,-0.014815866,1,0.31001515,-0.084253952,1,0.13733396){1.0072058,0.69563564,1.0772324,1.0073117};
-SS(0,-0.77970171,0.00010845427,-0.14850787,-0.69358405,-0.087583548,-0.22302806,-0.77703925,0.068353305,-0.19247216,-0.56000521,0.088357129){0.58842154,0.49763432,0.64063544,0.34206231};
-SS(-0.67616985,-0.069078192,0.18801024,-0.64009684,-0.10188458,0.37412975,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.47948004,0.54631619,0.36443271,0.26156128};
-SS(1,1,-0.5,0.81205362,0.80656044,-0.5,1,0.83864447,-0.33847614,0.82865019,1,-0.3214153){2.2331531,1.5391707,1.8065101,1.7714679};
-SS(-0.58258855,0.14037208,-0.067351147,-0.78848723,0.26584533,-0.068869999,-0.77267892,0.13105707,-0.24874664,-0.76752638,0.004448061,-0.013214377){0.34532741,0.68151298,0.65386325,0.5734925};
-SS(-0.34549718,-0.50098866,0.4105565,-0.14394692,-0.62481063,0.5,-0.22656331,-0.68065623,0.28194433,-0.1853821,-0.42358473,0.30866054){0.5260109,0.63866347,0.57683818,0.29143101};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.7055892,-0.50616462,-0.017961589,-0.63348211,-0.7706683,-0.074889286,-0.52487586,-0.5117405,-0.017639258){0.7287475,0.74484897,0.97907785,0.51812974};
-SS(-0.39806707,0.15776443,0.15870839,-0.39654734,0.26661646,0.019312696,-0.28278924,0.041190137,-0.04219563,-0.4182056,0.11248126,-0.14182463){0.19317292,0.20710489,0.063480395,0.19428145};
-SS(0.86971177,0.13024645,0.1427188,1,0.29178008,0.20838772,1,0.2203628,5.6826691e-05,0.77315808,0.36766952,0.075951375){0.77797836,1.1084285,1.0268649,0.71793497};
-SS(1,0.83856906,0.33864755,1,1,0.5,0.82853688,1,0.32125076,0.81191124,0.80644944,0.5){1.8033242,2.2317116,1.7703132,1.5425973};
-SS(-0.36174,-0.40052234,-0.23665811,-0.15923414,-0.34171533,-0.15079999,-0.18618058,-0.5161726,-0.15035515,-0.26056819,-0.54975154,-0.34323516){0.32480953,0.14783141,0.30914003,0.46884495};
-SS(-0.5555987,0.045150158,0.095162244,-0.34310942,-0.010167032,0.1509038,-0.4720473,-0.063494476,-0.036829327,-0.28278924,0.041190137,-0.04219563){0.29993682,0.12661586,0.21285629,0.063480395};
-SS(-0.33333333,1,-0.5,-0.35455825,0.80859576,-0.32177549,-0.31289368,0.69974287,-0.5,-0.18268367,0.83021756,-0.5){1.3407278,0.86460259,0.82323564,0.9573479};
-SS(-0.39032311,0.63241857,-0.34621958,-0.50014045,0.79673357,-0.5,-0.4813337,0.60105459,-0.5,-0.6293812,0.63993291,-0.28812602){0.65630059,1.1145783,0.83133251,0.87296464};
-SS(-0.30122568,-0.11513872,0.5,-0.40506391,-0.079541407,0.3303193,-0.17669296,0.011023676,0.5,-0.20045203,0.067929244,0.29301468){0.33848202,0.26156128,0.26322593,0.10955402};
-SS(0.5,0,0.5,0.42621669,0.19017509,0.30505062,0.37501462,0.2307626,0.5,0.62515059,0.14422159,0.5){0.47735984,0.29714896,0.42590445,0.64726001};
-SS(0.59365279,0.65503723,0.24444947,0.65062064,0.64268786,0.069510863,0.39612945,0.70614162,0.21524614,0.45788353,0.76094781,-0.0096633567){0.82252715,0.82620698,0.68453461,0.76853994};
-SS(1,0.50009037,3.487572e-05,0.69383766,0.49492178,-0.021800115,0.84582719,0.572243,0.1361951,0.8988736,0.63809662,-0.070284173){1.2275825,0.71284258,1.0417018,1.2046527};
-SS(-0.65776896,0.64141588,0.074371921,-0.61311838,0.85766427,0.15491279,-0.48952189,0.78345034,0.019065462,-0.79370724,0.81084643,0.045877226){0.83514199,1.1216468,0.83409809,1.270911};
-SS(-1,-1,-0.25,-0.86742481,-0.86548068,-0.14483364,-0.70823063,-1,-0.20843533,-0.83846289,-1,-0.33858677){2.0422973,1.5085891,1.5240742,1.8019179};
-SS(-0.54640726,0.34339216,0.19847863,-0.52470763,0.46530444,0.33754711,-0.35521568,0.4957142,0.26668635,-0.45563594,0.60375179,0.095527884){0.43575493,0.59371518,0.42001946,0.56263538};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.15923414,-0.34171533,-0.15079999,-0.36174,-0.40052234,-0.23665811,-0.1971424,-0.26981885,-0.30750196){0.11404163,0.14783141,0.32480953,0.19280289};
-SS(0.61535375,0.70719289,-0.095218388,0.65062064,0.64268786,0.069510863,0.45788353,0.76094781,-0.0096633567,0.52218723,0.46943947,0.022097553){0.87858083,0.82620698,0.76853994,0.46892029};
-SS(0.35689191,0.091376279,-0.36932783,0.37532516,0.23078833,-0.5,0.34662081,0.36199915,-0.25068724,0.51910919,0.22553632,-0.31417891){0.26145514,0.42551454,0.29696992,0.40112301};
-SS(-0.8480722,0.62150313,0.12164012,-1,0.49991607,0.0031934521,-1,0.77631186,0.00053339564,-0.8068077,0.56885008,-0.063754108){1.1084494,1.2302733,1.5817554,0.96112076};
-SS(-0.77973152,-1,-0.0001062007,-0.79227163,-0.79754897,0.0021844777,-0.63348211,-0.7706683,-0.074889286,-0.86742481,-0.86548068,-0.14483364){1.588155,1.2530106,0.97907785,1.5085891};
-SS(-0.5555987,0.045150158,0.095162244,-0.58258855,0.14037208,-0.067351147,-0.4720473,-0.063494476,-0.036829327,-0.76752638,0.004448061,-0.013214377){0.29993682,0.34532741,0.21285629,0.5734925};
-SS(-0.39806707,0.15776443,0.15870839,-0.39654734,0.26661646,0.019312696,-0.13709741,0.19518884,0.034033465,-0.28278924,0.041190137,-0.04219563){0.19317292,0.20710489,0.040184006,0.063480395};
-SS(-0.8480722,0.62150313,0.12164012,-0.79172217,0.43302343,0.13373134,-0.67801153,0.56076489,0.29217382,-0.87046532,0.63071146,0.35630423){1.1084494,0.80968993,0.83617727,1.2666006};
-SS(-0.38492375,-0.20017574,-0.33650716,-0.49292178,-0.37477565,-0.5,-0.36174,-0.40052234,-0.23665811,-0.56113743,-0.28920115,-0.29204918){0.28705324,0.6115465,0.32480953,0.46850822};
-SS(-0.11111111,1,0.5,-0.33333333,1,0.5,-0.22223836,1,0.2622369,-0.1827732,0.83017807,0.5){1.2487078,1.3433112,1.0984067,0.95598938};
-SS(-0.62450053,-0.31310845,0.38575928,-0.73479965,-0.34302295,0.24038072,-0.56348952,-0.47594309,0.3052276,-0.79575191,-0.55547687,0.30538166){0.62379151,0.69668046,0.61776713,1.0192798};
-SS(-0.26986228,0.26051837,0.22418657,-0.39806707,0.15776443,0.15870839,-0.13709741,0.19518884,0.034033465,-0.15128303,0.02253305,0.11422928){0.1749353,0.19317292,0.040184006,0.025420414};
-SS(-0.36145429,0.13293621,0.35430528,-0.30122568,-0.11513872,0.5,-0.40752783,0.030201366,0.5,-0.40506391,-0.079541407,0.3303193){0.26360063,0.33848202,0.40526498,0.26156128};
-SS(-0.30122568,-0.11513872,0.5,-0.36145429,0.13293621,0.35430528,-0.40752783,0.030201366,0.5,-0.17669296,0.011023676,0.5){0.33848202,0.26360063,0.40526498,0.26322593};
-SS(-0.70823063,-1,-0.20843533,-0.86742481,-0.86548068,-0.14483364,-0.77973152,-1,-0.0001062007,-0.63348211,-0.7706683,-0.074889286){1.5240742,1.5085891,1.588155,0.97907785};
-SS(-0.18848435,-0.81110947,-0.5,-0.2399131,-0.76005145,-0.25989531,-0.16144976,-1,-0.33863959,0,-0.83851883,-0.33849865){0.92571371,0.6848256,1.1250711,0.80235204};
-SS(-0.49995867,-1,-0.27986665,-0.36340067,-0.87821042,-0.37678589,-0.49676106,-0.69523221,-0.26913048,-0.42066299,-0.84356131,-0.12906413){1.3082069,1.0307746,0.78043195,0.88525127};
-SS(-0.32879066,-0.67072359,-0.5,-0.4581749,-0.5263483,-0.32801665,-0.49676106,-0.69523221,-0.26913048,-0.26056819,-0.54975154,-0.34323516){0.79007105,0.57811658,0.78043195,0.46884495};
-SS(-1,-0.24887753,0.1953112,-0.82279039,-0.18997945,0.10657137,-1,-0.00012222908,0.26646899,-0.84084014,-0.14895162,0.31636914){1.0768014,0.70945047,1.0506696,0.81273381};
-SS(1,0,0.25,0.86971177,0.13024645,0.1427188,0.70845584,0,0.20819814,0.83866368,0,0.33843958){1.0436257,0.77797836,0.52761363,0.80106313};
-SS(-0.30122568,-0.11513872,0.5,-0.36145429,0.13293621,0.35430528,-0.17669296,0.011023676,0.5,-0.40506391,-0.079541407,0.3303193){0.33848202,0.26360063,0.26322593,0.26156128};
-SS(-0.13709741,0.19518884,0.034033465,-0.24163432,0.33561251,-0.055881164,-0.096302334,0.43534175,-0.056072844,-0.056808231,0.14323286,-0.13367928){0.040184006,0.16437697,0.18078295,0.022140076};
-SS(-0.39032311,0.63241857,-0.34621958,-0.48255002,0.69900846,-0.19155417,-0.24654336,0.57133462,-0.25396354,-0.35455825,0.80859576,-0.32177549){0.65630059,0.74365966,0.42991415,0.86460259};
-SS(-0.80558396,0.5878127,-0.29244037,-1,0.55555556,-0.5,-0.79644003,0.50064951,-0.5,-1,0.47527469,-0.27513051){1.0616703,1.5309384,1.115532,1.2834809};
-SS(0.37137652,0.1767682,-0.19801193,0.29173763,0,-0.20843742,0.22032809,0,-9.1119885e-05,0.13402468,0.11673163,-0.1460819){0.19205628,0.1134179,0.027339551,0.039337265};
-SS(0.86971177,0.13024645,0.1427188,1,0,0.25,1,0.29178008,0.20838772,1,0.16158711,0.33859063){0.77797836,1.0436257,1.1084285,1.1259698};
-SS(-0.17669296,0.011023676,0.5,-0.36145429,0.13293621,0.35430528,-0.20045203,0.067929244,0.29301468,-0.40506391,-0.079541407,0.3303193){0.26322593,0.26360063,0.10955402,0.26156128};
-SS(-0.20381263,0.45499536,-0.5,-0.17097214,0.64900986,-0.39927747,-0.24654336,0.57133462,-0.25396354,-0.01813809,0.53618118,-0.30537166){0.478983,0.59741335,0.42991415,0.36567785};
-SS(-0.65756371,0.81308934,-0.3429452,-0.77777778,1,-0.5,-0.76988954,1,-0.26944904,-0.56041637,1,-0.29784853){1.1958888,1.8319852,1.6463902,1.3856141};
-SS(-0.58934795,0.84141567,-0.18062024,-0.48255002,0.69900846,-0.19155417,-0.65756371,0.81308934,-0.3429452,-0.35455825,0.80859576,-0.32177549){1.0736489,0.74365966,1.1958888,0.86460259};
-SS(0.36016656,0.41044152,0.1594367,0.25126435,0.28098512,0.24657435,0.36021608,0.23247759,-0.012351094,0.46476684,0.14382827,0.12247557){0.3073722,0.18575023,0.16110593,0.23450402};
-SS(-0.17603462,0.24070348,-0.5,-0.31377045,0.30492781,-0.36427962,-0.40408872,0.18166381,-0.5,-0.29413589,0.046284299,-0.31274881){0.32537509,0.30770932,0.42526168,0.1681493};
-SS(-0.34310942,-0.010167032,0.1509038,-0.39806707,0.15776443,0.15870839,-0.28278924,0.041190137,-0.04219563,-0.5555987,0.045150158,0.095162244){0.12661586,0.19317292,0.063480395,0.29993682};
-SS(-0.62450053,-0.31310845,0.38575928,-0.78327322,-0.45013966,0.5,-0.73479965,-0.34302295,0.24038072,-0.79575191,-0.55547687,0.30538166){0.62379151,1.0435491,0.69668046,1.0192798};
-SS(-0.57994589,-0.69256437,0.31204703,-0.67513028,-0.66529728,0.5,-0.56348952,-0.47594309,0.3052276,-0.79575191,-0.55547687,0.30538166){0.89957508,1.1284607,0.61776713,1.0192798};
-SS(0.76099919,0.76690574,0.25750996,1,0.83856906,0.33864755,0.82853688,1,0.32125076,0.81191124,0.80644944,0.5){1.2143065,1.8033242,1.7703132,1.5425973};
-SS(0.66554141,0.67524133,0.5,0.87881231,0.64063264,0.37220388,0.78912399,0.50423732,0.5,0.6902006,0.50015172,0.27072419){1.1271263,1.3069719,1.1096027,0.77938072};
-SS(-0.79644003,0.50064951,-0.5,-0.63048479,0.37587985,-0.34368186,-0.61503712,0.4760032,-0.5,-0.80558396,0.5878127,-0.29244037){1.115532,0.64388066,0.83978547,1.0616703};
-SS(-0.65355936,0.25468043,-0.1897796,-0.49391083,0.27907498,-0.27264436,-0.49808619,0.0026201378,-0.26387206,-0.62938155,0.17932964,-0.37445272){0.51379882,0.37398026,0.29810596,0.55109073};
-SS(-0.67495489,-0.6652659,-0.5,-0.6448883,-0.87343314,-0.36731947,-0.50377808,-0.78884267,-0.5,-0.49676106,-0.69523221,-0.26913048){1.1276355,1.296688,1.1087956,0.78043195};
-SS(1,0.25,0.5,0.87272604,0.35900693,0.37172569,1,0.29178008,0.20838772,1,0.16158711,0.33859063){1.2942978,1.0107603,1.1084285,1.1259698};
-SS(0.36016656,0.41044152,0.1594367,0.52843461,0.32737897,0.19102935,0.36021608,0.23247759,-0.012351094,0.52218723,0.46943947,0.022097553){0.3073722,0.40790135,0.16110593,0.46892029};
-SS(0.36016656,0.41044152,0.1594367,0.25126435,0.28098512,0.24657435,0.42621669,0.19017509,0.30505062,0.50761134,0.34933779,0.39015973){0.3073722,0.18575023,0.29714896,0.51484928};
-SS(-0.65756371,0.81308934,-0.3429452,-0.55555556,1,-0.5,-0.77777778,1,-0.5,-0.56041637,1,-0.29784853){1.1958888,1.5379273,1.8319852,1.3856141};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.3727858,-0.19869367,0.11195566,-0.4720473,-0.063494476,-0.036829327,-0.65367362,-0.16081953,0.0014934597){0.32068114,0.16948569,0.21285629,0.4344691};
-SS(-0.15923414,-0.34171533,-0.15079999,-0.29237157,-0.11865629,-0.17606411,-0.23583358,-0.36008743,0.0071767184,-0.20656092,-0.13938028,0.029547229){0.14783141,0.11404163,0.16465457,0.048278496};
-SS(-0.52470763,0.46530444,0.33754711,-0.47185361,0.73769401,0.24072705,-0.35521568,0.4957142,0.26668635,-0.45563594,0.60375179,0.095527884){0.59371518,0.80384956,0.42001946,0.56263538};
-SS(0.86971177,0.13024645,0.1427188,1,0.29178008,0.20838772,0.77315808,0.36766952,0.075951375,0.73568363,0.23203612,0.2735765){0.77797836,1.1084285,0.71793497,0.6509231};
-SS(-0.15923414,-0.34171533,-0.15079999,-0.36174,-0.40052234,-0.23665811,-0.1971424,-0.26981885,-0.30750196,-0.26056819,-0.54975154,-0.34323516){0.14783141,0.32480953,0.19280289,0.46884495};
-SS(-0.33333333,1,0.5,-0.30949447,0.8262402,0.33528492,-0.3132159,0.69976014,0.5,-0.50037,0.79662088,0.5){1.3433112,0.87388961,0.82050522,1.1183194};
-SS(-0.20381263,0.45499536,-0.5,-0.01813809,0.53618118,-0.30537166,-0.24654336,0.57133462,-0.25396354,-0.12449617,0.36606215,-0.28273955){0.478983,0.36567785,0.42991415,0.21185338};
-SS(-0.26986228,0.26051837,0.22418657,-0.19461387,0.3919517,0.10437587,-0.35521568,0.4957142,0.26668635,-0.11618574,0.50328545,0.29980467){0.1749353,0.19075448,0.42001946,0.33969293};
-SS(1,0.50009037,3.487572e-05,0.69383766,0.49492178,-0.021800115,0.77315808,0.36766952,0.075951375,0.84582719,0.572243,0.1361951){1.2275825,0.71284258,0.71793497,1.0417018};
-SS(0.88049681,0.87960137,0.13412341,1,0.70834898,0.20844998,0.76099919,0.76690574,0.25750996,0.84582719,0.572243,0.1361951){1.5518824,1.5291243,1.2143065,1.0417018};
-SS(-0.13709741,0.19518884,0.034033465,-0.39806707,0.15776443,0.15870839,-0.28278924,0.041190137,-0.04219563,-0.15128303,0.02253305,0.11422928){0.040184006,0.19317292,0.063480395,0.025420414};
-SS(0.59416595,0.14141347,0.32656529,0.75,0,0.5,0.70845584,0,0.20819814,0.83866368,0,0.33843958){0.46498444,0.79262349,0.52761363,0.80106313};
-SS(0.69383766,0.49492178,-0.021800115,1,0.50009037,3.487572e-05,0.82562789,0.37565656,-0.12707714,0.8988736,0.63809662,-0.070284173){0.71284258,1.2275825,0.82387041,1.2046527};
-SS(0.08017426,0.31429474,-0.16745504,0.24635331,0.35131343,-0.096025322,0.086744979,0.52712982,0.027891324,0.18202227,0.38279251,0.10350409){0.11103103,0.18045455,0.26660844,0.17617817};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.75,-1,-0.5,-0.70823063,-1,-0.20843533,-0.83846289,-1,-0.33858677){1.296688,1.7946951,1.5240742,1.8019179};
-SS(-0.91004595,0.15296589,0.33139812,-1,0.11111111,0.5,-1,-0.00012222908,0.26646899,-0.80727304,0.00024662976,0.5){0.94743142,1.246301,1.0506696,0.88515177};
-SS(-0.3533559,-0.49437708,0.037576204,-0.35582611,-0.64426575,-0.070000747,-0.42889738,-0.75253072,0.17523232,-0.50537844,-0.68762812,0.023695348){0.35575629,0.52757348,0.75958282,0.71483247};
-SS(0.00024312215,0.80750011,-0.5,0.10162062,0.65400865,-0.37913628,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142){0.88610119,0.5665506,0.71703623,0.68882385};
-SS(0.59365279,0.65503723,0.24444947,0.66554141,0.67524133,0.5,0.5725222,0.50074158,0.5,0.6902006,0.50015172,0.27072419){0.82252715,1.1271263,0.8121357,0.77938072};
-SS(-0.12233239,-0.87748906,-0.13583418,0,-1,-0.25,-0.29168215,-1,-0.20844865,-0.16144976,-1,-0.33863959){0.78823805,1.0435946,1.1132023,1.1250711};
-SS(-0.83127473,0.33505962,-0.32026923,-0.79644003,0.50064951,-0.5,-1,0.47527469,-0.27513051,-0.80558396,0.5878127,-0.29244037){0.89071695,1.115532,1.2834809,1.0616703};
-SS(0.66554141,0.67524133,0.5,0.59365279,0.65503723,0.24444947,0.5725222,0.50074158,0.5,0.47723835,0.52605258,0.30619083){1.1271263,0.82252715,0.8121357,0.58228229};
-SS(-0.59094649,-0.40495207,0.12834587,-0.3548152,-0.48825703,0.21848985,-0.50874333,-0.23900991,0.2620444,-0.56348952,-0.47594309,0.3052276){0.51475101,0.38862106,0.36443271,0.61776713};
-SS(-0.19461387,0.3919517,0.10437587,-0.35521568,0.4957142,0.26668635,-0.11618574,0.50328545,0.29980467,-0.098708274,0.55956225,0.10505678){0.19075448,0.42001946,0.33969293,0.31633913};
-SS(-0.24654336,0.57133462,-0.25396354,-0.34372617,0.39779568,-0.18541051,-0.12449617,0.36606215,-0.28273955,-0.096302334,0.43534175,-0.056072844){0.42991415,0.29650146,0.21185338,0.18078295};
-SS(0.17426348,1,-0.18078905,0.33386283,0.81592026,-0.31808704,0.25248643,0.73785598,-0.13082591,0.081865095,0.80626877,-0.27867109){1.045853,0.86115027,0.60350215,0.71703623};
-SS(-0.17603462,0.24070348,-0.5,-0.1182182,0.15955837,-0.3159857,-0.010543702,0.17712261,-0.5,-0.12449617,0.36606215,-0.28273955){0.32537509,0.11990198,0.25750364,0.21185338};
-SS(0.08017426,0.31429474,-0.16745504,-0.01813809,0.53618118,-0.30537166,-0.12449617,0.36606215,-0.28273955,-0.096302334,0.43534175,-0.056072844){0.11103103,0.36567785,0.21185338,0.18078295};
-SS(0.69383766,0.49492178,-0.021800115,1,0.50009037,3.487572e-05,0.77315808,0.36766952,0.075951375,0.82562789,0.37565656,-0.12707714){0.71284258,1.2275825,0.71793497,0.82387041};
-SS(-0.10133362,-0.40777162,0.1162396,0,-0.22019801,5.0496855e-05,-0.20656092,-0.13938028,0.029547229,-0.1159097,-0.14329028,0.19302206){0.17697987,0.029059683,0.048278496,0.055235283};
-SS(0,-1,0.25,-0.12988976,-0.86995226,0.20452896,-0.29157863,-1,0.20827581,-0.16134158,-1,0.33850563){1.0438639,0.79894991,1.1139248,1.129042};
-SS(0,-1,-0.25,-0.12233239,-0.87748906,-0.13583418,0,-0.70830496,-0.20826096,0,-0.83851883,-0.33849865){1.0435946,0.78823805,0.5287181,0.80235204};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.36174,-0.40052234,-0.23665811,-0.56113743,-0.28920115,-0.29204918,-0.61549046,-0.35581383,-0.12962263){0.57811658,0.32480953,0.46850822,0.50877487};
-SS(-0.25,-1,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.29168215,-1,-0.20844865,-0.16144976,-1,-0.33863959){1.2929607,1.0307746,1.1132023,1.1250711};
-SS(-0.10743676,0.85847111,-0.11136175,-0.222315,1,-0.00011890035,-0.2401666,0.74114092,-0.051302261,-0.035654771,0.78507762,0.045007896){0.7462212,1.0307381,0.58653028,0.60161266};
-SS(-0.12988976,-0.86995226,0.20452896,0,-1,0.25,0,-0.7082575,0.2084616,0,-0.83845667,0.33864852){0.79894991,1.0438639,0.52387062,0.80178572};
-SS(-0.83851866,0.33014205,0.32623765,-1,0.33333333,0.5,-0.69937107,0.31347586,0.5,-0.79641575,0.50054117,0.5){0.89937894,1.3403692,0.8165723,1.1180299};
-SS(0.26083053,0.15082484,0.37728795,0.25,0,0.5,0.5,0,0.5,0.37501462,0.2307626,0.5){0.21918499,0.29281005,0.47735984,0.42590445};
-SS(0.42864323,0.48543211,-0.13804456,0.30434906,0.49798107,-4.0114635e-05,0.36021608,0.23247759,-0.012351094,0.52218723,0.46943947,0.022097553){0.42022283,0.32377482,0.16110593,0.46892029};
-SS(-0.045146113,0.19012269,0.5,-0.10037172,0.18891947,0.20844359,0.050277172,0.20853018,0.30186362,-0.20045203,0.067929244,0.29301468){0.27176836,0.074828316,0.12181545,0.10955402};
-SS(-0.67513028,-0.66529728,0.5,-0.89663862,-0.69397302,0.37275403,-0.78327322,-0.45013966,0.5,-0.79575191,-0.55547687,0.30538166){1.1284607,1.4119512,1.0435491,1.0192798};
-SS(0.78906409,0.5041626,-0.5,0.87867265,0.36391919,-0.37720578,0.85153485,0.65148612,-0.35468846,0.67125235,0.44297685,-0.31879306){1.1105402,1.03034,1.2568282,0.72773009};
-SS(-0.10037172,0.18891947,0.20844359,0,0,-6.9388939e-15,0,0,0.25,-0.15128303,0.02253305,0.11422928){0.074828316,-0.017891206,0.045060365,0.025420414};
-SS(1,0.16158711,0.33859063,0.73568363,0.23203612,0.2735765,0.83866368,0,0.33843958,0.81143387,0.18901581,0.5){1.1259698,0.6509231,0.80106313,0.9265446};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.73174678,-0.21478859,-0.5,-0.78315651,-0.45008839,-0.5,-0.7907607,-0.33838097,-0.28342271){0.73807879,0.81151292,1.0467962,0.80149819};
-SS(-0.3727858,-0.19869367,0.11195566,-0.29237157,-0.11865629,-0.17606411,-0.4720473,-0.063494476,-0.036829327,-0.20656092,-0.13938028,0.029547229){0.16948569,0.11404163,0.21285629,0.048278496};
-SS(-1,-0.24887753,0.1953112,-0.89646962,-0.32955067,0.34017365,-1,-0.47520831,0.27427507,-0.82595855,-0.48031431,0.11444494){1.0768014,1.0133061,1.2822693,0.90887195};
-SS(0.87867265,0.36391919,-0.37720578,1,0.25,-0.5,1,0.2917639,-0.20827961,1,0.16156328,-0.33847781){1.03034,1.2935113,1.1127834,1.1261583};
-SS(-0.58258855,0.14037208,-0.067351147,-0.4182056,0.11248126,-0.14182463,-0.39654734,0.26661646,0.019312696,-0.5555987,0.045150158,0.095162244){0.34532741,0.19428145,0.20710489,0.29993682};
-SS(-0.8827276,-0.88146034,0.13123348,-1,-1,0.25,-0.70832062,-1,0.2082538,-0.8385203,-1,0.33846229){1.5595365,2.0427074,1.5291125,1.8024192};
-SS(0.59416595,0.14141347,0.32656529,0.75,0,0.5,0.81143387,0.18901581,0.5,0.62515059,0.14422159,0.5){0.46498444,0.79262349,0.9265446,0.64726001};
-SS(-1,0.47527469,-0.27513051,-0.89426176,0.41257007,-0.12932618,-0.80558396,0.5878127,-0.29244037,-0.8068077,0.56885008,-0.063754108){1.2834809,0.974079,1.0616703,0.96112076};
-SS(-0.45563594,0.60375179,0.095527884,-0.20984637,0.69532212,0.20809493,-0.47185361,0.73769401,0.24072705,-0.35521568,0.4957142,0.26668635){0.56263538,0.55022745,0.80384956,0.42001946};
-SS(1,1,0.25,0.88049681,0.87960137,0.13412341,1,0.70834898,0.20844998,1,0.83856906,0.33864755){2.0447444,1.5518824,1.5291243,1.8033242};
-SS(0.33333333,1,-0.5,0.33386283,0.81592026,-0.31808704,0.21543771,0.73213875,-0.5,0.45062041,0.7833899,-0.5){1.342474,0.86115027,0.81134051,1.0506853};
-SS(-0.65776896,0.64141588,0.074371921,-0.45563594,0.60375179,0.095527884,-0.47185361,0.73769401,0.24072705,-0.67801153,0.56076489,0.29217382){0.83514199,0.56263538,0.80384956,0.83617727};
-SS(-0.52470763,0.46530444,0.33754711,-0.41648151,0.41684878,0.5,-0.61509744,0.47589965,0.5,-0.61674646,0.25215289,0.3447871){0.59371518,0.58097186,0.84259202,0.54607287};
-SS(0.10162062,0.65400865,-0.37913628,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142,-0.01813809,0.53618118,-0.30537166){0.5665506,0.71703623,0.68882385,0.36567785};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.25140376,-0.1934451,-0.76760867,-0.33664988,-0.028298027,-0.7907607,-0.33838097,-0.28342271){0.95161001,1.0790534,0.68479998,0.80149819};
-SS(0.61535375,0.70719289,-0.095218388,0.49866453,0.63973666,-0.21510859,0.52218723,0.46943947,0.022097553,0.42864323,0.48543211,-0.13804456){0.87858083,0.68344633,0.46892029,0.42022283};
-SS(-0.3533559,-0.49437708,0.037576204,-0.35582611,-0.64426575,-0.070000747,-0.36174,-0.40052234,-0.23665811,-0.18618058,-0.5161726,-0.15035515){0.35575629,0.52757348,0.32480953,0.30914003};
-SS(-0.66659408,1,0.32529585,-0.60421932,0.82298164,0.34468578,-0.80481649,0.80494069,0.5,-0.76389013,0.77728265,0.25513738){1.5364848,1.1449713,1.5232843,1.2358334};
-SS(-0.65355936,0.25468043,-0.1897796,-0.58258855,0.14037208,-0.067351147,-0.49808619,0.0026201378,-0.26387206,-0.4182056,0.11248126,-0.14182463){0.51379882,0.34532741,0.29810596,0.19428145};
-SS(-0.26056819,-0.54975154,-0.34323516,-0.35582611,-0.64426575,-0.070000747,-0.2399131,-0.76005145,-0.25989531,-0.18618058,-0.5161726,-0.15035515){0.46884495,0.52757348,0.6848256,0.30914003};
-SS(0.88354722,0.11667767,-0.13069643,1,0,-0.25,0.70841775,0,-0.20847891,0.83867599,0,-0.33865964){0.79839767,1.043399,0.52293439,0.80182539};
-SS(-0.01813809,0.53618118,-0.30537166,-0.0089783977,0.64320989,-0.13441642,0.081865095,0.80626877,-0.27867109,-0.14847812,0.78021305,-0.27623142){0.36567785,0.41358858,0.71703623,0.68882385};
-SS(-0.74249217,0.75399014,-0.15399718,-0.58934795,0.84141567,-0.18062024,-0.48952189,0.78345034,0.019065462,-0.62332411,0.59900263,-0.10904345){1.1267767,1.0736489,0.83409809,0.74800561};
-SS(-0.78327322,-0.45013966,0.5,-0.62450053,-0.31310845,0.38575928,-0.56348952,-0.47594309,0.3052276,-0.79575191,-0.55547687,0.30538166){1.0435491,0.62379151,0.61776713,1.0192798};
-SS(0.00029730467,0.80760978,0.5,0.10211023,0.6404511,0.38011645,-0.043441254,0.79173928,0.29440137,0.22886345,0.79287946,0.30210005){0.88423684,0.55160362,0.69563564,0.75332396};
-SS(0.84582719,0.572243,0.1361951,1,0.50009037,3.487572e-05,1,0.70834898,0.20844998,1,0.50005385,0.27984222){1.0417018,1.2275825,1.5291243,1.3085441};
-SS(-0.098708274,0.55956225,0.10505678,-0.20984637,0.69532212,0.20809493,-0.35521568,0.4957142,0.26668635,-0.11618574,0.50328545,0.29980467){0.31633913,0.55022745,0.42001946,0.33969293};
-SS(0.87881231,0.64063264,0.37220388,1,0.75,0.5,1,0.70834898,0.20844998,1,0.83856906,0.33864755){1.3069719,1.7930237,1.5291243,1.8033242};
-SS(-0.01813809,0.53618118,-0.30537166,-0.24654336,0.57133462,-0.25396354,-0.12449617,0.36606215,-0.28273955,-0.096302334,0.43534175,-0.056072844){0.36567785,0.42991415,0.21185338,0.18078295};
-SS(-0.49998858,-1,-4.7037318e-05,-0.42066299,-0.84356131,-0.12906413,-0.29168215,-1,-0.20844865,-0.49995867,-1,-0.27986665){1.2276085,0.88525127,1.1132023,1.3082069};
-SS(-0.8480722,0.62150313,0.12164012,-1,0.49991607,0.0031934521,-1,0.70725984,0.21334539,-1,0.77631186,0.00053339564){1.1084494,1.2302733,1.5286486,1.5817554};
-SS(-0.49391083,0.27907498,-0.27264436,-0.65355936,0.25468043,-0.1897796,-0.49808619,0.0026201378,-0.26387206,-0.4182056,0.11248126,-0.14182463){0.37398026,0.51379882,0.29810596,0.19428145};
-SS(0,-0.49997946,0.00010199173,-0.14850787,-0.69358405,-0.087583548,0,-0.70830496,-0.20826096,0,-0.77970171,0.00010845427){0.22811872,0.49763432,0.5287181,0.58842154};
-SS(-0.58755791,0.033814853,0.5,-0.61674646,0.25215289,0.3447871,-0.69937107,0.31347586,0.5,-0.4543958,0.20406131,0.5){0.57778723,0.54607287,0.8165723,0.48353653};
-SS(-0.49998858,-1,-4.7037318e-05,-0.36608751,-0.8951802,0.074405883,-0.22019153,-1,-0.00010416607,-0.42066299,-0.84356131,-0.12906413){1.2276085,0.92652515,1.0287732,0.88525127};
-SS(-0.64009684,-0.10188458,0.37412975,-0.67616985,-0.069078192,0.18801024,-0.52427834,0.10778268,0.27208728,-0.40506391,-0.079541407,0.3303193){0.54631619,0.47948004,0.34448415,0.26156128};
-SS(-1,0.4752276,0.27420758,-0.87046532,0.63071146,0.35630423,-0.79641575,0.50054117,0.5,-0.83851866,0.33014205,0.32623765){1.2803563,1.2666006,1.1180299,0.89937894};
-SS(0.22886345,0.79287946,0.30210005,0.11136938,1,0.13859714,0.23106485,1,0.31398279,0.24404834,0.79519787,0.082231238){0.75332396,1.0072058,1.1340577,0.68472542};
-SS(-0.10133362,-0.40777162,0.1162396,0,-0.49997946,0.00010199173,0,-0.49989758,0.27983937,-0.19247216,-0.56000521,0.088357129){0.17697987,0.22811872,0.30650831,0.34206231};
-SS(0.25126435,0.28098512,0.24657435,0.27123349,0.36190713,0.41476339,0.50761134,0.34933779,0.39015973,0.36016656,0.41044152,0.1594367){0.18575023,0.36300231,0.51484928,0.3073722};
-SS(0.27123349,0.36190713,0.41476339,0.47723835,0.52605258,0.30619083,0.50761134,0.34933779,0.39015973,0.36016656,0.41044152,0.1594367){0.36300231,0.58228229,0.51484928,0.3073722};
-SS(-0.30949447,0.8262402,0.33528492,-0.22223836,1,0.2622369,-0.20984637,0.69532212,0.20809493,-0.32294154,0.86180803,0.13108841){0.87388961,1.0984067,0.55022745,0.84829643};
-SS(0.50010751,0,-0.00013054911,0.46476684,0.14382827,0.12247557,0.29175541,0,0.20824909,0.50011436,0,0.27961788){0.22823279,0.23450402,0.1093371,0.30940041};
-SS(1,0,-0.25,0.88354722,0.11667767,-0.13069643,1,0.2917639,-0.20827961,1,0.16156328,-0.33847781){1.043399,0.79839767,1.1127834,1.1261583};
-SS(-0.11618574,0.50328545,0.29980467,0.10211023,0.6404511,0.38011645,-0.043441254,0.79173928,0.29440137,-0.16015893,0.67694077,0.39025863){0.33969293,0.55160362,0.69563564,0.6265216};
-SS(0,-0.5,-0.5,-0.073421274,-0.375,-0.38984354,0,-0.25,-0.5,-0.23055166,-0.37480907,-0.5){0.4845449,0.28201081,0.29677328,0.41992239};
-SS(-0.20984637,0.69532212,0.20809493,-0.45563594,0.60375179,0.095527884,-0.47185361,0.73769401,0.24072705,-0.32294154,0.86180803,0.13108841){0.55022745,0.56263538,0.80384956,0.84829643};
-SS(0,-0.49997946,0.00010199173,-0.15923414,-0.34171533,-0.15079999,0,-0.49997234,-0.27965571,-0.18618058,-0.5161726,-0.15035515){0.22811872,0.14783141,0.30906942,0.30914003};
-SS(-0.8480722,0.62150313,0.12164012,-1,0.4752276,0.27420758,-0.79172217,0.43302343,0.13373134,-0.87046532,0.63071146,0.35630423){1.1084494,1.2803563,0.80968993,1.2666006};
-SS(-0.76389013,0.77728265,0.25513738,-0.66659408,1,0.32529585,-0.84394966,1,0.33504415,-0.80481649,0.80494069,0.5){1.2358334,1.5364848,1.8084725,1.5232843};
-SS(-0.77777778,1,-0.5,-0.83248216,0.76782327,-0.31292259,-0.80479144,0.80504612,-0.5,-0.76988954,1,-0.26944904){1.8319852,1.366757,1.5255891,1.6463902};
-SS(-0.20045203,0.067929244,0.29301468,0,0,0.5,-0.045146113,0.19012269,0.5,-0.17669296,0.011023676,0.5){0.10955402,0.23153294,0.27176836,0.26322593};
-SS(-0.38143574,0.84373572,-0.12387887,-0.48255002,0.69900846,-0.19155417,-0.2401666,0.74114092,-0.051302261,-0.48952189,0.78345034,0.019065462){0.85864479,0.74365966,0.58653028,0.83409809};
-SS(-1,-0.11111111,-0.5,-0.85707128,-0.1416783,-0.34083416,-0.80728146,0.00010990719,-0.5,-1,-0.00018427889,-0.26378916){1.2438655,0.85441326,0.88195685,1.0508045};
-SS(-0.63048479,0.37587985,-0.34368186,-0.41651431,0.41690828,-0.5,-0.69937066,0.31351533,-0.5,-0.61503712,0.4760032,-0.5){0.64388066,0.57523437,0.81965428,0.83978547};
-SS(-0.18136176,0.40461939,0.5,-0.29261734,0.53193925,0.43339885,-0.11618574,0.50328545,0.29980467,-0.11614487,0.30919383,0.33918095){0.42386795,0.53993003,0.33969293,0.20820823};
-SS(0.87881231,0.64063264,0.37220388,1,0.50005385,0.27984222,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){1.3069719,1.3085441,0.77938072,1.0417018};
-SS(0.69383766,0.49492178,-0.021800115,0.60662231,0.34516964,-0.13972301,0.77315808,0.36766952,0.075951375,0.52218723,0.46943947,0.022097553){0.71284258,0.48782847,0.71793497,0.46892029};
-SS(-0.67616985,-0.069078192,0.18801024,-0.64009684,-0.10188458,0.37412975,-0.73479965,-0.34302295,0.24038072,-0.50874333,-0.23900991,0.2620444){0.47948004,0.54631619,0.69668046,0.36443271};
-SS(0.65062064,0.64268786,0.069510863,0.69383766,0.49492178,-0.021800115,0.6902006,0.50015172,0.27072419,0.52218723,0.46943947,0.022097553){0.82620698,0.71284258,0.77938072,0.46892029};
-SS(-1,0.33333333,-0.5,-0.83127473,0.33505962,-0.32026923,-0.69937066,0.31351533,-0.5,-0.79644003,0.50064951,-0.5){1.3393331,0.89071695,0.81965428,1.115532};
-SS(-0.0089783977,0.64320989,-0.13441642,0.081865095,0.80626877,-0.27867109,0.25248643,0.73785598,-0.13082591,0.17777709,0.54047543,-0.2567554){0.41358858,0.71703623,0.60350215,0.36840304};
-SS(-1,-0.5000565,0.0033661208,-0.83996275,-0.66999882,0.11765553,-1,-0.70710233,0.21356199,-1,-0.77608598,0.00064487429){1.2263361,1.1553131,1.5280688,1.5844414};
-SS(-0.30122568,-0.11513872,0.5,-0.16643696,-0.21791406,0.42402077,-0.25897908,-0.24013326,0.26450313,-0.40506391,-0.079541407,0.3303193){0.33848202,0.23818505,0.17775565,0.26156128};
-SS(-0.61311838,0.85766427,0.15491279,-0.61115597,1,-0.10200355,-0.42762906,1,-0.0094860889,-0.48952189,0.78345034,0.019065462){1.1216468,1.3611038,1.169501,0.83409809};
-SS(-1,-0.11111111,0.5,-0.84084014,-0.14895162,0.31636914,-1,-0.00012222908,0.26646899,-0.80727304,0.00024662976,0.5){1.2390062,0.81273381,1.0506696,0.88515177};
-SS(-0.92571354,0.17249619,-0.34283108,-1,0.11111111,-0.5,-0.80728146,0.00010990719,-0.5,-1,-0.00018427889,-0.26378916){0.99158484,1.2464205,0.88195685,1.0508045};
-SS(-0.35455825,0.80859576,-0.32177549,-0.33333333,1,-0.5,-0.31289368,0.69974287,-0.5,-0.50014045,0.79673357,-0.5){0.86460259,1.3407278,0.82323564,1.1145783};
-SS(-0.36608751,-0.8951802,0.074405883,-0.49998858,-1,-4.7037318e-05,-0.4999534,-1,0.27968311,-0.61978497,-0.82706917,0.12738472){0.92652515,1.2276085,1.3075402,1.0681409};
-SS(-0.23583358,-0.36008743,0.0071767184,-0.10133362,-0.40777162,0.1162396,-0.20656092,-0.13938028,0.029547229,-0.1159097,-0.14329028,0.19302206){0.16465457,0.17697987,0.048278496,0.055235283};
-SS(-0.60421932,0.82298164,0.34468578,-0.50037,0.79662088,0.5,-0.48141868,0.60085372,0.5,-0.47185361,0.73769401,0.24072705){1.1449713,1.1183194,0.82306978,0.80384956};
-SS(0.57129187,0.13526053,-0.13726946,0.50010751,0,-0.00013054911,0.70841775,0,-0.20847891,0.77985819,0,-0.00014691753){0.35115136,0.22823279,0.52293439,0.58919206};
-SS(-0.63048479,0.37587985,-0.34368186,-0.61503712,0.4760032,-0.5,-0.80558396,0.5878127,-0.29244037,-0.6293812,0.63993291,-0.28812602){0.64388066,0.83978547,1.0616703,0.87296464};
-SS(-0.75,-1,0.5,-0.63815223,-0.88141187,0.37488811,-0.70832062,-1,0.2082538,-0.8385203,-1,0.33846229){1.7943537,1.3088768,1.5291125,1.8024192};
-SS(-0.56113743,-0.28920115,-0.29204918,-0.49292178,-0.37477565,-0.5,-0.73174678,-0.21478859,-0.5,-0.50815189,-0.16301678,-0.5){0.46850822,0.6115465,0.81151292,0.52110597};
-SS(-0.12449617,0.36606215,-0.28273955,-0.17603462,0.24070348,-0.5,-0.029932551,0.40748663,-0.5,-0.010543702,0.17712261,-0.5){0.21185338,0.32537509,0.4038008,0.25750364};
-SS(0.8988736,0.63809662,-0.070284173,1,0.70834898,0.20844998,1,0.77979347,0.00010253841,0.84582719,0.572243,0.1361951){1.2046527,1.5291243,1.5887874,1.0417018};
-SS(-0.30949447,0.8262402,0.33528492,-0.3132159,0.69976014,0.5,-0.50037,0.79662088,0.5,-0.47185361,0.73769401,0.24072705){0.87388961,0.82050522,1.1183194,0.80384956};
-SS(-0.37661764,-0.26006406,0.40868766,-0.49284988,-0.37485679,0.5,-0.56348952,-0.47594309,0.3052276,-0.34549718,-0.50098866,0.4105565){0.36234206,0.6163523,0.61776713,0.5260109};
-SS(0.52843461,0.32737897,0.19102935,0.73568363,0.23203612,0.2735765,0.77315808,0.36766952,0.075951375,0.6902006,0.50015172,0.27072419){0.40790135,0.6509231,0.71793497,0.77938072};
-SS(-0.58754442,0.033885734,-0.5,-0.62938155,0.17932964,-0.37445272,-0.69937066,0.31351533,-0.5,-0.82994199,0.18319278,-0.5){0.58180393,0.55109073,0.81965428,0.95993957};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.49997946,0.00010199173,0,-0.22019801,5.0496855e-05,-0.10133362,-0.40777162,0.1162396){0.14783141,0.22811872,0.029059683,0.17697987};
-SS(1,0.50010355,-0.27968748,0.8988736,0.63809662,-0.070284173,0.75922048,0.56990614,-0.17060419,0.82562789,0.37565656,-0.12707714){1.3071084,1.2046527,0.91133836,0.82387041};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.34372617,0.39779568,-0.18541051,-0.24654336,0.57133462,-0.25396354,-0.096302334,0.43534175,-0.056072844){0.32892635,0.29650146,0.42991415,0.18078295};
-SS(0.88049681,0.87960137,0.13412341,1,1,-6.9388939e-15,1,0.77979347,0.00010253841,0.78186447,1,3.3673518e-05){1.5518824,1.9807485,1.5887874,1.5923176};
-SS(-0.043441254,0.79173928,0.29440137,-0.11111111,1,0.5,-0.014815866,1,0.31001515,-0.1827732,0.83017807,0.5){0.69563564,1.2487078,1.0772324,0.95598938};
-SS(-0.17097214,0.64900986,-0.39927747,0.00024312215,0.80750011,-0.5,-0.14847812,0.78021305,-0.27623142,0.10162062,0.65400865,-0.37913628){0.59741335,0.88610119,0.68882385,0.5665506};
-SS(0.50010751,0,-0.00013054911,0.46476684,0.14382827,0.12247557,0.70845584,0,0.20819814,0.63998586,0.17856447,0.051345521){0.22823279,0.23450402,0.52761363,0.42570365};
-SS(-0.26056819,-0.54975154,-0.34323516,-0.32879066,-0.67072359,-0.5,-0.23055166,-0.37480907,-0.5,-0.14376826,-0.62489354,-0.5){0.46884495,0.79007105,0.41992239,0.6489606};
-SS(-0.61115597,1,-0.10200355,-0.79370724,0.81084643,0.045877226,-0.74954172,1,0.13574231,-0.81095336,1,-0.07156149){1.3611038,1.270911,1.562759,1.6471359};
-SS(0,0,0.25,-0.1159097,-0.14329028,0.19302206,0,-0.16137283,0.3386068,-0.20045203,0.067929244,0.29301468){0.045060365,0.055235283,0.12565914,0.10955402};
-SS(-0.76546557,-0.72634686,-0.27513208,-0.65956212,-0.52273243,-0.19262862,-0.63348211,-0.7706683,-0.074889286,-0.49676106,-0.69523221,-0.26913048){1.1696133,0.7287475,0.97907785,0.78043195};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.49995867,-1,-0.27986665,-0.49676106,-0.69523221,-0.26913048,-0.6448883,-0.87343314,-0.36731947){1.0307746,1.3082069,0.78043195,1.296688};
-SS(-1,-0.25140376,-0.1934451,-0.88905946,-0.098697315,-0.13184676,-1,-0.20076836,0.00061221676,-0.76760867,-0.33664988,-0.028298027){1.0790534,0.8023886,1.0172898,0.68479998};
-SS(-1,0.24865949,0.19540364,-0.83851866,0.33014205,0.32623765,-0.7489605,0.18190923,0.13647301,-0.79172217,0.43302343,0.13373134){1.0814407,0.89937894,0.59564173,0.80968993};
-SS(0.25248643,0.73785598,-0.13082591,0.26064395,0.61953306,0.12890567,0.45788353,0.76094781,-0.0096633567,0.24404834,0.79519787,0.082231238){0.60350215,0.45328252,0.76853994,0.68472542};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.58754442,0.033885734,-0.5,-0.80728146,0.00010990719,-0.5,-0.62938155,0.17932964,-0.37445272){0.54269073,0.58180393,0.88195685,0.55109073};
-SS(-0.4182056,0.11248126,-0.14182463,-0.49391083,0.27907498,-0.27264436,-0.39654734,0.26661646,0.019312696,-0.34372617,0.39779568,-0.18541051){0.19428145,0.37398026,0.20710489,0.29650146};
-SS(-0.66548665,0.66585508,-0.5,-0.83248216,0.76782327,-0.31292259,-0.80479144,0.80504612,-0.5,-0.80558396,0.5878127,-0.29244037){1.1221664,1.366757,1.5255891,1.0616703};
-SS(-0.20984637,0.69532212,0.20809493,-0.098708274,0.55956225,0.10505678,-0.035654771,0.78507762,0.045007896,-0.043441254,0.79173928,0.29440137){0.55022745,0.31633913,0.60161266,0.69563564};
-SS(-0.11754465,-0.65214472,-0.32749638,0,-0.75,-0.5,0,-0.70830496,-0.20826096,0,-0.83851883,-0.33849865){0.53347202,0.79460868,0.5287181,0.80235204};
-SS(-0.11614487,0.30919383,0.33918095,-0.26986228,0.26051837,0.22418657,-0.35521568,0.4957142,0.26668635,-0.11618574,0.50328545,0.29980467){0.20820823,0.1749353,0.42001946,0.33969293};
-SS(-0.50537844,-0.68762812,0.023695348,-0.49998858,-1,-4.7037318e-05,-0.42066299,-0.84356131,-0.12906413,-0.36608751,-0.8951802,0.074405883){0.71483247,1.2276085,0.88525127,0.92652515};
-SS(1,0.77979347,0.00010253841,0.88049681,0.87960137,0.13412341,0.78186447,1,3.3673518e-05,0.77861211,0.77861193,-0.067175459){1.5887874,1.5518824,1.5923176,1.1981052};
-SS(-0.41651431,0.41690828,-0.5,-0.39032311,0.63241857,-0.34621958,-0.31289368,0.69974287,-0.5,-0.4813337,0.60105459,-0.5){0.57523437,0.65630059,0.82323564,0.83133251};
-SS(0.5,0,0.5,0.26083053,0.15082484,0.37728795,0.37501462,0.2307626,0.5,0.42621669,0.19017509,0.30505062){0.47735984,0.21918499,0.42590445,0.29714896};
-SS(-0.12233239,-0.87748906,-0.13583418,-0.29168215,-1,-0.20844865,-0.22019153,-1,-0.00010416607,-0.42066299,-0.84356131,-0.12906413){0.78823805,1.1132023,1.0287732,0.88525127};
-SS(-0.098708274,0.55956225,0.10505678,0.098704003,0.67249079,0.1943501,-0.035654771,0.78507762,0.045007896,-0.043441254,0.79173928,0.29440137){0.31633913,0.47957633,0.60161266,0.69563564};
-SS(0,0,-6.9388939e-15,-0.10037172,0.18891947,0.20844359,0,0,0.25,0.13913358,0.10014326,0.18199659){-0.017891206,0.074828316,0.045060365,0.045990896};
-SS(-0.70823063,-1,-0.20843533,-0.86742481,-0.86548068,-0.14483364,-0.63348211,-0.7706683,-0.074889286,-0.76546557,-0.72634686,-0.27513208){1.5240742,1.5085891,0.97907785,1.1696133};
-SS(0.74440038,0.22095066,-0.087839409,1,0.2203628,5.6826691e-05,0.77315808,0.36766952,0.075951375,0.86971177,0.13024645,0.1427188){0.59875958,1.0268649,0.71793497,0.77797836};
-SS(-0.24163432,0.33561251,-0.055881164,-0.26297351,0.20404986,-0.17122089,-0.12449617,0.36606215,-0.28273955,-0.056808231,0.14323286,-0.13367928){0.16437697,0.12773981,0.21185338,0.022140076};
-SS(-1,0.11111111,0.5,-0.80727304,0.00024662976,0.5,-1,-0.11111111,0.5,-1,-0.00012222908,0.26646899){1.246301,0.88515177,1.2390062,1.0506696};
-SS(-0.49998858,-1,-4.7037318e-05,-0.50537844,-0.68762812,0.023695348,-0.61978497,-0.82706917,0.12738472,-0.36608751,-0.8951802,0.074405883){1.2276085,0.71483247,1.0681409,0.92652515};
-SS(-0.14850787,-0.69358405,-0.087583548,-0.35582611,-0.64426575,-0.070000747,-0.2399131,-0.76005145,-0.25989531,-0.42066299,-0.84356131,-0.12906413){0.49763432,0.52757348,0.6848256,0.88525127};
-SS(-0.61674646,0.25215289,0.3447871,-0.58755791,0.033814853,0.5,-0.69937107,0.31347586,0.5,-0.72768327,0.10310141,0.33233484){0.54607287,0.57778723,0.8165723,0.63492881};
-SS(-1,-0.00012222908,0.26646899,-0.91004595,0.15296589,0.33139812,-0.72768327,0.10310141,0.33233484,-0.84289574,0.018333867,0.1608607){1.0506696,0.94743142,0.63492881,0.72430843};
-SS(0,-1,-6.9388939e-15,-0.12233239,-0.87748906,-0.13583418,-0.22019153,-1,-0.00010416607,0,-0.77970171,0.00010845427){0.98008605,0.78823805,1.0287732,0.58842154};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.14847812,0.78021305,-0.27623142,-0.24654336,0.57133462,-0.25396354,-0.2401666,0.74114092,-0.051302261){0.41358858,0.68882385,0.42991415,0.58653028};
-SS(-0.84289574,0.018333867,0.1608607,-1,-0.00012222908,0.26646899,-0.84084014,-0.14895162,0.31636914,-0.72768327,0.10310141,0.33233484){0.72430843,1.0506696,0.81273381,0.63492881};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.24887753,0.1953112,-0.73479965,-0.34302295,0.24038072,-0.82595855,-0.48031431,0.11444494){1.0133061,1.0768014,0.69668046,0.90887195};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.67495489,-0.6652659,-0.5,-0.78315651,-0.45008839,-0.5,-0.50036547,-0.57239096,-0.5){0.73807879,1.1276355,1.0467962,0.81333009};
-SS(-1,-0.00012222908,0.26646899,-0.91004595,0.15296589,0.33139812,-0.84084014,-0.14895162,0.31636914,-0.72768327,0.10310141,0.33233484){1.0506696,0.94743142,0.81273381,0.63492881};
-SS(0.49866453,0.63973666,-0.21510859,0.69383766,0.49492178,-0.021800115,0.75922048,0.56990614,-0.17060419,0.61535375,0.70719289,-0.095218388){0.68344633,0.71284258,0.91133836,0.87858083};
-SS(-1,0.49991607,0.0031934521,-0.8480722,0.62150313,0.12164012,-1,0.70725984,0.21334539,-1,0.4752276,0.27420758){1.2302733,1.1084494,1.5286486,1.2803563};
-SS(0.29175541,0,0.20824909,0.46476684,0.14382827,0.12247557,0.25126435,0.28098512,0.24657435,0.42621669,0.19017509,0.30505062){0.1093371,0.23450402,0.18575023,0.29714896};
-SS(-0.39654734,0.26661646,0.019312696,-0.39806707,0.15776443,0.15870839,-0.5555987,0.045150158,0.095162244,-0.4182056,0.11248126,-0.14182463){0.20710489,0.19317292,0.29993682,0.19428145};
-SS(0.67125235,0.44297685,-0.31879306,0.671223,0.32907594,-0.5,0.77491511,0.22516452,-0.26425516,0.51910919,0.22553632,-0.31417891){0.72773009,0.79435762,0.70313431,0.40112301};
-SS(-0.26297351,0.20404986,-0.17122089,-0.4182056,0.11248126,-0.14182463,-0.49391083,0.27907498,-0.27264436,-0.29413589,0.046284299,-0.31274881){0.12773981,0.19428145,0.37398026,0.1681493};
-SS(1,0.50009037,3.487572e-05,0.8988736,0.63809662,-0.070284173,1,0.70844226,-0.20827687,1,0.50010355,-0.27968748){1.2275825,1.2046527,1.5310675,1.3071084};
-SS(0.26064395,0.61953306,0.12890567,0.26138985,0.51848551,0.281015,0.086744979,0.52712982,0.027891324,0.18202227,0.38279251,0.10350409){0.45328252,0.40200156,0.26660844,0.17617817};
-SS(0.50010751,0,-0.00013054911,0.57129187,0.13526053,-0.13726946,0.70841775,0,-0.20847891,0.50007058,0,-0.27987971){0.22823279,0.35115136,0.52293439,0.31006895};
-SS(-0.12988976,-0.86995226,0.20452896,-0.16134158,-1,0.33850563,-0.18863677,-0.81113033,0.5,-0.349759,-0.84853211,0.35590634){0.79894991,1.129042,0.92459822,0.94981364};
-SS(0.37137652,0.1767682,-0.19801193,0.22032809,0,-9.1119885e-05,0.36021608,0.23247759,-0.012351094,0.13402468,0.11673163,-0.1460819){0.19205628,0.027339551,0.16110593,0.039337265};
-SS(-0.098708274,0.55956225,0.10505678,-0.0089783977,0.64320989,-0.13441642,-0.2401666,0.74114092,-0.051302261,-0.035654771,0.78507762,0.045007896){0.31633913,0.41358858,0.58653028,0.60161266};
-SS(0.50010751,0,-0.00013054911,0.63998586,0.17856447,0.051345521,0.70845584,0,0.20819814,0.77985819,0,-0.00014691753){0.22823279,0.42570365,0.52761363,0.58919206};
-SS(0.8781758,0.86708556,-0.1989731,1,1,-0.25,1,0.70844226,-0.20827687,1,0.83864447,-0.33847614){1.5462283,2.0438315,1.5310675,1.8065101};
-SS(0.094968532,0.84539386,-0.087484586,0.11136938,1,0.13859714,-0.035654771,0.78507762,0.045007896,0.24404834,0.79519787,0.082231238){0.71839764,1.0072058,0.60161266,0.68472542};
-SS(-0.14850787,-0.69358405,-0.087583548,0,-0.49997946,0.00010199173,0,-0.70830496,-0.20826096,-0.18618058,-0.5161726,-0.15035515){0.49763432,0.22811872,0.5287181,0.30914003};
-SS(0.81205362,0.80656044,-0.5,0.8781758,0.86708556,-0.1989731,1,0.83864447,-0.33847614,0.82865019,1,-0.3214153){1.5391707,1.5462283,1.8065101,1.7714679};
-SS(-0.91347537,0.15552497,0.067511395,-1,-0.00021427218,0.00011802244,-1,0.29928494,0.0012550607,-0.89804207,0.11676539,-0.10792088){0.85045394,0.98080906,1.0718665,0.82300022};
-SS(-0.36608751,-0.8951802,0.074405883,-0.49998858,-1,-4.7037318e-05,-0.29157863,-1,0.20827581,-0.4999534,-1,0.27968311){0.92652515,1.2276085,1.1139248,1.3075402};
-SS(-0.7489605,0.18190923,0.13647301,-0.91347537,0.15552497,0.067511395,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999){0.59564173,0.85045394,0.80968993,0.68151298};
-SS(-0.82285362,-0.63420593,-0.0683896,-1,-0.5000565,0.0033661208,-1,-0.70523324,-0.21165758,-1,-0.77608598,0.00064487429){1.0691297,1.2263361,1.5222776,1.5844414};
-SS(-0.59094649,-0.40495207,0.12834587,-0.50159539,-0.29258506,7.2987381e-06,-0.50874333,-0.23900991,0.2620444,-0.3727858,-0.19869367,0.11195566){0.51475101,0.32068114,0.36443271,0.16948569};
-SS(-0.31377045,0.30492781,-0.36427962,-0.20381263,0.45499536,-0.5,-0.24654336,0.57133462,-0.25396354,-0.12449617,0.36606215,-0.28273955){0.30770932,0.478983,0.42991415,0.21185338};
-SS(0,0,-0.25,0.13402468,0.11673163,-0.1460819,0.29173763,0,-0.20843742,0.16149165,0,-0.33864688){0.044304329,0.039337265,0.1134179,0.12746835};
-SS(0.671223,0.32907594,-0.5,0.51910919,0.22553632,-0.31417891,0.6251418,0.1440922,-0.5,0.77491511,0.22516452,-0.26425516){0.79435762,0.40112301,0.63751638,0.70313431};
-SS(-0.12233239,-0.87748906,-0.13583418,-0.22019153,-1,-0.00010416607,0,-0.77970171,0.00010845427,-0.22302806,-0.77703925,0.068353305){0.78823805,1.0287732,0.58842154,0.64063544};
-SS(-0.1853821,-0.42358473,0.30866054,0,-0.49989758,0.27983937,-0.22656331,-0.68065623,0.28194433,-0.19247216,-0.56000521,0.088357129){0.29143101,0.30650831,0.57683818,0.34206231};
-SS(-0.93582873,0.86427167,0.14668289,-1,1,-6.9388939e-15,-1,1,0.25,-0.74954172,1,0.13574231){1.6320629,1.9810426,2.0473025,1.562759};
-SS(0.54326203,0.87223293,-0.356993,0.6657623,0.67544754,-0.5,0.81205362,0.80656044,-0.5,0.68900489,0.77311276,-0.28043733){1.1662147,1.1304562,1.5391707,1.1326816};
-SS(0.40637652,0.87094343,0.13060843,0.23106485,1,0.31398279,0.24404834,0.79519787,0.082231238,0.22886345,0.79287946,0.30210005){0.92399337,1.1340577,0.68472542,0.75332396};
-SS(-0.68637718,0.43295764,-0.18031685,-0.89426176,0.41257007,-0.12932618,-0.78848723,0.26584533,-0.068869999,-0.8068077,0.56885008,-0.063754108){0.67437813,0.974079,0.68151298,0.96112076};
-SS(0.49866453,0.63973666,-0.21510859,0.34720309,0.90097601,-0.12745168,0.45788353,0.76094781,-0.0096633567,0.54700908,0.85955032,-0.16345766){0.68344633,0.93504792,0.76853994,1.0528061};
-SS(0.59416595,0.14141347,0.32656529,0.75,0,0.5,0.83866368,0,0.33843958,0.81143387,0.18901581,0.5){0.46498444,0.79262349,0.80106313,0.9265446};
-SS(0.098704003,0.67249079,0.1943501,0.10211023,0.6404511,0.38011645,-0.11618574,0.50328545,0.29980467,0.085954007,0.41736025,0.32943097){0.47957633,0.55160362,0.33969293,0.27115576};
-SS(0.37137652,0.1767682,-0.19801193,0.60662231,0.34516964,-0.13972301,0.36021608,0.23247759,-0.012351094,0.57129187,0.13526053,-0.13726946){0.19205628,0.48782847,0.16110593,0.35115136};
-SS(0.83866368,0,0.33843958,0.59416595,0.14141347,0.32656529,0.81143387,0.18901581,0.5,0.73568363,0.23203612,0.2735765){0.80106313,0.46498444,0.9265446,0.6509231};
-SS(-0.42066299,-0.84356131,-0.12906413,-0.49998858,-1,-4.7037318e-05,-0.29168215,-1,-0.20844865,-0.22019153,-1,-0.00010416607){0.88525127,1.2276085,1.1132023,1.0287732};
-SS(-0.49998858,-1,-4.7037318e-05,-0.61978497,-0.82706917,0.12738472,-0.70832062,-1,0.2082538,-0.4999534,-1,0.27968311){1.2276085,1.0681409,1.5291125,1.3075402};
-SS(-0.50537844,-0.68762812,0.023695348,-0.49998858,-1,-4.7037318e-05,-0.63348211,-0.7706683,-0.074889286,-0.42066299,-0.84356131,-0.12906413){0.71483247,1.2276085,0.97907785,0.88525127};
-SS(0.59365279,0.65503723,0.24444947,0.65062064,0.64268786,0.069510863,0.6902006,0.50015172,0.27072419,0.52218723,0.46943947,0.022097553){0.82252715,0.82620698,0.77938072,0.46892029};
-SS(-0.72768327,0.10310141,0.33233484,-0.58755791,0.033814853,0.5,-0.69937107,0.31347586,0.5,-0.83006559,0.18329805,0.5){0.63492881,0.57778723,0.8165723,0.96159482};
-SS(-0.49998858,-1,-4.7037318e-05,-0.50537844,-0.68762812,0.023695348,-0.63348211,-0.7706683,-0.074889286,-0.61978497,-0.82706917,0.12738472){1.2276085,0.71483247,0.97907785,1.0681409};
-SS(-0.32294154,0.86180803,0.13108841,-0.20984637,0.69532212,0.20809493,-0.2401666,0.74114092,-0.051302261,-0.035654771,0.78507762,0.045007896){0.84829643,0.55022745,0.58653028,0.60161266};
-SS(-0.23055166,-0.37480907,-0.5,-0.38492375,-0.20017574,-0.33650716,-0.36174,-0.40052234,-0.23665811,-0.1971424,-0.26981885,-0.30750196){0.41992239,0.28705324,0.32480953,0.19280289};
-SS(-0.4182056,0.11248126,-0.14182463,-0.4720473,-0.063494476,-0.036829327,-0.28278924,0.041190137,-0.04219563,-0.5555987,0.045150158,0.095162244){0.19428145,0.21285629,0.063480395,0.29993682};
-SS(-0.61115597,1,-0.10200355,-0.79370724,0.81084643,0.045877226,-0.81095336,1,-0.07156149,-0.74249217,0.75399014,-0.15399718){1.3611038,1.270911,1.6471359,1.1267767};
-SS(0.6657623,0.67544754,-0.5,0.67125235,0.44297685,-0.31879306,0.78906409,0.5041626,-0.5,0.85153485,0.65148612,-0.35468846){1.1304562,0.72773009,1.1105402,1.2568282};
-SS(0,-0.83845667,0.33864852,-0.12988976,-0.86995226,0.20452896,-0.18863677,-0.81113033,0.5,-0.22656331,-0.68065623,0.28194433){0.80178572,0.79894991,0.92459822,0.57683818};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.29237157,-0.11865629,-0.17606411,-0.4720473,-0.063494476,-0.036829327,-0.3727858,-0.19869367,0.11195566){0.26094507,0.11404163,0.21285629,0.16948569};
-SS(-0.31377045,0.30492781,-0.36427962,-0.26297351,0.20404986,-0.17122089,-0.49391083,0.27907498,-0.27264436,-0.29413589,0.046284299,-0.31274881){0.30770932,0.12773981,0.37398026,0.1681493};
-SS(-0.47185361,0.73769401,0.24072705,-0.60421932,0.82298164,0.34468578,-0.76389013,0.77728265,0.25513738,-0.67801153,0.56076489,0.29217382){0.80384956,1.1449713,1.2358334,0.83617727};
-SS(0.8988736,0.63809662,-0.070284173,1,0.50009037,3.487572e-05,1,0.70834898,0.20844998,0.84582719,0.572243,0.1361951){1.2046527,1.2275825,1.5291243,1.0417018};
-SS(0.33386283,0.81592026,-0.31808704,0.33333333,1,-0.5,0.21543771,0.73213875,-0.5,0.2222976,1,-0.35617554){0.86115027,1.342474,0.81134051,1.1585843};
-SS(-0.15923414,-0.34171533,-0.15079999,0,-0.49997946,0.00010199173,0,-0.29164705,-0.20823955,0,-0.22019801,5.0496855e-05){0.14783141,0.22811872,0.11473247,0.029059683};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.5000565,0.0033661208,-1,-0.70523324,-0.21165758,-0.82285362,-0.63420593,-0.0683896){0.95161001,1.2263361,1.5222776,1.0691297};
-SS(1,0.50009037,3.487572e-05,0.8988736,0.63809662,-0.070284173,1,0.70834898,0.20844998,1,0.77979347,0.00010253841){1.2275825,1.2046527,1.5291243,1.5887874};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.67495489,-0.6652659,-0.5,-0.50036547,-0.57239096,-0.5,-0.49676106,-0.69523221,-0.26913048){0.73807879,1.1276355,0.81333009,0.78043195};
-SS(0.46476684,0.14382827,0.12247557,0.50010751,0,-0.00013054911,0.70845584,0,0.20819814,0.50011436,0,0.27961788){0.23450402,0.22823279,0.52761363,0.30940041};
-SS(-0.88905946,-0.098697315,-0.13184676,-1,-0.00018427889,-0.26378916,-0.77267892,0.13105707,-0.24874664,-0.85707128,-0.1416783,-0.34083416){0.8023886,1.0508045,0.65386325,0.85441326};
-SS(0.098704003,0.67249079,0.1943501,0.26064395,0.61953306,0.12890567,0.26138985,0.51848551,0.281015,0.086744979,0.52712982,0.027891324){0.47957633,0.45328252,0.40200156,0.26660844};
-SS(-0.54640726,0.34339216,0.19847863,-0.39806707,0.15776443,0.15870839,-0.52427834,0.10778268,0.27208728,-0.5555987,0.045150158,0.095162244){0.43575493,0.19317292,0.34448415,0.29993682};
-SS(-0.01813809,0.53618118,-0.30537166,-0.0089783977,0.64320989,-0.13441642,-0.24654336,0.57133462,-0.25396354,-0.096302334,0.43534175,-0.056072844){0.36567785,0.41358858,0.42991415,0.18078295};
-SS(-0.80728146,0.00010990719,-0.5,-1,0.11111111,-0.5,-1,-0.11111111,-0.5,-1,-0.00018427889,-0.26378916){0.88195685,1.2464205,1.2438655,1.0508045};
-SS(-0.1159097,-0.14329028,0.19302206,-0.23583358,-0.36008743,0.0071767184,-0.25897908,-0.24013326,0.26450313,-0.20656092,-0.13938028,0.029547229){0.055235283,0.16465457,0.17775565,0.048278496};
-SS(-0.19247216,-0.56000521,0.088357129,0,-0.7082575,0.2084616,0,-0.49989758,0.27983937,-0.22656331,-0.68065623,0.28194433){0.34206231,0.52387062,0.30650831,0.57683818};
-SS(0.82562789,0.37565656,-0.12707714,1,0.50009037,3.487572e-05,1,0.2917639,-0.20827961,1,0.50010355,-0.27968748){0.82387041,1.2275825,1.1127834,1.3071084};
-SS(-0.80632325,-0.81147186,-0.5,-0.76546557,-0.72634686,-0.27513208,-1,-0.83959635,-0.33115777,-0.83846289,-1,-0.33858677){1.5409894,1.1696133,1.7998257,1.8019179};
-SS(-1,-0.47520831,0.27427507,-0.89646962,-0.32955067,0.34017365,-0.78327322,-0.45013966,0.5,-0.79575191,-0.55547687,0.30538166){1.2822693,1.0133061,1.0435491,1.0192798};
-SS(-0.8068077,0.56885008,-0.063754108,-0.65776896,0.64141588,0.074371921,-0.79172217,0.43302343,0.13373134,-0.54631436,0.45612147,-0.00074796238){0.96112076,0.83514199,0.80968993,0.48593017};
-SS(-1,-0.00012222908,0.26646899,-0.91004595,0.15296589,0.33139812,-0.80727304,0.00024662976,0.5,-0.84084014,-0.14895162,0.31636914){1.0506696,0.94743142,0.88515177,0.81273381};
-SS(-0.61978497,-0.82706917,0.12738472,-0.49998858,-1,-4.7037318e-05,-0.70832062,-1,0.2082538,-0.77973152,-1,-0.0001062007){1.0681409,1.2276085,1.5291125,1.588155};
-SS(0.60662231,0.34516964,-0.13972301,0.42864323,0.48543211,-0.13804456,0.67125235,0.44297685,-0.31879306,0.48047723,0.47791267,-0.33071402){0.48782847,0.42022283,0.72773009,0.55795418};
-SS(-0.91347537,0.15552497,0.067511395,-1,0.24865949,0.19540364,-0.7489605,0.18190923,0.13647301,-0.79172217,0.43302343,0.13373134){0.85045394,1.0814407,0.59564173,0.80968993};
-SS(-0.54640726,0.34339216,0.19847863,-0.41843781,0.30742585,0.3397996,-0.26986228,0.26051837,0.22418657,-0.35521568,0.4957142,0.26668635){0.43575493,0.37011438,0.1749353,0.42001946};
-SS(-0.91414606,-0.68082467,-0.37109558,-0.67495489,-0.6652659,-0.5,-0.78315651,-0.45008839,-0.5,-0.81387526,-0.53653555,-0.3209601){1.4249306,1.1276355,1.0467962,1.0406635};
-SS(0.68985253,1,-0.19792707,0.54326203,0.87223293,-0.356993,0.82865019,1,-0.3214153,0.68900489,0.77311276,-0.28043733){1.495304,1.1662147,1.7714679,1.1326816};
-SS(0.50761134,0.34933779,0.39015973,0.52843461,0.32737897,0.19102935,0.6902006,0.50015172,0.27072419,0.73568363,0.23203612,0.2735765){0.51484928,0.40790135,0.77938072,0.6509231};
-SS(1,0.50005385,0.27984222,0.87881231,0.64063264,0.37220388,0.6902006,0.50015172,0.27072419,0.87272604,0.35900693,0.37172569){1.3085441,1.3069719,0.77938072,1.0107603};
-SS(1,0.50009037,3.487572e-05,0.82562789,0.37565656,-0.12707714,1,0.2917639,-0.20827961,1,0.2203628,5.6826691e-05){1.2275825,0.82387041,1.1127834,1.0268649};
-SS(0.87272604,0.35900693,0.37172569,0.67112401,0.32933441,0.5,0.6902006,0.50015172,0.27072419,0.73568363,0.23203612,0.2735765){1.0107603,0.79210069,0.77938072,0.6509231};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.62341011,-0.46880832,-0.38153973,-0.76546557,-0.72634686,-0.27513208,-0.81387526,-0.53653555,-0.3209601){0.7287475,0.73807879,1.1696133,1.0406635};
-SS(-0.56041637,1,-0.29784853,-0.58934795,0.84141567,-0.18062024,-0.65756371,0.81308934,-0.3429452,-0.35455825,0.80859576,-0.32177549){1.3856141,1.0736489,1.1958888,0.86460259};
-SS(0.87867265,0.36391919,-0.37720578,0.75922048,0.56990614,-0.17060419,0.67125235,0.44297685,-0.31879306,0.82562789,0.37565656,-0.12707714){1.03034,0.91133836,0.72773009,0.82387041};
-SS(-1,0.24865949,0.19540364,-0.91347537,0.15552497,0.067511395,-1,0.29928494,0.0012550607,-0.79172217,0.43302343,0.13373134){1.0814407,0.85045394,1.0718665,0.80968993};
-SS(0,-0.7082575,0.2084616,-0.19247216,-0.56000521,0.088357129,0,-0.77970171,0.00010845427,-0.22302806,-0.77703925,0.068353305){0.52387062,0.34206231,0.58842154,0.64063544};
-SS(-1,0.33333333,0.5,-0.91004595,0.15296589,0.33139812,-1,0.24865949,0.19540364,-0.83851866,0.33014205,0.32623765){1.3403692,0.94743142,1.0814407,0.89937894};
-SS(-0.65776896,0.64141588,0.074371921,-0.62332411,0.59900263,-0.10904345,-0.74249217,0.75399014,-0.15399718,-0.48952189,0.78345034,0.019065462){0.83514199,0.74800561,1.1267767,0.83409809};
-SS(0,-0.49997946,0.00010199173,-0.15923414,-0.34171533,-0.15079999,0,-0.29164705,-0.20823955,0,-0.49997234,-0.27965571){0.22811872,0.14783141,0.11473247,0.30906942};
-SS(0.34720309,0.90097601,-0.12745168,0.49866453,0.63973666,-0.21510859,0.33386283,0.81592026,-0.31808704,0.54700908,0.85955032,-0.16345766){0.93504792,0.68344633,0.86115027,1.0528061};
-SS(0.50761134,0.34933779,0.39015973,0.67112401,0.32933441,0.5,0.37501462,0.2307626,0.5,0.62515059,0.14422159,0.5){0.51484928,0.79210069,0.42590445,0.64726001};
-SS(1,0.50009037,3.487572e-05,0.8988736,0.63809662,-0.070284173,1,0.50010355,-0.27968748,0.82562789,0.37565656,-0.12707714){1.2275825,1.2046527,1.3071084,0.82387041};
-SS(-0.12988976,-0.86995226,0.20452896,-0.18863677,-0.81113033,0.5,-0.22656331,-0.68065623,0.28194433,-0.349759,-0.84853211,0.35590634){0.79894991,0.92459822,0.57683818,0.94981364};
-SS(-0.54640726,0.34339216,0.19847863,-0.39806707,0.15776443,0.15870839,-0.5555987,0.045150158,0.095162244,-0.63246299,0.29145388,0.035195127){0.43575493,0.19317292,0.29993682,0.47226275};
-SS(0.57129187,0.13526053,-0.13726946,0.70841775,0,-0.20847891,0.50007058,0,-0.27987971,0.51910919,0.22553632,-0.31417891){0.35115136,0.52293439,0.31006895,0.40112301};
-SS(-0.91347537,0.15552497,0.067511395,-1,0.29928494,0.0012550607,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999){0.85045394,1.0718665,0.80968993,0.68151298};
-SS(-0.22223836,1,0.2622369,-0.30949447,0.8262402,0.33528492,-0.20984637,0.69532212,0.20809493,-0.043441254,0.79173928,0.29440137){1.0984067,0.87388961,0.55022745,0.69563564};
-SS(0.69383766,0.49492178,-0.021800115,0.49866453,0.63973666,-0.21510859,0.52218723,0.46943947,0.022097553,0.61535375,0.70719289,-0.095218388){0.71284258,0.68344633,0.46892029,0.87858083};
-SS(0.11458044,0.70010244,0.010073529,-0.0089783977,0.64320989,-0.13441642,0.25248643,0.73785598,-0.13082591,0.17777709,0.54047543,-0.2567554){0.49378055,0.41358858,0.60350215,0.36840304};
-SS(-0.91004595,0.15296589,0.33139812,-0.80727304,0.00024662976,0.5,-0.84084014,-0.14895162,0.31636914,-0.72768327,0.10310141,0.33233484){0.94743142,0.88515177,0.81273381,0.63492881};
-SS(0,-0.49997946,0.00010199173,-0.14850787,-0.69358405,-0.087583548,0,-0.77970171,0.00010845427,-0.19247216,-0.56000521,0.088357129){0.22811872,0.49763432,0.58842154,0.34206231};
-SS(-0.41648151,0.41684878,0.5,-0.61674646,0.25215289,0.3447871,-0.69937107,0.31347586,0.5,-0.61509744,0.47589965,0.5){0.58097186,0.54607287,0.8165723,0.84259202};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.55555556,0.5,-1,-0.47520831,0.27427507,-0.78327322,-0.45013966,0.5){1.0133061,1.5359657,1.2822693,1.0435491};
-SS(-0.4433427,0.53576375,-0.12560501,-0.32064519,0.49448821,1.4739833e-06,-0.24654336,0.57133462,-0.25396354,-0.2401666,0.74114092,-0.051302261){0.48429505,0.32892635,0.42991415,0.58653028};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.73174678,-0.21478859,-0.5,-0.7907607,-0.33838097,-0.28342271,-0.56113743,-0.28920115,-0.29204918){0.73807879,0.81151292,0.80149819,0.46850822};
-SS(-0.61311838,0.85766427,0.15491279,-0.65776896,0.64141588,0.074371921,-0.47185361,0.73769401,0.24072705,-0.76389013,0.77728265,0.25513738){1.1216468,0.83514199,0.80384956,1.2358334};
-SS(-0.79641575,0.50054117,0.5,-0.87046532,0.63071146,0.35630423,-0.67801153,0.56076489,0.29217382,-0.83851866,0.33014205,0.32623765){1.1180299,1.2666006,0.83617727,0.89937894};
-SS(0,0,0.5,0,0,0.25,0,-0.16137283,0.3386068,-0.17669296,0.011023676,0.5){0.23153294,0.045060365,0.12565914,0.26322593};
-SS(0.25,0,-0.5,0.35689191,0.091376279,-0.36932783,0.37532516,0.23078833,-0.5,0.20129651,0.21389912,-0.31902192){0.28810477,0.26145514,0.42551454,0.16839385};
-SS(0.49866453,0.63973666,-0.21510859,0.69383766,0.49492178,-0.021800115,0.52218723,0.46943947,0.022097553,0.42864323,0.48543211,-0.13804456){0.68344633,0.71284258,0.46892029,0.42022283};
-SS(0,0,0.5,0.050277172,0.20853018,0.30186362,0,0,0.25,-0.045146113,0.19012269,0.5){0.23153294,0.12181545,0.045060365,0.27176836};
-SS(-0.15923414,-0.34171533,-0.15079999,-0.18618058,-0.5161726,-0.15035515,-0.26056819,-0.54975154,-0.34323516,-0.073421274,-0.375,-0.38984354){0.14783141,0.30914003,0.46884495,0.28201081};
-SS(0.49866453,0.63973666,-0.21510859,0.34720309,0.90097601,-0.12745168,0.25248643,0.73785598,-0.13082591,0.45788353,0.76094781,-0.0096633567){0.68344633,0.93504792,0.60350215,0.76853994};
-SS(0.16149165,0,-0.33864688,0,0,-0.5,0,0,-0.25,-0.010543702,0.17712261,-0.5){0.12746835,0.23465449,0.044304329,0.25750364};
-SS(-0.10133362,-0.40777162,0.1162396,-0.23583358,-0.36008743,0.0071767184,-0.25897908,-0.24013326,0.26450313,-0.1159097,-0.14329028,0.19302206){0.17697987,0.16465457,0.17775565,0.055235283};
-SS(0.37137652,0.1767682,-0.19801193,0.50010751,0,-0.00013054911,0.50007058,0,-0.27987971,0.57129187,0.13526053,-0.13726946){0.19205628,0.22823279,0.31006895,0.35115136};
-SS(-0.033588837,0.5879061,0.5,-0.29261734,0.53193925,0.43339885,-0.3132159,0.69976014,0.5,-0.16015893,0.67694077,0.39025863){0.57806214,0.53993003,0.82050522,0.6265216};
-SS(-0.1971424,-0.26981885,-0.30750196,-0.15923414,-0.34171533,-0.15079999,-0.26056819,-0.54975154,-0.34323516,-0.073421274,-0.375,-0.38984354){0.19280289,0.14783141,0.46884495,0.28201081};
-SS(-1,-0.55555556,0.5,-0.79575191,-0.55547687,0.30538166,-1,-0.47520831,0.27427507,-0.78327322,-0.45013966,0.5){1.5359657,1.0192798,1.2822693,1.0435491};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.88905946,-0.098697315,-0.13184676,-0.77267892,0.13105707,-0.24874664,-0.85707128,-0.1416783,-0.34083416){0.5265969,0.8023886,0.65386325,0.85441326};
-SS(-0.39032311,0.63241857,-0.34621958,-0.41651431,0.41690828,-0.5,-0.31289368,0.69974287,-0.5,-0.20381263,0.45499536,-0.5){0.65630059,0.57523437,0.82323564,0.478983};
-SS(0.10162062,0.65400865,-0.37913628,0.25248643,0.73785598,-0.13082591,0.17777709,0.54047543,-0.2567554,0.34412919,0.6158316,-0.3427703){0.5665506,0.60350215,0.36840304,0.59958408};
-SS(-0.58934795,0.84141567,-0.18062024,-0.61115597,1,-0.10200355,-0.74249217,0.75399014,-0.15399718,-0.79370724,0.81084643,0.045877226){1.0736489,1.3611038,1.1267767,1.270911};
-SS(-0.36992714,1,-0.22970445,-0.35455825,0.80859576,-0.32177549,-0.23070339,1,-0.34855306,-0.14847812,0.78021305,-0.27623142){1.1684568,0.86460259,1.1599423,0.68882385};
-SS(-0.79370724,0.81084643,0.045877226,-1,0.77631186,0.00053339564,-0.74249217,0.75399014,-0.15399718,-0.8068077,0.56885008,-0.063754108){1.270911,1.5817554,1.1267767,0.96112076};
-SS(-1,0.77777778,0.5,-0.87046532,0.63071146,0.35630423,-1,0.70725984,0.21334539,-1,0.84108515,0.33242406){1.8402752,1.2666006,1.5286486,1.8031397};
-SS(0.59365279,0.65503723,0.24444947,0.39612945,0.70614162,0.21524614,0.55555177,0.82262944,0.31125158,0.40637652,0.87094343,0.13060843){0.82252715,0.68453461,1.0671623,0.92399337};
-SS(-0.3548152,-0.48825703,0.21848985,-0.3533559,-0.49437708,0.037576204,-0.42889738,-0.75253072,0.17523232,-0.50537844,-0.68762812,0.023695348){0.38862106,0.35575629,0.75958282,0.71483247};
-SS(-0.89426176,0.41257007,-0.12932618,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999,-0.8068077,0.56885008,-0.063754108){0.974079,0.80968993,0.68151298,0.96112076};
-SS(-0.42889738,-0.75253072,0.17523232,-0.19247216,-0.56000521,0.088357129,-0.22656331,-0.68065623,0.28194433,-0.22302806,-0.77703925,0.068353305){0.75958282,0.34206231,0.57683818,0.64063544};
-SS(0.10211023,0.6404511,0.38011645,0.098704003,0.67249079,0.1943501,-0.11618574,0.50328545,0.29980467,-0.043441254,0.79173928,0.29440137){0.55160362,0.47957633,0.33969293,0.69563564};
-SS(-1,-0.11111111,-0.5,-0.85707128,-0.1416783,-0.34083416,-1,-0.33333333,-0.5,-0.73174678,-0.21478859,-0.5){1.2438655,0.85441326,1.3342594,0.81151292};
-SS(0.0011150345,0.93517443,-0.37389303,0.11111111,1,-0.5,0.2222976,1,-0.35617554,0.081865095,0.80626877,-0.27867109){1.0026385,1.2422682,1.1585843,0.71703623};
-SS(-0.67495489,-0.6652659,-0.5,-0.6448883,-0.87343314,-0.36731947,-0.49676106,-0.69523221,-0.26913048,-0.76546557,-0.72634686,-0.27513208){1.1276355,1.296688,0.78043195,1.1696133};
-SS(-0.30949447,0.8262402,0.33528492,-0.22223836,1,0.2622369,-0.1827732,0.83017807,0.5,-0.043441254,0.79173928,0.29440137){0.87388961,1.0984067,0.95598938,0.69563564};
-SS(-0.61674646,0.25215289,0.3447871,-0.41648151,0.41684878,0.5,-0.69937107,0.31347586,0.5,-0.4543958,0.20406131,0.5){0.54607287,0.58097186,0.8165723,0.48353653};
-SS(-0.49391083,0.27907498,-0.27264436,-0.4182056,0.11248126,-0.14182463,-0.49808619,0.0026201378,-0.26387206,-0.29413589,0.046284299,-0.31274881){0.37398026,0.19428145,0.29810596,0.1681493};
-SS(-1,-0.24887753,0.1953112,-0.82279039,-0.18997945,0.10657137,-0.73479965,-0.34302295,0.24038072,-0.82595855,-0.48031431,0.11444494){1.0768014,0.70945047,0.69668046,0.90887195};
-SS(0,0,0.25,-0.1159097,-0.14329028,0.19302206,0,-0.29157012,0.20836692,0,-0.16137283,0.3386068){0.045060365,0.055235283,0.11172813,0.12565914};
-SS(0.8781758,0.86708556,-0.1989731,0.81205362,0.80656044,-0.5,1,0.83864447,-0.33847614,0.85153485,0.65148612,-0.35468846){1.5462283,1.5391707,1.8065101,1.2568282};
-SS(-0.32879066,-0.67072359,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.2399131,-0.76005145,-0.25989531,-0.49676106,-0.69523221,-0.26913048){0.79007105,1.0307746,0.6848256,0.78043195};
-SS(-0.47185361,0.73769401,0.24072705,-0.3132159,0.69976014,0.5,-0.50037,0.79662088,0.5,-0.48141868,0.60085372,0.5){0.80384956,0.82050522,1.1183194,0.82306978};
-SS(0.34720309,0.90097601,-0.12745168,0.49866453,0.63973666,-0.21510859,0.25248643,0.73785598,-0.13082591,0.33386283,0.81592026,-0.31808704){0.93504792,0.68344633,0.60350215,0.86115027};
-SS(-0.41843781,0.30742585,0.3397996,-0.24000819,0.17660305,0.5,-0.26986228,0.26051837,0.22418657,-0.11614487,0.30919383,0.33918095){0.37011438,0.3210912,0.1749353,0.20820823};
-SS(-0.50537844,-0.68762812,0.023695348,-0.35582611,-0.64426575,-0.070000747,-0.49676106,-0.69523221,-0.26913048,-0.52487586,-0.5117405,-0.017639258){0.71483247,0.52757348,0.78043195,0.51812974};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.67495489,-0.6652659,-0.5,-0.76546557,-0.72634686,-0.27513208,-0.81387526,-0.53653555,-0.3209601){0.73807879,1.1276355,1.1696133,1.0406635};
-SS(-0.73479965,-0.34302295,0.24038072,-0.65367362,-0.16081953,0.0014934597,-0.76760867,-0.33664988,-0.028298027,-0.82279039,-0.18997945,0.10657137){0.69668046,0.4344691,0.68479998,0.70945047};
-SS(-0.77267892,0.13105707,-0.24874664,-0.65355936,0.25468043,-0.1897796,-0.49808619,0.0026201378,-0.26387206,-0.62938155,0.17932964,-0.37445272){0.65386325,0.51379882,0.29810596,0.55109073};
-SS(-0.18136176,0.40461939,0.5,-0.11614487,0.30919383,0.33918095,-0.11618574,0.50328545,0.29980467,0.085954007,0.41736025,0.32943097){0.42386795,0.20820823,0.33969293,0.27115576};
-SS(-0.63246299,0.29145388,0.035195127,-0.54640726,0.34339216,0.19847863,-0.52427834,0.10778268,0.27208728,-0.5555987,0.045150158,0.095162244){0.47226275,0.43575493,0.34448415,0.29993682};
-SS(-0.056808231,0.14323286,-0.13367928,0,0,-6.9388939e-15,-0.28278924,0.041190137,-0.04219563,-0.098950987,-0.13391411,-0.14594667){0.022140076,-0.017891206,0.063480395,0.03512721};
-SS(0.81205362,0.80656044,-0.5,0.8781758,0.86708556,-0.1989731,0.82865019,1,-0.3214153,0.68900489,0.77311276,-0.28043733){1.5391707,1.5462283,1.7714679,1.1326816};
-SS(0.25248643,0.73785598,-0.13082591,0.10162062,0.65400865,-0.37913628,0.081865095,0.80626877,-0.27867109,0.33386283,0.81592026,-0.31808704){0.60350215,0.5665506,0.71703623,0.86115027};
-SS(0.68966181,1,0.19790566,0.40637652,0.87094343,0.13060843,0.43654676,1,0.2604635,0.62860594,0.86645525,0.049037492){1.492557,0.92399337,1.2403655,1.1303867};
-SS(-0.11614487,0.30919383,0.33918095,0.11523872,0.30161582,0.5,-0.18136176,0.40461939,0.5,-0.045146113,0.19012269,0.5){0.20820823,0.33546792,0.42386795,0.27176836};
-SS(0.33333333,1,-0.5,0.11111111,1,-0.5,0.21543771,0.73213875,-0.5,0.2222976,1,-0.35617554){1.342474,1.2422682,0.81134051,1.1585843};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.3533559,-0.49437708,0.037576204,-0.36174,-0.40052234,-0.23665811,-0.52487586,-0.5117405,-0.017639258){0.52757348,0.35575629,0.32480953,0.51812974};
-SS(-0.18618058,-0.5161726,-0.15035515,0,-0.49997946,0.00010199173,0,-0.70830496,-0.20826096,0,-0.49997234,-0.27965571){0.30914003,0.22811872,0.5287181,0.30906942};
-SS(-1,0.70529035,-0.21162945,-0.8068077,0.56885008,-0.063754108,-1,0.47527469,-0.27513051,-0.80558396,0.5878127,-0.29244037){1.520296,0.96112076,1.2834809,1.0616703};
-SS(-0.41843781,0.30742585,0.3397996,-0.41648151,0.41684878,0.5,-0.24000819,0.17660305,0.5,-0.18136176,0.40461939,0.5){0.37011438,0.58097186,0.3210912,0.42386795};
-SS(0.46476684,0.14382827,0.12247557,0.50010751,0,-0.00013054911,0.29175541,0,0.20824909,0.22032809,0,-9.1119885e-05){0.23450402,0.22823279,0.1093371,0.027339551};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.61549046,-0.35581383,-0.12962263,-0.36174,-0.40052234,-0.23665811,-0.52487586,-0.5117405,-0.017639258){0.32068114,0.50877487,0.32480953,0.51812974};
-SS(-0.1159097,-0.14329028,0.19302206,-0.34310942,-0.010167032,0.1509038,-0.25897908,-0.24013326,0.26450313,-0.20045203,0.067929244,0.29301468){0.055235283,0.12661586,0.17775565,0.10955402};
-SS(-0.58258855,0.14037208,-0.067351147,-0.4182056,0.11248126,-0.14182463,-0.49391083,0.27907498,-0.27264436,-0.39654734,0.26661646,0.019312696){0.34532741,0.19428145,0.37398026,0.20710489};
-SS(-0.63246299,0.29145388,0.035195127,-0.54640726,0.34339216,0.19847863,-0.7489605,0.18190923,0.13647301,-0.52427834,0.10778268,0.27208728){0.47226275,0.43575493,0.59564173,0.34448415};
-SS(-0.73479965,-0.34302295,0.24038072,-0.59094649,-0.40495207,0.12834587,-0.76760867,-0.33664988,-0.028298027,-0.65367362,-0.16081953,0.0014934597){0.69668046,0.51475101,0.68479998,0.4344691};
-SS(-0.39806707,0.15776443,0.15870839,-0.28278924,0.041190137,-0.04219563,-0.5555987,0.045150158,0.095162244,-0.4182056,0.11248126,-0.14182463){0.19317292,0.063480395,0.29993682,0.19428145};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.14850787,-0.69358405,-0.087583548,-0.22302806,-0.77703925,0.068353305,-0.42066299,-0.84356131,-0.12906413){0.52757348,0.49763432,0.64063544,0.88525127};
-SS(1,0.50005385,0.27984222,0.87272604,0.35900693,0.37172569,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){1.3085441,1.0107603,0.77938072,1.0417018};
-SS(-0.7489605,0.18190923,0.13647301,-0.63246299,0.29145388,0.035195127,-0.52427834,0.10778268,0.27208728,-0.5555987,0.045150158,0.095162244){0.59564173,0.47226275,0.34448415,0.29993682};
-SS(-0.45563594,0.60375179,0.095527884,-0.2401666,0.74114092,-0.051302261,-0.48952189,0.78345034,0.019065462,-0.32294154,0.86180803,0.13108841){0.56263538,0.58653028,0.83409809,0.84829643};
-SS(-0.47185361,0.73769401,0.24072705,-0.52470763,0.46530444,0.33754711,-0.67801153,0.56076489,0.29217382,-0.45563594,0.60375179,0.095527884){0.80384956,0.59371518,0.83617727,0.56263538};
-SS(0.81205362,0.80656044,-0.5,0.8781758,0.86708556,-0.1989731,0.68900489,0.77311276,-0.28043733,0.85153485,0.65148612,-0.35468846){1.5391707,1.5462283,1.1326816,1.2568282};
-SS(-1,-0.5000565,0.0033661208,-0.85520613,-0.46088631,-0.14784569,-1,-0.70523324,-0.21165758,-1,-0.47540235,-0.27521785){1.2263361,0.95161001,1.5222776,1.2841965};
-SS(-0.3548152,-0.48825703,0.21848985,-0.37661764,-0.26006406,0.40868766,-0.25897908,-0.24013326,0.26450313,-0.50874333,-0.23900991,0.2620444){0.38862106,0.36234206,0.17775565,0.36443271};
-SS(-0.42889738,-0.75253072,0.17523232,-0.63815223,-0.88141187,0.37488811,-0.57994589,-0.69256437,0.31204703,-0.61978497,-0.82706917,0.12738472){0.75958282,1.3088768,0.89957508,1.0681409};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.49292178,-0.37477565,-0.5,-0.73174678,-0.21478859,-0.5,-0.56113743,-0.28920115,-0.29204918){0.73807879,0.6115465,0.81151292,0.46850822};
-SS(0.52843461,0.32737897,0.19102935,0.47723835,0.52605258,0.30619083,0.6902006,0.50015172,0.27072419,0.52218723,0.46943947,0.022097553){0.40790135,0.58228229,0.77938072,0.46892029};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.63348211,-0.7706683,-0.074889286,-0.49676106,-0.69523221,-0.26913048,-0.76546557,-0.72634686,-0.27513208){1.296688,0.97907785,0.78043195,1.1696133};
-SS(0.11583535,0.30145324,-0.5,0.09693172,0.3918681,-0.3370861,-0.010543702,0.17712261,-0.5,0.20129651,0.21389912,-0.31902192){0.33954703,0.26256104,0.25750364,0.16839385};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.26056819,-0.54975154,-0.34323516,-0.36174,-0.40052234,-0.23665811,-0.18618058,-0.5161726,-0.15035515){0.52757348,0.46884495,0.32480953,0.30914003};
-SS(-0.26297351,0.20404986,-0.17122089,-0.056808231,0.14323286,-0.13367928,-0.29413589,0.046284299,-0.31274881,-0.1182182,0.15955837,-0.3159857){0.12773981,0.022140076,0.1681493,0.11990198};
-SS(1,1,-6.9388939e-15,0.77861211,0.77861193,-0.067175459,1,0.77979347,0.00010253841,0.78186447,1,3.3673518e-05){1.9807485,1.1981052,1.5887874,1.5923176};
-SS(0.8781758,0.86708556,-0.1989731,1,1,-6.9388939e-15,0.78186447,1,3.3673518e-05,0.77861211,0.77861193,-0.067175459){1.5462283,1.9807485,1.5923176,1.1981052};
-SS(1,1,-6.9388939e-15,0.8781758,0.86708556,-0.1989731,1,0.77979347,0.00010253841,0.77861211,0.77861193,-0.067175459){1.9807485,1.5462283,1.5887874,1.1981052};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.77777778,0.5,-1,0.55555556,0.5,-0.80481649,0.80494069,0.5){1.2666006,1.8402752,1.5401154,1.5232843};
-SS(-1,0.70529035,-0.21162945,-0.89962374,0.8609561,-0.16698164,-1,0.77631186,0.00053339564,-0.74249217,0.75399014,-0.15399718){1.520296,1.5692753,1.5817554,1.1267767};
-SS(-0.55555556,1,-0.5,-0.65756371,0.81308934,-0.3429452,-0.77777778,1,-0.5,-0.80479144,0.80504612,-0.5){1.5379273,1.1958888,1.8319852,1.5255891};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.77267892,0.13105707,-0.24874664,-0.49808619,0.0026201378,-0.26387206,-0.62938155,0.17932964,-0.37445272){0.54269073,0.65386325,0.29810596,0.55109073};
-SS(-0.34310942,-0.010167032,0.1509038,-0.40506391,-0.079541407,0.3303193,-0.25897908,-0.24013326,0.26450313,-0.20045203,0.067929244,0.29301468){0.12661586,0.26156128,0.17775565,0.10955402};
-SS(-0.056808231,0.14323286,-0.13367928,0.08017426,0.31429474,-0.16745504,-0.12449617,0.36606215,-0.28273955,-0.096302334,0.43534175,-0.056072844){0.022140076,0.11103103,0.21185338,0.18078295};
-SS(-0.22019153,-1,-0.00010416607,-0.36608751,-0.8951802,0.074405883,-0.22302806,-0.77703925,0.068353305,-0.42066299,-0.84356131,-0.12906413){1.0287732,0.92652515,0.64063544,0.88525127};
-SS(0.75,0,-0.5,0.83867599,0,-0.33865964,0.81149777,0.18885984,-0.5,0.6251418,0.1440922,-0.5){0.79494611,0.80182539,0.92750237,0.63751638};
-SS(0,-0.75,0.5,0,-0.83845667,0.33864852,-0.18863677,-0.81113033,0.5,-0.14394692,-0.62481063,0.5){0.79557901,0.80178572,0.92459822,0.63866347};
-SS(0.87867265,0.36391919,-0.37720578,1,0.50010355,-0.27968748,0.75922048,0.56990614,-0.17060419,0.82562789,0.37565656,-0.12707714){1.03034,1.3071084,0.91133836,0.82387041};
-SS(0.46476684,0.14382827,0.12247557,0.50010751,0,-0.00013054911,0.22032809,0,-9.1119885e-05,0.36021608,0.23247759,-0.012351094){0.23450402,0.22823279,0.027339551,0.16110593};
-SS(0.64232771,0.84838332,0.46476191,0.68966181,1,0.19790566,0.76099919,0.76690574,0.25750996,0.55555177,0.82262944,0.31125158){1.3339184,1.492557,1.2143065,1.0671623};
-SS(-0.056808231,0.14323286,-0.13367928,0,0,-0.25,-0.1182182,0.15955837,-0.3159857,0.13402468,0.11673163,-0.1460819){0.022140076,0.044304329,0.11990198,0.039337265};
-SS(1,0.29178008,0.20838772,0.87272604,0.35900693,0.37172569,0.77315808,0.36766952,0.075951375,0.73568363,0.23203612,0.2735765){1.1084285,1.0107603,0.71793497,0.6509231};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.70823063,-1,-0.20843533,-0.63348211,-0.7706683,-0.074889286,-0.76546557,-0.72634686,-0.27513208){1.296688,1.5240742,0.97907785,1.1696133};
-SS(0.21543771,0.73213875,-0.5,0.33386283,0.81592026,-0.31808704,0.2222976,1,-0.35617554,0.081865095,0.80626877,-0.27867109){0.81134051,0.86115027,1.1585843,0.71703623};
-SS(0.37137652,0.1767682,-0.19801193,0.50010751,0,-0.00013054911,0.29173763,0,-0.20843742,0.50007058,0,-0.27987971){0.19205628,0.22823279,0.1134179,0.31006895};
-SS(-1,-0.55555556,-0.5,-0.81387526,-0.53653555,-0.3209601,-0.78315651,-0.45008839,-0.5,-1,-0.47540235,-0.27521785){1.5366945,1.0406635,1.0467962,1.2841965};
-SS(-0.61115597,1,-0.10200355,-0.61311838,0.85766427,0.15491279,-0.74954172,1,0.13574231,-0.79370724,0.81084643,0.045877226){1.3611038,1.1216468,1.562759,1.270911};
-SS(0.69383766,0.49492178,-0.021800115,0.77315808,0.36766952,0.075951375,0.6902006,0.50015172,0.27072419,0.52218723,0.46943947,0.022097553){0.71284258,0.71793497,0.77938072,0.46892029};
-SS(-0.50014045,0.79673357,-0.5,-0.35455825,0.80859576,-0.32177549,-0.56041637,1,-0.29784853,-0.65756371,0.81308934,-0.3429452){1.1145783,0.86460259,1.3856141,1.1958888};
-SS(1,0.70834898,0.20844998,0.88049681,0.87960137,0.13412341,1,0.77979347,0.00010253841,0.84582719,0.572243,0.1361951){1.5291243,1.5518824,1.5887874,1.0417018};
-SS(0.42864323,0.48543211,-0.13804456,0.49866453,0.63973666,-0.21510859,0.67125235,0.44297685,-0.31879306,0.48047723,0.47791267,-0.33071402){0.42022283,0.68344633,0.72773009,0.55795418};
-SS(0.77315808,0.36766952,0.075951375,0.87272604,0.35900693,0.37172569,0.6902006,0.50015172,0.27072419,0.73568363,0.23203612,0.2735765){0.71793497,1.0107603,0.77938072,0.6509231};
-SS(-0.29261734,0.53193925,0.43339885,-0.35521568,0.4957142,0.26668635,-0.11618574,0.50328545,0.29980467,-0.11614487,0.30919383,0.33918095){0.53993003,0.42001946,0.33969293,0.20820823};
-SS(-0.65355936,0.25468043,-0.1897796,-0.58258855,0.14037208,-0.067351147,-0.77267892,0.13105707,-0.24874664,-0.49808619,0.0026201378,-0.26387206){0.51379882,0.34532741,0.65386325,0.29810596};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.59094649,-0.40495207,0.12834587,-0.50874333,-0.23900991,0.2620444,-0.65367362,-0.16081953,0.0014934597){0.32068114,0.51475101,0.36443271,0.4344691};
-SS(0,-0.49997946,0.00010199173,-0.19247216,-0.56000521,0.088357129,0,-0.7082575,0.2084616,0,-0.49989758,0.27983937){0.22811872,0.34206231,0.52387062,0.30650831};
-SS(-0.26056819,-0.54975154,-0.34323516,-0.32879066,-0.67072359,-0.5,-0.2399131,-0.76005145,-0.25989531,-0.49676106,-0.69523221,-0.26913048){0.46884495,0.79007105,0.6848256,0.78043195};
-SS(0.59365279,0.65503723,0.24444947,0.65062064,0.64268786,0.069510863,0.45788353,0.76094781,-0.0096633567,0.62860594,0.86645525,0.049037492){0.82252715,0.82620698,0.76853994,1.1303867};
-SS(-0.48255002,0.69900846,-0.19155417,-0.4433427,0.53576375,-0.12560501,-0.24654336,0.57133462,-0.25396354,-0.2401666,0.74114092,-0.051302261){0.74365966,0.48429505,0.42991415,0.58653028};
-SS(0.37492492,0.49312259,0.5,0.35567295,0.65317229,0.39545235,0.45042372,0.78359022,0.5,0.5725222,0.50074158,0.5){0.61809871,0.69293227,1.0496179,0.8121357};
-SS(0.25248643,0.73785598,-0.13082591,0.10162062,0.65400865,-0.37913628,0.33386283,0.81592026,-0.31808704,0.34412919,0.6158316,-0.3427703){0.60350215,0.5665506,0.86115027,0.59958408};
-SS(-0.77777778,1,-0.5,-1,1,-0.5,-0.80479144,0.80504612,-0.5,-1,0.83964442,-0.3309874){1.8319852,2.2287589,1.5255891,1.7979585};
-SS(-0.67616985,-0.069078192,0.18801024,-0.5555987,0.045150158,0.095162244,-0.52427834,0.10778268,0.27208728,-0.40506391,-0.079541407,0.3303193){0.47948004,0.29993682,0.34448415,0.26156128};
-SS(-0.60421932,0.82298164,0.34468578,-0.55555556,1,0.5,-0.77777778,1,0.5,-0.80481649,0.80494069,0.5){1.1449713,1.5418081,1.8407438,1.5232843};
-SS(0.49866453,0.63973666,-0.21510859,0.42864323,0.48543211,-0.13804456,0.25248643,0.73785598,-0.13082591,0.34412919,0.6158316,-0.3427703){0.68344633,0.42022283,0.60350215,0.59958408};
-SS(-0.4999534,-1,0.27968311,-0.63815223,-0.88141187,0.37488811,-0.42889738,-0.75253072,0.17523232,-0.61978497,-0.82706917,0.12738472){1.3075402,1.3088768,0.75958282,1.0681409};
-SS(-0.098708274,0.55956225,0.10505678,-0.20984637,0.69532212,0.20809493,-0.11618574,0.50328545,0.29980467,-0.043441254,0.79173928,0.29440137){0.31633913,0.55022745,0.33969293,0.69563564};
-SS(0.34412919,0.6158316,-0.3427703,0.37549445,0.49317282,-0.5,0.21543771,0.73213875,-0.5,0.45062041,0.7833899,-0.5){0.59958408,0.61648995,0.81134051,1.0506853};
-SS(0.64232771,0.84838332,0.46476191,0.68966181,1,0.19790566,0.82853688,1,0.32125076,0.76099919,0.76690574,0.25750996){1.3339184,1.492557,1.7703132,1.2143065};
-SS(0.40637652,0.87094343,0.13060843,0.68966181,1,0.19790566,0.43654676,1,0.2604635,0.55555177,0.82262944,0.31125158){0.92399337,1.492557,1.2403655,1.0671623};
-SS(-0.0073778212,0.36022468,0.15230712,0.18202227,0.38279251,0.10350409,0.086744979,0.52712982,0.027891324,0.085954007,0.41736025,0.32943097){0.13675819,0.17617817,0.26660844,0.27115576};
-SS(-0.349759,-0.84853211,0.35590634,-0.42889738,-0.75253072,0.17523232,-0.22656331,-0.68065623,0.28194433,-0.22302806,-0.77703925,0.068353305){0.94981364,0.75958282,0.57683818,0.64063544};
-SS(0.40637652,0.87094343,0.13060843,0.68966181,1,0.19790566,0.55555177,0.82262944,0.31125158,0.62860594,0.86645525,0.049037492){0.92399337,1.492557,1.0671623,1.1303867};
-SS(0,-0.83845667,0.33864852,-0.22656331,-0.68065623,0.28194433,-0.18863677,-0.81113033,0.5,-0.14394692,-0.62481063,0.5){0.80178572,0.57683818,0.92459822,0.63866347};
-SS(0.6902006,0.50015172,0.27072419,0.59365279,0.65503723,0.24444947,0.52218723,0.46943947,0.022097553,0.47723835,0.52605258,0.30619083){0.77938072,0.82252715,0.46892029,0.58228229};
-SS(0.11136938,1,0.13859714,-0.043441254,0.79173928,0.29440137,-0.084253952,1,0.13733396,-0.035654771,0.78507762,0.045007896){1.0072058,0.69563564,1.0073117,0.60161266};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.70236545,-0.13062851,-0.19140485,-0.77267892,0.13105707,-0.24874664,-0.85707128,-0.1416783,-0.34083416){0.54269073,0.5265969,0.65386325,0.85441326};
-SS(0.8988736,0.63809662,-0.070284173,1,0.70844226,-0.20827687,0.75922048,0.56990614,-0.17060419,0.85153485,0.65148612,-0.35468846){1.2046527,1.5310675,0.91133836,1.2568282};
-SS(-0.4433427,0.53576375,-0.12560501,-0.32064519,0.49448821,1.4739833e-06,-0.2401666,0.74114092,-0.051302261,-0.45563594,0.60375179,0.095527884){0.48429505,0.32892635,0.58653028,0.56263538};
-SS(-0.12988976,-0.86995226,0.20452896,-0.22656331,-0.68065623,0.28194433,-0.22302806,-0.77703925,0.068353305,-0.349759,-0.84853211,0.35590634){0.79894991,0.57683818,0.64063544,0.94981364};
-SS(0.24635331,0.35131343,-0.096025322,0.30434906,0.49798107,-4.0114635e-05,0.17777709,0.54047543,-0.2567554,0.086744979,0.52712982,0.027891324){0.18045455,0.32377482,0.36840304,0.26660844};
-SS(-0.49292178,-0.37477565,-0.5,-0.62341011,-0.46880832,-0.38153973,-0.73174678,-0.21478859,-0.5,-0.78315651,-0.45008839,-0.5){0.6115465,0.73807879,0.81151292,1.0467962};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.11111111,0.5,-0.73174745,-0.21491043,0.5,-0.84084014,-0.14895162,0.31636914){1.0133061,1.2390062,0.81377033,0.81273381};
-SS(0.18202227,0.38279251,0.10350409,0.098704003,0.67249079,0.1943501,0.26138985,0.51848551,0.281015,0.086744979,0.52712982,0.027891324){0.17617817,0.47957633,0.40200156,0.26660844};
-SS(-1,-0.24887753,0.1953112,-0.84289574,0.018333867,0.1608607,-1,-0.00012222908,0.26646899,-0.82279039,-0.18997945,0.10657137){1.0768014,0.72430843,1.0506696,0.70945047};
-SS(0.67112401,0.32933441,0.5,0.50761134,0.34933779,0.39015973,0.6902006,0.50015172,0.27072419,0.73568363,0.23203612,0.2735765){0.79210069,0.51484928,0.77938072,0.6509231};
-SS(-0.3533559,-0.49437708,0.037576204,-0.3548152,-0.48825703,0.21848985,-0.23583358,-0.36008743,0.0071767184,-0.3727858,-0.19869367,0.11195566){0.35575629,0.38862106,0.16465457,0.16948569};
-SS(0.75922048,0.56990614,-0.17060419,0.85153485,0.65148612,-0.35468846,0.68900489,0.77311276,-0.28043733,0.77861211,0.77861193,-0.067175459){0.91133836,1.2568282,1.1326816,1.1981052};
-SS(-0.65776896,0.64141588,0.074371921,-0.67801153,0.56076489,0.29217382,-0.47185361,0.73769401,0.24072705,-0.76389013,0.77728265,0.25513738){0.83514199,0.83617727,0.80384956,1.2358334};
-SS(0.68900489,0.77311276,-0.28043733,0.8781758,0.86708556,-0.1989731,0.77861211,0.77861193,-0.067175459,0.85153485,0.65148612,-0.35468846){1.1326816,1.5462283,1.1981052,1.2568282};
-SS(0.09693172,0.3918681,-0.3370861,0.08017426,0.31429474,-0.16745504,-0.12449617,0.36606215,-0.28273955,-0.1182182,0.15955837,-0.3159857){0.26256104,0.11103103,0.21185338,0.11990198};
-SS(-0.16707278,-0.087678023,-0.31121894,0,0,-0.25,-0.1182182,0.15955837,-0.3159857,-0.056808231,0.14323286,-0.13367928){0.11599041,0.044304329,0.11990198,0.022140076};
-SS(-0.92571354,0.17249619,-0.34283108,-1,0.33333333,-0.5,-1,0.25105097,-0.19350143,-0.83127473,0.33505962,-0.32026923){0.99158484,1.3393331,1.0825888,0.89071695};
-SS(0.11458044,0.70010244,0.010073529,-0.0089783977,0.64320989,-0.13441642,0.17777709,0.54047543,-0.2567554,0.086744979,0.52712982,0.027891324){0.49378055,0.41358858,0.36840304,0.26660844};
-SS(-0.24163432,0.33561251,-0.055881164,-0.12449617,0.36606215,-0.28273955,-0.096302334,0.43534175,-0.056072844,-0.056808231,0.14323286,-0.13367928){0.16437697,0.21185338,0.18078295,0.022140076};
-SS(-0.22302806,-0.77703925,0.068353305,0,-1,-6.9388939e-15,-0.22019153,-1,-0.00010416607,0,-0.77970171,0.00010845427){0.64063544,0.98008605,1.0287732,0.58842154};
-SS(-0.38143574,0.84373572,-0.12387887,-0.36992714,1,-0.22970445,-0.14847812,0.78021305,-0.27623142,-0.35455825,0.80859576,-0.32177549){0.85864479,1.1684568,0.68882385,0.86460259};
-SS(-0.40408872,0.18166381,-0.5,-0.31377045,0.30492781,-0.36427962,-0.49391083,0.27907498,-0.27264436,-0.29413589,0.046284299,-0.31274881){0.42526168,0.30770932,0.37398026,0.1681493};
-SS(-0.222315,1,-0.00011890035,-0.32294154,0.86180803,0.13108841,-0.2401666,0.74114092,-0.051302261,-0.035654771,0.78507762,0.045007896){1.0307381,0.84829643,0.58653028,0.60161266};
-SS(0.70841775,0,-0.20847891,0.57129187,0.13526053,-0.13726946,0.77491511,0.22516452,-0.26425516,0.51910919,0.22553632,-0.31417891){0.52293439,0.35115136,0.70313431,0.40112301};
-SS(0,0,0.25,-0.20045203,0.067929244,0.29301468,0,-0.16137283,0.3386068,-0.17669296,0.011023676,0.5){0.045060365,0.10955402,0.12565914,0.26322593};
-SS(-0.24654336,0.57133462,-0.25396354,-0.35455825,0.80859576,-0.32177549,-0.2401666,0.74114092,-0.051302261,-0.14847812,0.78021305,-0.27623142){0.42991415,0.86460259,0.58653028,0.68882385};
-SS(-0.16643696,-0.21791406,0.42402077,0,-0.25,0.5,-0.23048975,-0.37484721,0.5,-0.1853821,-0.42358473,0.30866054){0.23818505,0.28720824,0.42714666,0.29143101};
-SS(-0.12988976,-0.86995226,0.20452896,0,-1,-6.9388939e-15,-0.22019153,-1,-0.00010416607,-0.22302806,-0.77703925,0.068353305){0.79894991,0.98008605,1.0287732,0.64063544};
-SS(0,-1,-6.9388939e-15,-0.12988976,-0.86995226,0.20452896,0,-0.77970171,0.00010845427,-0.22302806,-0.77703925,0.068353305){0.98008605,0.79894991,0.58842154,0.64063544};
-SS(-0.83996275,-0.66999882,0.11765553,-1,-0.5000565,0.0033661208,-1,-0.47520831,0.27427507,-0.82595855,-0.48031431,0.11444494){1.1553131,1.2263361,1.2822693,0.90887195};
-SS(0.60662231,0.34516964,-0.13972301,0.42864323,0.48543211,-0.13804456,0.36021608,0.23247759,-0.012351094,0.52218723,0.46943947,0.022097553){0.48782847,0.42022283,0.16110593,0.46892029};
-SS(-0.16643696,-0.21791406,0.42402077,-0.30122568,-0.11513872,0.5,-0.17669296,0.011023676,0.5,-0.20045203,0.067929244,0.29301468){0.23818505,0.33848202,0.26322593,0.10955402};
-SS(0.49866453,0.63973666,-0.21510859,0.61535375,0.70719289,-0.095218388,0.45788353,0.76094781,-0.0096633567,0.42864323,0.48543211,-0.13804456){0.68344633,0.87858083,0.76853994,0.42022283};
-SS(-0.83996275,-0.66999882,0.11765553,-1,-0.5000565,0.0033661208,-1,-0.70710233,0.21356199,-1,-0.47520831,0.27427507){1.1553131,1.2263361,1.5280688,1.2822693};
-SS(-0.014815866,1,0.31001515,-0.11111111,1,0.5,-0.22223836,1,0.2622369,-0.1827732,0.83017807,0.5){1.0772324,1.2487078,1.0984067,0.95598938};
-SS(-0.79644003,0.50064951,-0.5,-1,0.55555556,-0.5,-1,0.33333333,-0.5,-1,0.47527469,-0.27513051){1.115532,1.5309384,1.3393331,1.2834809};
-SS(-0.67616985,-0.069078192,0.18801024,-0.65367362,-0.16081953,0.0014934597,-0.73479965,-0.34302295,0.24038072,-0.82279039,-0.18997945,0.10657137){0.47948004,0.4344691,0.69668046,0.70945047};
-SS(-0.1853821,-0.42358473,0.30866054,0,-0.49989758,0.27983937,-0.14394692,-0.62481063,0.5,-0.22656331,-0.68065623,0.28194433){0.29143101,0.30650831,0.63866347,0.57683818};
-SS(0.40637652,0.87094343,0.13060843,0.11136938,1,0.13859714,0.24937941,1,-0.00011138016,0.24404834,0.79519787,0.082231238){0.92399337,1.0072058,1.0446566,0.68472542};
-SS(-0.89646962,-0.32955067,0.34017365,-1,-0.11111111,0.5,-1,-0.33333333,0.5,-0.73174745,-0.21491043,0.5){1.0133061,1.2390062,1.3443603,0.81377033};
-SS(0.33333333,1,0.5,0.36841015,0.87909734,0.37310922,0.11111111,1,0.5,0.23106485,1,0.31398279){1.3466764,1.0362544,1.2368521,1.1340577};
-SS(0,0,-0.5,0.25,0,-0.5,-0.010543702,0.17712261,-0.5,0.16149165,0,-0.33864688){0.23465449,0.28810477,0.25750364,0.12746835};
-SS(-0.349759,-0.84853211,0.35590634,-0.32897755,-0.67088709,0.5,-0.50400314,-0.78879927,0.5,-0.18863677,-0.81113033,0.5){0.94981364,0.79643001,1.1086821,0.92459822};
-SS(0.4450496,1,-0.00012892076,0.40637652,0.87094343,0.13060843,0.43654676,1,0.2604635,0.24937941,1,-0.00011138016){1.179155,0.92399337,1.2403655,1.0446566};
-SS(1,0.50009037,3.487572e-05,0.82562789,0.37565656,-0.12707714,1,0.2203628,5.6826691e-05,0.77315808,0.36766952,0.075951375){1.2275825,0.82387041,1.0268649,0.71793497};
-SS(-0.16643696,-0.21791406,0.42402077,0,-0.25,0.5,0,-0.29157012,0.20836692,0,-0.16137283,0.3386068){0.23818505,0.28720824,0.11172813,0.12565914};
-SS(-0.86742481,-0.86548068,-0.14483364,-1,-1,-0.25,-1,-0.70523324,-0.21165758,-1,-0.83959635,-0.33115777){1.5085891,2.0422973,1.5222776,1.7998257};
-SS(-1,0.70529035,-0.21162945,-0.89426176,0.41257007,-0.12932618,-1,0.47527469,-0.27513051,-0.8068077,0.56885008,-0.063754108){1.520296,0.974079,1.2834809,0.96112076};
-SS(0.098704003,0.67249079,0.1943501,-0.098708274,0.55956225,0.10505678,-0.11618574,0.50328545,0.29980467,-0.043441254,0.79173928,0.29440137){0.47957633,0.31633913,0.33969293,0.69563564};
-SS(-1,0.55555556,0.5,-0.79641575,0.50054117,0.5,-1,0.33333333,0.5,-1,0.4752276,0.27420758){1.5401154,1.1180299,1.3403692,1.2803563};
-SS(-0.67513028,-0.66529728,0.5,-0.79575191,-0.55547687,0.30538166,-0.78327322,-0.45013966,0.5,-0.56348952,-0.47594309,0.3052276){1.1284607,1.0192798,1.0435491,0.61776713};
-SS(0.45788353,0.76094781,-0.0096633567,0.61535375,0.70719289,-0.095218388,0.52218723,0.46943947,0.022097553,0.42864323,0.48543211,-0.13804456){0.76853994,0.87858083,0.46892029,0.42022283};
-SS(1,0.5,-0.5,0.85153485,0.65148612,-0.35468846,1,0.75,-0.5,0.78906409,0.5041626,-0.5){1.4840091,1.2568282,1.7924126,1.1105402};
-SS(0,0,0.5,-0.16643696,-0.21791406,0.42402077,0,-0.25,0.5,-0.17669296,0.011023676,0.5){0.23153294,0.23818505,0.28720824,0.26322593};
-SS(-1,0.33333333,0.5,-0.83851866,0.33014205,0.32623765,-1,0.24865949,0.19540364,-1,0.4752276,0.27420758){1.3403692,0.89937894,1.0814407,1.2803563};
-SS(-0.50014045,0.79673357,-0.5,-0.39032311,0.63241857,-0.34621958,-0.65756371,0.81308934,-0.3429452,-0.6293812,0.63993291,-0.28812602){1.1145783,0.65630059,1.1958888,0.87296464};
-SS(-0.78315651,-0.45008839,-0.5,-1,-0.33333333,-0.5,-1,-0.55555556,-0.5,-1,-0.47540235,-0.27521785){1.0467962,1.3342594,1.5366945,1.2841965};
-SS(-0.2399131,-0.76005145,-0.25989531,-0.14850787,-0.69358405,-0.087583548,-0.42066299,-0.84356131,-0.12906413,-0.12233239,-0.87748906,-0.13583418){0.6848256,0.49763432,0.88525127,0.78823805};
-SS(-0.19247216,-0.56000521,0.088357129,-0.3548152,-0.48825703,0.21848985,-0.42889738,-0.75253072,0.17523232,-0.22656331,-0.68065623,0.28194433){0.34206231,0.38862106,0.75958282,0.57683818};
-SS(-1,0.33333333,-0.5,-0.83127473,0.33505962,-0.32026923,-0.79644003,0.50064951,-0.5,-1,0.47527469,-0.27513051){1.3393331,0.89071695,1.115532,1.2834809};
-SS(-1,0.33333333,0.5,-0.83851866,0.33014205,0.32623765,-1,0.4752276,0.27420758,-0.79641575,0.50054117,0.5){1.3403692,0.89937894,1.2803563,1.1180299};
-SS(-0.39032311,0.63241857,-0.34621958,-0.48255002,0.69900846,-0.19155417,-0.65756371,0.81308934,-0.3429452,-0.6293812,0.63993291,-0.28812602){0.65630059,0.74365966,1.1958888,0.87296464};
-SS(-0.3548152,-0.48825703,0.21848985,-0.37661764,-0.26006406,0.40868766,-0.56348952,-0.47594309,0.3052276,-0.34549718,-0.50098866,0.4105565){0.38862106,0.36234206,0.61776713,0.5260109};
-SS(-0.3132159,0.69976014,0.5,-0.29261734,0.53193925,0.43339885,-0.30949447,0.8262402,0.33528492,-0.16015893,0.67694077,0.39025863){0.82050522,0.53993003,0.87388961,0.6265216};
-SS(-1,-1,0.25,-0.8827276,-0.88146034,0.13123348,-1,-0.70710233,0.21356199,-1,-0.84092895,0.33252059){2.0427074,1.5595365,1.5280688,1.8030746};
-SS(-0.61978497,-0.82706917,0.12738472,-0.49998858,-1,-4.7037318e-05,-0.77973152,-1,-0.0001062007,-0.63348211,-0.7706683,-0.074889286){1.0681409,1.2276085,1.588155,0.97907785};
-SS(-0.033588837,0.5879061,0.5,0.085954007,0.41736025,0.32943097,-0.18136176,0.40461939,0.5,-0.11618574,0.50328545,0.29980467){0.57806214,0.27115576,0.42386795,0.33969293};
-SS(-0.64012388,-0.10177177,-0.37237302,-0.80728146,0.00010990719,-0.5,-0.77267892,0.13105707,-0.24874664,-0.62938155,0.17932964,-0.37445272){0.54269073,0.88195685,0.65386325,0.55109073};
-SS(0.52218723,0.46943947,0.022097553,0.52843461,0.32737897,0.19102935,0.77315808,0.36766952,0.075951375,0.6902006,0.50015172,0.27072419){0.46892029,0.40790135,0.71793497,0.77938072};
-SS(-0.39032311,0.63241857,-0.34621958,-0.50014045,0.79673357,-0.5,-0.48255002,0.69900846,-0.19155417,-0.35455825,0.80859576,-0.32177549){0.65630059,1.1145783,0.74365966,0.86460259};
-SS(-0.088882135,1,-0.23281641,-0.10743676,0.85847111,-0.11136175,-0.23070339,1,-0.34855306,-0.14847812,0.78021305,-0.27623142){1.0431215,0.7462212,1.1599423,0.68882385};
-SS(0,-0.49997946,0.00010199173,-0.10133362,-0.40777162,0.1162396,0,-0.29157012,0.20836692,0,-0.22019801,5.0496855e-05){0.22811872,0.17697987,0.11172813,0.029059683};
-SS(-0.83127473,0.33505962,-0.32026923,-1,0.33333333,-0.5,-1,0.25105097,-0.19350143,-1,0.47527469,-0.27513051){0.89071695,1.3393331,1.0825888,1.2834809};
-SS(-0.32294154,0.86180803,0.13108841,-0.222315,1,-0.00011890035,-0.084253952,1,0.13733396,-0.035654771,0.78507762,0.045007896){0.84829643,1.0307381,1.0073117,0.60161266};
-SS(-0.10743676,0.85847111,-0.11136175,-0.222315,1,-0.00011890035,-0.36992714,1,-0.22970445,-0.38143574,0.84373572,-0.12387887){0.7462212,1.0307381,1.1684568,0.85864479};
-SS(-0.29157863,-1,0.20827581,-0.36608751,-0.8951802,0.074405883,-0.349759,-0.84853211,0.35590634,-0.12988976,-0.86995226,0.20452896){1.1139248,0.92652515,0.94981364,0.79894991};
-SS(-0.3727858,-0.19869367,0.11195566,-0.3548152,-0.48825703,0.21848985,-0.25897908,-0.24013326,0.26450313,-0.50874333,-0.23900991,0.2620444){0.16948569,0.38862106,0.17775565,0.36443271};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.4581749,-0.5263483,-0.32801665,-0.36174,-0.40052234,-0.23665811,-0.26056819,-0.54975154,-0.34323516){0.52757348,0.57811658,0.32480953,0.46884495};
-SS(0.52843461,0.32737897,0.19102935,0.52218723,0.46943947,0.022097553,0.77315808,0.36766952,0.075951375,0.63998586,0.17856447,0.051345521){0.40790135,0.46892029,0.71793497,0.42570365};
-SS(-0.42889738,-0.75253072,0.17523232,-0.36608751,-0.8951802,0.074405883,-0.22302806,-0.77703925,0.068353305,-0.349759,-0.84853211,0.35590634){0.75958282,0.92652515,0.64063544,0.94981364};
-SS(0.09693172,0.3918681,-0.3370861,-0.029932551,0.40748663,-0.5,-0.010543702,0.17712261,-0.5,-0.12449617,0.36606215,-0.28273955){0.26256104,0.4038008,0.25750364,0.21185338};
-SS(-0.54640726,0.34339216,0.19847863,-0.52470763,0.46530444,0.33754711,-0.67801153,0.56076489,0.29217382,-0.61674646,0.25215289,0.3447871){0.43575493,0.59371518,0.83617727,0.54607287};
-SS(-0.22223836,1,0.2622369,-0.043441254,0.79173928,0.29440137,-0.014815866,1,0.31001515,-0.1827732,0.83017807,0.5){1.0984067,0.69563564,1.0772324,0.95598938};
-SS(-1,0.49991607,0.0031934521,-0.8068077,0.56885008,-0.063754108,-1,0.70529035,-0.21162945,-1,0.77631186,0.00053339564){1.2302733,0.96112076,1.520296,1.5817554};
-SS(-0.35455825,0.80859576,-0.32177549,-0.50014045,0.79673357,-0.5,-0.48255002,0.69900846,-0.19155417,-0.65756371,0.81308934,-0.3429452){0.86460259,1.1145783,0.74365966,1.1958888};
-SS(0.66554141,0.67524133,0.5,0.59365279,0.65503723,0.24444947,0.76099919,0.76690574,0.25750996,0.6902006,0.50015172,0.27072419){1.1271263,0.82252715,1.2143065,0.77938072};
-SS(0.8781758,0.86708556,-0.1989731,0.75922048,0.56990614,-0.17060419,0.77861211,0.77861193,-0.067175459,0.85153485,0.65148612,-0.35468846){1.5462283,0.91133836,1.1981052,1.2568282};
-SS(-0.3548152,-0.48825703,0.21848985,-0.10133362,-0.40777162,0.1162396,-0.23583358,-0.36008743,0.0071767184,-0.1853821,-0.42358473,0.30866054){0.38862106,0.17697987,0.16465457,0.29143101};
-SS(0.87881231,0.64063264,0.37220388,0.66554141,0.67524133,0.5,0.76099919,0.76690574,0.25750996,0.6902006,0.50015172,0.27072419){1.3069719,1.1271263,1.2143065,0.77938072};
-SS(-0.23583358,-0.36008743,0.0071767184,-0.10133362,-0.40777162,0.1162396,-0.25897908,-0.24013326,0.26450313,-0.1853821,-0.42358473,0.30866054){0.16465457,0.17697987,0.17775565,0.29143101};
-SS(0.8988736,0.63809662,-0.070284173,1,0.70844226,-0.20827687,0.85153485,0.65148612,-0.35468846,0.8781758,0.86708556,-0.1989731){1.2046527,1.5310675,1.2568282,1.5462283};
-SS(0.08017426,0.31429474,-0.16745504,-0.056808231,0.14323286,-0.13367928,-0.13709741,0.19518884,0.034033465,-0.096302334,0.43534175,-0.056072844){0.11103103,0.022140076,0.040184006,0.18078295};
-SS(0.8988736,0.63809662,-0.070284173,0.75922048,0.56990614,-0.17060419,0.77861211,0.77861193,-0.067175459,0.8781758,0.86708556,-0.1989731){1.2046527,0.91133836,1.1981052,1.5462283};
-SS(-0.36608751,-0.8951802,0.074405883,-0.22302806,-0.77703925,0.068353305,-0.349759,-0.84853211,0.35590634,-0.12988976,-0.86995226,0.20452896){0.92652515,0.64063544,0.94981364,0.79894991};
-SS(0.26064395,0.61953306,0.12890567,0.30434906,0.49798107,-4.0114635e-05,0.25248643,0.73785598,-0.13082591,0.45788353,0.76094781,-0.0096633567){0.45328252,0.32377482,0.60350215,0.76853994};
-SS(-0.8068077,0.56885008,-0.063754108,-1,0.70529035,-0.21162945,-1,0.77631186,0.00053339564,-0.74249217,0.75399014,-0.15399718){0.96112076,1.520296,1.5817554,1.1267767};
-SS(0.75922048,0.56990614,-0.17060419,0.8988736,0.63809662,-0.070284173,0.85153485,0.65148612,-0.35468846,0.8781758,0.86708556,-0.1989731){0.91133836,1.2046527,1.2568282,1.5462283};
-SS(-0.3548152,-0.48825703,0.21848985,-0.1853821,-0.42358473,0.30866054,-0.23583358,-0.36008743,0.0071767184,-0.25897908,-0.24013326,0.26450313){0.38862106,0.29143101,0.16465457,0.17775565};
-SS(0,0,0.25,-0.20045203,0.067929244,0.29301468,-0.045146113,0.19012269,0.5,0.050277172,0.20853018,0.30186362){0.045060365,0.10955402,0.27176836,0.12181545};
-SS(-0.45563594,0.60375179,0.095527884,-0.32064519,0.49448821,1.4739833e-06,-0.20984637,0.69532212,0.20809493,-0.35521568,0.4957142,0.26668635){0.56263538,0.32892635,0.55022745,0.42001946};
-SS(0.59365279,0.65503723,0.24444947,0.55555177,0.82262944,0.31125158,0.62860594,0.86645525,0.049037492,0.40637652,0.87094343,0.13060843){0.82252715,1.0671623,1.1303867,0.92399337};
-SS(-0.50014045,0.79673357,-0.5,-0.39032311,0.63241857,-0.34621958,-0.48255002,0.69900846,-0.19155417,-0.65756371,0.81308934,-0.3429452){1.1145783,0.65630059,0.74365966,1.1958888};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.64012388,-0.10177177,-0.37237302,-0.77267892,0.13105707,-0.24874664,-0.49808619,0.0026201378,-0.26387206){0.5265969,0.54269073,0.65386325,0.29810596};
-SS(0.76099919,0.76690574,0.25750996,0.88049681,0.87960137,0.13412341,0.77861211,0.77861193,-0.067175459,0.62860594,0.86645525,0.049037492){1.2143065,1.5518824,1.1981052,1.1303867};
-SS(-0.68637718,0.43295764,-0.18031685,-0.4433427,0.53576375,-0.12560501,-0.49391083,0.27907498,-0.27264436,-0.50782983,0.50249565,-0.29902586){0.67437813,0.48429505,0.37398026,0.58612549};
-SS(0.52843461,0.32737897,0.19102935,0.46476684,0.14382827,0.12247557,0.36021608,0.23247759,-0.012351094,0.63998586,0.17856447,0.051345521){0.40790135,0.23450402,0.16110593,0.42570365};
-SS(-0.3533559,-0.49437708,0.037576204,-0.3548152,-0.48825703,0.21848985,-0.42889738,-0.75253072,0.17523232,-0.19247216,-0.56000521,0.088357129){0.35575629,0.38862106,0.75958282,0.34206231};
-SS(0.11111111,1,-0.5,0.0011150345,0.93517443,-0.37389303,0.00024312215,0.80750011,-0.5,0.081865095,0.80626877,-0.27867109){1.2422682,1.0026385,0.88610119,0.71703623};
-SS(-0.10037172,0.18891947,0.20844359,0,0,-6.9388939e-15,-0.13709741,0.19518884,0.034033465,0.13261259,0.21336316,0.036566127){0.074828316,-0.017891206,0.040184006,0.046199082};
-SS(-0.20045203,0.067929244,0.29301468,0,0,0.5,0,0,0.25,-0.045146113,0.19012269,0.5){0.10955402,0.23153294,0.045060365,0.27176836};
-SS(-0.88905946,-0.098697315,-0.13184676,-0.70236545,-0.13062851,-0.19140485,-0.76760867,-0.33664988,-0.028298027,-0.7907607,-0.33838097,-0.28342271){0.8023886,0.5265969,0.68479998,0.80149819};
-SS(-0.3727858,-0.19869367,0.11195566,-0.50159539,-0.29258506,7.2987381e-06,-0.50874333,-0.23900991,0.2620444,-0.65367362,-0.16081953,0.0014934597){0.16948569,0.32068114,0.36443271,0.4344691};
-SS(-0.10037172,0.18891947,0.20844359,0,0,-6.9388939e-15,0.13261259,0.21336316,0.036566127,0.13913358,0.10014326,0.18199659){0.074828316,-0.017891206,0.046199082,0.045990896};
-SS(0.26083053,0.15082484,0.37728795,0.5,0,0.5,0.50011436,0,0.27961788,0.42621669,0.19017509,0.30505062){0.21918499,0.47735984,0.30940041,0.29714896};
-SS(0.87867265,0.36391919,-0.37720578,0.75922048,0.56990614,-0.17060419,0.85153485,0.65148612,-0.35468846,0.67125235,0.44297685,-0.31879306){1.03034,0.91133836,1.2568282,0.72773009};
-SS(1,0.50010355,-0.27968748,0.87867265,0.36391919,-0.37720578,0.75922048,0.56990614,-0.17060419,0.85153485,0.65148612,-0.35468846){1.3071084,1.03034,0.91133836,1.2568282};
-SS(-0.3533559,-0.49437708,0.037576204,-0.50159539,-0.29258506,7.2987381e-06,-0.36174,-0.40052234,-0.23665811,-0.52487586,-0.5117405,-0.017639258){0.35575629,0.32068114,0.32480953,0.51812974};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.35582611,-0.64426575,-0.070000747,-0.49676106,-0.69523221,-0.26913048,-0.26056819,-0.54975154,-0.34323516){0.57811658,0.52757348,0.78043195,0.46884495};
-SS(-0.19461387,0.3919517,0.10437587,-0.32064519,0.49448821,1.4739833e-06,-0.35521568,0.4957142,0.26668635,-0.098708274,0.55956225,0.10505678){0.19075448,0.32892635,0.42001946,0.31633913};
-SS(-0.3727858,-0.19869367,0.11195566,-0.3548152,-0.48825703,0.21848985,-0.23583358,-0.36008743,0.0071767184,-0.25897908,-0.24013326,0.26450313){0.16948569,0.38862106,0.16465457,0.17775565};
-SS(0.81149777,0.18885984,-0.5,0.77491511,0.22516452,-0.26425516,0.6251418,0.1440922,-0.5,0.83867599,0,-0.33865964){0.92750237,0.70313431,0.63751638,0.80182539};
-SS(-0.40408872,0.18166381,-0.5,-0.41767704,0.010770256,-0.44072823,-0.49391083,0.27907498,-0.27264436,-0.62938155,0.17932964,-0.37445272){0.42526168,0.35514259,0.37398026,0.55109073};
-SS(0.67112401,0.32933441,0.5,0.87272604,0.35900693,0.37172569,0.78912399,0.50423732,0.5,0.81143387,0.18901581,0.5){0.79210069,1.0107603,1.1096027,0.9265446};
-SS(0.40637652,0.87094343,0.13060843,0.4450496,1,-0.00012892076,0.43654676,1,0.2604635,0.62860594,0.86645525,0.049037492){0.92399337,1.179155,1.2403655,1.1303867};
-SS(-0.3548152,-0.48825703,0.21848985,-0.37661764,-0.26006406,0.40868766,-0.50874333,-0.23900991,0.2620444,-0.56348952,-0.47594309,0.3052276){0.38862106,0.36234206,0.36443271,0.61776713};
-SS(0.65062064,0.64268786,0.069510863,0.62860594,0.86645525,0.049037492,0.76099919,0.76690574,0.25750996,0.77861211,0.77861193,-0.067175459){0.82620698,1.1303867,1.2143065,1.1981052};
-SS(-0.24000819,0.17660305,0.5,-0.41843781,0.30742585,0.3397996,-0.18136176,0.40461939,0.5,-0.11614487,0.30919383,0.33918095){0.3210912,0.37011438,0.42386795,0.20820823};
-SS(-0.49292178,-0.37477565,-0.5,-0.38492375,-0.20017574,-0.33650716,-0.30131805,-0.11512588,-0.5,-0.50815189,-0.16301678,-0.5){0.6115465,0.28705324,0.3368451,0.52110597};
-SS(-0.80558396,0.5878127,-0.29244037,-0.66548665,0.66585508,-0.5,-0.79644003,0.50064951,-0.5,-0.80479144,0.80504612,-0.5){1.0616703,1.1221664,1.115532,1.5255891};
-SS(0.52218723,0.46943947,0.022097553,0.60662231,0.34516964,-0.13972301,0.77315808,0.36766952,0.075951375,0.63998586,0.17856447,0.051345521){0.46892029,0.48782847,0.71793497,0.42570365};
-SS(-0.222315,1,-0.00011890035,-0.10743676,0.85847111,-0.11136175,-0.36992714,1,-0.22970445,-0.088882135,1,-0.23281641){1.0307381,0.7462212,1.1684568,1.0431215};
-SS(-0.19247216,-0.56000521,0.088357129,0,-0.49997946,0.00010199173,0,-0.7082575,0.2084616,0,-0.77970171,0.00010845427){0.34206231,0.22811872,0.52387062,0.58842154};
-SS(-0.80728146,0.00010990719,-0.5,-0.64012388,-0.10177177,-0.37237302,-0.77267892,0.13105707,-0.24874664,-0.85707128,-0.1416783,-0.34083416){0.88195685,0.54269073,0.65386325,0.85441326};
-SS(-0.89426176,0.41257007,-0.12932618,-1,0.49991607,0.0031934521,-1,0.70529035,-0.21162945,-1,0.47527469,-0.27513051){0.974079,1.2302733,1.520296,1.2834809};
-SS(-0.48141868,0.60085372,0.5,-0.52470763,0.46530444,0.33754711,-0.47185361,0.73769401,0.24072705,-0.35521568,0.4957142,0.26668635){0.82306978,0.59371518,0.80384956,0.42001946};
-SS(-0.49391083,0.27907498,-0.27264436,-0.41767704,0.010770256,-0.44072823,-0.49808619,0.0026201378,-0.26387206,-0.62938155,0.17932964,-0.37445272){0.37398026,0.35514259,0.29810596,0.55109073};
-SS(-0.42889738,-0.75253072,0.17523232,-0.63815223,-0.88141187,0.37488811,-0.349759,-0.84853211,0.35590634,-0.57994589,-0.69256437,0.31204703){0.75958282,1.3088768,0.94981364,0.89957508};
-SS(-0.63815223,-0.88141187,0.37488811,-0.4999534,-1,0.27968311,-0.42889738,-0.75253072,0.17523232,-0.349759,-0.84853211,0.35590634){1.3088768,1.3075402,0.75958282,0.94981364};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.42864323,0.48543211,-0.13804456,0.45788353,0.76094781,-0.0096633567,0.52218723,0.46943947,0.022097553){0.32377482,0.42022283,0.76853994,0.46892029};
-SS(0.57129187,0.13526053,-0.13726946,0.60662231,0.34516964,-0.13972301,0.36021608,0.23247759,-0.012351094,0.63998586,0.17856447,0.051345521){0.35115136,0.48782847,0.16110593,0.42570365};
-SS(-0.033588837,0.5879061,0.5,-0.16015893,0.67694077,0.39025863,-0.3132159,0.69976014,0.5,-0.1827732,0.83017807,0.5){0.57806214,0.6265216,0.82050522,0.95598938};
-SS(-0.80728146,0.00010990719,-0.5,-0.92571354,0.17249619,-0.34283108,-1,-0.00018427889,-0.26378916,-0.85707128,-0.1416783,-0.34083416){0.88195685,0.99158484,1.0508045,0.85441326};
-SS(0.11136938,1,0.13859714,0.40637652,0.87094343,0.13060843,0.23106485,1,0.31398279,0.24404834,0.79519787,0.082231238){1.0072058,0.92399337,1.1340577,0.68472542};
-SS(-0.098708274,0.55956225,0.10505678,-0.32064519,0.49448821,1.4739833e-06,-0.20984637,0.69532212,0.20809493,-0.2401666,0.74114092,-0.051302261){0.31633913,0.32892635,0.55022745,0.58653028};
-SS(-0.12233239,-0.87748906,-0.13583418,-0.22019153,-1,-0.00010416607,-0.22302806,-0.77703925,0.068353305,-0.42066299,-0.84356131,-0.12906413){0.78823805,1.0287732,0.64063544,0.88525127};
-SS(-0.62450053,-0.31310845,0.38575928,-0.49284988,-0.37485679,0.5,-0.78327322,-0.45013966,0.5,-0.56348952,-0.47594309,0.3052276){0.62379151,0.6163523,1.0435491,0.61776713};
-SS(-0.79370724,0.81084643,0.045877226,-0.65776896,0.64141588,0.074371921,-0.74249217,0.75399014,-0.15399718,-0.48952189,0.78345034,0.019065462){1.270911,0.83514199,1.1267767,0.83409809};
-SS(-0.61311838,0.85766427,0.15491279,-0.61115597,1,-0.10200355,-0.47972312,1,0.18932995,-0.42762906,1,-0.0094860889){1.1216468,1.3611038,1.2473472,1.169501};
-SS(-1,0.49991607,0.0031934521,-0.89426176,0.41257007,-0.12932618,-1,0.70529035,-0.21162945,-0.8068077,0.56885008,-0.063754108){1.2302733,0.974079,1.520296,0.96112076};
-SS(-0.67513028,-0.66529728,0.5,-0.56348952,-0.47594309,0.3052276,-0.78327322,-0.45013966,0.5,-0.50050976,-0.57246927,0.5){1.1284607,0.61776713,1.0435491,0.81219504};
-SS(-0.33333333,1,-0.5,-0.35455825,0.80859576,-0.32177549,-0.36992714,1,-0.22970445,-0.56041637,1,-0.29784853){1.3407278,0.86460259,1.1684568,1.3856141};
-SS(0.77777778,1,-0.5,0.68900489,0.77311276,-0.28043733,0.81205362,0.80656044,-0.5,0.82865019,1,-0.3214153){1.8341362,1.1326816,1.5391707,1.7714679};
-SS(-0.83248216,0.76782327,-0.31292259,-1,0.77777778,-0.5,-1,0.70529035,-0.21162945,-1,0.83964442,-0.3309874){1.366757,1.8398372,1.520296,1.7979585};
-SS(0.22886345,0.79287946,0.30210005,0.11136938,1,0.13859714,-0.014815866,1,0.31001515,0.23106485,1,0.31398279){0.75332396,1.0072058,1.0772324,1.1340577};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.4752276,0.27420758,-0.79172217,0.43302343,0.13373134,-0.83851866,0.33014205,0.32623765){1.2666006,1.2803563,0.80968993,0.89937894};
-SS(0.39612945,0.70614162,0.21524614,0.59365279,0.65503723,0.24444947,0.45788353,0.76094781,-0.0096633567,0.40637652,0.87094343,0.13060843){0.68453461,0.82252715,0.76853994,0.92399337};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.5000565,0.0033661208,-1,-0.25140376,-0.1934451,-1,-0.47540235,-0.27521785){0.95161001,1.2263361,1.0790534,1.2841965};
-SS(0.25248643,0.73785598,-0.13082591,0.42864323,0.48543211,-0.13804456,0.17777709,0.54047543,-0.2567554,0.34412919,0.6158316,-0.3427703){0.60350215,0.42022283,0.36840304,0.59958408};
-SS(-0.32879066,-0.67072359,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.50377808,-0.78884267,-0.5,-0.18848435,-0.81110947,-0.5){0.79007105,1.0307746,1.1087956,0.92571371};
-SS(0.081865095,0.80626877,-0.27867109,0.11111111,1,-0.5,0.21543771,0.73213875,-0.5,0.00024312215,0.80750011,-0.5){0.71703623,1.2422682,0.81134051,0.88610119};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.19247216,-0.56000521,0.088357129,-0.42889738,-0.75253072,0.17523232,-0.22302806,-0.77703925,0.068353305){0.52757348,0.34206231,0.75958282,0.64063544};
-SS(0,-0.16137283,0.3386068,-0.16643696,-0.21791406,0.42402077,-0.20045203,0.067929244,0.29301468,-0.1159097,-0.14329028,0.19302206){0.12565914,0.23818505,0.10955402,0.055235283};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.26056819,-0.54975154,-0.34323516,-0.2399131,-0.76005145,-0.25989531,-0.49676106,-0.69523221,-0.26913048){0.52757348,0.46884495,0.6848256,0.78043195};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.23055166,-0.37480907,-0.5,-0.36174,-0.40052234,-0.23665811,-0.26056819,-0.54975154,-0.34323516){0.57811658,0.41992239,0.32480953,0.46884495};
-SS(-0.48255002,0.69900846,-0.19155417,-0.4433427,0.53576375,-0.12560501,-0.2401666,0.74114092,-0.051302261,-0.48952189,0.78345034,0.019065462){0.74365966,0.48429505,0.58653028,0.83409809};
-SS(-0.010543702,0.17712261,-0.5,0.09693172,0.3918681,-0.3370861,-0.12449617,0.36606215,-0.28273955,-0.1182182,0.15955837,-0.3159857){0.25750364,0.26256104,0.21185338,0.11990198};
-SS(-0.056808231,0.14323286,-0.13367928,0.08017426,0.31429474,-0.16745504,-0.13709741,0.19518884,0.034033465,0.13261259,0.21336316,0.036566127){0.022140076,0.11103103,0.040184006,0.046199082};
-SS(-1,-0.25140376,-0.1934451,-0.88905946,-0.098697315,-0.13184676,-0.76760867,-0.33664988,-0.028298027,-0.7907607,-0.33838097,-0.28342271){1.0790534,0.8023886,0.68479998,0.80149819};
-SS(0.87867265,0.36391919,-0.37720578,0.671223,0.32907594,-0.5,0.78906409,0.5041626,-0.5,0.81149777,0.18885984,-0.5){1.03034,0.79435762,1.1105402,0.92750237};
-SS(-0.69937107,0.31347586,0.5,-0.83851866,0.33014205,0.32623765,-0.79641575,0.50054117,0.5,-0.61509744,0.47589965,0.5){0.8165723,0.89937894,1.1180299,0.84259202};
-SS(0.4450496,1,-0.00012892076,0.54700908,0.85955032,-0.16345766,0.68985253,1,-0.19792707,0.62860594,0.86645525,0.049037492){1.179155,1.0528061,1.495304,1.1303867};
-SS(0.085954007,0.41736025,0.32943097,-0.033588837,0.5879061,0.5,0.11523872,0.30161582,0.5,0.16321322,0.50838432,0.5){0.27115576,0.57806214,0.33546792,0.52238519};
-SS(0.11111111,1,0.5,0.22886345,0.79287946,0.30210005,0.21512427,0.73211919,0.5,0.00029730467,0.80760978,0.5){1.2368521,0.75332396,0.81521474,0.88423684};
-SS(-0.14850787,-0.69358405,-0.087583548,-0.22302806,-0.77703925,0.068353305,-0.42066299,-0.84356131,-0.12906413,-0.12233239,-0.87748906,-0.13583418){0.49763432,0.64063544,0.88525127,0.78823805};
-SS(-0.87046532,0.63071146,0.35630423,-0.79172217,0.43302343,0.13373134,-0.67801153,0.56076489,0.29217382,-0.83851866,0.33014205,0.32623765){1.2666006,0.80968993,0.83617727,0.89937894};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.3533559,-0.49437708,0.037576204,-0.42889738,-0.75253072,0.17523232,-0.19247216,-0.56000521,0.088357129){0.52757348,0.35575629,0.75958282,0.34206231};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.65956212,-0.52273243,-0.19262862,-0.49676106,-0.69523221,-0.26913048,-0.52487586,-0.5117405,-0.017639258){0.57811658,0.7287475,0.78043195,0.51812974};
-SS(-1,-0.00018427889,-0.26378916,-0.92571354,0.17249619,-0.34283108,-0.77267892,0.13105707,-0.24874664,-0.85707128,-0.1416783,-0.34083416){1.0508045,0.99158484,0.65386325,0.85441326};
-SS(-0.75,-1,-0.5,-0.6448883,-0.87343314,-0.36731947,-0.5,-1,-0.5,-0.50377808,-0.78884267,-0.5){1.7946951,1.296688,1.4844013,1.1087956};
-SS(-0.83851866,0.33014205,0.32623765,-0.79641575,0.50054117,0.5,-0.61509744,0.47589965,0.5,-0.67801153,0.56076489,0.29217382){0.89937894,1.1180299,0.84259202,0.83617727};
-SS(0.37137652,0.1767682,-0.19801193,0.60662231,0.34516964,-0.13972301,0.34662081,0.36199915,-0.25068724,0.36021608,0.23247759,-0.012351094){0.19205628,0.48782847,0.29696992,0.16110593};
-SS(0.54700908,0.85955032,-0.16345766,0.4450496,1,-0.00012892076,0.68985253,1,-0.19792707,0.43683247,1,-0.26068681){1.0528061,1.179155,1.495304,1.2435523};
-SS(-0.10743676,0.85847111,-0.11136175,-0.36992714,1,-0.22970445,-0.088882135,1,-0.23281641,-0.23070339,1,-0.34855306){0.7462212,1.1684568,1.0431215,1.1599423};
-SS(0.08017426,0.31429474,-0.16745504,0.24635331,0.35131343,-0.096025322,0.17777709,0.54047543,-0.2567554,0.086744979,0.52712982,0.027891324){0.11103103,0.18045455,0.36840304,0.26660844};
-SS(0,0,-0.25,-0.16707278,-0.087678023,-0.31121894,-0.098950987,-0.13391411,-0.14594667,-0.056808231,0.14323286,-0.13367928){0.044304329,0.11599041,0.03512721,0.022140076};
-SS(0.40637652,0.87094343,0.13060843,0.11136938,1,0.13859714,0.23106485,1,0.31398279,0.24937941,1,-0.00011138016){0.92399337,1.0072058,1.1340577,1.0446566};
-SS(0.36841015,0.87909734,0.37310922,0.33333333,1,0.5,0.11111111,1,0.5,0.21512427,0.73211919,0.5){1.0362544,1.3466764,1.2368521,0.81521474};
-SS(0.42864323,0.48543211,-0.13804456,0.30434906,0.49798107,-4.0114635e-05,0.25248643,0.73785598,-0.13082591,0.17777709,0.54047543,-0.2567554){0.42022283,0.32377482,0.60350215,0.36840304};
-SS(-0.16643696,-0.21791406,0.42402077,-0.25897908,-0.24013326,0.26450313,-0.20045203,0.067929244,0.29301468,-0.1159097,-0.14329028,0.19302206){0.23818505,0.17775565,0.10955402,0.055235283};
-SS(0.45788353,0.76094781,-0.0096633567,0.59365279,0.65503723,0.24444947,0.62860594,0.86645525,0.049037492,0.40637652,0.87094343,0.13060843){0.76853994,0.82252715,1.1303867,0.92399337};
-SS(0.4450496,1,-0.00012892076,0.62860594,0.86645525,0.049037492,0.68966181,1,0.19790566,0.43654676,1,0.2604635){1.179155,1.1303867,1.492557,1.2403655};
-SS(-0.92571354,0.17249619,-0.34283108,-0.80728146,0.00010990719,-0.5,-0.77267892,0.13105707,-0.24874664,-0.85707128,-0.1416783,-0.34083416){0.99158484,0.88195685,0.65386325,0.85441326};
-SS(-0.098950987,-0.13391411,-0.14594667,0,0,-0.25,0,-0.29164705,-0.20823955,0,-0.16143077,-0.33843101){0.03512721,0.044304329,0.11473247,0.12966739};
-SS(0.60662231,0.34516964,-0.13972301,0.42864323,0.48543211,-0.13804456,0.49866453,0.63973666,-0.21510859,0.67125235,0.44297685,-0.31879306){0.48782847,0.42022283,0.68344633,0.72773009};
-SS(0.60662231,0.34516964,-0.13972301,0.42864323,0.48543211,-0.13804456,0.34662081,0.36199915,-0.25068724,0.36021608,0.23247759,-0.012351094){0.48782847,0.42022283,0.29696992,0.16110593};
-SS(-0.69937107,0.31347586,0.5,-0.83851866,0.33014205,0.32623765,-0.61509744,0.47589965,0.5,-0.67801153,0.56076489,0.29217382){0.8165723,0.89937894,0.84259202,0.83617727};
-SS(0.59365279,0.65503723,0.24444947,0.45042372,0.78359022,0.5,0.55555177,0.82262944,0.31125158,0.35567295,0.65317229,0.39545235){0.82252715,1.0496179,1.0671623,0.69293227};
-SS(-0.3727858,-0.19869367,0.11195566,-0.34310942,-0.010167032,0.1509038,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.16948569,0.12661586,0.36443271,0.26156128};
-SS(-0.65756371,0.81308934,-0.3429452,-0.55555556,1,-0.5,-0.50014045,0.79673357,-0.5,-0.80479144,0.80504612,-0.5){1.1958888,1.5379273,1.1145783,1.5255891};
-SS(-0.55555556,1,0.5,-0.60421932,0.82298164,0.34468578,-0.50037,0.79662088,0.5,-0.80481649,0.80494069,0.5){1.5418081,1.1449713,1.1183194,1.5232843};
-SS(0.36841015,0.87909734,0.37310922,0.11111111,1,0.5,0.23106485,1,0.31398279,0.22886345,0.79287946,0.30210005){1.0362544,1.2368521,1.1340577,0.75332396};
-SS(-0.81387526,-0.53653555,-0.3209601,-0.78315651,-0.45008839,-0.5,-1,-0.47540235,-0.27521785,-0.7907607,-0.33838097,-0.28342271){1.0406635,1.0467962,1.2841965,0.80149819};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.3533559,-0.49437708,0.037576204,-0.3548152,-0.48825703,0.21848985,-0.59094649,-0.40495207,0.12834587){0.32068114,0.35575629,0.38862106,0.51475101};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.3533559,-0.49437708,0.037576204,-0.36174,-0.40052234,-0.23665811,-0.23583358,-0.36008743,0.0071767184){0.32068114,0.35575629,0.32480953,0.16465457};
-SS(-0.70236545,-0.13062851,-0.19140485,-0.65367362,-0.16081953,0.0014934597,-0.4720473,-0.063494476,-0.036829327,-0.76752638,0.004448061,-0.013214377){0.5265969,0.4344691,0.21285629,0.5734925};
-SS(-0.7907607,-0.33838097,-0.28342271,-1,-0.33333333,-0.5,-0.73174678,-0.21478859,-0.5,-0.78315651,-0.45008839,-0.5){0.80149819,1.3342594,0.81151292,1.0467962};
-SS(0.35567295,0.65317229,0.39545235,0.66554141,0.67524133,0.5,0.45042372,0.78359022,0.5,0.5725222,0.50074158,0.5){0.69293227,1.1271263,1.0496179,0.8121357};
-SS(-0.38143574,0.84373572,-0.12387887,-0.48255002,0.69900846,-0.19155417,-0.24654336,0.57133462,-0.25396354,-0.2401666,0.74114092,-0.051302261){0.85864479,0.74365966,0.42991415,0.58653028};
-SS(0.26064395,0.61953306,0.12890567,0.30434906,0.49798107,-4.0114635e-05,0.52218723,0.46943947,0.022097553,0.36016656,0.41044152,0.1594367){0.45328252,0.32377482,0.46892029,0.3073722};
-SS(-0.24654336,0.57133462,-0.25396354,-0.38143574,0.84373572,-0.12387887,-0.2401666,0.74114092,-0.051302261,-0.35455825,0.80859576,-0.32177549){0.42991415,0.85864479,0.58653028,0.86460259};
-SS(-0.52470763,0.46530444,0.33754711,-0.48141868,0.60085372,0.5,-0.47185361,0.73769401,0.24072705,-0.67801153,0.56076489,0.29217382){0.59371518,0.82306978,0.80384956,0.83617727};
-SS(0.29175541,0,0.20824909,0.46476684,0.14382827,0.12247557,0.22032809,0,-9.1119885e-05,0.36021608,0.23247759,-0.012351094){0.1093371,0.23450402,0.027339551,0.16110593};
-SS(-0.48255002,0.69900846,-0.19155417,-0.38143574,0.84373572,-0.12387887,-0.24654336,0.57133462,-0.25396354,-0.35455825,0.80859576,-0.32177549){0.74365966,0.85864479,0.42991415,0.86460259};
-SS(-0.3533559,-0.49437708,0.037576204,-0.3548152,-0.48825703,0.21848985,-0.52487586,-0.5117405,-0.017639258,-0.50537844,-0.68762812,0.023695348){0.35575629,0.38862106,0.51812974,0.71483247};
-SS(-0.29261734,0.53193925,0.43339885,-0.20984637,0.69532212,0.20809493,-0.30949447,0.8262402,0.33528492,-0.16015893,0.67694077,0.39025863){0.53993003,0.55022745,0.87388961,0.6265216};
-SS(0,-0.16137283,0.3386068,-0.16643696,-0.21791406,0.42402077,-0.17669296,0.011023676,0.5,-0.20045203,0.067929244,0.29301468){0.12565914,0.23818505,0.26322593,0.10955402};
-SS(-0.32897755,-0.67088709,0.5,-0.34549718,-0.50098866,0.4105565,-0.23048975,-0.37484721,0.5,-0.14394692,-0.62481063,0.5){0.79643001,0.5260109,0.42714666,0.63866347};
-SS(-0.58934795,0.84141567,-0.18062024,-0.74249217,0.75399014,-0.15399718,-0.48952189,0.78345034,0.019065462,-0.79370724,0.81084643,0.045877226){1.0736489,1.1267767,0.83409809,1.270911};
-SS(-0.1853821,-0.42358473,0.30866054,0,-0.5,0.5,0,-0.25,0.5,-0.23048975,-0.37484721,0.5){0.29143101,0.48207879,0.28720824,0.42714666};
-SS(-0.83248216,0.76782327,-0.31292259,-0.77777778,1,-0.5,-0.80479144,0.80504612,-0.5,-1,0.83964442,-0.3309874){1.366757,1.8319852,1.5255891,1.7979585};
-SS(-0.4433427,0.53576375,-0.12560501,-0.2401666,0.74114092,-0.051302261,-0.48952189,0.78345034,0.019065462,-0.45563594,0.60375179,0.095527884){0.48429505,0.58653028,0.83409809,0.56263538};
-SS(-0.222315,1,-0.00011890035,-0.32294154,0.86180803,0.13108841,-0.47972312,1,0.18932995,-0.42762906,1,-0.0094860889){1.0307381,0.84829643,1.2473472,1.169501};
-SS(-0.45563594,0.60375179,0.095527884,-0.20984637,0.69532212,0.20809493,-0.2401666,0.74114092,-0.051302261,-0.32294154,0.86180803,0.13108841){0.56263538,0.55022745,0.58653028,0.84829643};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.098708274,0.55956225,0.10505678,-0.20984637,0.69532212,0.20809493,-0.35521568,0.4957142,0.26668635){0.32892635,0.31633913,0.55022745,0.42001946};
-SS(-0.68637718,0.43295764,-0.18031685,-0.65355936,0.25468043,-0.1897796,-0.49391083,0.27907498,-0.27264436,-0.54631436,0.45612147,-0.00074796238){0.67437813,0.51379882,0.37398026,0.48593017};
-SS(-0.85707128,-0.1416783,-0.34083416,-1,-0.33333333,-0.5,-0.73174678,-0.21478859,-0.5,-0.7907607,-0.33838097,-0.28342271){0.85441326,1.3342594,0.81151292,0.80149819};
-SS(-0.349759,-0.84853211,0.35590634,-0.5,-1,0.5,-0.25,-1,0.5,-0.50400314,-0.78879927,0.5){0.94981364,1.4840089,1.2918821,1.1086821};
-SS(-1,-0.5000565,0.0033661208,-0.82595855,-0.48031431,0.11444494,-1,-0.24887753,0.1953112,-1,-0.47520831,0.27427507){1.2263361,0.90887195,1.0768014,1.2822693};
-SS(-0.59094649,-0.40495207,0.12834587,-0.65631386,-0.59724887,0.13822882,-0.3548152,-0.48825703,0.21848985,-0.56348952,-0.47594309,0.3052276){0.51475101,0.7890621,0.38862106,0.61776713};
-SS(-0.56348952,-0.47594309,0.3052276,-0.49284988,-0.37485679,0.5,-0.78327322,-0.45013966,0.5,-0.50050976,-0.57246927,0.5){0.61776713,0.6163523,1.0435491,0.81219504};
-SS(-0.29413589,0.046284299,-0.31274881,-0.16707278,-0.087678023,-0.31121894,-0.1182182,0.15955837,-0.3159857,-0.056808231,0.14323286,-0.13367928){0.1681493,0.11599041,0.11990198,0.022140076};
-SS(0.22032809,0,-9.1119885e-05,0.13913358,0.10014326,0.18199659,0.36021608,0.23247759,-0.012351094,0.13261259,0.21336316,0.036566127){0.027339551,0.045990896,0.16110593,0.046199082};
-SS(-0.15923414,-0.34171533,-0.15079999,-0.29237157,-0.11865629,-0.17606411,-0.36174,-0.40052234,-0.23665811,-0.45843014,-0.20445062,-0.15988901){0.14783141,0.11404163,0.32480953,0.26094507};
-SS(-0.49391083,0.27907498,-0.27264436,-0.4433427,0.53576375,-0.12560501,-0.54631436,0.45612147,-0.00074796238,-0.34372617,0.39779568,-0.18541051){0.37398026,0.48429505,0.48593017,0.29650146};
-SS(-0.63348211,-0.7706683,-0.074889286,-0.50537844,-0.68762812,0.023695348,-0.49676106,-0.69523221,-0.26913048,-0.52487586,-0.5117405,-0.017639258){0.97907785,0.71483247,0.78043195,0.51812974};
-SS(0.11111111,1,-0.5,0.081865095,0.80626877,-0.27867109,0.21543771,0.73213875,-0.5,0.2222976,1,-0.35617554){1.2422682,0.71703623,0.81134051,1.1585843};
-SS(-0.41843781,0.30742585,0.3397996,-0.26986228,0.26051837,0.22418657,-0.35521568,0.4957142,0.26668635,-0.11614487,0.30919383,0.33918095){0.37011438,0.1749353,0.42001946,0.20820823};
-SS(0.87881231,0.64063264,0.37220388,1,0.5,0.5,1,0.75,0.5,0.78912399,0.50423732,0.5){1.3069719,1.484684,1.7930237,1.1096027};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.50159539,-0.29258506,7.2987381e-06,-0.23583358,-0.36008743,0.0071767184,-0.3727858,-0.19869367,0.11195566){0.26094507,0.32068114,0.16465457,0.16948569};
-SS(-0.45843014,-0.20445062,-0.15988901,-0.50159539,-0.29258506,7.2987381e-06,-0.36174,-0.40052234,-0.23665811,-0.23583358,-0.36008743,0.0071767184){0.26094507,0.32068114,0.32480953,0.16465457};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.52487586,-0.5117405,-0.017639258,-0.63348211,-0.7706683,-0.074889286,-0.49676106,-0.69523221,-0.26913048){0.7287475,0.51812974,0.97907785,0.78043195};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.49995867,-1,-0.27986665,-0.49676106,-0.69523221,-0.26913048,-0.42066299,-0.84356131,-0.12906413){1.296688,1.3082069,0.78043195,0.88525127};
-SS(0.8988736,0.63809662,-0.070284173,1,0.77979347,0.00010253841,0.77861211,0.77861193,-0.067175459,0.84582719,0.572243,0.1361951){1.2046527,1.5887874,1.1981052,1.0417018};
-SS(-0.35455825,0.80859576,-0.32177549,-0.55555556,1,-0.5,-0.50014045,0.79673357,-0.5,-0.56041637,1,-0.29784853){0.86460259,1.5379273,1.1145783,1.3856141};
-SS(0.11111111,1,0.5,0.36841015,0.87909734,0.37310922,0.21512427,0.73211919,0.5,0.22886345,0.79287946,0.30210005){1.2368521,1.0362544,0.81521474,0.75332396};
-SS(-0.61674646,0.25215289,0.3447871,-0.54640726,0.34339216,0.19847863,-0.7489605,0.18190923,0.13647301,-0.83851866,0.33014205,0.32623765){0.54607287,0.43575493,0.59564173,0.89937894};
-SS(-0.8068077,0.56885008,-0.063754108,-0.68637718,0.43295764,-0.18031685,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999){0.96112076,0.67437813,0.80968993,0.68151298};
-SS(0.098704003,0.67249079,0.1943501,0.18202227,0.38279251,0.10350409,0.26138985,0.51848551,0.281015,0.085954007,0.41736025,0.32943097){0.47957633,0.17617817,0.40200156,0.27115576};
-SS(-0.33333333,1,-0.5,-0.35455825,0.80859576,-0.32177549,-0.55555556,1,-0.5,-0.50014045,0.79673357,-0.5){1.3407278,0.86460259,1.5379273,1.1145783};
-SS(0.77777778,1,-0.5,0.54326203,0.87223293,-0.356993,0.55555556,1,-0.5,0.81205362,0.80656044,-0.5){1.8341362,1.1662147,1.5352494,1.5391707};
-SS(-0.41767704,0.010770256,-0.44072823,-0.40408872,0.18166381,-0.5,-0.49391083,0.27907498,-0.27264436,-0.29413589,0.046284299,-0.31274881){0.35514259,0.42526168,0.37398026,0.1681493};
-SS(-1,-0.55555556,-0.5,-0.91414606,-0.68082467,-0.37109558,-1,-0.77777778,-0.5,-0.80632325,-0.81147186,-0.5){1.5366945,1.4249306,1.8436809,1.5409894};
-SS(-0.033284914,0.58770906,-0.5,-0.17097214,0.64900986,-0.39927747,-0.31289368,0.69974287,-0.5,-0.20381263,0.45499536,-0.5){0.58301644,0.59741335,0.82323564,0.478983};
-SS(-0.41767704,0.010770256,-0.44072823,-0.49391083,0.27907498,-0.27264436,-0.49808619,0.0026201378,-0.26387206,-0.29413589,0.046284299,-0.31274881){0.35514259,0.37398026,0.29810596,0.1681493};
-SS(-0.83851866,0.33014205,0.32623765,-0.54640726,0.34339216,0.19847863,-0.7489605,0.18190923,0.13647301,-0.79172217,0.43302343,0.13373134){0.89937894,0.43575493,0.59564173,0.80968993};
-SS(-0.85520613,-0.46088631,-0.14784569,-1,-0.25140376,-0.1934451,-1,-0.20076836,0.00061221676,-0.76760867,-0.33664988,-0.028298027){0.95161001,1.0790534,1.0172898,0.68479998};
-SS(-0.7907607,-0.33838097,-0.28342271,-1,-0.33333333,-0.5,-0.78315651,-0.45008839,-0.5,-1,-0.47540235,-0.27521785){0.80149819,1.3342594,1.0467962,1.2841965};
-SS(-0.0073778212,0.36022468,0.15230712,-0.098708274,0.55956225,0.10505678,-0.11618574,0.50328545,0.29980467,0.085954007,0.41736025,0.32943097){0.13675819,0.31633913,0.33969293,0.27115576};
-SS(0.42864323,0.48543211,-0.13804456,0.49866453,0.63973666,-0.21510859,0.25248643,0.73785598,-0.13082591,0.45788353,0.76094781,-0.0096633567){0.42022283,0.68344633,0.60350215,0.76853994};
-SS(-0.10743676,0.85847111,-0.11136175,-0.36992714,1,-0.22970445,-0.23070339,1,-0.34855306,-0.14847812,0.78021305,-0.27623142){0.7462212,1.1684568,1.1599423,0.68882385};
-SS(0.18202227,0.38279251,0.10350409,0.098704003,0.67249079,0.1943501,0.086744979,0.52712982,0.027891324,0.085954007,0.41736025,0.32943097){0.17617817,0.47957633,0.26660844,0.27115576};
-SS(1,1,-0.25,0.8781758,0.86708556,-0.1989731,1,1,-6.9388939e-15,0.78186447,1,3.3673518e-05){2.0438315,1.5462283,1.9807485,1.5923176};
-SS(0.66554141,0.67524133,0.5,0.59365279,0.65503723,0.24444947,0.45042372,0.78359022,0.5,0.55555177,0.82262944,0.31125158){1.1271263,0.82252715,1.0496179,1.0671623};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.55555556,0.5,-0.79641575,0.50054117,0.5,-0.80481649,0.80494069,0.5){1.2666006,1.5401154,1.1180299,1.5232843};
-SS(0.08017426,0.31429474,-0.16745504,-0.056808231,0.14323286,-0.13367928,-0.1182182,0.15955837,-0.3159857,0.13402468,0.11673163,-0.1460819){0.11103103,0.022140076,0.11990198,0.039337265};
-SS(0.13913358,0.10014326,0.18199659,0.25126435,0.28098512,0.24657435,0.36021608,0.23247759,-0.012351094,0.13261259,0.21336316,0.036566127){0.045990896,0.18575023,0.16110593,0.046199082};
-SS(-0.77777778,1,-0.5,-0.83248216,0.76782327,-0.31292259,-0.76988954,1,-0.26944904,-1,0.83964442,-0.3309874){1.8319852,1.366757,1.6463902,1.7979585};
-SS(-0.10743676,0.85847111,-0.11136175,-0.36992714,1,-0.22970445,-0.14847812,0.78021305,-0.27623142,-0.38143574,0.84373572,-0.12387887){0.7462212,1.1684568,0.68882385,0.85864479};
-SS(-0.87046532,0.63071146,0.35630423,-1,0.55555556,0.5,-1,0.70725984,0.21334539,-1,0.4752276,0.27420758){1.2666006,1.5401154,1.5286486,1.2803563};
-SS(0.5,0,0.5,0.59416595,0.14141347,0.32656529,0.75,0,0.5,0.50011436,0,0.27961788){0.47735984,0.46498444,0.79262349,0.30940041};
-SS(-0.68637718,0.43295764,-0.18031685,-0.63246299,0.29145388,0.035195127,-0.79172217,0.43302343,0.13373134,-0.78848723,0.26584533,-0.068869999){0.67437813,0.47226275,0.80968993,0.68151298};
-SS(-0.5,-1,0.5,-0.349759,-0.84853211,0.35590634,-0.25,-1,0.5,-0.4999534,-1,0.27968311){1.4840089,0.94981364,1.2918821,1.3075402};
-SS(-0.0073778212,0.36022468,0.15230712,-0.098708274,0.55956225,0.10505678,0.098704003,0.67249079,0.1943501,0.086744979,0.52712982,0.027891324){0.13675819,0.31633913,0.47957633,0.26660844};
-SS(0.77315808,0.36766952,0.075951375,1,0.50009037,3.487572e-05,1,0.29178008,0.20838772,1,0.2203628,5.6826691e-05){0.71793497,1.2275825,1.1084285,1.0268649};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.65956212,-0.52273243,-0.19262862,-0.36174,-0.40052234,-0.23665811,-0.61549046,-0.35581383,-0.12962263){0.57811658,0.7287475,0.32480953,0.50877487};
-SS(-0.61549046,-0.35581383,-0.12962263,-0.65956212,-0.52273243,-0.19262862,-0.36174,-0.40052234,-0.23665811,-0.52487586,-0.5117405,-0.017639258){0.50877487,0.7287475,0.32480953,0.51812974};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.4581749,-0.5263483,-0.32801665,-0.36174,-0.40052234,-0.23665811,-0.52487586,-0.5117405,-0.017639258){0.7287475,0.57811658,0.32480953,0.51812974};
-SS(0.6657623,0.67544754,-0.5,0.51674933,0.64481281,-0.39755292,0.45062041,0.7833899,-0.5,0.57309542,0.50075776,-0.5){1.1304562,0.82858869,1.0506853,0.81773274};
-SS(0.85153485,0.65148612,-0.35468846,1,0.5,-0.5,1,0.75,-0.5,1,0.50010355,-0.27968748){1.2568282,1.4840091,1.7924126,1.3071084};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.55555556,0.5,-1,-0.77777778,0.5,-0.80635543,-0.81164184,0.5){1.4119512,1.5359657,1.8434331,1.5410993};
-SS(0.77777778,1,-0.5,0.54326203,0.87223293,-0.356993,0.81205362,0.80656044,-0.5,0.68900489,0.77311276,-0.28043733){1.8341362,1.1662147,1.5391707,1.1326816};
-SS(-0.58258855,0.14037208,-0.067351147,-0.4720473,-0.063494476,-0.036829327,-0.70236545,-0.13062851,-0.19140485,-0.49808619,0.0026201378,-0.26387206){0.34532741,0.21285629,0.5265969,0.29810596};
-SS(0.85153485,0.65148612,-0.35468846,1,0.75,-0.5,0.78906409,0.5041626,-0.5,0.81205362,0.80656044,-0.5){1.2568282,1.7924126,1.1105402,1.5391707};
-SS(0.84582719,0.572243,0.1361951,1,0.29178008,0.20838772,1,0.50005385,0.27984222,0.77315808,0.36766952,0.075951375){1.0417018,1.1084285,1.3085441,0.71793497};
-SS(-0.49292178,-0.37477565,-0.5,-0.4581749,-0.5263483,-0.32801665,-0.23055166,-0.37480907,-0.5,-0.36174,-0.40052234,-0.23665811){0.6115465,0.57811658,0.41992239,0.32480953};
-SS(-0.63815223,-0.88141187,0.37488811,-0.75,-1,0.5,-0.5,-1,0.5,-0.50400314,-0.78879927,0.5){1.3088768,1.7943537,1.4840089,1.1086821};
-SS(-1,-0.00021427218,0.00011802244,-0.82279039,-0.18997945,0.10657137,-1,-0.24887753,0.1953112,-1,-0.20076836,0.00061221676){0.98080906,0.70945047,1.0768014,1.0172898};
-SS(0,-1,-6.9388939e-15,-0.12988976,-0.86995226,0.20452896,0,-1,0.25,0,-0.77970171,0.00010845427){0.98008605,0.79894991,1.0438639,0.58842154};
-SS(-0.4433427,0.53576375,-0.12560501,-0.68637718,0.43295764,-0.18031685,-0.49391083,0.27907498,-0.27264436,-0.54631436,0.45612147,-0.00074796238){0.48429505,0.67437813,0.37398026,0.48593017};
-SS(0.11523872,0.30161582,0.5,-0.11614487,0.30919383,0.33918095,-0.18136176,0.40461939,0.5,0.085954007,0.41736025,0.32943097){0.33546792,0.20820823,0.42386795,0.27115576};
-SS(-0.12988976,-0.86995226,0.20452896,0,-1,-6.9388939e-15,0,-1,0.25,-0.22019153,-1,-0.00010416607){0.79894991,0.98008605,1.0438639,1.0287732};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.11458044,0.70010244,0.010073529,0.25248643,0.73785598,-0.13082591,0.086744979,0.52712982,0.027891324){0.32377482,0.49378055,0.60350215,0.26660844};
-SS(-0.58258855,0.14037208,-0.067351147,-0.76752638,0.004448061,-0.013214377,-0.70236545,-0.13062851,-0.19140485,-0.4720473,-0.063494476,-0.036829327){0.34532741,0.5734925,0.5265969,0.21285629};
-SS(-0.62450053,-0.31310845,0.38575928,-0.49284988,-0.37485679,0.5,-0.73174745,-0.21491043,0.5,-0.78327322,-0.45013966,0.5){0.62379151,0.6163523,0.81377033,1.0435491};
-SS(0.13261259,0.21336316,0.036566127,-0.0073778212,0.36022468,0.15230712,0.08017426,0.31429474,-0.16745504,-0.096302334,0.43534175,-0.056072844){0.046199082,0.13675819,0.11103103,0.18078295};
-SS(-0.52470763,0.46530444,0.33754711,-0.54640726,0.34339216,0.19847863,-0.67801153,0.56076489,0.29217382,-0.45563594,0.60375179,0.095527884){0.59371518,0.43575493,0.83617727,0.56263538};
-SS(0.54326203,0.87223293,-0.356993,0.77777778,1,-0.5,0.82865019,1,-0.3214153,0.68900489,0.77311276,-0.28043733){1.1662147,1.8341362,1.7714679,1.1326816};
-SS(0.5,0,-0.5,0.75,0,-0.5,0.6251418,0.1440922,-0.5,0.50007058,0,-0.27987971){0.48471812,0.79494611,0.63751638,0.31006895};
-SS(-0.35582611,-0.64426575,-0.070000747,-0.4581749,-0.5263483,-0.32801665,-0.49676106,-0.69523221,-0.26913048,-0.52487586,-0.5117405,-0.017639258){0.52757348,0.57811658,0.78043195,0.51812974};
-SS(0,-0.49989758,0.27983937,0,-0.75,0.5,0,-0.5,0.5,-0.14394692,-0.62481063,0.5){0.30650831,0.79557901,0.48207879,0.63866347};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.45563594,0.60375179,0.095527884,-0.20984637,0.69532212,0.20809493,-0.2401666,0.74114092,-0.051302261){0.32892635,0.56263538,0.55022745,0.58653028};
-SS(-0.38492375,-0.20017574,-0.33650716,-0.49292178,-0.37477565,-0.5,-0.23055166,-0.37480907,-0.5,-0.36174,-0.40052234,-0.23665811){0.28705324,0.6115465,0.41992239,0.32480953};
-SS(-0.17097214,0.64900986,-0.39927747,-0.033284914,0.58770906,-0.5,-0.31289368,0.69974287,-0.5,-0.18268367,0.83021756,-0.5){0.59741335,0.58301644,0.82323564,0.9573479};
-SS(1,0.77979347,0.00010253841,0.88049681,0.87960137,0.13412341,0.77861211,0.77861193,-0.067175459,0.84582719,0.572243,0.1361951){1.5887874,1.5518824,1.1981052,1.0417018};
-SS(-0.49998858,-1,-4.7037318e-05,-0.63348211,-0.7706683,-0.074889286,-0.70823063,-1,-0.20843533,-0.77973152,-1,-0.0001062007){1.2276085,0.97907785,1.5240742,1.588155};
-SS(-1,1,-0.5,-0.76988954,1,-0.26944904,-1,1,-0.25,-1,0.83964442,-0.3309874){2.2287589,1.6463902,2.0450698,1.7979585};
-SS(-0.056808231,0.14323286,-0.13367928,-0.26297351,0.20404986,-0.17122089,-0.29413589,0.046284299,-0.31274881,-0.28278924,0.041190137,-0.04219563){0.022140076,0.12773981,0.1681493,0.063480395};
-SS(-0.29261734,0.53193925,0.43339885,-0.18136176,0.40461939,0.5,-0.35521568,0.4957142,0.26668635,-0.11614487,0.30919383,0.33918095){0.53993003,0.42386795,0.42001946,0.20820823};
-SS(0.13913358,0.10014326,0.18199659,0,0,0.25,0.29175541,0,0.20824909,0.1615172,0,0.33845519){0.045990896,0.045060365,0.1093371,0.13068911};
-SS(0.11136938,1,0.13859714,0.22886345,0.79287946,0.30210005,0.098704003,0.67249079,0.1943501,0.24404834,0.79519787,0.082231238){1.0072058,0.75332396,0.47957633,0.68472542};
-SS(-0.38492375,-0.20017574,-0.33650716,-0.49292178,-0.37477565,-0.5,-0.30131805,-0.11512588,-0.5,-0.23055166,-0.37480907,-0.5){0.28705324,0.6115465,0.3368451,0.41992239};
-SS(-0.35455825,0.80859576,-0.32177549,-0.33333333,1,-0.5,-0.55555556,1,-0.5,-0.56041637,1,-0.29784853){0.86460259,1.3407278,1.5379273,1.3856141};
-SS(-1,0.55555556,-0.5,-0.80558396,0.5878127,-0.29244037,-1,0.70529035,-0.21162945,-1,0.47527469,-0.27513051){1.5309384,1.0616703,1.520296,1.2834809};
-SS(1,0.50009037,3.487572e-05,0.84582719,0.572243,0.1361951,1,0.29178008,0.20838772,1,0.50005385,0.27984222){1.2275825,1.0417018,1.1084285,1.3085441};
-SS(0.085954007,0.41736025,0.32943097,-0.0073778212,0.36022468,0.15230712,0.098704003,0.67249079,0.1943501,0.086744979,0.52712982,0.027891324){0.27115576,0.13675819,0.47957633,0.26660844};
-SS(-0.3533559,-0.49437708,0.037576204,-0.50159539,-0.29258506,7.2987381e-06,-0.3548152,-0.48825703,0.21848985,-0.3727858,-0.19869367,0.11195566){0.35575629,0.32068114,0.38862106,0.16948569};
-SS(0.64232771,0.84838332,0.46476191,0.55555556,1,0.5,0.68966181,1,0.19790566,0.55555177,0.82262944,0.31125158){1.3339184,1.5357742,1.492557,1.0671623};
-SS(-0.49998858,-1,-4.7037318e-05,-0.36608751,-0.8951802,0.074405883,-0.29157863,-1,0.20827581,-0.22019153,-1,-0.00010416607){1.2276085,0.92652515,1.1139248,1.0287732};
-SS(-0.68637718,0.43295764,-0.18031685,-0.8068077,0.56885008,-0.063754108,-0.79172217,0.43302343,0.13373134,-0.54631436,0.45612147,-0.00074796238){0.67437813,0.96112076,0.80968993,0.48593017};
-SS(0.35567295,0.65317229,0.39545235,0.66554141,0.67524133,0.5,0.5725222,0.50074158,0.5,0.47723835,0.52605258,0.30619083){0.69293227,1.1271263,0.8121357,0.58228229};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.16707278,-0.087678023,-0.31121894,-0.29413589,0.046284299,-0.31274881,-0.28278924,0.041190137,-0.04219563){0.11404163,0.11599041,0.1681493,0.063480395};
-SS(-0.63246299,0.29145388,0.035195127,-0.68637718,0.43295764,-0.18031685,-0.79172217,0.43302343,0.13373134,-0.54631436,0.45612147,-0.00074796238){0.47226275,0.67437813,0.80968993,0.48593017};
-SS(0.75922048,0.56990614,-0.17060419,0.67125235,0.44297685,-0.31879306,0.68900489,0.77311276,-0.28043733,0.85153485,0.65148612,-0.35468846){0.91133836,0.72773009,1.1326816,1.2568282};
-SS(-0.16643696,-0.21791406,0.42402077,-0.30122568,-0.11513872,0.5,-0.20045203,0.067929244,0.29301468,-0.40506391,-0.079541407,0.3303193){0.23818505,0.33848202,0.10955402,0.26156128};
-SS(-0.31377045,0.30492781,-0.36427962,-0.24654336,0.57133462,-0.25396354,-0.50782983,0.50249565,-0.29902586,-0.34372617,0.39779568,-0.18541051){0.30770932,0.42991415,0.58612549,0.29650146};
-SS(-0.76752638,0.004448061,-0.013214377,-0.58258855,0.14037208,-0.067351147,-0.70236545,-0.13062851,-0.19140485,-0.77267892,0.13105707,-0.24874664){0.5734925,0.34532741,0.5265969,0.65386325};
-SS(0,0,-0.25,0.13402468,0.11673163,-0.1460819,0.20129651,0.21389912,-0.31902192,-0.1182182,0.15955837,-0.3159857){0.044304329,0.039337265,0.16839385,0.11990198};
-SS(-0.65956212,-0.52273243,-0.19262862,-0.62341011,-0.46880832,-0.38153973,-0.49676106,-0.69523221,-0.26913048,-0.76546557,-0.72634686,-0.27513208){0.7287475,0.73807879,0.78043195,1.1696133};
-SS(-1,-0.11111111,0.5,-0.89646962,-0.32955067,0.34017365,-1,-0.24887753,0.1953112,-0.84084014,-0.14895162,0.31636914){1.2390062,1.0133061,1.0768014,0.81273381};
-SS(-0.10133362,-0.40777162,0.1162396,0,-0.49997946,0.00010199173,0,-0.29157012,0.20836692,0,-0.49989758,0.27983937){0.17697987,0.22811872,0.11172813,0.30650831};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.35582611,-0.64426575,-0.070000747,-0.36174,-0.40052234,-0.23665811,-0.52487586,-0.5117405,-0.017639258){0.57811658,0.52757348,0.32480953,0.51812974};
-SS(0.11136938,1,0.13859714,0.22886345,0.79287946,0.30210005,-0.014815866,1,0.31001515,-0.043441254,0.79173928,0.29440137){1.0072058,0.75332396,1.0772324,0.69563564};
-SS(0.11136938,1,0.13859714,0.24404834,0.79519787,0.082231238,0.098704003,0.67249079,0.1943501,-0.035654771,0.78507762,0.045007896){1.0072058,0.68472542,0.47957633,0.60161266};
-SS(0.25248643,0.73785598,-0.13082591,0.11458044,0.70010244,0.010073529,0.17777709,0.54047543,-0.2567554,0.086744979,0.52712982,0.027891324){0.60350215,0.49378055,0.36840304,0.26660844};
-SS(-0.098708274,0.55956225,0.10505678,0.098704003,0.67249079,0.1943501,-0.11618574,0.50328545,0.29980467,0.085954007,0.41736025,0.32943097){0.31633913,0.47957633,0.33969293,0.27115576};
-SS(-1,-0.00021427218,0.00011802244,-0.84289574,0.018333867,0.1608607,-1,-0.24887753,0.1953112,-0.82279039,-0.18997945,0.10657137){0.98080906,0.72430843,1.0768014,0.70945047};
-SS(-0.41651431,0.41690828,-0.5,-0.39032311,0.63241857,-0.34621958,-0.50782983,0.50249565,-0.29902586,-0.31377045,0.30492781,-0.36427962){0.57523437,0.65630059,0.58612549,0.30770932};
-SS(-0.49292178,-0.37477565,-0.5,-0.62341011,-0.46880832,-0.38153973,-0.78315651,-0.45008839,-0.5,-0.50036547,-0.57239096,-0.5){0.6115465,0.73807879,1.0467962,0.81333009};
-SS(-0.18136176,0.40461939,0.5,-0.29261734,0.53193925,0.43339885,-0.35521568,0.4957142,0.26668635,-0.41843781,0.30742585,0.3397996){0.42386795,0.53993003,0.42001946,0.37011438};
-SS(-0.69937107,0.31347586,0.5,-0.52470763,0.46530444,0.33754711,-0.61509744,0.47589965,0.5,-0.61674646,0.25215289,0.3447871){0.8165723,0.59371518,0.84259202,0.54607287};
-SS(-0.52470763,0.46530444,0.33754711,-0.69937107,0.31347586,0.5,-0.61509744,0.47589965,0.5,-0.67801153,0.56076489,0.29217382){0.59371518,0.8165723,0.84259202,0.83617727};
-SS(-0.52470763,0.46530444,0.33754711,-0.69937107,0.31347586,0.5,-0.67801153,0.56076489,0.29217382,-0.61674646,0.25215289,0.3447871){0.59371518,0.8165723,0.83617727,0.54607287};
-SS(0,-0.25,0.5,-0.16643696,-0.21791406,0.42402077,0,-0.29157012,0.20836692,-0.1853821,-0.42358473,0.30866054){0.28720824,0.23818505,0.11172813,0.29143101};
-SS(-0.84289574,0.018333867,0.1608607,-1,-0.00021427218,0.00011802244,-1,-0.24887753,0.1953112,-1,-0.00012222908,0.26646899){0.72430843,0.98080906,1.0768014,1.0506696};
-SS(-0.79172217,0.43302343,0.13373134,-1,0.24865949,0.19540364,-1,0.4752276,0.27420758,-1,0.29928494,0.0012550607){0.80968993,1.0814407,1.2803563,1.0718665};
-SS(-1,0.49991607,0.0031934521,-0.79172217,0.43302343,0.13373134,-1,0.4752276,0.27420758,-1,0.29928494,0.0012550607){1.2302733,0.80968993,1.2803563,1.0718665};
-SS(-0.66546973,0.66566005,0.5,-0.60421932,0.82298164,0.34468578,-0.48141868,0.60085372,0.5,-0.67801153,0.56076489,0.29217382){1.1224691,1.1449713,0.82306978,0.83617727};
-SS(0.43654676,1,0.2604635,0.40637652,0.87094343,0.13060843,0.23106485,1,0.31398279,0.24937941,1,-0.00011138016){1.2403655,0.92399337,1.1340577,1.0446566};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.16707278,-0.087678023,-0.31121894,-0.28278924,0.041190137,-0.04219563,-0.098950987,-0.13391411,-0.14594667){0.11404163,0.11599041,0.063480395,0.03512721};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.42864323,0.48543211,-0.13804456,0.25248643,0.73785598,-0.13082591,0.45788353,0.76094781,-0.0096633567){0.32377482,0.42022283,0.60350215,0.76853994};
-SS(-0.76988954,1,-0.26944904,-1,1,-0.5,-0.77777778,1,-0.5,-1,0.83964442,-0.3309874){1.6463902,2.2287589,1.8319852,1.7979585};
-SS(-0.65631386,-0.59724887,0.13822882,-0.59094649,-0.40495207,0.12834587,-0.3548152,-0.48825703,0.21848985,-0.52487586,-0.5117405,-0.017639258){0.7890621,0.51475101,0.38862106,0.51812974};
-SS(-0.15923414,-0.34171533,-0.15079999,-0.36174,-0.40052234,-0.23665811,-0.23583358,-0.36008743,0.0071767184,-0.45843014,-0.20445062,-0.15988901){0.14783141,0.32480953,0.16465457,0.26094507};
-SS(-0.25897908,-0.24013326,0.26450313,-0.16643696,-0.21791406,0.42402077,-0.20045203,0.067929244,0.29301468,-0.40506391,-0.079541407,0.3303193){0.17775565,0.23818505,0.10955402,0.26156128};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.15923414,-0.34171533,-0.15079999,-0.23583358,-0.36008743,0.0071767184,-0.45843014,-0.20445062,-0.15988901){0.11404163,0.14783141,0.16465457,0.26094507};
-SS(0.25,0,0.5,0.26083053,0.15082484,0.37728795,0.5,0,0.5,0.50011436,0,0.27961788){0.29281005,0.21918499,0.47735984,0.30940041};
-SS(0.13402468,0.11673163,-0.1460819,0.08017426,0.31429474,-0.16745504,0.20129651,0.21389912,-0.31902192,-0.1182182,0.15955837,-0.3159857){0.039337265,0.11103103,0.16839385,0.11990198};
-SS(-0.54631436,0.45612147,-0.00074796238,-0.32064519,0.49448821,1.4739833e-06,-0.54640726,0.34339216,0.19847863,-0.39654734,0.26661646,0.019312696){0.48593017,0.32892635,0.43575493,0.20710489};
-SS(-0.32294154,0.86180803,0.13108841,-0.222315,1,-0.00011890035,-0.47972312,1,0.18932995,-0.22223836,1,0.2622369){0.84829643,1.0307381,1.2473472,1.0984067};
-SS(-0.084253952,1,0.13733396,-0.043441254,0.79173928,0.29440137,-0.20984637,0.69532212,0.20809493,-0.035654771,0.78507762,0.045007896){1.0073117,0.69563564,0.55022745,0.60161266};
-SS(-0.39032311,0.63241857,-0.34621958,-0.24654336,0.57133462,-0.25396354,-0.50782983,0.50249565,-0.29902586,-0.31377045,0.30492781,-0.36427962){0.65630059,0.42991415,0.58612549,0.30770932};
-SS(-0.61115597,1,-0.10200355,-0.61311838,0.85766427,0.15491279,-0.47972312,1,0.18932995,-0.74954172,1,0.13574231){1.3611038,1.1216468,1.2473472,1.562759};
-SS(0.87272604,0.35900693,0.37172569,0.77315808,0.36766952,0.075951375,0.6902006,0.50015172,0.27072419,0.84582719,0.572243,0.1361951){1.0107603,0.71793497,0.77938072,1.0417018};
-SS(0.8781758,0.86708556,-0.1989731,1,1,-0.25,1,1,-6.9388939e-15,1,0.77979347,0.00010253841){1.5462283,2.0438315,1.9807485,1.5887874};
-SS(0.59365279,0.65503723,0.24444947,0.39612945,0.70614162,0.21524614,0.52218723,0.46943947,0.022097553,0.47723835,0.52605258,0.30619083){0.82252715,0.68453461,0.46892029,0.58228229};
-SS(0.60662231,0.34516964,-0.13972301,0.69383766,0.49492178,-0.021800115,0.49866453,0.63973666,-0.21510859,0.42864323,0.48543211,-0.13804456){0.48782847,0.71284258,0.68344633,0.42022283};
-SS(-0.18136176,0.40461939,0.5,-0.41843781,0.30742585,0.3397996,-0.35521568,0.4957142,0.26668635,-0.11614487,0.30919383,0.33918095){0.42386795,0.37011438,0.42001946,0.20820823};
-SS(-0.29261734,0.53193925,0.43339885,-0.48141868,0.60085372,0.5,-0.47185361,0.73769401,0.24072705,-0.35521568,0.4957142,0.26668635){0.53993003,0.82306978,0.80384956,0.42001946};
-SS(0,-0.75,0.5,0,-0.7082575,0.2084616,0,-0.83845667,0.33864852,-0.14394692,-0.62481063,0.5){0.79557901,0.52387062,0.80178572,0.63866347};
-SS(0.75,0,-0.5,0.83867599,0,-0.33865964,0.6251418,0.1440922,-0.5,0.70841775,0,-0.20847891){0.79494611,0.80182539,0.63751638,0.52293439};
-SS(-0.39032311,0.63241857,-0.34621958,-0.41651431,0.41690828,-0.5,-0.20381263,0.45499536,-0.5,-0.24654336,0.57133462,-0.25396354){0.65630059,0.57523437,0.478983,0.42991415};
-SS(-1,-0.55555556,0.5,-0.89663862,-0.69397302,0.37275403,-1,-0.70710233,0.21356199,-1,-0.47520831,0.27427507){1.5359657,1.4119512,1.5280688,1.2822693};
-SS(-0.59094649,-0.40495207,0.12834587,-0.73479965,-0.34302295,0.24038072,-0.50874333,-0.23900991,0.2620444,-0.65367362,-0.16081953,0.0014934597){0.51475101,0.69668046,0.36443271,0.4344691};
-SS(0,-0.7082575,0.2084616,-0.22656331,-0.68065623,0.28194433,0,-0.83845667,0.33864852,-0.14394692,-0.62481063,0.5){0.52387062,0.57683818,0.80178572,0.63866347};
-SS(-0.48141868,0.60085372,0.5,-0.60421932,0.82298164,0.34468578,-0.47185361,0.73769401,0.24072705,-0.67801153,0.56076489,0.29217382){0.82306978,1.1449713,0.80384956,0.83617727};
-SS(0.60662231,0.34516964,-0.13972301,0.67125235,0.44297685,-0.31879306,0.49866453,0.63973666,-0.21510859,0.75922048,0.56990614,-0.17060419){0.48782847,0.72773009,0.68344633,0.91133836};
-SS(-0.098708274,0.55956225,0.10505678,-0.0073778212,0.36022468,0.15230712,0.098704003,0.67249079,0.1943501,0.085954007,0.41736025,0.32943097){0.31633913,0.13675819,0.47957633,0.27115576};
-SS(-0.65367362,-0.16081953,0.0014934597,-0.67616985,-0.069078192,0.18801024,-0.73479965,-0.34302295,0.24038072,-0.50874333,-0.23900991,0.2620444){0.4344691,0.47948004,0.69668046,0.36443271};
-SS(0.65062064,0.64268786,0.069510863,0.59365279,0.65503723,0.24444947,0.39612945,0.70614162,0.21524614,0.52218723,0.46943947,0.022097553){0.82620698,0.82252715,0.68453461,0.46892029};
-SS(-0.61674646,0.25215289,0.3447871,-0.69937107,0.31347586,0.5,-0.67801153,0.56076489,0.29217382,-0.83851866,0.33014205,0.32623765){0.54607287,0.8165723,0.83617727,0.89937894};
-SS(-0.83851866,0.33014205,0.32623765,-0.54640726,0.34339216,0.19847863,-0.79172217,0.43302343,0.13373134,-0.67801153,0.56076489,0.29217382){0.89937894,0.43575493,0.80968993,0.83617727};
-SS(0.35689191,0.091376279,-0.36932783,0.25,0,-0.5,0.29173763,0,-0.20843742,0.16149165,0,-0.33864688){0.26145514,0.28810477,0.1134179,0.12746835};
-SS(0.18202227,0.38279251,0.10350409,-0.0073778212,0.36022468,0.15230712,0.08017426,0.31429474,-0.16745504,0.13261259,0.21336316,0.036566127){0.17617817,0.13675819,0.11103103,0.046199082};
-SS(-1,-0.33333333,-0.5,-0.7907607,-0.33838097,-0.28342271,-1,-0.25140376,-0.1934451,-1,-0.47540235,-0.27521785){1.3342594,0.80149819,1.0790534,1.2841965};
-SS(-0.5555987,0.045150158,0.095162244,-0.67616985,-0.069078192,0.18801024,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.29993682,0.47948004,0.36443271,0.26156128};
-SS(-1,-0.33333333,-0.5,-0.85707128,-0.1416783,-0.34083416,-1,-0.25140376,-0.1934451,-0.7907607,-0.33838097,-0.28342271){1.3342594,0.85441326,1.0790534,0.80149819};
-SS(0.84582719,0.572243,0.1361951,1,0.50009037,3.487572e-05,1,0.29178008,0.20838772,0.77315808,0.36766952,0.075951375){1.0417018,1.2275825,1.1084285,0.71793497};
-SS(-0.3132159,0.69976014,0.5,-0.29261734,0.53193925,0.43339885,-0.48141868,0.60085372,0.5,-0.47185361,0.73769401,0.24072705){0.82050522,0.53993003,0.82306978,0.80384956};
-SS(-0.3548152,-0.48825703,0.21848985,-0.59094649,-0.40495207,0.12834587,-0.50874333,-0.23900991,0.2620444,-0.3727858,-0.19869367,0.11195566){0.38862106,0.51475101,0.36443271,0.16948569};
-SS(-1,-1,-0.25,-0.86742481,-0.86548068,-0.14483364,-1,-1,-6.9388939e-15,-0.77973152,-1,-0.0001062007){2.0422973,1.5085891,1.9831286,1.588155};
-SS(-0.54640726,0.34339216,0.19847863,-0.61674646,0.25215289,0.3447871,-0.67801153,0.56076489,0.29217382,-0.83851866,0.33014205,0.32623765){0.43575493,0.54607287,0.83617727,0.89937894};
-SS(0.50010751,0,-0.00013054911,0.37137652,0.1767682,-0.19801193,0.29173763,0,-0.20843742,0.22032809,0,-9.1119885e-05){0.22823279,0.19205628,0.1134179,0.027339551};
-SS(-1,-0.11111111,0.5,-0.84084014,-0.14895162,0.31636914,-1,-0.24887753,0.1953112,-1,-0.00012222908,0.26646899){1.2390062,0.81273381,1.0768014,1.0506696};
-SS(0.55555177,0.82262944,0.31125158,0.55555556,1,0.5,0.68966181,1,0.19790566,0.43654676,1,0.2604635){1.0671623,1.5357742,1.492557,1.2403655};
-SS(-0.62341011,-0.46880832,-0.38153973,-0.67495489,-0.6652659,-0.5,-0.49676106,-0.69523221,-0.26913048,-0.76546557,-0.72634686,-0.27513208){0.73807879,1.1276355,0.78043195,1.1696133};
-SS(-0.70823063,-1,-0.20843533,-0.42066299,-0.84356131,-0.12906413,-0.49995867,-1,-0.27986665,-0.63348211,-0.7706683,-0.074889286){1.5240742,0.88525127,1.3082069,0.97907785};
-SS(0.30434906,0.49798107,-4.0114635e-05,0.086744979,0.52712982,0.027891324,0.25248643,0.73785598,-0.13082591,0.17777709,0.54047543,-0.2567554){0.32377482,0.26660844,0.60350215,0.36840304};
-SS(-0.65355936,0.25468043,-0.1897796,-0.58258855,0.14037208,-0.067351147,-0.39654734,0.26661646,0.019312696,-0.63246299,0.29145388,0.035195127){0.51379882,0.34532741,0.20710489,0.47226275};
-SS(0.13913358,0.10014326,0.18199659,0.29175541,0,0.20824909,0.22032809,0,-9.1119885e-05,0.36021608,0.23247759,-0.012351094){0.045990896,0.1093371,0.027339551,0.16110593};
-SS(-0.63048479,0.37587985,-0.34368186,-0.40408872,0.18166381,-0.5,-0.49391083,0.27907498,-0.27264436,-0.62938155,0.17932964,-0.37445272){0.64388066,0.42526168,0.37398026,0.55109073};
-SS(0.67125235,0.44297685,-0.31879306,0.49866453,0.63973666,-0.21510859,0.75922048,0.56990614,-0.17060419,0.68900489,0.77311276,-0.28043733){0.72773009,0.68344633,0.91133836,1.1326816};
-SS(-1,-0.5000565,0.0033661208,-0.85520613,-0.46088631,-0.14784569,-1,-0.25140376,-0.1934451,-1,-0.20076836,0.00061221676){1.2263361,0.95161001,1.0790534,1.0172898};
-SS(0.08017426,0.31429474,-0.16745504,0.09693172,0.3918681,-0.3370861,0.20129651,0.21389912,-0.31902192,-0.1182182,0.15955837,-0.3159857){0.11103103,0.26256104,0.16839385,0.11990198};
-SS(-1,-0.5000565,0.0033661208,-0.85520613,-0.46088631,-0.14784569,-1,-0.20076836,0.00061221676,-0.76760867,-0.33664988,-0.028298027){1.2263361,0.95161001,1.0172898,0.68479998};
-SS(0.87272604,0.35900693,0.37172569,1,0.25,0.5,1,0.5,0.5,0.78912399,0.50423732,0.5){1.0107603,1.2942978,1.484684,1.1096027};
-SS(0.26083053,0.15082484,0.37728795,0.25,0,0.5,0.29175541,0,0.20824909,0.50011436,0,0.27961788){0.21918499,0.29281005,0.1093371,0.30940041};
-SS(0.49866453,0.63973666,-0.21510859,0.51674933,0.64481281,-0.39755292,0.68900489,0.77311276,-0.28043733,0.67125235,0.44297685,-0.31879306){0.68344633,0.82858869,1.1326816,0.72773009};
-SS(0.69383766,0.49492178,-0.021800115,0.60662231,0.34516964,-0.13972301,0.49866453,0.63973666,-0.21510859,0.75922048,0.56990614,-0.17060419){0.71284258,0.48782847,0.68344633,0.91133836};
-SS(0.50010751,0,-0.00013054911,0.37137652,0.1767682,-0.19801193,0.22032809,0,-9.1119885e-05,0.36021608,0.23247759,-0.012351094){0.22823279,0.19205628,0.027339551,0.16110593};
-SS(-0.39032311,0.63241857,-0.34621958,-0.41651431,0.41690828,-0.5,-0.24654336,0.57133462,-0.25396354,-0.31377045,0.30492781,-0.36427962){0.65630059,0.57523437,0.42991415,0.30770932};
-SS(0.77777778,1,0.5,0.64232771,0.84838332,0.46476191,0.55555556,1,0.5,0.82853688,1,0.32125076){1.8450917,1.3339184,1.5357742,1.7703132};
-SS(-0.50159539,-0.29258506,7.2987381e-06,-0.59094649,-0.40495207,0.12834587,-0.3548152,-0.48825703,0.21848985,-0.3727858,-0.19869367,0.11195566){0.32068114,0.51475101,0.38862106,0.16948569};
-SS(-0.65355936,0.25468043,-0.1897796,-0.58258855,0.14037208,-0.067351147,-0.49391083,0.27907498,-0.27264436,-0.39654734,0.26661646,0.019312696){0.51379882,0.34532741,0.37398026,0.20710489};
-SS(-0.098708274,0.55956225,0.10505678,-0.32064519,0.49448821,1.4739833e-06,-0.2401666,0.74114092,-0.051302261,-0.096302334,0.43534175,-0.056072844){0.31633913,0.32892635,0.58653028,0.18078295};
-SS(-0.41651431,0.41690828,-0.5,-0.31377045,0.30492781,-0.36427962,-0.20381263,0.45499536,-0.5,-0.24654336,0.57133462,-0.25396354){0.57523437,0.30770932,0.478983,0.42991415};
-SS(0.54326203,0.87223293,-0.356993,0.77777778,1,-0.5,0.55555556,1,-0.5,0.82865019,1,-0.3214153){1.1662147,1.8341362,1.5352494,1.7714679};
-SS(-0.41651431,0.41690828,-0.5,-0.63048479,0.37587985,-0.34368186,-0.40408872,0.18166381,-0.5,-0.49391083,0.27907498,-0.27264436){0.57523437,0.64388066,0.42526168,0.37398026};
-SS(-0.0073778212,0.36022468,0.15230712,0.13261259,0.21336316,0.036566127,-0.13709741,0.19518884,0.034033465,-0.096302334,0.43534175,-0.056072844){0.13675819,0.046199082,0.040184006,0.18078295};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.098708274,0.55956225,0.10505678,-0.2401666,0.74114092,-0.051302261,-0.096302334,0.43534175,-0.056072844){0.41358858,0.31633913,0.58653028,0.18078295};
-SS(-0.75,-1,-0.5,-0.6448883,-0.87343314,-0.36731947,-0.50377808,-0.78884267,-0.5,-0.80632325,-0.81147186,-0.5){1.7946951,1.296688,1.1087956,1.5409894};
-SS(-0.32294154,0.86180803,0.13108841,-0.084253952,1,0.13733396,-0.20984637,0.69532212,0.20809493,-0.035654771,0.78507762,0.045007896){0.84829643,1.0073117,0.55022745,0.60161266};
-SS(-0.0073778212,0.36022468,0.15230712,0.086744979,0.52712982,0.027891324,0.08017426,0.31429474,-0.16745504,-0.096302334,0.43534175,-0.056072844){0.13675819,0.26660844,0.11103103,0.18078295};
-SS(0.84582719,0.572243,0.1361951,0.65062064,0.64268786,0.069510863,0.76099919,0.76690574,0.25750996,0.77861211,0.77861193,-0.067175459){1.0417018,0.82620698,1.2143065,1.1981052};
-SS(0.25,0,-0.5,0.20129651,0.21389912,-0.31902192,-0.010543702,0.17712261,-0.5,0.16149165,0,-0.33864688){0.28810477,0.16839385,0.25750364,0.12746835};
-SS(-0.0073778212,0.36022468,0.15230712,0.18202227,0.38279251,0.10350409,0.08017426,0.31429474,-0.16745504,0.086744979,0.52712982,0.027891324){0.13675819,0.17617817,0.11103103,0.26660844};
-SS(0.39612945,0.70614162,0.21524614,0.36016656,0.41044152,0.1594367,0.52218723,0.46943947,0.022097553,0.47723835,0.52605258,0.30619083){0.68453461,0.3073722,0.46892029,0.58228229};
-SS(0.75,0,0.5,0.59416595,0.14141347,0.32656529,0.70845584,0,0.20819814,0.50011436,0,0.27961788){0.79262349,0.46498444,0.52761363,0.30940041};
-SS(-0.22656331,-0.68065623,0.28194433,0,-0.7082575,0.2084616,0,-0.49989758,0.27983937,-0.14394692,-0.62481063,0.5){0.57683818,0.52387062,0.30650831,0.63866347};
-SS(-0.22223836,1,0.2622369,-0.32294154,0.86180803,0.13108841,-0.084253952,1,0.13733396,-0.20984637,0.69532212,0.20809493){1.0984067,0.84829643,1.0073117,0.55022745};
-SS(-0.043441254,0.79173928,0.29440137,-0.22223836,1,0.2622369,-0.084253952,1,0.13733396,-0.20984637,0.69532212,0.20809493){0.69563564,1.0984067,1.0073117,0.55022745};
-SS(0.8988736,0.63809662,-0.070284173,1,0.50009037,3.487572e-05,1,0.70844226,-0.20827687,1,0.77979347,0.00010253841){1.2046527,1.2275825,1.5310675,1.5887874};
-SS(0.20129651,0.21389912,-0.31902192,0.25,0,-0.5,0.11583535,0.30145324,-0.5,0.37532516,0.23078833,-0.5){0.16839385,0.28810477,0.33954703,0.42551454};
-SS(-0.19461387,0.3919517,0.10437587,-0.26986228,0.26051837,0.22418657,-0.35521568,0.4957142,0.26668635,-0.39654734,0.26661646,0.019312696){0.19075448,0.1749353,0.42001946,0.20710489};
-SS(-0.1159097,-0.14329028,0.19302206,0,0,-6.9388939e-15,0,0,0.25,0,-0.22019801,5.0496855e-05){0.055235283,-0.017891206,0.045060365,0.029059683};
-SS(-0.45563594,0.60375179,0.095527884,-0.32064519,0.49448821,1.4739833e-06,-0.54640726,0.34339216,0.19847863,-0.54631436,0.45612147,-0.00074796238){0.56263538,0.32892635,0.43575493,0.48593017};
-SS(-0.25,-1,0.5,-0.349759,-0.84853211,0.35590634,-0.29157863,-1,0.20827581,-0.4999534,-1,0.27968311){1.2918821,0.94981364,1.1139248,1.3075402};
-SS(0.11111111,1,0.5,0.22886345,0.79287946,0.30210005,-0.014815866,1,0.31001515,0.23106485,1,0.31398279){1.2368521,0.75332396,1.0772324,1.1340577};
-SS(-1,0.77777778,-0.5,-0.83248216,0.76782327,-0.31292259,-1,0.55555556,-0.5,-0.80479144,0.80504612,-0.5){1.8398372,1.366757,1.5309384,1.5255891};
-SS(0.88049681,0.87960137,0.13412341,0.76099919,0.76690574,0.25750996,0.77861211,0.77861193,-0.067175459,0.84582719,0.572243,0.1361951){1.5518824,1.2143065,1.1981052,1.0417018};
-SS(0.39612945,0.70614162,0.21524614,0.26064395,0.61953306,0.12890567,0.52218723,0.46943947,0.022097553,0.36016656,0.41044152,0.1594367){0.68453461,0.45328252,0.46892029,0.3073722};
-SS(-0.61311838,0.85766427,0.15491279,-0.61115597,1,-0.10200355,-0.48952189,0.78345034,0.019065462,-0.79370724,0.81084643,0.045877226){1.1216468,1.3611038,0.83409809,1.270911};
-SS(-0.67616985,-0.069078192,0.18801024,-0.5555987,0.045150158,0.095162244,-0.50874333,-0.23900991,0.2620444,-0.3727858,-0.19869367,0.11195566){0.47948004,0.29993682,0.36443271,0.16948569};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.3727858,-0.19869367,0.11195566,-0.23583358,-0.36008743,0.0071767184,-0.20656092,-0.13938028,0.029547229){0.11404163,0.16948569,0.16465457,0.048278496};
-SS(-0.043441254,0.79173928,0.29440137,0.11136938,1,0.13859714,0.098704003,0.67249079,0.1943501,-0.035654771,0.78507762,0.045007896){0.69563564,1.0072058,0.47957633,0.60161266};
-SS(-0.39654734,0.26661646,0.019312696,-0.54640726,0.34339216,0.19847863,-0.26986228,0.26051837,0.22418657,-0.35521568,0.4957142,0.26668635){0.20710489,0.43575493,0.1749353,0.42001946};
-SS(-1,0.77777778,0.5,-0.87046532,0.63071146,0.35630423,-1,0.55555556,0.5,-1,0.70725984,0.21334539){1.8402752,1.2666006,1.5401154,1.5286486};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.45563594,0.60375179,0.095527884,-0.54640726,0.34339216,0.19847863,-0.35521568,0.4957142,0.26668635){0.32892635,0.56263538,0.43575493,0.42001946};
-SS(-0.20984637,0.69532212,0.20809493,-0.30949447,0.8262402,0.33528492,-0.47185361,0.73769401,0.24072705,-0.35521568,0.4957142,0.26668635){0.55022745,0.87388961,0.80384956,0.42001946};
-SS(0.09693172,0.3918681,-0.3370861,-0.010543702,0.17712261,-0.5,0.20129651,0.21389912,-0.31902192,-0.1182182,0.15955837,-0.3159857){0.26256104,0.25750364,0.16839385,0.11990198};
-SS(-0.4581749,-0.5263483,-0.32801665,-0.49292178,-0.37477565,-0.5,-0.23055166,-0.37480907,-0.5,-0.26056819,-0.54975154,-0.34323516){0.57811658,0.6115465,0.41992239,0.46884495};
-SS(0.85153485,0.65148612,-0.35468846,1,0.75,-0.5,1,0.70844226,-0.20827687,1,0.50010355,-0.27968748){1.2568282,1.7924126,1.5310675,1.3071084};
-SS(1,0,-6.9388939e-15,0.86971177,0.13024645,0.1427188,1,0,0.25,1,0.2203628,5.6826691e-05){0.9846322,0.77797836,1.0436257,1.0268649};
-SS(-0.29237157,-0.11865629,-0.17606411,-0.45843014,-0.20445062,-0.15988901,-0.23583358,-0.36008743,0.0071767184,-0.3727858,-0.19869367,0.11195566){0.11404163,0.26094507,0.16465457,0.16948569};
-SS(0.86971177,0.13024645,0.1427188,1,0,-6.9388939e-15,1,0,0.25,0.77985819,0,-0.00014691753){0.77797836,0.9846322,1.0436257,0.58919206};
-SS(0.66554141,0.67524133,0.5,0.59365279,0.65503723,0.24444947,0.47723835,0.52605258,0.30619083,0.35567295,0.65317229,0.39545235){1.1271263,0.82252715,0.58228229,0.69293227};
-SS(-0.54631436,0.45612147,-0.00074796238,-0.65776896,0.64141588,0.074371921,-0.79172217,0.43302343,0.13373134,-0.67801153,0.56076489,0.29217382){0.48593017,0.83514199,0.80968993,0.83617727};
-SS(0.59365279,0.65503723,0.24444947,0.66554141,0.67524133,0.5,0.45042372,0.78359022,0.5,0.35567295,0.65317229,0.39545235){0.82252715,1.1271263,1.0496179,0.69293227};
-SS(-0.42066299,-0.84356131,-0.12906413,-0.49998858,-1,-4.7037318e-05,-0.70823063,-1,-0.20843533,-0.49995867,-1,-0.27986665){0.88525127,1.2276085,1.5240742,1.3082069};
-SS(-0.61115597,1,-0.10200355,-0.58934795,0.84141567,-0.18062024,-0.48952189,0.78345034,0.019065462,-0.79370724,0.81084643,0.045877226){1.3611038,1.0736489,0.83409809,1.270911};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.19461387,0.3919517,0.10437587,-0.35521568,0.4957142,0.26668635,-0.39654734,0.26661646,0.019312696){0.32892635,0.19075448,0.42001946,0.20710489};
-SS(0.29175541,0,0.20824909,0.13913358,0.10014326,0.18199659,0.25126435,0.28098512,0.24657435,0.46476684,0.14382827,0.12247557){0.1093371,0.045990896,0.18575023,0.23450402};
-SS(1,0.75,0.5,0.87881231,0.64063264,0.37220388,0.78912399,0.50423732,0.5,0.81191124,0.80644944,0.5){1.7930237,1.3069719,1.1096027,1.5425973};
-SS(-0.0089783977,0.64320989,-0.13441642,-0.01813809,0.53618118,-0.30537166,0.08017426,0.31429474,-0.16745504,-0.096302334,0.43534175,-0.056072844){0.41358858,0.36567785,0.11103103,0.18078295};
-SS(1,0.29178008,0.20838772,0.87272604,0.35900693,0.37172569,1,0.50005385,0.27984222,0.77315808,0.36766952,0.075951375){1.1084285,1.0107603,1.3085441,0.71793497};
-SS(-0.11754465,-0.65214472,-0.32749638,0,-0.75,-0.5,0,-0.5,-0.5,0,-0.49997234,-0.27965571){0.53347202,0.79460868,0.4845449,0.30906942};
-SS(0.54326203,0.87223293,-0.356993,0.55555556,1,-0.5,0.68985253,1,-0.19792707,0.82865019,1,-0.3214153){1.1662147,1.5352494,1.495304,1.7714679};
-SS(-0.32879066,-0.67072359,-0.5,-0.26056819,-0.54975154,-0.34323516,-0.23055166,-0.37480907,-0.5,-0.50036547,-0.57239096,-0.5){0.79007105,0.46884495,0.41992239,0.81333009};
-SS(-0.54640726,0.34339216,0.19847863,-0.54631436,0.45612147,-0.00074796238,-0.79172217,0.43302343,0.13373134,-0.67801153,0.56076489,0.29217382){0.43575493,0.48593017,0.80968993,0.83617727};
-SS(-0.34310942,-0.010167032,0.1509038,-0.5555987,0.045150158,0.095162244,-0.50874333,-0.23900991,0.2620444,-0.40506391,-0.079541407,0.3303193){0.12661586,0.29993682,0.36443271,0.26156128};
-SS(-0.3132159,0.69976014,0.5,-0.29261734,0.53193925,0.43339885,-0.47185361,0.73769401,0.24072705,-0.30949447,0.8262402,0.33528492){0.82050522,0.53993003,0.80384956,0.87388961};
-SS(-0.5555987,0.045150158,0.095162244,-0.34310942,-0.010167032,0.1509038,-0.50874333,-0.23900991,0.2620444,-0.3727858,-0.19869367,0.11195566){0.29993682,0.12661586,0.36443271,0.16948569};
-SS(0.13261259,0.21336316,0.036566127,0.08017426,0.31429474,-0.16745504,-0.13709741,0.19518884,0.034033465,-0.096302334,0.43534175,-0.056072844){0.046199082,0.11103103,0.040184006,0.18078295};
-SS(-0.65776896,0.64141588,0.074371921,-0.45563594,0.60375179,0.095527884,-0.67801153,0.56076489,0.29217382,-0.54631436,0.45612147,-0.00074796238){0.83514199,0.56263538,0.83617727,0.48593017};
-SS(-0.49292178,-0.37477565,-0.5,-0.4581749,-0.5263483,-0.32801665,-0.50036547,-0.57239096,-0.5,-0.26056819,-0.54975154,-0.34323516){0.6115465,0.57811658,0.81333009,0.46884495};
-SS(0.51674933,0.64481281,-0.39755292,0.6657623,0.67544754,-0.5,0.68900489,0.77311276,-0.28043733,0.67125235,0.44297685,-0.31879306){0.82858869,1.1304562,1.1326816,0.72773009};
-SS(0.87272604,0.35900693,0.37172569,1,0.50005385,0.27984222,0.77315808,0.36766952,0.075951375,0.84582719,0.572243,0.1361951){1.0107603,1.3085441,0.71793497,1.0417018};
-SS(-0.50537844,-0.68762812,0.023695348,-0.65631386,-0.59724887,0.13822882,-0.3548152,-0.48825703,0.21848985,-0.52487586,-0.5117405,-0.017639258){0.71483247,0.7890621,0.38862106,0.51812974};
-SS(-0.26056819,-0.54975154,-0.34323516,-0.49292178,-0.37477565,-0.5,-0.23055166,-0.37480907,-0.5,-0.50036547,-0.57239096,-0.5){0.46884495,0.6115465,0.41992239,0.81333009};
-SS(0.22886345,0.79287946,0.30210005,0.11136938,1,0.13859714,0.098704003,0.67249079,0.1943501,-0.043441254,0.79173928,0.29440137){0.75332396,1.0072058,0.47957633,0.69563564};
-SS(0.55555556,1,0.5,0.64232771,0.84838332,0.46476191,0.68966181,1,0.19790566,0.82853688,1,0.32125076){1.5357742,1.3339184,1.492557,1.7703132};
-SS(-0.29261734,0.53193925,0.43339885,-0.20984637,0.69532212,0.20809493,-0.35521568,0.4957142,0.26668635,-0.30949447,0.8262402,0.33528492){0.53993003,0.55022745,0.42001946,0.87388961};
-SS(0.67125235,0.44297685,-0.31879306,0.6657623,0.67544754,-0.5,0.68900489,0.77311276,-0.28043733,0.85153485,0.65148612,-0.35468846){0.72773009,1.1304562,1.1326816,1.2568282};
-SS(0.54326203,0.87223293,-0.356993,0.55555556,1,-0.5,0.6657623,0.67544754,-0.5,0.45062041,0.7833899,-0.5){1.1662147,1.5352494,1.1304562,1.0506853};
-SS(-0.63348211,-0.7706683,-0.074889286,-0.6448883,-0.87343314,-0.36731947,-0.49676106,-0.69523221,-0.26913048,-0.42066299,-0.84356131,-0.12906413){0.97907785,1.296688,0.78043195,0.88525127};
-SS(0,-0.5,0.5,-0.1853821,-0.42358473,0.30866054,0,-0.25,0.5,0,-0.49989758,0.27983937){0.48207879,0.29143101,0.28720824,0.30650831};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.70823063,-1,-0.20843533,-0.49995867,-1,-0.27986665,-0.63348211,-0.7706683,-0.074889286){1.296688,1.5240742,1.3082069,0.97907785};
-SS(-0.67616985,-0.069078192,0.18801024,-0.3727858,-0.19869367,0.11195566,-0.50874333,-0.23900991,0.2620444,-0.65367362,-0.16081953,0.0014934597){0.47948004,0.16948569,0.36443271,0.4344691};
-SS(-1,-0.55555556,-0.5,-0.91414606,-0.68082467,-0.37109558,-0.67495489,-0.6652659,-0.5,-0.78315651,-0.45008839,-0.5){1.5366945,1.4249306,1.1276355,1.0467962};
-SS(0.25,0,-0.5,0.20129651,0.21389912,-0.31902192,0.11583535,0.30145324,-0.5,-0.010543702,0.17712261,-0.5){0.28810477,0.16839385,0.33954703,0.25750364};
-SS(-0.5,-1,-0.5,-0.36340067,-0.87821042,-0.37678589,-0.25,-1,-0.5,-0.50377808,-0.78884267,-0.5){1.4844013,1.0307746,1.2929607,1.1087956};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.55555556,0.5,-0.67513028,-0.66529728,0.5,-0.78327322,-0.45013966,0.5){1.4119512,1.5359657,1.1284607,1.0435491};
-SS(0.20129651,0.21389912,-0.31902192,0,0,-0.25,-0.010543702,0.17712261,-0.5,0.16149165,0,-0.33864688){0.16839385,0.044304329,0.25750364,0.12746835};
-SS(-0.01813809,0.53618118,-0.30537166,-0.0089783977,0.64320989,-0.13441642,0.08017426,0.31429474,-0.16745504,0.17777709,0.54047543,-0.2567554){0.36567785,0.41358858,0.11103103,0.36840304};
-SS(-0.6448883,-0.87343314,-0.36731947,-0.75,-1,-0.5,-0.5,-1,-0.5,-0.49995867,-1,-0.27986665){1.296688,1.7946951,1.4844013,1.3082069};
-SS(-0.58258855,0.14037208,-0.067351147,-0.49808619,0.0026201378,-0.26387206,-0.70236545,-0.13062851,-0.19140485,-0.77267892,0.13105707,-0.24874664){0.34532741,0.29810596,0.5265969,0.65386325};
-SS(-0.45563594,0.60375179,0.095527884,-0.54640726,0.34339216,0.19847863,-0.67801153,0.56076489,0.29217382,-0.54631436,0.45612147,-0.00074796238){0.56263538,0.43575493,0.83617727,0.48593017};
-SS(0.13913358,0.10014326,0.18199659,0.29175541,0,0.20824909,0.36021608,0.23247759,-0.012351094,0.46476684,0.14382827,0.12247557){0.045990896,0.1093371,0.16110593,0.23450402};
-SS(-0.86742481,-0.86548068,-0.14483364,-1,-1,-0.25,-1,-1,-6.9388939e-15,-1,-0.77608598,0.00064487429){1.5085891,2.0422973,1.9831286,1.5844414};
-SS(1,0.25,0.5,0.87272604,0.35900693,0.37172569,1,0.5,0.5,1,0.50005385,0.27984222){1.2942978,1.0107603,1.484684,1.3085441};
-SS(1,0.25,-0.5,0.87867265,0.36391919,-0.37720578,1,0.5,-0.5,0.78906409,0.5041626,-0.5){1.2935113,1.03034,1.4840091,1.1105402};
-SS(-0.63815223,-0.88141187,0.37488811,-0.75,-1,0.5,-0.50400314,-0.78879927,0.5,-0.80635543,-0.81164184,0.5){1.3088768,1.7943537,1.1086821,1.5410993};
-SS(-0.49998858,-1,-4.7037318e-05,-0.42066299,-0.84356131,-0.12906413,-0.70823063,-1,-0.20843533,-0.63348211,-0.7706683,-0.074889286){1.2276085,0.88525127,1.5240742,0.97907785};
-SS(0.51674933,0.64481281,-0.39755292,0.37549445,0.49317282,-0.5,0.45062041,0.7833899,-0.5,0.57309542,0.50075776,-0.5){0.82858869,0.61648995,1.0506853,0.81773274};
-SS(-0.1182182,0.15955837,-0.3159857,0,0,-0.25,-0.010543702,0.17712261,-0.5,0.20129651,0.21389912,-0.31902192){0.11990198,0.044304329,0.25750364,0.16839385};
-SS(-0.89663862,-0.69397302,0.37275403,-1,-0.77777778,0.5,-1,-0.70710233,0.21356199,-1,-0.84092895,0.33252059){1.4119512,1.8434331,1.5280688,1.8030746};
-SS(-1,0.55555556,-0.5,-0.83248216,0.76782327,-0.31292259,-1,0.70529035,-0.21162945,-0.80558396,0.5878127,-0.29244037){1.5309384,1.366757,1.520296,1.0616703};
-SS(-0.63048479,0.37587985,-0.34368186,-0.41651431,0.41690828,-0.5,-0.40408872,0.18166381,-0.5,-0.62938155,0.17932964,-0.37445272){0.64388066,0.57523437,0.42526168,0.55109073};
-SS(-0.25,-1,0.5,-0.349759,-0.84853211,0.35590634,-0.50400314,-0.78879927,0.5,-0.18863677,-0.81113033,0.5){1.2918821,0.94981364,1.1086821,0.92459822};
-SS(0.6251418,0.1440922,-0.5,0.77491511,0.22516452,-0.26425516,0.70841775,0,-0.20847891,0.83867599,0,-0.33865964){0.63751638,0.70313431,0.52293439,0.80182539};
-SS(0.65062064,0.64268786,0.069510863,0.52218723,0.46943947,0.022097553,0.39612945,0.70614162,0.21524614,0.45788353,0.76094781,-0.0096633567){0.82620698,0.46892029,0.68453461,0.76853994};
-SS(0.8781758,0.86708556,-0.1989731,0.68985253,1,-0.19792707,0.78186447,1,3.3673518e-05,0.82865019,1,-0.3214153){1.5462283,1.495304,1.5923176,1.7714679};
-SS(-0.34372617,0.39779568,-0.18541051,-0.49391083,0.27907498,-0.27264436,-0.39654734,0.26661646,0.019312696,-0.54631436,0.45612147,-0.00074796238){0.29650146,0.37398026,0.20710489,0.48593017};
-SS(-0.4720473,-0.063494476,-0.036829327,-0.5555987,0.045150158,0.095162244,-0.65367362,-0.16081953,0.0014934597,-0.3727858,-0.19869367,0.11195566){0.21285629,0.29993682,0.4344691,0.16948569};
-SS(0.086744979,0.52712982,0.027891324,-0.0089783977,0.64320989,-0.13441642,0.08017426,0.31429474,-0.16745504,-0.096302334,0.43534175,-0.056072844){0.26660844,0.41358858,0.11103103,0.18078295};
-SS(-0.12988976,-0.86995226,0.20452896,0,-1,0.25,-0.29157863,-1,0.20827581,-0.22019153,-1,-0.00010416607){0.79894991,1.0438639,1.1139248,1.0287732};
-SS(0,-1,0.25,-0.12988976,-0.86995226,0.20452896,0,-0.7082575,0.2084616,0,-0.77970171,0.00010845427){1.0438639,0.79894991,0.52387062,0.58842154};
-SS(-0.83248216,0.76782327,-0.31292259,-1,0.77777778,-0.5,-1,0.55555556,-0.5,-1,0.70529035,-0.21162945){1.366757,1.8398372,1.5309384,1.520296};
-SS(-0.47185361,0.73769401,0.24072705,-0.29261734,0.53193925,0.43339885,-0.35521568,0.4957142,0.26668635,-0.30949447,0.8262402,0.33528492){0.80384956,0.53993003,0.42001946,0.87388961};
-SS(-0.62938155,0.17932964,-0.37445272,-0.58754442,0.033885734,-0.5,-0.69937066,0.31351533,-0.5,-0.40408872,0.18166381,-0.5){0.55109073,0.58180393,0.81965428,0.42526168};
-SS(0.52218723,0.46943947,0.022097553,0.52843461,0.32737897,0.19102935,0.36021608,0.23247759,-0.012351094,0.63998586,0.17856447,0.051345521){0.46892029,0.40790135,0.16110593,0.42570365};
-SS(-0.5555987,0.045150158,0.095162244,-0.67616985,-0.069078192,0.18801024,-0.65367362,-0.16081953,0.0014934597,-0.3727858,-0.19869367,0.11195566){0.29993682,0.47948004,0.4344691,0.16948569};
-SS(0.25126435,0.28098512,0.24657435,0.13913358,0.10014326,0.18199659,0.36021608,0.23247759,-0.012351094,0.46476684,0.14382827,0.12247557){0.18575023,0.045990896,0.16110593,0.23450402};
-SS(-0.42889738,-0.75253072,0.17523232,-0.40125956,-0.65699374,0.33213173,-0.56348952,-0.47594309,0.3052276,-0.57994589,-0.69256437,0.31204703){0.75958282,0.69449311,0.61776713,0.89957508};
-SS(-0.49995867,-1,-0.27986665,-0.6448883,-0.87343314,-0.36731947,-0.63348211,-0.7706683,-0.074889286,-0.42066299,-0.84356131,-0.12906413){1.3082069,1.296688,0.97907785,0.88525127};
-SS(-0.41651431,0.41690828,-0.5,-0.63048479,0.37587985,-0.34368186,-0.69937066,0.31351533,-0.5,-0.62938155,0.17932964,-0.37445272){0.57523437,0.64388066,0.81965428,0.55109073};
-SS(-0.65631386,-0.59724887,0.13822882,-0.57994589,-0.69256437,0.31204703,-0.42889738,-0.75253072,0.17523232,-0.56348952,-0.47594309,0.3052276){0.7890621,0.89957508,0.75958282,0.61776713};
-SS(0.6251418,0.1440922,-0.5,0.75,0,-0.5,0.70841775,0,-0.20847891,0.50007058,0,-0.27987971){0.63751638,0.79494611,0.52293439,0.31006895};
-SS(-0.65631386,-0.59724887,0.13822882,-0.50537844,-0.68762812,0.023695348,-0.3548152,-0.48825703,0.21848985,-0.42889738,-0.75253072,0.17523232){0.7890621,0.71483247,0.38862106,0.75958282};
-SS(0,-0.75,0.5,0,-0.49989758,0.27983937,0,-0.7082575,0.2084616,-0.14394692,-0.62481063,0.5){0.79557901,0.30650831,0.52387062,0.63866347};
-SS(-0.40125956,-0.65699374,0.33213173,-0.3548152,-0.48825703,0.21848985,-0.42889738,-0.75253072,0.17523232,-0.56348952,-0.47594309,0.3052276){0.69449311,0.38862106,0.75958282,0.61776713};
-SS(-0.033588837,0.5879061,0.5,0.085954007,0.41736025,0.32943097,0.11523872,0.30161582,0.5,-0.18136176,0.40461939,0.5){0.57806214,0.27115576,0.33546792,0.42386795};
-SS(-0.41651431,0.41690828,-0.5,-0.62938155,0.17932964,-0.37445272,-0.69937066,0.31351533,-0.5,-0.40408872,0.18166381,-0.5){0.57523437,0.55109073,0.81965428,0.42526168};
-SS(0.55555556,1,-0.5,0.54326203,0.87223293,-0.356993,0.68985253,1,-0.19792707,0.43683247,1,-0.26068681){1.5352494,1.1662147,1.495304,1.2435523};
-SS(-0.85707128,-0.1416783,-0.34083416,-1,-0.11111111,-0.5,-1,-0.25140376,-0.1934451,-1,-0.00018427889,-0.26378916){0.85441326,1.2438655,1.0790534,1.0508045};
-SS(0,-0.25,0.5,-0.1853821,-0.42358473,0.30866054,0,-0.29157012,0.20836692,0,-0.49989758,0.27983937){0.28720824,0.29143101,0.11172813,0.30650831};
-SS(-0.014815866,1,0.31001515,0.22886345,0.79287946,0.30210005,0.00029730467,0.80760978,0.5,-0.043441254,0.79173928,0.29440137){1.0772324,0.75332396,0.88423684,0.69563564};
-SS(-0.0089783977,0.64320989,-0.13441642,0.086744979,0.52712982,0.027891324,0.08017426,0.31429474,-0.16745504,0.17777709,0.54047543,-0.2567554){0.41358858,0.26660844,0.11103103,0.36840304};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.28278924,0.041190137,-0.04219563,-0.098950987,-0.13391411,-0.14594667,-0.056808231,0.14323286,-0.13367928){0.11599041,0.063480395,0.03512721,0.022140076};
-SS(-0.56348952,-0.47594309,0.3052276,-0.65631386,-0.59724887,0.13822882,-0.3548152,-0.48825703,0.21848985,-0.42889738,-0.75253072,0.17523232){0.61776713,0.7890621,0.38862106,0.75958282};
-SS(0.60662231,0.34516964,-0.13972301,0.52218723,0.46943947,0.022097553,0.36021608,0.23247759,-0.012351094,0.63998586,0.17856447,0.051345521){0.48782847,0.46892029,0.16110593,0.42570365};
-SS(0.51910919,0.22553632,-0.31417891,0.6251418,0.1440922,-0.5,0.70841775,0,-0.20847891,0.50007058,0,-0.27987971){0.40112301,0.63751638,0.52293439,0.31006895};
-SS(-0.39654734,0.26661646,0.019312696,-0.32064519,0.49448821,1.4739833e-06,-0.54640726,0.34339216,0.19847863,-0.35521568,0.4957142,0.26668635){0.20710489,0.32892635,0.43575493,0.42001946};
-SS(-0.65355936,0.25468043,-0.1897796,-0.39654734,0.26661646,0.019312696,-0.54631436,0.45612147,-0.00074796238,-0.63246299,0.29145388,0.035195127){0.51379882,0.20710489,0.48593017,0.47226275};
-SS(-0.12233239,-0.87748906,-0.13583418,0,-1,-0.25,0,-1,-6.9388939e-15,-0.22019153,-1,-0.00010416607){0.78823805,1.0435946,0.98008605,1.0287732};
-SS(0.4450496,1,-0.00012892076,0.62860594,0.86645525,0.049037492,0.68985253,1,-0.19792707,0.78186447,1,3.3673518e-05){1.179155,1.1303867,1.495304,1.5923176};
-SS(-0.86742481,-0.86548068,-0.14483364,-1,-1,-0.25,-0.70823063,-1,-0.20843533,-0.77973152,-1,-0.0001062007){1.5085891,2.0422973,1.5240742,1.588155};
-SS(1,1,-6.9388939e-15,0.88049681,0.87960137,0.13412341,1,1,0.25,0.78186447,1,3.3673518e-05){1.9807485,1.5518824,2.0447444,1.5923176};
-SS(1,0.5,0.5,0.87881231,0.64063264,0.37220388,1,0.75,0.5,1,0.50005385,0.27984222){1.484684,1.3069719,1.7930237,1.3085441};
-SS(0,-1,-0.25,-0.12233239,-0.87748906,-0.13583418,0,-1,-6.9388939e-15,0,-0.77970171,0.00010845427){1.0435946,0.78823805,0.98008605,0.58842154};
-SS(-0.83248216,0.76782327,-0.31292259,-1,0.55555556,-0.5,-0.80479144,0.80504612,-0.5,-0.80558396,0.5878127,-0.29244037){1.366757,1.5309384,1.5255891,1.0616703};
-SS(-0.36340067,-0.87821042,-0.37678589,-0.5,-1,-0.5,-0.25,-1,-0.5,-0.49995867,-1,-0.27986665){1.0307746,1.4844013,1.2929607,1.3082069};
-SS(-0.16707278,-0.087678023,-0.31121894,-0.29413589,0.046284299,-0.31274881,-0.28278924,0.041190137,-0.04219563,-0.056808231,0.14323286,-0.13367928){0.11599041,0.1681493,0.063480395,0.022140076};
-SS(-1,0.55555556,-0.5,-0.80558396,0.5878127,-0.29244037,-0.79644003,0.50064951,-0.5,-0.80479144,0.80504612,-0.5){1.5309384,1.0616703,1.115532,1.5255891};
-SS(0.22886345,0.79287946,0.30210005,0.11111111,1,0.5,-0.014815866,1,0.31001515,0.00029730467,0.80760978,0.5){0.75332396,1.2368521,1.0772324,0.88423684};
-SS(-0.32064519,0.49448821,1.4739833e-06,-0.096302334,0.43534175,-0.056072844,-0.24654336,0.57133462,-0.25396354,-0.2401666,0.74114092,-0.051302261){0.32892635,0.18078295,0.42991415,0.58653028};
-SS(-0.096302334,0.43534175,-0.056072844,-0.0089783977,0.64320989,-0.13441642,-0.24654336,0.57133462,-0.25396354,-0.2401666,0.74114092,-0.051302261){0.18078295,0.41358858,0.42991415,0.58653028};
-SS(0.55555556,1,-0.5,0.54326203,0.87223293,-0.356993,0.6657623,0.67544754,-0.5,0.81205362,0.80656044,-0.5){1.5352494,1.1662147,1.1304562,1.5391707};
-SS(1,1,-0.25,0.8781758,0.86708556,-0.1989731,0.78186447,1,3.3673518e-05,0.82865019,1,-0.3214153){2.0438315,1.5462283,1.5923176,1.7714679};
-SS(-0.82279039,-0.18997945,0.10657137,-1,-0.20076836,0.00061221676,-0.76760867,-0.33664988,-0.028298027,-0.82595855,-0.48031431,0.11444494){0.70945047,1.0172898,0.68479998,0.90887195};
-SS(0.87867265,0.36391919,-0.37720578,1,0.25,-0.5,1,0.5,-0.5,1,0.50010355,-0.27968748){1.03034,1.2935113,1.4840091,1.3071084};
-SS(-0.85707128,-0.1416783,-0.34083416,-1,-0.11111111,-0.5,-1,-0.33333333,-0.5,-1,-0.25140376,-0.1934451){0.85441326,1.2438655,1.3342594,1.0790534};
-SS(-0.82279039,-0.18997945,0.10657137,-1,-0.24887753,0.1953112,-1,-0.20076836,0.00061221676,-0.82595855,-0.48031431,0.11444494){0.70945047,1.0768014,1.0172898,0.90887195};
-SS(-0.82595855,-0.48031431,0.11444494,-1,-0.5000565,0.0033661208,-1,-0.20076836,0.00061221676,-0.76760867,-0.33664988,-0.028298027){0.90887195,1.2263361,1.0172898,0.68479998};
-SS(0.26064395,0.61953306,0.12890567,0.30434906,0.49798107,-4.0114635e-05,0.45788353,0.76094781,-0.0096633567,0.52218723,0.46943947,0.022097553){0.45328252,0.32377482,0.76853994,0.46892029};
-SS(0.6251418,0.1440922,-0.5,0.51910919,0.22553632,-0.31417891,0.70841775,0,-0.20847891,0.77491511,0.22516452,-0.26425516){0.63751638,0.40112301,0.52293439,0.70313431};
-SS(0.86971177,0.13024645,0.1427188,1,0,0.25,0.70845584,0,0.20819814,0.77985819,0,-0.00014691753){0.77797836,1.0436257,0.52761363,0.58919206};
-SS(1,0,0.25,0.86971177,0.13024645,0.1427188,1,0.29178008,0.20838772,1,0.2203628,5.6826691e-05){1.0436257,0.77797836,1.1084285,1.0268649};
-SS(0.88049681,0.87960137,0.13412341,1,1,-6.9388939e-15,1,1,0.25,1,0.77979347,0.00010253841){1.5518824,1.9807485,2.0447444,1.5887874};
-SS(1,1,-0.25,0.8781758,0.86708556,-0.1989731,1,0.70844226,-0.20827687,1,0.77979347,0.00010253841){2.0438315,1.5462283,1.5310675,1.5887874};
-SS(0,0,-0.25,0.13402468,0.11673163,-0.1460819,0,0,-6.9388939e-15,0.22032809,0,-9.1119885e-05){0.044304329,0.039337265,-0.017891206,0.027339551};
-SS(-0.75,-1,0.5,-0.63815223,-0.88141187,0.37488811,-0.5,-1,0.5,-0.4999534,-1,0.27968311){1.7943537,1.3088768,1.4840089,1.3075402};
-SS(-0.49391083,0.27907498,-0.27264436,-0.65355936,0.25468043,-0.1897796,-0.39654734,0.26661646,0.019312696,-0.54631436,0.45612147,-0.00074796238){0.37398026,0.51379882,0.20710489,0.48593017};
-SS(0.39612945,0.70614162,0.21524614,0.26064395,0.61953306,0.12890567,0.45788353,0.76094781,-0.0096633567,0.52218723,0.46943947,0.022097553){0.68453461,0.45328252,0.76853994,0.46892029};
-SS(-0.82595855,-0.48031431,0.11444494,-1,-0.5000565,0.0033661208,-1,-0.24887753,0.1953112,-1,-0.20076836,0.00061221676){0.90887195,1.2263361,1.0768014,1.0172898};
-};
diff --git a/utils/Makefile b/utils/Makefile
deleted file mode 100644
index 58a954454595362ef8bf7920e1d0c9eedff095b9..0000000000000000000000000000000000000000
--- a/utils/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# $Id: Makefile,v 1.3 2001-02-03 13:10:26 geuzaine Exp $
-
-CC       = c++
-C_FLAGS  = -g
-
-RM       = rm
-RMFLAGS  = -f
-
-dxf2geo: dxf2geo.c message.c 
-	$(CC) $(C_FLAGS) -o ../bin/dxf2geo -I../DataStr\
-              dxf2geo.c message.c ../lib/libDataStr.a -lm
-
-clean:
-	$(RM) $(RMFLAGS) *.o
-
-depend:
-	true
diff --git a/utils/addId b/utils/addId
deleted file mode 100644
index c23389c525dabf58bd856b198249f3599aab49f6..0000000000000000000000000000000000000000
--- a/utils/addId
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-if [ $# -lt 1 ] ; then
-  echo "Usage: addId files" 1>&2
-  exit 1
-else 
-#  echo "/* \$Id\$ */" > _tmp_string_
-  echo "# \$Id\$" > _tmp_string_
-#  echo "c \$Id\$" > _tmp_string_
-
-  for file in $@; do
-    echo Modifying $file
-    mv $file $file~
-    cat _tmp_string_ $file~ > $file
-  done
-
-  rm -f _tmp_string_
-fi
-
-
diff --git a/utils/build_machines b/utils/build_machines
deleted file mode 100644
index cc1f24777a71345f3090c21025abc5a7961e4700..0000000000000000000000000000000000000000
--- a/utils/build_machines
+++ /dev/null
@@ -1,16 +0,0 @@
-Windows elap{15|74}.montefiore.ulg.ac.be
-Linux   elap21.montefiore.ulg.ac.be
-TRU64   elap53.montefiore.ulg.ac.be
-IRIX    elap20.montefiore.ulg.ac.be
-SunOS   montef01.montefiore.ulg.ac.be
-HP-UX   stokes.ltas.ulg.ac.be
-AIX     sp2s.ulg.ac.be
-
-
-Where to change the version number?
-1) Makfile
-2) utils/gmsh_fltk.spec (2 occurrences)
-3) doc/gmsh.1 (2 occurrences)
-4) doc/VERSIONS (1 occurrence)
-5) www/gmsh.html (several occurrences)
-
diff --git a/utils/dxf2geo.c b/utils/dxf2geo.c
deleted file mode 100644
index 702280191660683acb75dfcbf3cde4c8c0f001ae..0000000000000000000000000000000000000000
--- a/utils/dxf2geo.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/* $Id: dxf2geo.c,v 1.2 2001-04-23 07:01:50 geuzaine Exp $ */
-
-/* 
-   AutoCAD DXF to Gmsh GEO Data File Converter
-   
-   This is a hack from the DXF to DKB translator by Aaron A. Collins (8/13/90)
-
-   Christophe.Geuzaine@AdValvas.be
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include "Tree.h"
-
-#define DEG2RAD    3.14159265359/180.
-#define BUFSIZE    2048
-#define GEOLINE    1
-#define GEOCIRCLE  2
-
-FILE   *infile, *outfile;
-char    inname[80], outname[80], curobj[80], linbuf[BUFSIZE];
-long    primitives = 0L, degenerates = 0L;
-int     groupcode, curcolor, ints[10], nump=1 , numc=1;
-float   curthick, xcoords[10], ycoords[10], zcoords[10], floats[10], angles[10];
-float   max_x, max_y, max_z, min_x, min_y, min_z ;
-float   THETOL, THEROT=0., THETRANSX=0., THETRANSY=0. ;
-Tree_T *Point_T, *Curve_T ;
-
-struct Point {
-  int num ;
-  float x,y,z ;
-} ;
-
-int fcmpPoint (const void *a, const void *b){
-  struct Point *q,*w;
-
-  q = (struct Point*)a;
-  w = (struct Point*)b;
-  
-  if(fabs(q->x - w->x) < THETOL &&
-     fabs(q->y - w->y) < THETOL &&
-     fabs(q->x - w->x) < THETOL) return 0;
-
-  if(q->x > w->x) return(1);
-  if(q->x < w->x) return(-1);
-  if(q->y > w->y) return(1);
-  if(q->y < w->y) return(-1);
-  if(q->z > w->z) return(1);
-  if(q->z < w->z) return(-1);
-}
-
-int addpoint(struct Point *p){
-  struct Point *pp ;
-
-  if((pp = (struct Point*)Tree_PQuery(Point_T, p)))
-    return pp->num ;
-
-  p->num = nump++ ;
-  Tree_Add(Point_T, p) ;
-  return p->num ;
-}
-
-void writepoint(void *a, void *b){
-  struct Point *p ;
-  float x, y ;
-
-  p = (struct Point *) a ;
-
-  x = p->x ;
-  y = p->y ;
-  
-  p->x = cos(-THEROT*DEG2RAD) * x + sin(-THEROT*DEG2RAD) * y ;
-  p->y = -sin(-THEROT*DEG2RAD) * x + cos(-THEROT*DEG2RAD) * y;
-
-  p->x += THETRANSX ;
-  p->y += THETRANSY ;
-
-  fprintf(outfile, "Point (%d) = {%g *u, %g *u, %g *u, lc} ;\n", 
-	  p->num, p->x, p->y, p->z) ;
-}
-
-struct Curve {
-  int num, type, a, b, c ;
-} ;
-
-int fcmpCurve (const void *a, const void *b){
-  struct Curve *q,*w;
-
-  q = (struct Curve*)a;
-  w = (struct Curve*)b;
-
-  if(q->num < w->num) return(-1);
-  return(1);
-}
-
-void addcurve(struct Curve *c){
-  c->num = numc++ ;
-  Tree_Add(Curve_T, c) ;
-}
-
-void writecurve(void *a, void *b){
-  struct Curve *c ;
-
-  c = (struct Curve *) a ;
-
-  switch(c->type){
-  case GEOLINE :
-    fprintf(outfile, "Line (%d) = {%d, %d} ;\n",
-	    c->num, c->a, c->b) ;
-    break ;
-  case GEOCIRCLE :
-    fprintf(outfile, "Circle (%d) = {%d, %d, %d} ;\n",
-	    c->num, c->a, c->b, c->c) ;
-    break ;
-  }
-}
-
-
-
-
-
-int checkdegen(int a, int b, int c){ /* check for degenerate triangle structure */
-  if ( (xcoords[a] == xcoords[b] &&
-	ycoords[a] == ycoords[b] &&
-	zcoords[a] == zcoords[b]) || 
-       (xcoords[b] == xcoords[c] &&
-	ycoords[b] == ycoords[c] &&
-	zcoords[b] == zcoords[c]) || 
-       (xcoords[a] == xcoords[c] &&
-	ycoords[a] == ycoords[c] &&
-	zcoords[a] == zcoords[c]) )
-    return(1);
-  return(0);
-}
-
-void addobj(void){ /* dump out current object we should have all info on */
-  struct Point   p, *pp ;
-  struct Curve   c ;
-  int            num[10];
-  float          tmp ;
-
-  if (strstr(curobj, "POINT")){
-    p.x = xcoords[0] ; p.y = ycoords[0] ; p.z = zcoords[0] ; addpoint(&p) ;
-  }
-  else if (strstr(curobj, "LINE") || strstr(curobj, "3DLINE")){
-    if (xcoords[0] == xcoords[1] && ycoords[0] == ycoords[1] && zcoords[0] == zcoords[1]){
-      degenerates++;
-      return;
-    }
-    p.x = xcoords[0] ; p.y = ycoords[0] ; p.z = zcoords[0] ; num[0] = addpoint(&p) ;
-    p.x = xcoords[1] ; p.y = ycoords[1] ; p.z = zcoords[1] ; num[1] = addpoint(&p) ;
-    c.type = GEOLINE ; c.a = num[0] ; c.b = num[1] ; addcurve(&c) ;
-  }
-  else if (strstr(curobj, "CIRCLE")){
-    p.x = xcoords[0] ; p.y = ycoords[0] ; p.z = zcoords[0] ; num[0] = addpoint(&p) ;
-    p.x = xcoords[0]-floats[0] ; p.y = ycoords[0] ; p.z = zcoords[0] ; 
-    num[1] = addpoint(&p) ;
-    p.x = xcoords[0]+floats[0] ; p.y = ycoords[0] ; p.z = zcoords[0] ; 
-    num[2] = addpoint(&p) ;
-    p.x = xcoords[0] ; p.y = ycoords[0]-floats[0] ; p.z = zcoords[0] ; 
-    num[3] = addpoint(&p) ;
-    p.x = xcoords[0] ; p.y = ycoords[0]+floats[0] ; p.z = zcoords[0] ;
-    num[4] = addpoint(&p) ;
-    c.type = GEOCIRCLE ; c.a = num[2] ; c.b = num[0] ; c.c = num[4]; addcurve(&c) ;
-    c.type = GEOCIRCLE ; c.a = num[4] ; c.b = num[0] ; c.c = num[1]; addcurve(&c) ;
-    c.type = GEOCIRCLE ; c.a = num[1] ; c.b = num[0] ; c.c = num[3]; addcurve(&c) ;
-    c.type = GEOCIRCLE ; c.a = num[3] ; c.b = num[0] ; c.c = num[2]; addcurve(&c) ;
-  }
-  else if (strstr(curobj, "ARC")){
-    p.x = xcoords[0] ; p.y = ycoords[0] ; p.z = zcoords[0] ; num[0] = addpoint(&p) ;
-
-    p.x = xcoords[0]+floats[0]*cos(angles[0]*DEG2RAD) ;
-    p.y = ycoords[0]+floats[0]*sin(angles[0]*DEG2RAD) ; 
-    p.z = zcoords[0] ; num[1] = addpoint(&p) ;
-
-    p.x = xcoords[0]+floats[0]*cos(angles[1]*DEG2RAD) ;
-    p.y = ycoords[0]+floats[0]*sin(angles[1]*DEG2RAD) ; 
-    p.z = zcoords[0] ; num[2] = addpoint(&p) ;
-
-    if((angles[1]-angles[0] > 0 && angles[1]-angles[0] < 180) ||
-       (angles[1]-angles[0] < 0 && angles[1]-angles[0] < -180)){
-      c.type = GEOCIRCLE ; c.a = num[1] ; c.b = num[0] ; c.c = num[2]; addcurve(&c) ;
-    }
-    else{
-      if(angles[1]-angles[0] > 0){
-	p.x = xcoords[0]+floats[0]*cos((angles[1]-angles[0])*0.5*DEG2RAD) ;
-	p.y = ycoords[0]+floats[0]*sin((angles[1]-angles[0])*0.5*DEG2RAD) ;
-      }
-      else{
-	p.x = xcoords[0]+floats[0]*cos((angles[0]-angles[1])*0.5*DEG2RAD) ;
-	p.y = ycoords[0]+floats[0]*sin((angles[0]-angles[1])*0.5*DEG2RAD) ;
-      }
-      p.z = zcoords[0] ; num[3] = addpoint(&p) ;
-      c.type = GEOCIRCLE ; c.a = num[1] ; c.b = num[0] ; c.c = num[3]; addcurve(&c) ;
-      c.type = GEOCIRCLE ; c.a = num[3] ; c.b = num[0] ; c.c = num[2]; addcurve(&c) ;
-    }
-  }
-  else if (strstr(curobj, "TRACE")){ /* 2 back-to-back triangles */
-    if (checkdegen(0, 1, 2)){
-      degenerates++;
-      return;
-    }
-    /* add triangle 0, 1, 2 */
-    
-    if (checkdegen(0, 3, 2)){
-      degenerates++;
-      return;
-    }
-    /* add triangle 0 3 2 */
-  }
-  else if (strstr(curobj, "SOLID")){ /* 1 or 2 triangles */
-    if (checkdegen(0, 1, 2)){
-      degenerates++;
-      return;
-    }
-    /* add triangle 0, 1, 2 */
-
-    if (xcoords[2] == xcoords[3] && ycoords[2] == ycoords[3] && zcoords[2] == zcoords[3])
-      return; /* one triangle was enough... */
-    
-    if (checkdegen(0, 3, 2)){
-      degenerates++;
-      return;
-    }
-    /* add triangle 0 3 2 */
-  }
-  else if (strstr(curobj, "TEXT")){ /* not implemented for now */
-  }
-  else if (strstr(curobj, "SHAPE")){ /* these look very hard */
-  }
-  else if (strstr(curobj, "BLOCK")){ /* these look very hard */
-  }
-  else if (strstr(curobj, "ENDBLK")){ /* these look very hard */
-  }
-  else if (strstr(curobj, "INSERT")){ /* these look very hard */
-  }
-  else if (strstr(curobj, "ATTDEF")){ /* not implemented for now */
-  }
-  else if (strstr(curobj, "ATTRIB")){ /* not implemented for now */
-  }
-  else if (strstr(curobj, "POLYLINE")){ /* these look fairly hard */
-  }
-  else if (strstr(curobj, "VERTEX")){ /* these look fairly hard */
-  }
-  else if (strstr(curobj, "SEQEND")){ /* these look fairly hard */
-  }
-  else if (strstr(curobj, "3DFACE")){ /* 1 or 2 triangles */
-    if (checkdegen(0, 1, 2)){
-      degenerates++;
-      return;
-    }
-    /* add triangle 0 1 2 */
-    
-    if (xcoords[2] == xcoords[3] && ycoords[2] == ycoords[3] && zcoords[2] == zcoords[3])
-      return; /* one triangle was enough... */
-    
-    if (checkdegen(0, 3, 2)){
-      degenerates++;
-      return;
-    }
-    /* add triangle 0 3 2 */
-  }
-  else if (strstr(curobj, "DIMENSION")){  /* not implemented for now */
-  }
-
-}
-
-int getline(void){ /* read a group code and the next line from infile */
-  fgets(linbuf, BUFSIZE, infile); /* get a line from .DXF */
-  if (feof(infile))
-    return(1);
-  sscanf(linbuf, "%3d", &groupcode);  /* scan out group code */
-  fgets(linbuf, BUFSIZE, infile); /* get a line from .DXF */
-  if (feof(infile))
-    return(1);
-  return(0);
-}
-
-
-
-int main(int argc, char *argv[]){
-  char *index;
-  
-  printf("dxf2geo, a 2D AutoCad DXF to Gmsh GEO file translator\n");
-  if (argc < 3){
-    printf("Usage: %s file[.dxf] tolerance [rotation] [xoffset] [yoffset]\n", argv[0]);
-    exit(1);
-  }
-
-  THETOL = atof(argv[2]) ;
-  if(argc > 3) THEROT = atof(argv[3]) ;
-  if(argc > 4) THETRANSX = atof(argv[4]) ;
-  if(argc > 5) THETRANSY = atof(argv[5]) ;
-
-  strcpy(inname, argv[1]); /* make copy we can mess with */
-  if (!strchr(inname, '.')) /* no dot present in filename? */
-    strcat(inname, ".dxf");
-  if (!(infile = fopen(inname, "r"))){
-    printf("Cannot open input file %s\n", inname);
-    exit(1);
-  }
-  strcpy(outname, inname);
-  index = strchr(outname, '.'); /* find the dot */
-  strcpy(index, ".geo"); /* make new ext. .geo... */
-
-  if (!(outfile = fopen(outname, "w"))){
-    printf("Cannot create output file %s\n", outname);
-    fclose(infile);
-    exit(1);
-  }
-  
-  curobj[0] = '\0'; /* not working on any object currently */
-  curcolor = 7; /* and it also doesn't have a color yet... */
-  max_x = max_y = max_z = -10000000.0; /* init bounding limits */
-  min_x = min_y = min_z =  10000000.0;
-
-  Point_T = Tree_Create(sizeof(struct Point), fcmpPoint) ;
-  Curve_T = Tree_Create(sizeof(struct Curve), fcmpCurve) ;
-  
-find: 
-  while (!feof(infile)){ /* run file up to the "ENTITIES" section */
-    if (getline()) goto stopit;
-    if (groupcode == 0){ /* file section mark */
-      if (strstr(linbuf, "EOF")) goto stopit;
-      if (strstr(linbuf, "SECTION")){
-	if (getline()) goto stopit;
-	if (groupcode != 2) continue;
-	if (strstr(linbuf, "ENTITIES")) break;
-      }
-    }
-  }
-
-  while (!feof(infile)){ /* scan ENTITIES section */
-    if (getline()) /* get a group code and a line */
-      break;
-    if (groupcode < 10){ /* cardinal group codes */
-      switch(groupcode){
-      case 0: /* start of entity, table, file sep */
-	if (strstr(linbuf, "EOF")){
-	  addobj(); /* dump object */
-	  goto stopit;
-	}
-	if (strstr(linbuf, "ENDSEC")){
-	  addobj(); /* dump object */
-	  goto find;
-	}
-	addobj(); /* dump old object */
-	curobj[0] = '\0'; /* reset object */
-	curcolor = 7;
-	strcpy(curobj, linbuf); /* get new */
-	break;
-      case 1: /* primary text value for entity (?)*/
-	break;
-      case 2: /* block name, attribute tag, etc */
-      case 3: /* other names */
-      case 4:
-	break;
-      case 5: /* entity handle (hex string) */
-	break;
-      case 6: /* line type name */
-	break;
-      case 7: /* text style name */
-	break;
-      case 8: /* layer name */
-	break;
-      case 9: /* variable name ID (only in header)*/
-	break;
-      }
-    }
-    else if (groupcode >= 10 && groupcode < 19){ /* Some X coord */
-      sscanf(linbuf, "%f", &(xcoords[groupcode-10]));
-      if (xcoords[groupcode-10] > max_x)
-	max_x = xcoords[groupcode-10];
-      if (xcoords[groupcode-10] < min_x)
-	min_x = xcoords[groupcode-10];
-    }
-    else if (groupcode >= 20 && groupcode < 29){ /* Some Y coord */
-      sscanf(linbuf, "%f", &(ycoords[groupcode-20]));
-      if (ycoords[groupcode-20] > max_y)
-	max_y = ycoords[groupcode-20];
-      if (ycoords[groupcode-20] < min_y)
-	min_y = ycoords[groupcode-20];
-    }
-    else if (groupcode >= 30 && groupcode < 38){ /* Some Z coord */
-      sscanf(linbuf, "%f", &(zcoords[groupcode-30]));
-      if (zcoords[groupcode-30] > max_z)
-	max_z = zcoords[groupcode-30];
-      if (zcoords[groupcode-30] < min_z)
-	min_z = zcoords[groupcode-30];
-    }
-    else if (groupcode == 38){ /* entity elevation if nonzero */
-    }
-    else if (groupcode == 39){ /* entity thickness if nonzero */
-    }
-    else if (groupcode >= 40 && groupcode < 49){ /* misc floats */
-      sscanf(linbuf, "%f", &(floats[groupcode-40]));
-    }
-    else if (groupcode == 49){ /* repeated value groups */
-    }
-    else if (groupcode >= 50 && groupcode < 59){ /* misc angles */
-      sscanf(linbuf, "%f", &(angles[groupcode-50]));
-    }
-    else if (groupcode == 62){ /* Color number */
-      sscanf(linbuf, "%6d", &curcolor);
-    }
-    else if (groupcode == 66){ /* "entities follow" flag */
-    }
-    else if (groupcode >= 70 && groupcode < 79){ /* misc ints */
-      sscanf(linbuf, "%f", &(ints[groupcode-70]));
-    }
-    else if (groupcode == 210 || groupcode == 220 || groupcode == 230){
-      /* X, Y, Z components of extrusion direction */
-    }
-  }
-  
-stopit: 
-  fclose(infile);
-  fprintf(outfile, "/* Converted from AutoCad DXF file: %s */\n", inname);
-  fprintf(outfile, "/* Tolerance %g: %d points / %d curves */\n\n", 
-	  THETOL, Tree_Nbr(Point_T), Tree_Nbr(Curve_T));
-  fprintf(outfile, "u = 1; \nlc = 1 ;\n\n");
-  Tree_Action(Point_T, writepoint);
-  fprintf(outfile, "\n");
-  Tree_Action(Curve_T, writecurve);
-  fprintf(outfile, "\n");
-  fflush(outfile);
-  fclose(outfile);
-  printf("bounding box [%g,%g] [%g,%g] [%g,%g]\n", 
-	 min_x, max_x, min_y, max_y, min_z, max_z);
-  printf("tolerance %g: %d points / %d curves / %d degenerate entities removed\n",
-	 THETOL, Tree_Nbr(Point_T), Tree_Nbr(Curve_T), degenerates);
-  Tree_Delete(Point_T) ;
-  Tree_Delete(Curve_T) ;
-  exit(0);
-  
-}
-
diff --git a/utils/endian.c b/utils/endian.c
deleted file mode 100644
index 25ec8d9037fe1ba5d1a5634d3cc9d57d7fef0c48..0000000000000000000000000000000000000000
--- a/utils/endian.c
+++ /dev/null
@@ -1,21 +0,0 @@
-
-/* Are we little or big endian?  From Harbison&Steele.  */
-
-main () {
-  union{
-    long l;
-    char c[sizeof (long)];
-  } u;
-
-  u.l = 1;
-  if (u.c[0] == 1)
-    printf ("LittleEndian\n");
-  else if (u.c[sizeof (long) - 1] == 1)
-    printf ("BigEndian\n");
-  else
-    printf ("unknownEndian");
-  
-  exit (u.c[sizeof (long) - 1] == 1);
-}
-
-
diff --git a/utils/gmsh_fltk.spec b/utils/gmsh_fltk.spec
deleted file mode 100644
index c8788aab0057efe0d1e6f6f22d88f3dac8927f95..0000000000000000000000000000000000000000
--- a/utils/gmsh_fltk.spec
+++ /dev/null
@@ -1,55 +0,0 @@
-Summary: A 3D mesh generator with pre- and post-processing facilities
-Name: gmsh
-Version: 1.23
-Source: gmsh-1.23.tar.gz
-Release: 1
-Copyright: distributable
-Group: Applications/Engineering
-URL: http://www.geuz.org/gmsh/
-Packager: Christophe.Geuzaine@AdValvas.be
-Buildroot: /var/tmp/%{name}-buildroot
-Requires: Mesa >= 3.2
-
-%description 
-Gmsh is an automatic three-dimensional finite element mesh generator,
-primarily Delaunay, with built-in pre- and post-processing
-facilities. Its primal goal is to provide a simple meshing tool for
-academic test cases with parametric input and up to date visualization
-capabilities.  One of the strengths of Gmsh is its ability to respect
-a characteristic length field for the generation of adapted meshes on
-lines, surfaces and volumes. Gmsh requires OpenGL (or Mesa) to be
-installed on your system.
-
-Install Gmsh if you need a 3D finite element mesh generator and/or
-post-processor.
-
-%prep
-
-%setup -c -q
-
-%build
-make fltk_linux_2952
-#make fltk_linux
-make distrib
-make utilities
-rm -rf CVS */CVS */*/CVS
-
-%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/usr/bin
-mkdir -p $RPM_BUILD_ROOT/usr/man/man1
-
-install -m 755 bin/gmsh $RPM_BUILD_ROOT/usr/bin/gmsh
-install -m 755 bin/dxf2geo $RPM_BUILD_ROOT/usr/bin/dxf2geo
-install -m 644 doc/gmsh.1 $RPM_BUILD_ROOT/usr/man/man1/gmsh.1
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%doc doc/FORMATS doc/VERSIONS doc/FAQ doc/CONTRIBUTORS demos tutorial
-/usr/bin/gmsh
-/usr/bin/dxf2geo
-/usr/man/man1/gmsh*
-
diff --git a/utils/gmsh_motif.spec b/utils/gmsh_motif.spec
deleted file mode 100644
index 92e9357233c79781649f788b8634d15aa3ac388a..0000000000000000000000000000000000000000
--- a/utils/gmsh_motif.spec
+++ /dev/null
@@ -1,56 +0,0 @@
-Summary: A 3D mesh generator with pre- and post-processing facilities
-Name: gmsh
-Version: 1.00
-Source: gmsh-1.00.tar.gz
-Release: 1
-Copyright: distributable
-Group: Applications/Engineering
-URL: http://www.geuz.org/gmsh/
-Packager: Christophe.Geuzaine@AdValvas.be
-Buildroot: /var/tmp/%{name}-buildroot
-Requires: Mesa >= 3.0 lesstif >= 0.90
-
-%description
-Gmsh is an automatic three-dimensional finite element mesh generator,
-primarily Delaunay, with built-in pre- and post-processing
-facilities. Its primal goal is to provide a simple meshing tool for
-academic test cases with parametric input and up to date visualization
-capabilities.  One of the strengths of Gmsh is its ability to respect
-a characteristic length field for the generation of adapted meshes on
-lines, surfaces and volumes. Gmsh requires the Mesa and Lesstif
-libraries to be installed on your system.
-
-Install Gmsh if you need a 3D finite element mesh generator and/or
-post-processor.
-
-%prep
-
-%setup -c -q
-
-%build
-make motif_linux_2952
-make utilities
-rm -rf CVS */CVS */*/CVS
-
-%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/usr/bin
-mkdir -p $RPM_BUILD_ROOT/usr/man/man1
-
-install -m 755 bin/gmsh $RPM_BUILD_ROOT/usr/bin/gmsh
-install -m 755 bin/dxf2geo $RPM_BUILD_ROOT/usr/bin/dxf2geo
-install -m 644 doc/gmsh.1 $RPM_BUILD_ROOT/usr/man/man1/gmsh.1
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%doc doc/FORMATS demos tutorial
-/usr/bin/gmsh
-/usr/bin/dxf2geo
-/usr/man/man1/gmsh*
-
-%changelog
-* Sat Sep 23 2000 Christophe Geuzaine <Christophe.Geuzaine@AdValvas.be> 
- - initial revision
diff --git a/utils/message.c b/utils/message.c
deleted file mode 100644
index 9b12df3b8fa3211a07a6453ed2710ca4f7126d4e..0000000000000000000000000000000000000000
--- a/utils/message.c
+++ /dev/null
@@ -1,13 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-#include <stdarg.h>
-
-void Msg(int level, char *fmt, ...){
-  va_list  args;
-  va_start (args, fmt);
-  vfprintf(stderr, fmt, args); fprintf(stderr, "\n");
-  va_end (args);
-}
-
diff --git a/utils/modifs b/utils/modifs
deleted file mode 100644
index 572ca5a9badba4c54daf04a6139d6766d886320e..0000000000000000000000000000000000000000
--- a/utils/modifs
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /bin/csh -f
-
-if ( "$#argv" < "1" ) then
-  echo  usage: modif number_of_days
-  exit
-endif
-
-find . \( -mtime -$1 -a ! -type d -a ! -name "*.o" -a ! -name "*.a" -a ! -name "*.bak" -a ! -name "*.tar*" -a ! -name "*~" -a ! -name "gmsh*" \)
-
-echo "archiver ? (y/n)"
-set caca = "$<"
-
-if ("$caca" == "y") then
-  set liste = `find . \( -mtime -$1 -a ! -type d -a ! -name "*.o" -a ! -name "*.a" -a ! -name "*.bak" -a ! -name "*.tar*" -a ! -name "*~" -a ! -name "gmsh*" \)`
-  set date = `date "+%d.%m.%y-%Hh%M"`
-  tar cvf modifs-gmsh-$date.tar $liste
-  gzip modifs-gmsh-$date.tar
-else 
-  echo "bye"
-endif
-
-
diff --git a/utils/replace b/utils/replace
deleted file mode 100644
index 6186bebf0b62585e0ee5bd6717ccc1ae40c9e77c..0000000000000000000000000000000000000000
--- a/utils/replace
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash -
-
-for A in  $*
-do
-sed "s/msh_include/msh_Include/g" $A > $A.XXX
-/bin/rm -f $A
-mv $A.XXX $A   
-done
diff --git a/utils/tut2html b/utils/tut2html
deleted file mode 100644
index b67e85a9df4414a05e62f3ccbb26a5ffc012a884..0000000000000000000000000000000000000000
--- a/utils/tut2html
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-#if [ $# = 0 ] ; then
-#  echo "Usage: tut2html files"
-#  exit 1
-#fi
-
-#enscript -Ecpp --color -Whtml --toc -pt.html $*
-enscript -Ecpp --color -Whtml --toc -pt.html README *.geo
-
-cat t.html | \
-sed "s/<FONT COLOR=\"#BC8F8F\"><B>//g" | \
-sed "s/<B><FONT COLOR=\"#5F9EA0\">//g" | \
-sed "s/<B><FONT COLOR=\"#A020F0\">//g" | \
-sed "s/<B><FONT COLOR=\"#0000FF\">//g" | \
-sed "s/<\/FONT><\/B>//g" > tutorial.html
-
-rm -f t.html
-
-echo output moved to tutorial.html
diff --git a/utils/unix2dos.awk b/utils/unix2dos.awk
deleted file mode 100644
index aa9e6f5f6f246465dc7411d3447fc43d72d8ac47..0000000000000000000000000000000000000000
--- a/utils/unix2dos.awk
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  printf("%s
\n", $0);
-}
diff --git a/utils/untabify b/utils/untabify
deleted file mode 100644
index 906951801a4566156cecf858543477112887445f..0000000000000000000000000000000000000000
--- a/utils/untabify
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-if [ $# -lt 1 ] ; then
-  echo "Usage: untabify files" 1>&2
-  exit 1
-else 
-  for file in $@; do
-    echo Modifying $file
-    mv $file $file~
-    expand $file~ > $file
-  done
-fi
-
-
diff --git a/www/Makefile b/www/Makefile
deleted file mode 100644
index 01c01d89d1d10e7e441db406c82f55ffd291892b..0000000000000000000000000000000000000000
--- a/www/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-
-cgi:
-	cat gmsh.html |\
-        sed "s/<!---BEGINSCRIPT//g" |\
-        sed "s/ENDSCRIPT--->//g" |\
-        sed "s/<!---BEGINDATE.Date: /Last updated<br>/g" |\
-        sed "s/ .ENDDATE--->/<p>/g" \
-        > geuzaine-gmsh.cgi
-	chmod 755 geuzaine-gmsh.cgi
-
-noncgi:
-	cat gmsh.html |\
-        sed "s/\/gmsh\//http:\/\/geuz.org\/gmsh\//g" |\
-        sed "s/\/getdp\//http:\/\/geuz.org\/getdp\//g" |\
-        sed "s/<!---BEGINDATE.Date: /Last updated<br>/g" |\
-        sed "s/ .ENDDATE--->/<p>/g" |\
-        sed "s/<!---BEGINMIRROR//g" |\
-        sed "s/ENDMIRROR--->//g" \
-        > gmsh2.html
diff --git a/www/gmsh-mirror.html b/www/gmsh-mirror.html
deleted file mode 100644
index b216522210923abec8bfdd497edd36413b305740..0000000000000000000000000000000000000000
--- a/www/gmsh-mirror.html
+++ /dev/null
@@ -1,275 +0,0 @@
-<HTML>
-
-<HEAD>
-
-<TITLE>Gmsh homepage</TITLE>
-
-<meta name="description" content="Gmsh is a free automatic
-three-dimensional finite element mesh generator with pre- and
-post-processing facilities.">
-
-<meta name="keywords" content="free mesh generator, free finite element software,
-mesh generation, mesh refinement, free, delaunay triangulation,
-automatic, maillages automatiques, mailleur, modelisation, opengl,
-maillages 3D, 3D meshes, 3-D meshes, maillages 3-D, voronoi,
-adaptation de maillages, mesh adaptation, modeling">
-
-<META name="Autor-Handle" content="Christophe.Geuzaine@advalvas.be">
-
-</HEAD>
-
-<body text="#000000" bgcolor="#ffffff" background="http://geuz.org/gmsh/images/background.gif">
-
-<!------------------------------------------------------------------>
-
-<table width="100%" border=0 cellspacing=10 cellpadding=5>
-
-<tr valign=bottom>
-
-  <td width="130" align="right" valign=top><font size=-2  face="Helvetica, Arial" color="#fffff">
-
-Copyright &copy; 1998-2001<br>
-Jean-Fran�ois Remacle and
-Christophe Geuzaine<br>
-
-  </font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial">
-    <font size="+3"><b>Gmsh</b></font>
-    <p>
-    <b>A three-dimensional finite element mesh generator with built-in pre- and
-       post-processing facilities</b>
-     
-  </font></td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=bottom>
-
-  <td><spacer type="vertical" size=20>
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>General Description</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Gmsh is an automatic three-dimensional finite element mesh generator,
-primarily Delaunay, with built-in pre- and post-processing
-facilities. Its primal goal is to provide a simple meshing tool for
-academic test cases with parametric input and up to date visualization
-capabilities. One of the strengths of Gmsh is its ability to respect a
-characteristic length field for the generation of adapted meshes on
-lines, surfaces and volumes. These adapted meshes can be mixed with
-simple structured (transfinite, elliptic, etc.)  meshes in order to
-augment the flexibility.
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Geometrical Entity Definition</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Parameterized geometries are created by successively defining points,
-oriented curves (segments, circles, ellipsis, splines, etc.), oriented
-surfaces (plane surfaces, ruled surfaces, etc.)  and volumes. Compound
-groups of geometrical entities can be defined, based on these
-elementary parameterized geometric entities. Data can be defined
-either interactively thanks to the menu system, or directly in the ASCII 
-input files.
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Mesh Generation</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-A finite element mesh is a tessellation of a given subset of R^3 by
-elementary geometrical elements of various shapes (in this case lines,
-triangles, quadrangles, tetrahedra, prisms and hexahedra), arranged in
-such a way that two of them intersect, if they do, along a common
-face, edge or node, and never otherwise. All the finite element meshes
-produced by Gmsh as unstructured, even if they were generated in
-a structured way. This implies that the elementary geometrical
-elements are defined only by an ordered list of their vertices (which
-allows the orientation of all their lower order geometrical entities)
-but no predefined relation is assumed between any two elementary
-elements.
-<p>
-The procedure follows the same order as for the geometry creation:
-curves are discretized first; the mesh of the curves is then used to
-mesh the surfaces; then the mesh of the surfaces is used to mesh the
-volumes. This automatically assures the continuity of the mesh when,
-for example, two surfaces share a common curve. Every meshing step is
-constrained by the characteristic length field, which can be uniform,
-specified by characteristic length associated to elementary
-geometrical entities, or associated to another mesh (the background
-mesh).
-<p>
-For each meshing step (i.e. the discretization of lines, surfaces and
-volumes), all structured mesh directives are executed first, and serve
-as additional constraints for the unstructured parts. The implemented
-Delaunay algorithm is subdivided in the following five steps for
-surface/volume discretization:
-<p>
-<ol>
-<li>
-trivial meshing of a box including the convex polygon/polyhedron
-defined by the boundary nodes resulting from the discretization of the
-curves/surfaces; 
-<li>
-creation of the initial mesh by insertion of all the nodes on the
-curves/surfaces thanks to the Bowyer algorithm; 
-<li>
-boundary restoration to force all the edges/faces of the
-curves/surfaces to be present in the initial mesh;
-<li>
-suppression of all the unwanted triangles/tetrahedra (in
-particular those containing the nodes of the initial box); 
-<li>
-insertion of new nodes by the Bowyer algorithm until the
-characteristic size of each simplex is lower or equal to the
-characteristic length field evaluated at the center of its
-circumscribed circle/sphere.
-</ol>
-
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><p><b>Scalar and Vector Field Visualization</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Multiple post-processing scalar or vector maps can be loaded and
-manipulated (globally or individually) along with the geometry and the
-mesh. Scalar fields are represented by iso-value curves or color maps
-and vector fields by three-dimensional arrows or displacement
-maps. Post-processor functions include offsets, elevation, interactive
-color map modification, range clamping, interactive and scriptable
-animation, vector postscript output, etc. All post-processing options
-can be accessed either interactively or through the the input ascii
-files.
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Mailing lists</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td align="left" colspan=2><font face="Helvetica, Arial" size=-1>
-
-     <ul>
-     <li><a target="_top"
-     href="http://www.geuz.org//mailman/listinfo/gmsh-announce/">gmsh-announce</a> is a
-     moderated list for announcements about significant Gmsh
-     events. You should subscribe to this list to get information
-     about software releases, important bug fixes and other
-     Gmsh-specific news. The list is archived <a target="_top"
-     href="http://www.geuz.org/pipermail/gmsh-announce/">here</a>.
-
-     <li><a target="_top" href="http://www.geuz.org/mailman/listinfo/gmsh/">gmsh</a> is
-     the public mailing list for Gmsh users. You should send all
-     questions, bug reports, requests or pleas for changes related to
-     Gmsh to this list. The list is archived <a target="_top"
-     href="http://www.geuz.org/pipermail/gmsh/">here</a>
-     </ul>
-
-  </font></td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Documentation and Download</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td align="left" colspan=2><font face="Helvetica, Arial" size=-1>
-
-Go to the <a target="_top" href="http://www.geuz.org/gmsh/">official Gmsh homepage</a>.
-
-  </font></td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Authors</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1> 
-
-Gmsh is developed by <A
-HREF="mailto:Remacle@scorec.rpi.edu">Jean-Fran�ois Remacle</A> and <A
-HREF="mailto:Christophe.Geuzaine@ulg.ac.be">Christophe Geuzaine</A>.
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-</table>
-
-<p>
-
-</BODY>
-</HTML>
-
diff --git a/www/gmsh.html b/www/gmsh.html
deleted file mode 100644
index d67e75dfc03cdf93d09ed9bef917e2c6f340f035..0000000000000000000000000000000000000000
--- a/www/gmsh.html
+++ /dev/null
@@ -1,471 +0,0 @@
-<!---BEGINSCRIPT#!/bin/sh
-
-BASEDIR=/usr/local/cgi-bin
-
-echo Content-type: text/html
-echo
-cat << EOM 
-ENDSCRIPT--->
-
-<HTML>
-
-<!--- PLEASE DO NOT EDIT the BEGINSCRIPT and ENDSCRIPT comments --->
-
-<HEAD>
-
-<TITLE>Gmsh homepage</TITLE>
-
-<meta name="description" content="Gmsh is a free automatic
-three-dimensional finite element mesh generator with pre- and
-post-processing facilities.">
-
-<meta name="keywords" content="free mesh generator, free finite element software,
-mesh generation, mesh refinement, free, delaunay triangulation,
-automatic, maillages automatiques, mailleur, modelisation, opengl,
-maillages 3D, 3D meshes, 3-D meshes, maillages 3-D, voronoi,
-adaptation de maillages, mesh adaptation, modeling">
-
-<META name="Autor-Handle" content="Christophe.Geuzaine@advalvas.be">
-
-</HEAD>
-
-<body text="#000000" bgcolor="#ffffff" background="/gmsh/images/background.gif">
-
-<!------------------------------------------------------------------>
-
-<table width="100%" border=0 cellspacing=10 cellpadding=5>
-
-<tr valign=bottom>
-
-  <td width="130" align="right" valign=top><font size=-2  face="Helvetica, Arial" color="#fffff">
-
-<!---BEGINSCRIPT
-EOM
-${BASEDIR}/n2l ${BASEDIR}/counter.gmsh
-cat << EOM
-page requests since<br>1998/05/24<p>
-ENDSCRIPT--->
-
-<!---BEGINDATE$Date: 2001-08-03 16:03:00 $ENDDATE--->
-
-Copyright &copy; 1998-2001<br>
-Jean-Fran�ois Remacle and
-Christophe Geuzaine<br>
-
-  </font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial">
-    <font size="+3"><b>Gmsh</b></font>
-    <p>
-    <b>A three-dimensional finite element mesh generator with built-in pre- and
-       post-processing facilities</b>
-     
-  </font></td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=bottom>
-
-  <td><spacer type="vertical" size=20>
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>General Description</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Gmsh is an automatic three-dimensional finite element mesh generator,
-primarily Delaunay, with built-in pre- and post-processing
-facilities. Its primal goal is to provide a simple meshing tool for
-academic test cases with parametric input and up to date visualization
-capabilities. One of the strengths of Gmsh is its ability to respect a
-characteristic length field for the generation of adapted meshes on
-lines, surfaces and volumes. These adapted meshes can be mixed with
-simple structured (transfinite, elliptic, etc.)  meshes in order to
-augment the flexibility.
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Geometrical Entity Definition</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Parameterized geometries are created by successively defining points,
-oriented curves (segments, circles, ellipsis, splines, etc.), oriented
-surfaces (plane surfaces, ruled surfaces, etc.)  and volumes. Compound
-groups of geometrical entities can be defined, based on these
-elementary parameterized geometric entities. Data can be defined
-either interactively thanks to the menu system, or directly in the ASCII 
-input files.
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Mesh Generation</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-A finite element mesh is a tessellation of a given subset of R^3 by
-elementary geometrical elements of various shapes (in this case lines,
-triangles, quadrangles, tetrahedra, prisms and hexahedra), arranged in
-such a way that two of them intersect, if they do, along a common
-face, edge or node, and never otherwise. All the finite element meshes
-produced by Gmsh as unstructured, even if they were generated in
-a structured way. This implies that the elementary geometrical
-elements are defined only by an ordered list of their vertices (which
-allows the orientation of all their lower order geometrical entities)
-but no predefined relation is assumed between any two elementary
-elements.
-<p>
-The procedure follows the same order as for the geometry creation:
-curves are discretized first; the mesh of the curves is then used to
-mesh the surfaces; then the mesh of the surfaces is used to mesh the
-volumes. This automatically assures the continuity of the mesh when,
-for example, two surfaces share a common curve. Every meshing step is
-constrained by the characteristic length field, which can be uniform,
-specified by characteristic length associated to elementary
-geometrical entities, or associated to another mesh (the background
-mesh).
-<p>
-For each meshing step (i.e. the discretization of lines, surfaces and
-volumes), all structured mesh directives are executed first, and serve
-as additional constraints for the unstructured parts. The implemented
-Delaunay algorithm is subdivided in the following five steps for
-surface/volume discretization:
-<p>
-<ol>
-<li>
-trivial meshing of a box including the convex polygon/polyhedron
-defined by the boundary nodes resulting from the discretization of the
-curves/surfaces; 
-<li>
-creation of the initial mesh by insertion of all the nodes on the
-curves/surfaces thanks to the Bowyer algorithm; 
-<li>
-boundary restoration to force all the edges/faces of the
-curves/surfaces to be present in the initial mesh;
-<li>
-suppression of all the unwanted triangles/tetrahedra (in
-particular those containing the nodes of the initial box); 
-<li>
-insertion of new nodes by the Bowyer algorithm until the
-characteristic size of each simplex is lower or equal to the
-characteristic length field evaluated at the center of its
-circumscribed circle/sphere.
-</ol>
-
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Scalar and Vector Field Visualization</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Multiple post-processing scalar or vector maps can be loaded and
-manipulated (globally or individually) along with the geometry and the
-mesh. Scalar fields are represented by iso-value curves or color maps
-and vector fields by three-dimensional arrows or displacement
-maps. Post-processor functions include offsets, elevation, interactive
-color map modification, range clamping, interactive and scriptable
-animation, vector postscript output, etc. All post-processing options
-can be accessed either interactively or through the the input ascii
-files.
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Documentation</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-    <ul>
-      <li><A target="_top" href="/gmsh/doc/tutorial.html">Online tutorial</A>
-          (Please <b>read</b> this tutorial before sending any question to the mailing list!)
-      <li><A target="_top" href="/gmsh/doc/FORMATS">Mesh and post-processing file formats</A>
-      <li><A target="_top" href="/gmsh/doc/VERSIONS">Version history</A>
-      <li><a target="_top" href="/gmsh/doc/FAQ">Frequently asked questions</a>
-      <li><a target="_top" href="/gmsh/doc/KEYWORDS">List of all reserved keywords</a>
-      <li><a target="_top" href="/gmsh/doc/README.txt">For Windows versions only</a>
-<!------------
-      <li><a target="_top" href="/gmsh/doc/BUGS">List of open bugs</a>
-      <li><a target="_top" href="/gmsh/doc/CONTRIBUTORS">List of contributors</a>
------------>
-    </ul>
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<!---BEGINSCRIPT
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Mailing lists</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td align="left" colspan=2><font face="Helvetica, Arial" size=-1>
-
-     <ul>
-     <li><a target="_top"
-     href="/mailman/listinfo/gmsh-announce/">gmsh-announce</a> is a
-     moderated list for announcements about significant Gmsh
-     events. You should subscribe to this list to get information
-     about software releases, important bug fixes and other
-     Gmsh-specific news. The list is archived <a target="_top"
-     href="/pipermail/gmsh-announce/">here</a>.
-
-     <li><a target="_top" href="/mailman/listinfo/gmsh/">gmsh</a> is
-     the public mailing list for Gmsh users. You should send all
-     questions, bug reports, requests or pleas for changes related to
-     Gmsh to this list. The list is archived <a target="_top"
-     href="/pipermail/gmsh/">here</a>
-     </ul>
-
-  </font></td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Search documentation</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td align="left" colspan=2><font face="Helvetica, Arial" size=-1>
-
-<form method="post" action="/cgi-bin/htsearch">
-<input type="text" size="30" name="words" value="">
-<input type="hidden" name="config" value="htdig">
-<input type="hidden" name="exclude" value="">
-&nbsp;
-Match <select name="method">
-<option value="and" selected>all words</option>
-<option value="or">any words</option>
-<option value="boolean">boolean expression</option>
-</select>
-Limit to <select name="restrict">
-<option value="http://www.geuz.org/gmsh/">regular pages</option>
-<option value="http://www.geuz.org/pipermail/gmsh/">mailing list</option>
-</select>
-</form>
-
-  </font></td>
-
-</tr>
-
-ENDSCRIPT--->
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right"> 
-    <font color="#ffffff" face="Helvetica, Arial"><b>Download</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td bgcolor="#ededed"><font face="Helvetica, Arial" size=-1>
-
-<b>Version 1.22 (August 3, 2001)</b>
-<p>
-Executable versions of Gmsh are available for Windows and for most of
-the classical UNIX platforms. These versions are free, and are all
-dynamically linked with OpenGL<a href="#opengl-footnote"
-name="opengl-footmark"><sup>1</sup></a>. The only thing required if
-you use Gmsh is to mention it in your work. The tutorial and demo
-files are included in the archives.
-<ul>
-<li><A href="/gmsh/bin/gmsh-1.22-Windows.zip">Windows zip archive (95/98/NT)</A>
-<li><A href="/gmsh/bin/gmsh-1.22-1.i386.rpm">Linux RPM (Red Hat 6.2 and compatible, i386, glibc 2.1)</A> 
-<li><A href="/gmsh/bin/gmsh-1.22-Linux.tgz">Linux tarball (i386, glibc 2.1)</A> 
-<li><A href="/gmsh/bin/gmsh-1.22-OSF1.tgz">Compaq Tru64 tarball (OSF 4.0)</A> 
-<li><A href="/gmsh/bin/gmsh-1.22-SunOS.tgz">Sun tarball (SunOS 5.5)</A> 
-<li><A href="/gmsh/bin/gmsh-1.22-AIX.tgz">IBM tarball (AIX)</A> 
-<li><A href="/gmsh/bin/gmsh-1.22-IRIX.tgz">SGI IRIX tarball (IRIX 6.5)</A> 
-<li><A href="/gmsh/bin/gmsh-1.22-HP-UX.tgz">HP tarball (HPUX 10.20)</A>
-
-</ul>
-
-  </td>
-
-</tr>
-
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Authors</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1> 
-
-Gmsh is developed by <A
-HREF="mailto:Remacle@scorec.rpi.edu">Jean-Fran�ois Remacle</A>
-(currently with the <a target="_top" href="http://www.rpi.edu">Rensselaer Polytechnic Institute</a>) 
-and <A HREF="mailto:Christophe.Geuzaine@ulg.ac.be">Christophe Geuzaine</A> 
-(currently with the <a target="_top" href="http://www.ulg.ac.be">University of Li�ge</a>).
-Please use <A HREF="mailto:gmsh@geuz.org">gmsh@geuz.org</A> instead of
-our personnal e-mails to send questions or bug reports!
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Gallery</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Some pictures made with Gmsh:
-<ul>
-<li> Meshes of 
-     <A href="/gmsh/gallery/Mesh1D.gif">lines</A>, 
-     <A href="/gmsh/gallery/Mesh2DCiss.gif">surfaces</A> and 
-     <A href="/gmsh/gallery/Mesh3D.gif">volumes</A> 
-     respecting a given characteristic length field (d(r) = a (sin(X) * sin (Y)) + b).
-<li> 3D mesh of an 
-     <A href="/gmsh/gallery/bigelec4.gif">electrical component</A>
-     (courtesy S.K. Choi).
-<li> Part of a <A href="/gmsh/gallery/shoulder.gif">shoulder bone</a>
-     (Javad Fatemi).
-<li> A mechanical part in the demo files: 
-     <A href="/gmsh/gallery/ex09-0.gif">pict1</A>, 
-     <A href="/gmsh/gallery/ex09-1.gif">pict2</A>, 
-     <A href="/gmsh/gallery/ex09-2.gif">pict3</A>.
-<li> Mach number on a F16 
-     <A href="/gmsh/gallery/f16-1.gif">pict1</A>,
-     <A href="/gmsh/gallery/f16-2.gif">pict2</A>,
-     <A href="/gmsh/gallery/f16-3.gif">pict3</A>,
-     <A href="/gmsh/gallery/f16-5.gif">pict4</A> (courtesy P. Geuzaine).
-<li> Example of on-screen information display: 
-     <A href="/gmsh/gallery/infodisplay1.gif">1</A>, 
-     <A href="/gmsh/gallery/infodisplay2.gif">2</A>.
-<li> A 3D <A href="/gmsh/gallery/adap.gif">adapted mesh</A>.
-<li> Smooth 2D <A href="/gmsh/gallery/blob.gif">colormap</A> and 
-     3D <A href="/gmsh/gallery/density.mov">quicktime movie</A>.
-<li> Some didactic animations about computational electromagnetics at 
-     <A target="_top" href="http://elap.montefiore.ulg.ac.be/elm/demos_en.html">ELAP</A>.
-</ul>
-
-  </td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-<tr valign=top>
-
-  <td width="130" align="right">
-    <font color="#ffffff" face="Helvetica, Arial"><b>Links</b></font></td>
-
-  <td width="60">
-  </td>
-
-  <td><font face="Helvetica, Arial" size=-1>
-
-Check out <A TARGET="_top" HREF="/getdp/">GetDP</A>, a scientific
-computation software for the numerical solution of
-integro-differential equations, using finite element and integral type
-methods.
-
-<p>
-<br>
-<p>
-<a name="opengl-footnote"></a><a
-href="#opengl-footmark"><sup>1</sup></a>For Unix versions only: you
-should have the OpenGL libraries installed on your system, and in the
-path of the library loader. A free replacement for OpenGL can be found
-at <A target="_top"
-href="http://mesa3d.sourceforge.net">http://mesa3d.sourceforge.net</A>
-(a Linux RPM is directly available <A
-href="/gmsh/thirdparty/Mesa-3.2-2.i386.rpm">here</A>).  Remember that
-you may have to reconfigure the loader (ldconfig under Linux) or
-modify the LD_LIBRARY_PATH (or SHLIB_PATH on HP) environment variable
-in order for Gmsh to find the libraries.
-
-
-  </font></td>
-
-</tr>
-
-<!------------------------------------------------------------------>
-
-</table>
-
-<p>
-
-</BODY>
-</HTML>
-
-<!---BEGINSCRIPT
-EOM
-ENDSCRIPT--->