From 10cde6adc6bbbe5cb6899438e8ed07040fa21a9d Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Wed, 22 May 2024 16:23:18 +0100
Subject: [PATCH] Read unstructured domain resample (#18)
* Initial commit of unstructured mesh regrided to rectilinear grid
* Added more comprehensive command line parsing to get_netcdf.py
* Add default values to help text
* Work out mesh topology variable name if not given. Improve help text
* Fix using global var instead of local var bug. Put main code into function so it can be imported and called
* Add code to make tests work
* Changes requested in pull request, delete unused python script and tidy up shared_testing.py
* Add extra comments/docstrings
* Remove XIOS3 skip test
* Increase relative tolerance value so there are no known failures
* Replace Dimension instances with Dimension names in createVariable as only versions >=1.6.0 of python netCDF4 support using Dimension instances
* Add read_access=.true. to xml, seems to be needed by XIOS3 but not XIOS2
* Replace mesh_C12.nc with cdl version + code changes to use cdl file
* Add back XIOS3 skip test
---
xios_examples/dataFunc.py | 124 +
xios_examples/gen_netcdf.py | 327 ++
.../Makefile | 1 +
.../read_unstructured_domain_resample/README | 5 +
.../__init__.py | 3 +
.../domain_check.xml | 26 +
.../iodef.xml | 9 +
.../main.xml | 54 +
.../mesh_C12.cdl | 5216 +++++++++++++++++
.../resample.F90 | 151 +
.../test_resample_cases.py | 47 +
.../xios.xml | 22 +
xios_examples/shared_testing.py | 33 +-
13 files changed, 6013 insertions(+), 5 deletions(-)
create mode 100644 xios_examples/dataFunc.py
create mode 100644 xios_examples/gen_netcdf.py
create mode 120000 xios_examples/read_unstructured_domain_resample/Makefile
create mode 100644 xios_examples/read_unstructured_domain_resample/README
create mode 100644 xios_examples/read_unstructured_domain_resample/__init__.py
create mode 100644 xios_examples/read_unstructured_domain_resample/domain_check.xml
create mode 100644 xios_examples/read_unstructured_domain_resample/iodef.xml
create mode 100644 xios_examples/read_unstructured_domain_resample/main.xml
create mode 100644 xios_examples/read_unstructured_domain_resample/mesh_C12.cdl
create mode 100644 xios_examples/read_unstructured_domain_resample/resample.F90
create mode 100644 xios_examples/read_unstructured_domain_resample/test_resample_cases.py
create mode 100644 xios_examples/read_unstructured_domain_resample/xios.xml
diff --git a/xios_examples/dataFunc.py b/xios_examples/dataFunc.py
new file mode 100644
index 0000000..87ebd6b
--- /dev/null
+++ b/xios_examples/dataFunc.py
@@ -0,0 +1,124 @@
+import numpy as np
+
+class dataFunc:
+ """
+ Class containing functions which generate analytical data values for an input of
+ latitude and longitude arrays.
+
+ Functions sinusiod,harmonic,vortex,gulfstream are taken from the paper
+ `Benchmarking Regridding Libraries Used in Earth System Modelling`, see
+ https://www.mdpi.com/2297-8747/27/2/31
+ """
+
+ def func_sinusiod(self, latarr, lonarr):
+
+ length = 1.2*np.pi
+ conv = np.pi/180.0
+ coef = 2.0
+ coefmult = 1.0
+
+ data = np.array(coefmult*(coef - np.cos( np.pi*(np.arccos( np.cos(lonarr*conv)*np.cos(latarr*conv) )/length))), dtype=np.float64)
+
+ return data
+
+ def func_harmonic(self, latarr, lonarr):
+
+ conv = np.pi/180.0
+
+ data = np.array(2.0 + (np.sin(2.0*latarr*conv)**16)*np.cos(16.0*lonarr*conv), dtype=np.float64)
+
+ return data
+
+ def func_vortex(self, latarr, lonarr):
+
+ lon0 = 5.5
+ lat0 = 0.2
+ r0 = 3.0
+ d = 5.0
+ t = 6.0
+ conv = np.pi/180.0
+ sinc = np.sin(lat0)
+ cosc = np.cos(lat0)
+
+ # Find the rotated Longitude and Latitude of a point on a sphere
+ # with pole at (lon0, lat0)
+ cost = np.cos(latarr*conv)
+ sint = np.sin(latarr*conv)
+
+ trm = cost * np.cos(lonarr*conv-lon0)
+ x = sinc * trm - cosc*sint
+ y = cost * np.sin(lonarr*conv-lon0)
+ z = sinc * sint + cosc*trm
+
+ lon = np.arctan2(y, x)
+ lon = np.where(lon < 0.0, lon+2.0*np.pi, lon)
+ lat = np.arcsin(z)
+
+ rho = r0 * np.cos(lat)
+ vt = 3.0 * np.sqrt(3.0)/2.0/np.cosh(rho)/np.cosh(rho)*np.tanh(rho)
+ omega = np.where(rho == 0.0, 0.0, vt/rho)
+
+ data = np.array(2.0*(1.0+np.tanh(rho/d * np.sin(lon-omega*t))), dtype=np.float64)
+
+ return data
+
+ def func_gulfstream(self, latarr, lonarr):
+
+ # Parameters for analytical function
+ coef = 2.0
+ length = 1.2*np.pi
+ conv = np.pi/180.0
+ gf_coef = 1.0 # Coefficient for Gulf Stream term (0.0 = no Gulf Stream)
+ gf_ori_lon = -80.0 # Origin of the Gulf Stream (longitude in deg)
+ gf_ori_lat = 25.0 # Origin of the Gulf Stream (latitude in deg)
+ gf_end_lon = -1.8 # End point of the Gulf Stream (longitude in deg)
+ gf_end_lat = 50.0 # End point of the Gulf Stream (latitude in deg)
+ gf_dmp_lon = -25.5 # Point of the Gulf Stream decrease (longitude in deg)
+ gf_dmp_lat = 55.5 # Point of the Gulf Stream decrease (latitude in deg)
+
+ dr0 = np.sqrt(((gf_end_lon - gf_ori_lon)*conv)**2 +
+ ((gf_end_lat - gf_ori_lat)*conv)**2)
+
+ dr1 = np.sqrt(((gf_dmp_lon - gf_ori_lon)*conv)**2 +
+ ((gf_dmp_lat - gf_ori_lat)*conv)**2)
+
+ # Original OASIS fcos analytical test function
+ fnc_ana = (coef-np.cos(np.pi*(np.arccos(np.cos(latarr*conv)*np.cos(lonarr*conv))/length)))
+ gf_per_lon = lonarr
+ gf_per_lon = np.where(gf_per_lon > 180.0, gf_per_lon-360.0, gf_per_lon)
+ gf_per_lon = np.where(gf_per_lon < -180.0, gf_per_lon+360.0, gf_per_lon)
+ dx = (gf_per_lon - gf_ori_lon)*conv
+ dy = (latarr - gf_ori_lat)*conv
+ dr = np.sqrt(dx*dx + dy*dy)
+ dth = np.arctan2(dy, dx)
+ dc = 1.3*gf_coef
+ dc = np.where(dr > dr0, 0.0, dc)
+ dc = np.where(dr > dr1, dc * np.cos(np.pi*0.5*(dr-dr1)/(dr0-dr1)), dc)
+ data = np.array(fnc_ana + (np.maximum(1000.0*np.sin(0.4*(0.5*dr+dth)+0.007*np.cos(50.0*dth) +
+ 0.37*np.pi),999.0)-999.0)*dc, dtype=np.float64)
+
+ return data
+
+ def func_cossin(self, latarr, lonarr):
+
+ length = 1.0*np.pi
+ conv = np.pi/180.
+ coef = 21.0
+ coefmult = 3.846 * 20.0
+
+ data = np.array(coefmult*(coef - np.cos( np.pi*(np.arccos( np.cos(lonarr*conv)*np.cos(latarr*conv) )/length)) *
+ np.sin( np.pi*(np.arcsin( np.sin(lonarr*conv)*np.sin(latarr*conv) )/length))), dtype=np.float64)
+
+ return data
+
+ def get_funclist(self):
+
+ funclist = [func.removeprefix('func_') for func in dir(self) if callable(getattr(self, func)) and func.startswith('func_')]
+
+ return funclist
+
+ def get_func(self, name: str):
+
+ do = f"func_{name}"
+ if hasattr(self, do) and callable(func := getattr(self, do)):
+ return func
diff --git a/xios_examples/gen_netcdf.py b/xios_examples/gen_netcdf.py
new file mode 100644
index 0000000..56b48d3
--- /dev/null
+++ b/xios_examples/gen_netcdf.py
@@ -0,0 +1,327 @@
+import sys
+import os
+import argparse
+import netCDF4 as nc
+import numpy as np
+from .dataFunc import dataFunc
+
+# Global defaults here as needed for command line arguments defaults and argument defaults to run function
+defaults = {
+ 'func_str': 'sinusiod',
+ 'mesh_file': None,
+ 'mesh_varname': None,
+ 'nlat': 101,
+ 'nlon': 100,
+ 'nlatr': 81,
+ 'nlonr': 80
+ }
+
+def create_ncfile(ncfile, nlat, nlon, func, dim_prefix='', dim_suffix='', data_prefix='', data_suffix=''):
+ """
+ Create netCDF file variables for data on a regular latitude/longitude grid.
+
+ Parameters:!play
+ ncfile: An open, writable netCDF4 dataset
+ nlat: Number of latitude points
+ nlon: Number of longitude points
+ func: Function to generate data values
+ dim_prefix: prefix for the latitude/longitude dimension name
+ dim_suffix: suffix for the latitude/longitude dimension name
+ data_prefix): prefix for the data variable name
+ data_suffix): suffix for the data variable name
+ """
+
+ latname = f'{dim_prefix}latitude{dim_suffix}'
+ lonname = f'{dim_prefix}longitude{dim_suffix}'
+ dataname = f'{data_prefix}data{data_suffix}'
+
+ ncfile.createDimension(latname, nlat)
+ ncfile.createDimension(lonname, nlon)
+ if 'nbounds' not in ncfile.dimensions:
+ ncfile.createDimension('nbounds', 2)
+
+ lat = ncfile.createVariable(latname, np.float32, (latname,))
+ lat.units = 'degrees_north'
+ lat.standard_name = 'latitude'
+ lat.bounds = f'{latname}_bounds'
+
+ step_lat = 180.0/(nlat-1)
+ first_lat = -90.0
+ lat[:] = first_lat + step_lat*np.arange(nlat)
+ lat2d = np.repeat(lat,nlon).reshape(nlat,nlon)
+
+ lat_bnds = ncfile.createVariable(lat.bounds, np.float32, (latname,'nbounds'))
+ lat_bnds[:,0] = lat[:] - step_lat/2.0
+ lat_bnds[:,1] = lat[:] + step_lat/2.0
+
+ lon = ncfile.createVariable(lonname, np.float32, (lonname,))
+ lon.units = 'degrees_east'
+ lon.standard_name = 'longitude'
+ lon.bounds = f'{lonname}_bounds'
+
+ step_lon = 360.0/nlon
+ first_lon = 0.0
+ lon[:] = first_lon + step_lon*np.arange(nlon)
+ lon2d = np.tile(lon,(nlat,1))
+
+ lon_bnds = ncfile.createVariable(lon.bounds, np.float32, (lonname,'nbounds'))
+ lon_bnds[:,0] = lon[:] - step_lon/2.0
+ lon_bnds[:,1] = lon[:] + step_lon/2.0
+
+ data = ncfile.createVariable(dataname, np.float64, (latname,lonname))
+ data.long_name = "input data values"
+ data[:] = func(lat2d, lon2d)
+
+def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add_bounds=True, data_prefix='', data_suffix=''):
+ """
+ Create netCDF file variables for data on a unstructured latitude/longitude grid,
+ uses unstructured mesh from UGRID netCDF file.
+
+ Parameters:
+ ncmeshout: An open, writable netCDF4 dataset
+ meshin_file: UGRID netCDF file, used to extract mesh topology
+ meshin_varname: Variable name of mesh topology data in meshin_file
+ func: Function to generate data values
+ add_bounds: Add latitude/longitude bounds information
+ data_prefix): prefix for the data variable name
+ data_suffix): suffix for the data variable name
+ """
+
+ dataname = f'{data_prefix}data{data_suffix}'
+
+ ncmeshin = nc.Dataset(meshin_file, 'r', format='NETCDF4')
+
+ if meshin_varname is None:
+ for name,var in ncmeshin.variables.items():
+ if 'cf_role' in var.ncattrs():
+ if var.cf_role == 'mesh_topology':
+ # Will use the first instance of cf_role == 'mesh_topology' found.
+ # If multiple instances in file consider specifying --meshvar meshin_varname on command line
+ meshin_varname = name
+ break
+
+ try:
+ meshin_var = ncmeshin.variables[meshin_varname]
+ except KeyError:
+ print (f'Mesh topology variable {meshin_varname} does not exist')
+ raise
+
+ nface = ncmeshin.dimensions[f'n{meshin_varname}_face'].size
+ nnode = ncmeshin.dimensions[f'n{meshin_varname}_node'].size
+ nedge = ncmeshin.dimensions[f'n{meshin_varname}_edge'].size
+
+ face_node_connectivity = ncmeshin.variables[meshin_var.face_node_connectivity]
+ edge_node_connectivity = ncmeshin.variables[meshin_var.edge_node_connectivity]
+ face_edge_connectivity = ncmeshin.variables[meshin_var.face_edge_connectivity]
+ if 'edge_face_connectivity' in meshin_var.ncattrs():
+ edge_face_connectivity = ncmeshin.variables[meshin_var.edge_face_connectivity]
+ face_face_connectivity = ncmeshin.variables[meshin_var.face_face_connectivity]
+
+ for face_coord in meshin_var.face_coordinates.split(" "):
+ face_coordvar = ncmeshin.variables[face_coord]
+ if face_coordvar.standard_name == 'longitude':
+ face_lon = face_coordvar[:]
+ elif face_coordvar.standard_name == 'latitude':
+ face_lat = face_coordvar[:]
+
+ for node_coord in meshin_var.node_coordinates.split(" "):
+ node_coordvar = ncmeshin.variables[node_coord]
+ if node_coordvar.standard_name == 'longitude':
+ node_lon = node_coordvar[:]
+ elif node_coordvar.standard_name == 'latitude':
+ node_lat = node_coordvar[:]
+
+ if 'edge_coordinates' in meshin_var.ncattrs():
+ for edge_coord in meshin_var.edge_coordinates.split(" "):
+ edge_coordvar = ncmeshin.variables[edge_coord]
+ if edge_coordvar.standard_name == 'longitude':
+ edge_lon = edge_coordvar[:]
+ elif edge_coordvar.standard_name == 'latitude':
+ edge_lat = edge_coordvar[:]
+
+ meshout_varname = 'Mesh2d'
+ ncmeshout.Conventions = "UGRID-1.0"
+ start_index = 0
+
+ face_dim = ncmeshout.createDimension(f'n{meshout_varname}_face', nface)
+ node_dim = ncmeshout.createDimension(f'n{meshout_varname}_node', nnode)
+ edge_dim = ncmeshout.createDimension(f'n{meshout_varname}_edge', nedge)
+ vertex_dim = ncmeshout.createDimension(f'n{meshout_varname}_vertex', 4)
+ two_dim = ncmeshout.createDimension('Two', 2)
+
+ meshout_var = ncmeshout.createVariable(meshout_varname, np.int32)
+ meshout_var.cf_role = "mesh_topology"
+ meshout_var.long_name = "Topology data of 2D unstructured mesh"
+ meshout_var.topology_dimension = np.int32(2)
+ meshout_var.face_coordinates = f"{meshout_varname}_face_x {meshout_varname}_face_y"
+ meshout_var.node_coordinates = f"{meshout_varname}_node_x {meshout_varname}_node_y"
+ meshout_var.edge_coordinates = f"{meshout_varname}_edge_x {meshout_varname}_edge_y"
+ meshout_var.face_node_connectivity = f"{meshout_varname}_face_nodes"
+ meshout_var.edge_node_connectivity = f"{meshout_varname}_edge_nodes"
+ meshout_var.face_edge_connectivity = f"{meshout_varname}_face_edges"
+ if 'edge_face_connectivity' in meshin_var.ncattrs():
+ meshout_var.edge_face_connectivity = f"{meshout_varname}_edge_face_links"
+ meshout_var.face_face_connectivity = f"{meshout_varname}_face_links"
+
+ face_x = ncmeshout.createVariable(f"{meshout_varname}_face_x", np.float32, (face_dim.name,))
+ face_x.standard_name = "longitude"
+ face_x.long_name = "Characteristic longitude of mesh faces."
+ face_x.units = "degrees_east"
+ face_x[:] = face_lon
+
+ face_y = ncmeshout.createVariable(f"{meshout_varname}_face_y", np.float32, (face_dim.name,))
+ face_y.standard_name = "latitude"
+ face_y.long_name = "Characteristic latitude of mesh faces."
+ face_y.units = "degrees_north"
+ face_y[:] = face_lat
+
+ node_x = ncmeshout.createVariable(f"{meshout_varname}_node_x", np.float32, (node_dim.name,))
+ node_x.standard_name = "longitude"
+ node_x.long_name = "Longitude of mesh nodes."
+ node_x.units = "degrees_east"
+ node_x[:] = node_lon
+
+ node_y = ncmeshout.createVariable(f"{meshout_varname}_node_y", np.float32, (node_dim.name,))
+ node_y.standard_name = "latitude"
+ node_y.long_name = "Latitude of mesh nodes."
+ node_y.units = "degrees_north"
+ node_y[:] = node_lat
+
+ edge_x = ncmeshout.createVariable(f"{meshout_varname}_edge_x", np.float32, (edge_dim.name,))
+ edge_x.standard_name = "longitude"
+ edge_x.long_name = "Characteristic longitude of mesh edges."
+ edge_x.units = "degrees_east"
+ if 'edge_coordinates' in meshin_var.ncattrs():
+ edge_x[:] = edge_lon
+
+ edge_y = ncmeshout.createVariable(f"{meshout_varname}_edge_y", np.float32, (edge_dim.name,))
+ edge_y.standard_name = "latitude"
+ edge_y.long_name = "Characteristic latitude of mesh edges."
+ edge_y.units = "degrees_north"
+ if 'edge_coordinates' in meshin_var.ncattrs():
+ edge_y[:] = edge_lat
+
+ face_node = ncmeshout.createVariable(f"{meshout_varname}_face_nodes", np.int32, (face_dim.name,vertex_dim.name))
+ face_node.cf_role = "face_node_connectivity"
+ face_node.long_name = "Maps every face to its corner nodes."
+ face_node.start_index = np.int32(start_index)
+ face_node[:] = face_node_connectivity[:] - face_node_connectivity.start_index + start_index
+
+ edge_node = ncmeshout.createVariable(f"{meshout_varname}_edge_nodes", np.int32, (edge_dim.name,two_dim.name))
+ edge_node.cf_role = "edge_node_connectivity"
+ edge_node.long_name = "Maps every edge/link to two nodes that it connects."
+ edge_node.start_index = np.int32(start_index)
+ edge_node[:] = edge_node_connectivity[:] - edge_node_connectivity.start_index + start_index
+
+ face_edge = ncmeshout.createVariable(f"{meshout_varname}_face_edges", np.int32, (face_dim.name,vertex_dim.name), fill_value=999999)
+ face_edge.cf_role = "face_edge_connectivity"
+ face_edge.long_name = "Maps every face to its edges."
+ face_edge.start_index = np.int32(start_index)
+ face_edge[:] = face_edge_connectivity[:] - face_edge_connectivity.start_index + start_index
+
+ if 'edge_face_connectivity' in meshin_var.ncattrs():
+ edge_face = ncmeshout.createVariable(f"{meshout_varname}_edge_face_links", np.int32, (edge_dim.name,two_dim.name), fill_value=-999)
+ edge_face.cf_role = "edge_face_connectivity"
+ edge_face.long_name = "neighbor faces for edges"
+ edge_face.start_index = np.int32(start_index)
+ edge_face.comment = "missing neighbor faces are indicated using _FillValue"
+ edge_face[:] = edge_face_connectivity[:] - edge_face_connectivity.start_index + start_index
+
+ face_face = ncmeshout.createVariable(f"{meshout_varname}_face_links", np.int32, (face_dim.name,vertex_dim.name), fill_value=999999)
+ face_face.cf_role = "face_face_connectivity"
+ face_face.long_name = "Indicates which other faces neighbor each face"
+ face_face.start_index = np.int32(start_index)
+ face_face.flag_values = np.int32(-1) ;
+ face_face.flag_meanings = "out_of_mesh" ;
+ face_face[:] = face_face_connectivity[:] - face_face_connectivity.start_index + start_index
+
+ if add_bounds:
+ face_x.bounds = f"{face_x.name}_bounds"
+ face_x_bnds = ncmeshout.createVariable(face_x.bounds, face_x.dtype, face_node.dimensions)
+ face_x_bnds[:] = node_x[face_node[:].flatten()].reshape(face_x_bnds.shape)
+
+ face_y.bounds = f"{face_y.name}_bounds"
+ face_y_bnds = ncmeshout.createVariable(face_y.bounds, face_y.dtype, face_node.dimensions)
+ face_y_bnds[:] = node_y[face_node[:].flatten()].reshape(face_y_bnds.shape)
+
+ data = ncmeshout.createVariable(dataname, np.float64, (face_dim.name,))
+ data.long_name = "input data values"
+ data.mesh = meshout_varname
+ data.location = "face"
+ data.coordinates = f"{face_y.name} {face_x.name}"
+ data[:] = func(face_lat, face_lon)
+
+ ncmeshin.close()
+
+def getargs(argv=None):
+
+ df = dataFunc()
+ funclist = df.get_funclist()
+ del df
+
+ parser = argparse.ArgumentParser(description="Generate netCDF files with data on domains suitable for regridding")
+
+ parser.add_argument("--meshfile", help="Name of netCDF file containing UGRID mesh topology data, needed for UGRID data", dest='mesh_file')
+ parser.add_argument("--meshvar", help="Variable name of mesh topology data in netCDF file, optional for UGRID data", dest='mesh_varname')
+ parser.add_argument("--func", help="Analytic function for data variable (default: %(default)s)", choices=funclist, dest='func_str')
+ parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data (default: %(default)d)", type = int)
+ parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data (default: %(default)d)", type = int)
+ parser.add_argument("--nlatr", help="Number of latitude points for resampled grid (default: %(default)d)", type = int)
+ parser.add_argument("--nlonr", help="Number of longitude points for resampled grid (default: %(default)d)", type = int)
+ parser.add_argument("file_out", help="Name of non-UGRID output netCDF file")
+
+ parser.set_defaults(**defaults)
+ args = parser.parse_args(argv)
+
+ return args
+
+def run(file_out, func_str=defaults['func_str'], mesh_file=defaults['mesh_file'],
+ mesh_varname=defaults['mesh_varname'],
+ nlat=defaults['nlat'], nlon=defaults['nlon'],
+ nlatr=defaults['nlatr'], nlonr=defaults['nlonr']):
+ """
+ Generate netCDF files with data on domains suitable for regridding
+
+ Parameters:
+ file_out: Name of non-UGRID output netCDF file
+ func_str: Name of analytic function for data variable
+ mesh_file: Name of netCDF file containing UGRID mesh topology data, needed for UGRID data
+ mesh_varname: Variable name of mesh topology data in netCDF file, optional for UGRID data
+ nlat: Number of latitude points for original grid, not needed for UGRID data
+ nlon: Number of longitude points for original grid, not needed for UGRID data
+ nlatr: Number of latitude points for resampled grid
+ nlonr: Number of longitude points for resampled grid
+ """
+
+ df = dataFunc()
+ func = df.get_func(func_str)
+ mkugrid = mesh_file is not None
+
+ data_prefix = 'original_'
+
+ if mkugrid:
+ name, ext = os.path.splitext(file_out)
+ file_ugrid_out = f"{name}_ugrid{ext}"
+ ncfile = nc.Dataset(file_ugrid_out, 'w', format='NETCDF4')
+
+ create_ncfile_unstructured(ncfile, mesh_file, mesh_varname, func, add_bounds=True, data_prefix=data_prefix)
+
+ ncfile.close()
+
+ ncfile = nc.Dataset(file_out, 'w', format='NETCDF4')
+
+ if not mkugrid:
+ create_ncfile(ncfile, nlat, nlon, func, data_prefix=data_prefix)
+
+ data_prefix = 'resample_'
+ dim_suffix = '_resample'
+ create_ncfile(ncfile, nlatr, nlonr, func, data_prefix=data_prefix, dim_suffix=dim_suffix)
+
+ ncfile.close()
+
+def main(argv=None):
+ args = getargs(argv)
+ run(**vars(args))
+
+if __name__ == "__main__":
+ main()
diff --git a/xios_examples/read_unstructured_domain_resample/Makefile b/xios_examples/read_unstructured_domain_resample/Makefile
new file mode 120000
index 0000000..d0b0e8e
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/Makefile
@@ -0,0 +1 @@
+../Makefile
\ No newline at end of file
diff --git a/xios_examples/read_unstructured_domain_resample/README b/xios_examples/read_unstructured_domain_resample/README
new file mode 100644
index 0000000..91b8fff
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/README
@@ -0,0 +1,5 @@
+read_unstructured_domain_resample
+---------------------------------
+
+These examples read in arbitrary data on an unstructured grid from an netCDF file and resample to a different horizontal domain as defined within the input netCDF file using bilinear interpolation.
+The original and resampled data as well as a diff between them are written to one output NetCDF file. The unit tests include two known failure test cases where the expected result is not produced.
diff --git a/xios_examples/read_unstructured_domain_resample/__init__.py b/xios_examples/read_unstructured_domain_resample/__init__.py
new file mode 100644
index 0000000..df083e3
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/__init__.py
@@ -0,0 +1,3 @@
+"""
+Enable this folder to be a module path, for imports and test discovery.
+"""
diff --git a/xios_examples/read_unstructured_domain_resample/domain_check.xml b/xios_examples/read_unstructured_domain_resample/domain_check.xml
new file mode 100644
index 0000000..574c831
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/domain_check.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xios_examples/read_unstructured_domain_resample/iodef.xml b/xios_examples/read_unstructured_domain_resample/iodef.xml
new file mode 100644
index 0000000..e3a1d6c
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/iodef.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/xios_examples/read_unstructured_domain_resample/main.xml b/xios_examples/read_unstructured_domain_resample/main.xml
new file mode 100644
index 0000000..3be9630
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/main.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ rdata-edata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xios_examples/read_unstructured_domain_resample/mesh_C12.cdl b/xios_examples/read_unstructured_domain_resample/mesh_C12.cdl
new file mode 100644
index 0000000..18a6ba7
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/mesh_C12.cdl
@@ -0,0 +1,5216 @@
+netcdf mesh_C12 {
+dimensions:
+ ndynamics_node = 866 ;
+ ndynamics_edge = 1728 ;
+ ndynamics_face = 864 ;
+ One = 1 ;
+ Two = 2 ;
+ Four = 4 ;
+variables:
+ int dynamics ;
+ dynamics:cf_role = "mesh_topology" ;
+ dynamics:geometry = "spherical" ;
+ dynamics:topology = "periodic" ;
+ dynamics:coord_sys = "ll" ;
+ dynamics:max_stencil_depth = 0 ;
+ dynamics:periodic_x = "F" ;
+ dynamics:periodic_y = "F" ;
+ dynamics:constructor_inputs = "edge_cells=12;smooth_passes=0" ;
+ dynamics:n_mesh_maps = 0 ;
+ dynamics:long_name = "Topology data of 2D unstructured mesh" ;
+ dynamics:topology_dimension = 2 ;
+ dynamics:node_coordinates = "dynamics_node_x dynamics_node_y" ;
+ dynamics:face_coordinates = "dynamics_face_x dynamics_face_y" ;
+ dynamics:face_node_connectivity = "dynamics_face_nodes" ;
+ dynamics:edge_node_connectivity = "dynamics_edge_nodes" ;
+ dynamics:face_edge_connectivity = "dynamics_face_edges" ;
+ dynamics:face_face_connectivity = "dynamics_face_links" ;
+ dynamics:north_pole = 0., 90. ;
+ dynamics:null_island = 0., 0. ;
+ int dynamics_face_nodes(ndynamics_face, Four) ;
+ dynamics_face_nodes:cf_role = "face_node_connectivity" ;
+ dynamics_face_nodes:long_name = "Maps every quadrilateral face to its four corner nodes." ;
+ dynamics_face_nodes:start_index = 1 ;
+ int dynamics_edge_nodes(ndynamics_edge, Two) ;
+ dynamics_edge_nodes:cf_role = "edge_node_connectivity" ;
+ dynamics_edge_nodes:long_name = "Maps every edge to the two nodes that it connects." ;
+ dynamics_edge_nodes:start_index = 1 ;
+ int dynamics_face_edges(ndynamics_face, Four) ;
+ dynamics_face_edges:cf_role = "face_edge_connectivity" ;
+ dynamics_face_edges:long_name = "Maps every quadrilateral face to its four edges." ;
+ dynamics_face_edges:start_index = 1 ;
+ int dynamics_face_links(ndynamics_face, Four) ;
+ dynamics_face_links:cf_role = "face_face_connectivity" ;
+ dynamics_face_links:long_name = "Indicates which other faces neighbour each face." ;
+ dynamics_face_links:start_index = 1 ;
+ dynamics_face_links:flag_values = -1 ;
+ dynamics_face_links:flag_meanings = "out_of_mesh" ;
+ double dynamics_node_x(ndynamics_node) ;
+ dynamics_node_x:standard_name = "longitude" ;
+ dynamics_node_x:long_name = "longitude of 2D mesh nodes." ;
+ dynamics_node_x:units = "degrees_east" ;
+ double dynamics_node_y(ndynamics_node) ;
+ dynamics_node_y:standard_name = "latitude" ;
+ dynamics_node_y:long_name = "latitude of 2D mesh nodes." ;
+ dynamics_node_y:units = "degrees_north" ;
+ double dynamics_face_x(ndynamics_face) ;
+ dynamics_face_x:standard_name = "longitude" ;
+ dynamics_face_x:long_name = "longitude of 2D face centres" ;
+ dynamics_face_x:units = "degrees_east" ;
+ double dynamics_face_y(ndynamics_face) ;
+ dynamics_face_y:standard_name = "latitude" ;
+ dynamics_face_y:long_name = "latitude of 2D face centres" ;
+ dynamics_face_y:units = "degrees_north" ;
+data:
+
+ dynamics = _ ;
+
+ dynamics_face_nodes =
+ 13, 14, 2, 1,
+ 14, 15, 3, 2,
+ 15, 16, 4, 3,
+ 16, 17, 5, 4,
+ 17, 18, 6, 5,
+ 18, 19, 7, 6,
+ 19, 20, 8, 7,
+ 20, 21, 9, 8,
+ 21, 22, 10, 9,
+ 22, 23, 11, 10,
+ 23, 24, 12, 11,
+ 24, 157, 145, 12,
+ 25, 26, 14, 13,
+ 26, 27, 15, 14,
+ 27, 28, 16, 15,
+ 28, 29, 17, 16,
+ 29, 30, 18, 17,
+ 30, 31, 19, 18,
+ 31, 32, 20, 19,
+ 32, 33, 21, 20,
+ 33, 34, 22, 21,
+ 34, 35, 23, 22,
+ 35, 36, 24, 23,
+ 36, 169, 157, 24,
+ 37, 38, 26, 25,
+ 38, 39, 27, 26,
+ 39, 40, 28, 27,
+ 40, 41, 29, 28,
+ 41, 42, 30, 29,
+ 42, 43, 31, 30,
+ 43, 44, 32, 31,
+ 44, 45, 33, 32,
+ 45, 46, 34, 33,
+ 46, 47, 35, 34,
+ 47, 48, 36, 35,
+ 48, 181, 169, 36,
+ 49, 50, 38, 37,
+ 50, 51, 39, 38,
+ 51, 52, 40, 39,
+ 52, 53, 41, 40,
+ 53, 54, 42, 41,
+ 54, 55, 43, 42,
+ 55, 56, 44, 43,
+ 56, 57, 45, 44,
+ 57, 58, 46, 45,
+ 58, 59, 47, 46,
+ 59, 60, 48, 47,
+ 60, 193, 181, 48,
+ 61, 62, 50, 49,
+ 62, 63, 51, 50,
+ 63, 64, 52, 51,
+ 64, 65, 53, 52,
+ 65, 66, 54, 53,
+ 66, 67, 55, 54,
+ 67, 68, 56, 55,
+ 68, 69, 57, 56,
+ 69, 70, 58, 57,
+ 70, 71, 59, 58,
+ 71, 72, 60, 59,
+ 72, 205, 193, 60,
+ 73, 74, 62, 61,
+ 74, 75, 63, 62,
+ 75, 76, 64, 63,
+ 76, 77, 65, 64,
+ 77, 78, 66, 65,
+ 78, 79, 67, 66,
+ 79, 80, 68, 67,
+ 80, 81, 69, 68,
+ 81, 82, 70, 69,
+ 82, 83, 71, 70,
+ 83, 84, 72, 71,
+ 84, 217, 205, 72,
+ 85, 86, 74, 73,
+ 86, 87, 75, 74,
+ 87, 88, 76, 75,
+ 88, 89, 77, 76,
+ 89, 90, 78, 77,
+ 90, 91, 79, 78,
+ 91, 92, 80, 79,
+ 92, 93, 81, 80,
+ 93, 94, 82, 81,
+ 94, 95, 83, 82,
+ 95, 96, 84, 83,
+ 96, 229, 217, 84,
+ 97, 98, 86, 85,
+ 98, 99, 87, 86,
+ 99, 100, 88, 87,
+ 100, 101, 89, 88,
+ 101, 102, 90, 89,
+ 102, 103, 91, 90,
+ 103, 104, 92, 91,
+ 104, 105, 93, 92,
+ 105, 106, 94, 93,
+ 106, 107, 95, 94,
+ 107, 108, 96, 95,
+ 108, 241, 229, 96,
+ 109, 110, 98, 97,
+ 110, 111, 99, 98,
+ 111, 112, 100, 99,
+ 112, 113, 101, 100,
+ 113, 114, 102, 101,
+ 114, 115, 103, 102,
+ 115, 116, 104, 103,
+ 116, 117, 105, 104,
+ 117, 118, 106, 105,
+ 118, 119, 107, 106,
+ 119, 120, 108, 107,
+ 120, 253, 241, 108,
+ 121, 122, 110, 109,
+ 122, 123, 111, 110,
+ 123, 124, 112, 111,
+ 124, 125, 113, 112,
+ 125, 126, 114, 113,
+ 126, 127, 115, 114,
+ 127, 128, 116, 115,
+ 128, 129, 117, 116,
+ 129, 130, 118, 117,
+ 130, 131, 119, 118,
+ 131, 132, 120, 119,
+ 132, 265, 253, 120,
+ 133, 134, 122, 121,
+ 134, 135, 123, 122,
+ 135, 136, 124, 123,
+ 136, 137, 125, 124,
+ 137, 138, 126, 125,
+ 138, 139, 127, 126,
+ 139, 140, 128, 127,
+ 140, 141, 129, 128,
+ 141, 142, 130, 129,
+ 142, 143, 131, 130,
+ 143, 144, 132, 131,
+ 144, 277, 265, 132,
+ 842, 830, 134, 133,
+ 830, 818, 135, 134,
+ 818, 806, 136, 135,
+ 806, 794, 137, 136,
+ 794, 782, 138, 137,
+ 782, 770, 139, 138,
+ 770, 758, 140, 139,
+ 758, 746, 141, 140,
+ 746, 734, 142, 141,
+ 734, 722, 143, 142,
+ 722, 710, 144, 143,
+ 710, 698, 277, 144,
+ 157, 158, 146, 145,
+ 158, 159, 147, 146,
+ 159, 160, 148, 147,
+ 160, 161, 149, 148,
+ 161, 162, 150, 149,
+ 162, 163, 151, 150,
+ 163, 164, 152, 151,
+ 164, 165, 153, 152,
+ 165, 166, 154, 153,
+ 166, 167, 155, 154,
+ 167, 168, 156, 155,
+ 168, 301, 289, 156,
+ 169, 170, 158, 157,
+ 170, 171, 159, 158,
+ 171, 172, 160, 159,
+ 172, 173, 161, 160,
+ 173, 174, 162, 161,
+ 174, 175, 163, 162,
+ 175, 176, 164, 163,
+ 176, 177, 165, 164,
+ 177, 178, 166, 165,
+ 178, 179, 167, 166,
+ 179, 180, 168, 167,
+ 180, 313, 301, 168,
+ 181, 182, 170, 169,
+ 182, 183, 171, 170,
+ 183, 184, 172, 171,
+ 184, 185, 173, 172,
+ 185, 186, 174, 173,
+ 186, 187, 175, 174,
+ 187, 188, 176, 175,
+ 188, 189, 177, 176,
+ 189, 190, 178, 177,
+ 190, 191, 179, 178,
+ 191, 192, 180, 179,
+ 192, 325, 313, 180,
+ 193, 194, 182, 181,
+ 194, 195, 183, 182,
+ 195, 196, 184, 183,
+ 196, 197, 185, 184,
+ 197, 198, 186, 185,
+ 198, 199, 187, 186,
+ 199, 200, 188, 187,
+ 200, 201, 189, 188,
+ 201, 202, 190, 189,
+ 202, 203, 191, 190,
+ 203, 204, 192, 191,
+ 204, 337, 325, 192,
+ 205, 206, 194, 193,
+ 206, 207, 195, 194,
+ 207, 208, 196, 195,
+ 208, 209, 197, 196,
+ 209, 210, 198, 197,
+ 210, 211, 199, 198,
+ 211, 212, 200, 199,
+ 212, 213, 201, 200,
+ 213, 214, 202, 201,
+ 214, 215, 203, 202,
+ 215, 216, 204, 203,
+ 216, 349, 337, 204,
+ 217, 218, 206, 205,
+ 218, 219, 207, 206,
+ 219, 220, 208, 207,
+ 220, 221, 209, 208,
+ 221, 222, 210, 209,
+ 222, 223, 211, 210,
+ 223, 224, 212, 211,
+ 224, 225, 213, 212,
+ 225, 226, 214, 213,
+ 226, 227, 215, 214,
+ 227, 228, 216, 215,
+ 228, 361, 349, 216,
+ 229, 230, 218, 217,
+ 230, 231, 219, 218,
+ 231, 232, 220, 219,
+ 232, 233, 221, 220,
+ 233, 234, 222, 221,
+ 234, 235, 223, 222,
+ 235, 236, 224, 223,
+ 236, 237, 225, 224,
+ 237, 238, 226, 225,
+ 238, 239, 227, 226,
+ 239, 240, 228, 227,
+ 240, 373, 361, 228,
+ 241, 242, 230, 229,
+ 242, 243, 231, 230,
+ 243, 244, 232, 231,
+ 244, 245, 233, 232,
+ 245, 246, 234, 233,
+ 246, 247, 235, 234,
+ 247, 248, 236, 235,
+ 248, 249, 237, 236,
+ 249, 250, 238, 237,
+ 250, 251, 239, 238,
+ 251, 252, 240, 239,
+ 252, 385, 373, 240,
+ 253, 254, 242, 241,
+ 254, 255, 243, 242,
+ 255, 256, 244, 243,
+ 256, 257, 245, 244,
+ 257, 258, 246, 245,
+ 258, 259, 247, 246,
+ 259, 260, 248, 247,
+ 260, 261, 249, 248,
+ 261, 262, 250, 249,
+ 262, 263, 251, 250,
+ 263, 264, 252, 251,
+ 264, 397, 385, 252,
+ 265, 266, 254, 253,
+ 266, 267, 255, 254,
+ 267, 268, 256, 255,
+ 268, 269, 257, 256,
+ 269, 270, 258, 257,
+ 270, 271, 259, 258,
+ 271, 272, 260, 259,
+ 272, 273, 261, 260,
+ 273, 274, 262, 261,
+ 274, 275, 263, 262,
+ 275, 276, 264, 263,
+ 276, 409, 397, 264,
+ 277, 278, 266, 265,
+ 278, 279, 267, 266,
+ 279, 280, 268, 267,
+ 280, 281, 269, 268,
+ 281, 282, 270, 269,
+ 282, 283, 271, 270,
+ 283, 284, 272, 271,
+ 284, 285, 273, 272,
+ 285, 286, 274, 273,
+ 286, 287, 275, 274,
+ 287, 288, 276, 275,
+ 288, 421, 409, 276,
+ 698, 699, 278, 277,
+ 699, 700, 279, 278,
+ 700, 701, 280, 279,
+ 701, 702, 281, 280,
+ 702, 703, 282, 281,
+ 703, 704, 283, 282,
+ 704, 705, 284, 283,
+ 705, 706, 285, 284,
+ 706, 707, 286, 285,
+ 707, 708, 287, 286,
+ 708, 709, 288, 287,
+ 709, 854, 421, 288,
+ 302, 290, 289, 301,
+ 303, 291, 290, 302,
+ 304, 292, 291, 303,
+ 305, 293, 292, 304,
+ 306, 294, 293, 305,
+ 307, 295, 294, 306,
+ 308, 296, 295, 307,
+ 309, 297, 296, 308,
+ 310, 298, 297, 309,
+ 311, 299, 298, 310,
+ 312, 300, 299, 311,
+ 445, 433, 300, 312,
+ 314, 302, 301, 313,
+ 315, 303, 302, 314,
+ 316, 304, 303, 315,
+ 317, 305, 304, 316,
+ 318, 306, 305, 317,
+ 319, 307, 306, 318,
+ 320, 308, 307, 319,
+ 321, 309, 308, 320,
+ 322, 310, 309, 321,
+ 323, 311, 310, 322,
+ 324, 312, 311, 323,
+ 457, 445, 312, 324,
+ 326, 314, 313, 325,
+ 327, 315, 314, 326,
+ 328, 316, 315, 327,
+ 329, 317, 316, 328,
+ 330, 318, 317, 329,
+ 331, 319, 318, 330,
+ 332, 320, 319, 331,
+ 333, 321, 320, 332,
+ 334, 322, 321, 333,
+ 335, 323, 322, 334,
+ 336, 324, 323, 335,
+ 469, 457, 324, 336,
+ 338, 326, 325, 337,
+ 339, 327, 326, 338,
+ 340, 328, 327, 339,
+ 341, 329, 328, 340,
+ 342, 330, 329, 341,
+ 343, 331, 330, 342,
+ 344, 332, 331, 343,
+ 345, 333, 332, 344,
+ 346, 334, 333, 345,
+ 347, 335, 334, 346,
+ 348, 336, 335, 347,
+ 481, 469, 336, 348,
+ 350, 338, 337, 349,
+ 351, 339, 338, 350,
+ 352, 340, 339, 351,
+ 353, 341, 340, 352,
+ 354, 342, 341, 353,
+ 355, 343, 342, 354,
+ 356, 344, 343, 355,
+ 357, 345, 344, 356,
+ 358, 346, 345, 357,
+ 359, 347, 346, 358,
+ 360, 348, 347, 359,
+ 493, 481, 348, 360,
+ 362, 350, 349, 361,
+ 363, 351, 350, 362,
+ 364, 352, 351, 363,
+ 365, 353, 352, 364,
+ 366, 354, 353, 365,
+ 367, 355, 354, 366,
+ 368, 356, 355, 367,
+ 369, 357, 356, 368,
+ 370, 358, 357, 369,
+ 371, 359, 358, 370,
+ 372, 360, 359, 371,
+ 505, 493, 360, 372,
+ 374, 362, 361, 373,
+ 375, 363, 362, 374,
+ 376, 364, 363, 375,
+ 377, 365, 364, 376,
+ 378, 366, 365, 377,
+ 379, 367, 366, 378,
+ 380, 368, 367, 379,
+ 381, 369, 368, 380,
+ 382, 370, 369, 381,
+ 383, 371, 370, 382,
+ 384, 372, 371, 383,
+ 517, 505, 372, 384,
+ 386, 374, 373, 385,
+ 387, 375, 374, 386,
+ 388, 376, 375, 387,
+ 389, 377, 376, 388,
+ 390, 378, 377, 389,
+ 391, 379, 378, 390,
+ 392, 380, 379, 391,
+ 393, 381, 380, 392,
+ 394, 382, 381, 393,
+ 395, 383, 382, 394,
+ 396, 384, 383, 395,
+ 529, 517, 384, 396,
+ 398, 386, 385, 397,
+ 399, 387, 386, 398,
+ 400, 388, 387, 399,
+ 401, 389, 388, 400,
+ 402, 390, 389, 401,
+ 403, 391, 390, 402,
+ 404, 392, 391, 403,
+ 405, 393, 392, 404,
+ 406, 394, 393, 405,
+ 407, 395, 394, 406,
+ 408, 396, 395, 407,
+ 541, 529, 396, 408,
+ 410, 398, 397, 409,
+ 411, 399, 398, 410,
+ 412, 400, 399, 411,
+ 413, 401, 400, 412,
+ 414, 402, 401, 413,
+ 415, 403, 402, 414,
+ 416, 404, 403, 415,
+ 417, 405, 404, 416,
+ 418, 406, 405, 417,
+ 419, 407, 406, 418,
+ 420, 408, 407, 419,
+ 553, 541, 408, 420,
+ 422, 410, 409, 421,
+ 423, 411, 410, 422,
+ 424, 412, 411, 423,
+ 425, 413, 412, 424,
+ 426, 414, 413, 425,
+ 427, 415, 414, 426,
+ 428, 416, 415, 427,
+ 429, 417, 416, 428,
+ 430, 418, 417, 429,
+ 431, 419, 418, 430,
+ 432, 420, 419, 431,
+ 565, 553, 420, 432,
+ 855, 422, 421, 854,
+ 856, 423, 422, 855,
+ 857, 424, 423, 856,
+ 858, 425, 424, 857,
+ 859, 426, 425, 858,
+ 860, 427, 426, 859,
+ 861, 428, 427, 860,
+ 862, 429, 428, 861,
+ 863, 430, 429, 862,
+ 864, 431, 430, 863,
+ 865, 432, 431, 864,
+ 866, 565, 432, 865,
+ 446, 434, 433, 445,
+ 447, 435, 434, 446,
+ 448, 436, 435, 447,
+ 449, 437, 436, 448,
+ 450, 438, 437, 449,
+ 451, 439, 438, 450,
+ 452, 440, 439, 451,
+ 453, 441, 440, 452,
+ 454, 442, 441, 453,
+ 455, 443, 442, 454,
+ 456, 444, 443, 455,
+ 13, 1, 444, 456,
+ 458, 446, 445, 457,
+ 459, 447, 446, 458,
+ 460, 448, 447, 459,
+ 461, 449, 448, 460,
+ 462, 450, 449, 461,
+ 463, 451, 450, 462,
+ 464, 452, 451, 463,
+ 465, 453, 452, 464,
+ 466, 454, 453, 465,
+ 467, 455, 454, 466,
+ 468, 456, 455, 467,
+ 25, 13, 456, 468,
+ 470, 458, 457, 469,
+ 471, 459, 458, 470,
+ 472, 460, 459, 471,
+ 473, 461, 460, 472,
+ 474, 462, 461, 473,
+ 475, 463, 462, 474,
+ 476, 464, 463, 475,
+ 477, 465, 464, 476,
+ 478, 466, 465, 477,
+ 479, 467, 466, 478,
+ 480, 468, 467, 479,
+ 37, 25, 468, 480,
+ 482, 470, 469, 481,
+ 483, 471, 470, 482,
+ 484, 472, 471, 483,
+ 485, 473, 472, 484,
+ 486, 474, 473, 485,
+ 487, 475, 474, 486,
+ 488, 476, 475, 487,
+ 489, 477, 476, 488,
+ 490, 478, 477, 489,
+ 491, 479, 478, 490,
+ 492, 480, 479, 491,
+ 49, 37, 480, 492,
+ 494, 482, 481, 493,
+ 495, 483, 482, 494,
+ 496, 484, 483, 495,
+ 497, 485, 484, 496,
+ 498, 486, 485, 497,
+ 499, 487, 486, 498,
+ 500, 488, 487, 499,
+ 501, 489, 488, 500,
+ 502, 490, 489, 501,
+ 503, 491, 490, 502,
+ 504, 492, 491, 503,
+ 61, 49, 492, 504,
+ 506, 494, 493, 505,
+ 507, 495, 494, 506,
+ 508, 496, 495, 507,
+ 509, 497, 496, 508,
+ 510, 498, 497, 509,
+ 511, 499, 498, 510,
+ 512, 500, 499, 511,
+ 513, 501, 500, 512,
+ 514, 502, 501, 513,
+ 515, 503, 502, 514,
+ 516, 504, 503, 515,
+ 73, 61, 504, 516,
+ 518, 506, 505, 517,
+ 519, 507, 506, 518,
+ 520, 508, 507, 519,
+ 521, 509, 508, 520,
+ 522, 510, 509, 521,
+ 523, 511, 510, 522,
+ 524, 512, 511, 523,
+ 525, 513, 512, 524,
+ 526, 514, 513, 525,
+ 527, 515, 514, 526,
+ 528, 516, 515, 527,
+ 85, 73, 516, 528,
+ 530, 518, 517, 529,
+ 531, 519, 518, 530,
+ 532, 520, 519, 531,
+ 533, 521, 520, 532,
+ 534, 522, 521, 533,
+ 535, 523, 522, 534,
+ 536, 524, 523, 535,
+ 537, 525, 524, 536,
+ 538, 526, 525, 537,
+ 539, 527, 526, 538,
+ 540, 528, 527, 539,
+ 97, 85, 528, 540,
+ 542, 530, 529, 541,
+ 543, 531, 530, 542,
+ 544, 532, 531, 543,
+ 545, 533, 532, 544,
+ 546, 534, 533, 545,
+ 547, 535, 534, 546,
+ 548, 536, 535, 547,
+ 549, 537, 536, 548,
+ 550, 538, 537, 549,
+ 551, 539, 538, 550,
+ 552, 540, 539, 551,
+ 109, 97, 540, 552,
+ 554, 542, 541, 553,
+ 555, 543, 542, 554,
+ 556, 544, 543, 555,
+ 557, 545, 544, 556,
+ 558, 546, 545, 557,
+ 559, 547, 546, 558,
+ 560, 548, 547, 559,
+ 561, 549, 548, 560,
+ 562, 550, 549, 561,
+ 563, 551, 550, 562,
+ 564, 552, 551, 563,
+ 121, 109, 552, 564,
+ 566, 554, 553, 565,
+ 567, 555, 554, 566,
+ 568, 556, 555, 567,
+ 569, 557, 556, 568,
+ 570, 558, 557, 569,
+ 571, 559, 558, 570,
+ 572, 560, 559, 571,
+ 573, 561, 560, 572,
+ 574, 562, 561, 573,
+ 575, 563, 562, 574,
+ 576, 564, 563, 575,
+ 133, 121, 564, 576,
+ 853, 566, 565, 866,
+ 852, 567, 566, 853,
+ 851, 568, 567, 852,
+ 850, 569, 568, 851,
+ 849, 570, 569, 850,
+ 848, 571, 570, 849,
+ 847, 572, 571, 848,
+ 846, 573, 572, 847,
+ 845, 574, 573, 846,
+ 844, 575, 574, 845,
+ 843, 576, 575, 844,
+ 842, 133, 576, 843,
+ 1, 2, 577, 444,
+ 444, 577, 578, 443,
+ 443, 578, 579, 442,
+ 442, 579, 580, 441,
+ 441, 580, 581, 440,
+ 440, 581, 582, 439,
+ 439, 582, 583, 438,
+ 438, 583, 584, 437,
+ 437, 584, 585, 436,
+ 436, 585, 586, 435,
+ 435, 586, 587, 434,
+ 434, 587, 300, 433,
+ 2, 3, 588, 577,
+ 577, 588, 589, 578,
+ 578, 589, 590, 579,
+ 579, 590, 591, 580,
+ 580, 591, 592, 581,
+ 581, 592, 593, 582,
+ 582, 593, 594, 583,
+ 583, 594, 595, 584,
+ 584, 595, 596, 585,
+ 585, 596, 597, 586,
+ 586, 597, 598, 587,
+ 587, 598, 299, 300,
+ 3, 4, 599, 588,
+ 588, 599, 600, 589,
+ 589, 600, 601, 590,
+ 590, 601, 602, 591,
+ 591, 602, 603, 592,
+ 592, 603, 604, 593,
+ 593, 604, 605, 594,
+ 594, 605, 606, 595,
+ 595, 606, 607, 596,
+ 596, 607, 608, 597,
+ 597, 608, 609, 598,
+ 598, 609, 298, 299,
+ 4, 5, 610, 599,
+ 599, 610, 611, 600,
+ 600, 611, 612, 601,
+ 601, 612, 613, 602,
+ 602, 613, 614, 603,
+ 603, 614, 615, 604,
+ 604, 615, 616, 605,
+ 605, 616, 617, 606,
+ 606, 617, 618, 607,
+ 607, 618, 619, 608,
+ 608, 619, 620, 609,
+ 609, 620, 297, 298,
+ 5, 6, 621, 610,
+ 610, 621, 622, 611,
+ 611, 622, 623, 612,
+ 612, 623, 624, 613,
+ 613, 624, 625, 614,
+ 614, 625, 626, 615,
+ 615, 626, 627, 616,
+ 616, 627, 628, 617,
+ 617, 628, 629, 618,
+ 618, 629, 630, 619,
+ 619, 630, 631, 620,
+ 620, 631, 296, 297,
+ 6, 7, 632, 621,
+ 621, 632, 633, 622,
+ 622, 633, 634, 623,
+ 623, 634, 635, 624,
+ 624, 635, 636, 625,
+ 625, 636, 637, 626,
+ 626, 637, 638, 627,
+ 627, 638, 639, 628,
+ 628, 639, 640, 629,
+ 629, 640, 641, 630,
+ 630, 641, 642, 631,
+ 631, 642, 295, 296,
+ 7, 8, 643, 632,
+ 632, 643, 644, 633,
+ 633, 644, 645, 634,
+ 634, 645, 646, 635,
+ 635, 646, 647, 636,
+ 636, 647, 648, 637,
+ 637, 648, 649, 638,
+ 638, 649, 650, 639,
+ 639, 650, 651, 640,
+ 640, 651, 652, 641,
+ 641, 652, 653, 642,
+ 642, 653, 294, 295,
+ 8, 9, 654, 643,
+ 643, 654, 655, 644,
+ 644, 655, 656, 645,
+ 645, 656, 657, 646,
+ 646, 657, 658, 647,
+ 647, 658, 659, 648,
+ 648, 659, 660, 649,
+ 649, 660, 661, 650,
+ 650, 661, 662, 651,
+ 651, 662, 663, 652,
+ 652, 663, 664, 653,
+ 653, 664, 293, 294,
+ 9, 10, 665, 654,
+ 654, 665, 666, 655,
+ 655, 666, 667, 656,
+ 656, 667, 668, 657,
+ 657, 668, 669, 658,
+ 658, 669, 670, 659,
+ 659, 670, 671, 660,
+ 660, 671, 672, 661,
+ 661, 672, 673, 662,
+ 662, 673, 674, 663,
+ 663, 674, 675, 664,
+ 664, 675, 292, 293,
+ 10, 11, 676, 665,
+ 665, 676, 677, 666,
+ 666, 677, 678, 667,
+ 667, 678, 679, 668,
+ 668, 679, 680, 669,
+ 669, 680, 681, 670,
+ 670, 681, 682, 671,
+ 671, 682, 683, 672,
+ 672, 683, 684, 673,
+ 673, 684, 685, 674,
+ 674, 685, 686, 675,
+ 675, 686, 291, 292,
+ 11, 12, 687, 676,
+ 676, 687, 688, 677,
+ 677, 688, 689, 678,
+ 678, 689, 690, 679,
+ 679, 690, 691, 680,
+ 680, 691, 692, 681,
+ 681, 692, 693, 682,
+ 682, 693, 694, 683,
+ 683, 694, 695, 684,
+ 684, 695, 696, 685,
+ 685, 696, 697, 686,
+ 686, 697, 290, 291,
+ 12, 145, 146, 687,
+ 687, 146, 147, 688,
+ 688, 147, 148, 689,
+ 689, 148, 149, 690,
+ 690, 149, 150, 691,
+ 691, 150, 151, 692,
+ 692, 151, 152, 693,
+ 693, 152, 153, 694,
+ 694, 153, 154, 695,
+ 695, 154, 155, 696,
+ 696, 155, 156, 697,
+ 697, 156, 289, 290,
+ 710, 711, 699, 698,
+ 711, 712, 700, 699,
+ 712, 713, 701, 700,
+ 713, 714, 702, 701,
+ 714, 715, 703, 702,
+ 715, 716, 704, 703,
+ 716, 717, 705, 704,
+ 717, 718, 706, 705,
+ 718, 719, 707, 706,
+ 719, 720, 708, 707,
+ 720, 721, 709, 708,
+ 721, 855, 854, 709,
+ 722, 723, 711, 710,
+ 723, 724, 712, 711,
+ 724, 725, 713, 712,
+ 725, 726, 714, 713,
+ 726, 727, 715, 714,
+ 727, 728, 716, 715,
+ 728, 729, 717, 716,
+ 729, 730, 718, 717,
+ 730, 731, 719, 718,
+ 731, 732, 720, 719,
+ 732, 733, 721, 720,
+ 733, 856, 855, 721,
+ 734, 735, 723, 722,
+ 735, 736, 724, 723,
+ 736, 737, 725, 724,
+ 737, 738, 726, 725,
+ 738, 739, 727, 726,
+ 739, 740, 728, 727,
+ 740, 741, 729, 728,
+ 741, 742, 730, 729,
+ 742, 743, 731, 730,
+ 743, 744, 732, 731,
+ 744, 745, 733, 732,
+ 745, 857, 856, 733,
+ 746, 747, 735, 734,
+ 747, 748, 736, 735,
+ 748, 749, 737, 736,
+ 749, 750, 738, 737,
+ 750, 751, 739, 738,
+ 751, 752, 740, 739,
+ 752, 753, 741, 740,
+ 753, 754, 742, 741,
+ 754, 755, 743, 742,
+ 755, 756, 744, 743,
+ 756, 757, 745, 744,
+ 757, 858, 857, 745,
+ 758, 759, 747, 746,
+ 759, 760, 748, 747,
+ 760, 761, 749, 748,
+ 761, 762, 750, 749,
+ 762, 763, 751, 750,
+ 763, 764, 752, 751,
+ 764, 765, 753, 752,
+ 765, 766, 754, 753,
+ 766, 767, 755, 754,
+ 767, 768, 756, 755,
+ 768, 769, 757, 756,
+ 769, 859, 858, 757,
+ 770, 771, 759, 758,
+ 771, 772, 760, 759,
+ 772, 773, 761, 760,
+ 773, 774, 762, 761,
+ 774, 775, 763, 762,
+ 775, 776, 764, 763,
+ 776, 777, 765, 764,
+ 777, 778, 766, 765,
+ 778, 779, 767, 766,
+ 779, 780, 768, 767,
+ 780, 781, 769, 768,
+ 781, 860, 859, 769,
+ 782, 783, 771, 770,
+ 783, 784, 772, 771,
+ 784, 785, 773, 772,
+ 785, 786, 774, 773,
+ 786, 787, 775, 774,
+ 787, 788, 776, 775,
+ 788, 789, 777, 776,
+ 789, 790, 778, 777,
+ 790, 791, 779, 778,
+ 791, 792, 780, 779,
+ 792, 793, 781, 780,
+ 793, 861, 860, 781,
+ 794, 795, 783, 782,
+ 795, 796, 784, 783,
+ 796, 797, 785, 784,
+ 797, 798, 786, 785,
+ 798, 799, 787, 786,
+ 799, 800, 788, 787,
+ 800, 801, 789, 788,
+ 801, 802, 790, 789,
+ 802, 803, 791, 790,
+ 803, 804, 792, 791,
+ 804, 805, 793, 792,
+ 805, 862, 861, 793,
+ 806, 807, 795, 794,
+ 807, 808, 796, 795,
+ 808, 809, 797, 796,
+ 809, 810, 798, 797,
+ 810, 811, 799, 798,
+ 811, 812, 800, 799,
+ 812, 813, 801, 800,
+ 813, 814, 802, 801,
+ 814, 815, 803, 802,
+ 815, 816, 804, 803,
+ 816, 817, 805, 804,
+ 817, 863, 862, 805,
+ 818, 819, 807, 806,
+ 819, 820, 808, 807,
+ 820, 821, 809, 808,
+ 821, 822, 810, 809,
+ 822, 823, 811, 810,
+ 823, 824, 812, 811,
+ 824, 825, 813, 812,
+ 825, 826, 814, 813,
+ 826, 827, 815, 814,
+ 827, 828, 816, 815,
+ 828, 829, 817, 816,
+ 829, 864, 863, 817,
+ 830, 831, 819, 818,
+ 831, 832, 820, 819,
+ 832, 833, 821, 820,
+ 833, 834, 822, 821,
+ 834, 835, 823, 822,
+ 835, 836, 824, 823,
+ 836, 837, 825, 824,
+ 837, 838, 826, 825,
+ 838, 839, 827, 826,
+ 839, 840, 828, 827,
+ 840, 841, 829, 828,
+ 841, 865, 864, 829,
+ 842, 843, 831, 830,
+ 843, 844, 832, 831,
+ 844, 845, 833, 832,
+ 845, 846, 834, 833,
+ 846, 847, 835, 834,
+ 847, 848, 836, 835,
+ 848, 849, 837, 836,
+ 849, 850, 838, 837,
+ 850, 851, 839, 838,
+ 851, 852, 840, 839,
+ 852, 853, 841, 840,
+ 853, 866, 865, 841 ;
+
+ dynamics_edge_nodes =
+ 1, 2,
+ 13, 1,
+ 14, 13,
+ 2, 3,
+ 14, 2,
+ 15, 14,
+ 3, 4,
+ 15, 3,
+ 16, 15,
+ 4, 5,
+ 16, 4,
+ 17, 16,
+ 5, 6,
+ 17, 5,
+ 18, 17,
+ 6, 7,
+ 18, 6,
+ 19, 18,
+ 7, 8,
+ 19, 7,
+ 20, 19,
+ 8, 9,
+ 20, 8,
+ 21, 20,
+ 9, 10,
+ 21, 9,
+ 22, 21,
+ 10, 11,
+ 22, 10,
+ 23, 22,
+ 11, 12,
+ 23, 11,
+ 24, 23,
+ 12, 145,
+ 24, 12,
+ 157, 24,
+ 25, 13,
+ 26, 25,
+ 26, 14,
+ 27, 26,
+ 27, 15,
+ 28, 27,
+ 28, 16,
+ 29, 28,
+ 29, 17,
+ 30, 29,
+ 30, 18,
+ 31, 30,
+ 31, 19,
+ 32, 31,
+ 32, 20,
+ 33, 32,
+ 33, 21,
+ 34, 33,
+ 34, 22,
+ 35, 34,
+ 35, 23,
+ 36, 35,
+ 36, 24,
+ 169, 36,
+ 37, 25,
+ 38, 37,
+ 38, 26,
+ 39, 38,
+ 39, 27,
+ 40, 39,
+ 40, 28,
+ 41, 40,
+ 41, 29,
+ 42, 41,
+ 42, 30,
+ 43, 42,
+ 43, 31,
+ 44, 43,
+ 44, 32,
+ 45, 44,
+ 45, 33,
+ 46, 45,
+ 46, 34,
+ 47, 46,
+ 47, 35,
+ 48, 47,
+ 48, 36,
+ 181, 48,
+ 49, 37,
+ 50, 49,
+ 50, 38,
+ 51, 50,
+ 51, 39,
+ 52, 51,
+ 52, 40,
+ 53, 52,
+ 53, 41,
+ 54, 53,
+ 54, 42,
+ 55, 54,
+ 55, 43,
+ 56, 55,
+ 56, 44,
+ 57, 56,
+ 57, 45,
+ 58, 57,
+ 58, 46,
+ 59, 58,
+ 59, 47,
+ 60, 59,
+ 60, 48,
+ 193, 60,
+ 61, 49,
+ 62, 61,
+ 62, 50,
+ 63, 62,
+ 63, 51,
+ 64, 63,
+ 64, 52,
+ 65, 64,
+ 65, 53,
+ 66, 65,
+ 66, 54,
+ 67, 66,
+ 67, 55,
+ 68, 67,
+ 68, 56,
+ 69, 68,
+ 69, 57,
+ 70, 69,
+ 70, 58,
+ 71, 70,
+ 71, 59,
+ 72, 71,
+ 72, 60,
+ 205, 72,
+ 73, 61,
+ 74, 73,
+ 74, 62,
+ 75, 74,
+ 75, 63,
+ 76, 75,
+ 76, 64,
+ 77, 76,
+ 77, 65,
+ 78, 77,
+ 78, 66,
+ 79, 78,
+ 79, 67,
+ 80, 79,
+ 80, 68,
+ 81, 80,
+ 81, 69,
+ 82, 81,
+ 82, 70,
+ 83, 82,
+ 83, 71,
+ 84, 83,
+ 84, 72,
+ 217, 84,
+ 85, 73,
+ 86, 85,
+ 86, 74,
+ 87, 86,
+ 87, 75,
+ 88, 87,
+ 88, 76,
+ 89, 88,
+ 89, 77,
+ 90, 89,
+ 90, 78,
+ 91, 90,
+ 91, 79,
+ 92, 91,
+ 92, 80,
+ 93, 92,
+ 93, 81,
+ 94, 93,
+ 94, 82,
+ 95, 94,
+ 95, 83,
+ 96, 95,
+ 96, 84,
+ 229, 96,
+ 97, 85,
+ 98, 97,
+ 98, 86,
+ 99, 98,
+ 99, 87,
+ 100, 99,
+ 100, 88,
+ 101, 100,
+ 101, 89,
+ 102, 101,
+ 102, 90,
+ 103, 102,
+ 103, 91,
+ 104, 103,
+ 104, 92,
+ 105, 104,
+ 105, 93,
+ 106, 105,
+ 106, 94,
+ 107, 106,
+ 107, 95,
+ 108, 107,
+ 108, 96,
+ 241, 108,
+ 109, 97,
+ 110, 109,
+ 110, 98,
+ 111, 110,
+ 111, 99,
+ 112, 111,
+ 112, 100,
+ 113, 112,
+ 113, 101,
+ 114, 113,
+ 114, 102,
+ 115, 114,
+ 115, 103,
+ 116, 115,
+ 116, 104,
+ 117, 116,
+ 117, 105,
+ 118, 117,
+ 118, 106,
+ 119, 118,
+ 119, 107,
+ 120, 119,
+ 120, 108,
+ 253, 120,
+ 121, 109,
+ 122, 121,
+ 122, 110,
+ 123, 122,
+ 123, 111,
+ 124, 123,
+ 124, 112,
+ 125, 124,
+ 125, 113,
+ 126, 125,
+ 126, 114,
+ 127, 126,
+ 127, 115,
+ 128, 127,
+ 128, 116,
+ 129, 128,
+ 129, 117,
+ 130, 129,
+ 130, 118,
+ 131, 130,
+ 131, 119,
+ 132, 131,
+ 132, 120,
+ 265, 132,
+ 133, 121,
+ 134, 133,
+ 134, 122,
+ 135, 134,
+ 135, 123,
+ 136, 135,
+ 136, 124,
+ 137, 136,
+ 137, 125,
+ 138, 137,
+ 138, 126,
+ 139, 138,
+ 139, 127,
+ 140, 139,
+ 140, 128,
+ 141, 140,
+ 141, 129,
+ 142, 141,
+ 142, 130,
+ 143, 142,
+ 143, 131,
+ 144, 143,
+ 144, 132,
+ 277, 144,
+ 842, 133,
+ 830, 842,
+ 830, 134,
+ 818, 830,
+ 818, 135,
+ 806, 818,
+ 806, 136,
+ 794, 806,
+ 794, 137,
+ 782, 794,
+ 782, 138,
+ 770, 782,
+ 770, 139,
+ 758, 770,
+ 758, 140,
+ 746, 758,
+ 746, 141,
+ 734, 746,
+ 734, 142,
+ 722, 734,
+ 722, 143,
+ 710, 722,
+ 710, 144,
+ 698, 710,
+ 145, 146,
+ 157, 145,
+ 158, 157,
+ 146, 147,
+ 158, 146,
+ 159, 158,
+ 147, 148,
+ 159, 147,
+ 160, 159,
+ 148, 149,
+ 160, 148,
+ 161, 160,
+ 149, 150,
+ 161, 149,
+ 162, 161,
+ 150, 151,
+ 162, 150,
+ 163, 162,
+ 151, 152,
+ 163, 151,
+ 164, 163,
+ 152, 153,
+ 164, 152,
+ 165, 164,
+ 153, 154,
+ 165, 153,
+ 166, 165,
+ 154, 155,
+ 166, 154,
+ 167, 166,
+ 155, 156,
+ 167, 155,
+ 168, 167,
+ 156, 289,
+ 168, 156,
+ 301, 168,
+ 169, 157,
+ 170, 169,
+ 170, 158,
+ 171, 170,
+ 171, 159,
+ 172, 171,
+ 172, 160,
+ 173, 172,
+ 173, 161,
+ 174, 173,
+ 174, 162,
+ 175, 174,
+ 175, 163,
+ 176, 175,
+ 176, 164,
+ 177, 176,
+ 177, 165,
+ 178, 177,
+ 178, 166,
+ 179, 178,
+ 179, 167,
+ 180, 179,
+ 180, 168,
+ 313, 180,
+ 181, 169,
+ 182, 181,
+ 182, 170,
+ 183, 182,
+ 183, 171,
+ 184, 183,
+ 184, 172,
+ 185, 184,
+ 185, 173,
+ 186, 185,
+ 186, 174,
+ 187, 186,
+ 187, 175,
+ 188, 187,
+ 188, 176,
+ 189, 188,
+ 189, 177,
+ 190, 189,
+ 190, 178,
+ 191, 190,
+ 191, 179,
+ 192, 191,
+ 192, 180,
+ 325, 192,
+ 193, 181,
+ 194, 193,
+ 194, 182,
+ 195, 194,
+ 195, 183,
+ 196, 195,
+ 196, 184,
+ 197, 196,
+ 197, 185,
+ 198, 197,
+ 198, 186,
+ 199, 198,
+ 199, 187,
+ 200, 199,
+ 200, 188,
+ 201, 200,
+ 201, 189,
+ 202, 201,
+ 202, 190,
+ 203, 202,
+ 203, 191,
+ 204, 203,
+ 204, 192,
+ 337, 204,
+ 205, 193,
+ 206, 205,
+ 206, 194,
+ 207, 206,
+ 207, 195,
+ 208, 207,
+ 208, 196,
+ 209, 208,
+ 209, 197,
+ 210, 209,
+ 210, 198,
+ 211, 210,
+ 211, 199,
+ 212, 211,
+ 212, 200,
+ 213, 212,
+ 213, 201,
+ 214, 213,
+ 214, 202,
+ 215, 214,
+ 215, 203,
+ 216, 215,
+ 216, 204,
+ 349, 216,
+ 217, 205,
+ 218, 217,
+ 218, 206,
+ 219, 218,
+ 219, 207,
+ 220, 219,
+ 220, 208,
+ 221, 220,
+ 221, 209,
+ 222, 221,
+ 222, 210,
+ 223, 222,
+ 223, 211,
+ 224, 223,
+ 224, 212,
+ 225, 224,
+ 225, 213,
+ 226, 225,
+ 226, 214,
+ 227, 226,
+ 227, 215,
+ 228, 227,
+ 228, 216,
+ 361, 228,
+ 229, 217,
+ 230, 229,
+ 230, 218,
+ 231, 230,
+ 231, 219,
+ 232, 231,
+ 232, 220,
+ 233, 232,
+ 233, 221,
+ 234, 233,
+ 234, 222,
+ 235, 234,
+ 235, 223,
+ 236, 235,
+ 236, 224,
+ 237, 236,
+ 237, 225,
+ 238, 237,
+ 238, 226,
+ 239, 238,
+ 239, 227,
+ 240, 239,
+ 240, 228,
+ 373, 240,
+ 241, 229,
+ 242, 241,
+ 242, 230,
+ 243, 242,
+ 243, 231,
+ 244, 243,
+ 244, 232,
+ 245, 244,
+ 245, 233,
+ 246, 245,
+ 246, 234,
+ 247, 246,
+ 247, 235,
+ 248, 247,
+ 248, 236,
+ 249, 248,
+ 249, 237,
+ 250, 249,
+ 250, 238,
+ 251, 250,
+ 251, 239,
+ 252, 251,
+ 252, 240,
+ 385, 252,
+ 253, 241,
+ 254, 253,
+ 254, 242,
+ 255, 254,
+ 255, 243,
+ 256, 255,
+ 256, 244,
+ 257, 256,
+ 257, 245,
+ 258, 257,
+ 258, 246,
+ 259, 258,
+ 259, 247,
+ 260, 259,
+ 260, 248,
+ 261, 260,
+ 261, 249,
+ 262, 261,
+ 262, 250,
+ 263, 262,
+ 263, 251,
+ 264, 263,
+ 264, 252,
+ 397, 264,
+ 265, 253,
+ 266, 265,
+ 266, 254,
+ 267, 266,
+ 267, 255,
+ 268, 267,
+ 268, 256,
+ 269, 268,
+ 269, 257,
+ 270, 269,
+ 270, 258,
+ 271, 270,
+ 271, 259,
+ 272, 271,
+ 272, 260,
+ 273, 272,
+ 273, 261,
+ 274, 273,
+ 274, 262,
+ 275, 274,
+ 275, 263,
+ 276, 275,
+ 276, 264,
+ 409, 276,
+ 277, 265,
+ 278, 277,
+ 278, 266,
+ 279, 278,
+ 279, 267,
+ 280, 279,
+ 280, 268,
+ 281, 280,
+ 281, 269,
+ 282, 281,
+ 282, 270,
+ 283, 282,
+ 283, 271,
+ 284, 283,
+ 284, 272,
+ 285, 284,
+ 285, 273,
+ 286, 285,
+ 286, 274,
+ 287, 286,
+ 287, 275,
+ 288, 287,
+ 288, 276,
+ 421, 288,
+ 698, 277,
+ 699, 698,
+ 699, 278,
+ 700, 699,
+ 700, 279,
+ 701, 700,
+ 701, 280,
+ 702, 701,
+ 702, 281,
+ 703, 702,
+ 703, 282,
+ 704, 703,
+ 704, 283,
+ 705, 704,
+ 705, 284,
+ 706, 705,
+ 706, 285,
+ 707, 706,
+ 707, 286,
+ 708, 707,
+ 708, 287,
+ 709, 708,
+ 709, 288,
+ 854, 709,
+ 289, 290,
+ 301, 289,
+ 302, 301,
+ 290, 291,
+ 302, 290,
+ 303, 302,
+ 291, 292,
+ 303, 291,
+ 304, 303,
+ 292, 293,
+ 304, 292,
+ 305, 304,
+ 293, 294,
+ 305, 293,
+ 306, 305,
+ 294, 295,
+ 306, 294,
+ 307, 306,
+ 295, 296,
+ 307, 295,
+ 308, 307,
+ 296, 297,
+ 308, 296,
+ 309, 308,
+ 297, 298,
+ 309, 297,
+ 310, 309,
+ 298, 299,
+ 310, 298,
+ 311, 310,
+ 299, 300,
+ 311, 299,
+ 312, 311,
+ 300, 433,
+ 312, 300,
+ 445, 312,
+ 313, 301,
+ 314, 313,
+ 314, 302,
+ 315, 314,
+ 315, 303,
+ 316, 315,
+ 316, 304,
+ 317, 316,
+ 317, 305,
+ 318, 317,
+ 318, 306,
+ 319, 318,
+ 319, 307,
+ 320, 319,
+ 320, 308,
+ 321, 320,
+ 321, 309,
+ 322, 321,
+ 322, 310,
+ 323, 322,
+ 323, 311,
+ 324, 323,
+ 324, 312,
+ 457, 324,
+ 325, 313,
+ 326, 325,
+ 326, 314,
+ 327, 326,
+ 327, 315,
+ 328, 327,
+ 328, 316,
+ 329, 328,
+ 329, 317,
+ 330, 329,
+ 330, 318,
+ 331, 330,
+ 331, 319,
+ 332, 331,
+ 332, 320,
+ 333, 332,
+ 333, 321,
+ 334, 333,
+ 334, 322,
+ 335, 334,
+ 335, 323,
+ 336, 335,
+ 336, 324,
+ 469, 336,
+ 337, 325,
+ 338, 337,
+ 338, 326,
+ 339, 338,
+ 339, 327,
+ 340, 339,
+ 340, 328,
+ 341, 340,
+ 341, 329,
+ 342, 341,
+ 342, 330,
+ 343, 342,
+ 343, 331,
+ 344, 343,
+ 344, 332,
+ 345, 344,
+ 345, 333,
+ 346, 345,
+ 346, 334,
+ 347, 346,
+ 347, 335,
+ 348, 347,
+ 348, 336,
+ 481, 348,
+ 349, 337,
+ 350, 349,
+ 350, 338,
+ 351, 350,
+ 351, 339,
+ 352, 351,
+ 352, 340,
+ 353, 352,
+ 353, 341,
+ 354, 353,
+ 354, 342,
+ 355, 354,
+ 355, 343,
+ 356, 355,
+ 356, 344,
+ 357, 356,
+ 357, 345,
+ 358, 357,
+ 358, 346,
+ 359, 358,
+ 359, 347,
+ 360, 359,
+ 360, 348,
+ 493, 360,
+ 361, 349,
+ 362, 361,
+ 362, 350,
+ 363, 362,
+ 363, 351,
+ 364, 363,
+ 364, 352,
+ 365, 364,
+ 365, 353,
+ 366, 365,
+ 366, 354,
+ 367, 366,
+ 367, 355,
+ 368, 367,
+ 368, 356,
+ 369, 368,
+ 369, 357,
+ 370, 369,
+ 370, 358,
+ 371, 370,
+ 371, 359,
+ 372, 371,
+ 372, 360,
+ 505, 372,
+ 373, 361,
+ 374, 373,
+ 374, 362,
+ 375, 374,
+ 375, 363,
+ 376, 375,
+ 376, 364,
+ 377, 376,
+ 377, 365,
+ 378, 377,
+ 378, 366,
+ 379, 378,
+ 379, 367,
+ 380, 379,
+ 380, 368,
+ 381, 380,
+ 381, 369,
+ 382, 381,
+ 382, 370,
+ 383, 382,
+ 383, 371,
+ 384, 383,
+ 384, 372,
+ 517, 384,
+ 385, 373,
+ 386, 385,
+ 386, 374,
+ 387, 386,
+ 387, 375,
+ 388, 387,
+ 388, 376,
+ 389, 388,
+ 389, 377,
+ 390, 389,
+ 390, 378,
+ 391, 390,
+ 391, 379,
+ 392, 391,
+ 392, 380,
+ 393, 392,
+ 393, 381,
+ 394, 393,
+ 394, 382,
+ 395, 394,
+ 395, 383,
+ 396, 395,
+ 396, 384,
+ 529, 396,
+ 397, 385,
+ 398, 397,
+ 398, 386,
+ 399, 398,
+ 399, 387,
+ 400, 399,
+ 400, 388,
+ 401, 400,
+ 401, 389,
+ 402, 401,
+ 402, 390,
+ 403, 402,
+ 403, 391,
+ 404, 403,
+ 404, 392,
+ 405, 404,
+ 405, 393,
+ 406, 405,
+ 406, 394,
+ 407, 406,
+ 407, 395,
+ 408, 407,
+ 408, 396,
+ 541, 408,
+ 409, 397,
+ 410, 409,
+ 410, 398,
+ 411, 410,
+ 411, 399,
+ 412, 411,
+ 412, 400,
+ 413, 412,
+ 413, 401,
+ 414, 413,
+ 414, 402,
+ 415, 414,
+ 415, 403,
+ 416, 415,
+ 416, 404,
+ 417, 416,
+ 417, 405,
+ 418, 417,
+ 418, 406,
+ 419, 418,
+ 419, 407,
+ 420, 419,
+ 420, 408,
+ 553, 420,
+ 421, 409,
+ 422, 421,
+ 422, 410,
+ 423, 422,
+ 423, 411,
+ 424, 423,
+ 424, 412,
+ 425, 424,
+ 425, 413,
+ 426, 425,
+ 426, 414,
+ 427, 426,
+ 427, 415,
+ 428, 427,
+ 428, 416,
+ 429, 428,
+ 429, 417,
+ 430, 429,
+ 430, 418,
+ 431, 430,
+ 431, 419,
+ 432, 431,
+ 432, 420,
+ 565, 432,
+ 854, 421,
+ 855, 854,
+ 855, 422,
+ 856, 855,
+ 856, 423,
+ 857, 856,
+ 857, 424,
+ 858, 857,
+ 858, 425,
+ 859, 858,
+ 859, 426,
+ 860, 859,
+ 860, 427,
+ 861, 860,
+ 861, 428,
+ 862, 861,
+ 862, 429,
+ 863, 862,
+ 863, 430,
+ 864, 863,
+ 864, 431,
+ 865, 864,
+ 865, 432,
+ 866, 865,
+ 433, 434,
+ 445, 433,
+ 446, 445,
+ 434, 435,
+ 446, 434,
+ 447, 446,
+ 435, 436,
+ 447, 435,
+ 448, 447,
+ 436, 437,
+ 448, 436,
+ 449, 448,
+ 437, 438,
+ 449, 437,
+ 450, 449,
+ 438, 439,
+ 450, 438,
+ 451, 450,
+ 439, 440,
+ 451, 439,
+ 452, 451,
+ 440, 441,
+ 452, 440,
+ 453, 452,
+ 441, 442,
+ 453, 441,
+ 454, 453,
+ 442, 443,
+ 454, 442,
+ 455, 454,
+ 443, 444,
+ 455, 443,
+ 456, 455,
+ 444, 1,
+ 456, 444,
+ 13, 456,
+ 457, 445,
+ 458, 457,
+ 458, 446,
+ 459, 458,
+ 459, 447,
+ 460, 459,
+ 460, 448,
+ 461, 460,
+ 461, 449,
+ 462, 461,
+ 462, 450,
+ 463, 462,
+ 463, 451,
+ 464, 463,
+ 464, 452,
+ 465, 464,
+ 465, 453,
+ 466, 465,
+ 466, 454,
+ 467, 466,
+ 467, 455,
+ 468, 467,
+ 468, 456,
+ 25, 468,
+ 469, 457,
+ 470, 469,
+ 470, 458,
+ 471, 470,
+ 471, 459,
+ 472, 471,
+ 472, 460,
+ 473, 472,
+ 473, 461,
+ 474, 473,
+ 474, 462,
+ 475, 474,
+ 475, 463,
+ 476, 475,
+ 476, 464,
+ 477, 476,
+ 477, 465,
+ 478, 477,
+ 478, 466,
+ 479, 478,
+ 479, 467,
+ 480, 479,
+ 480, 468,
+ 37, 480,
+ 481, 469,
+ 482, 481,
+ 482, 470,
+ 483, 482,
+ 483, 471,
+ 484, 483,
+ 484, 472,
+ 485, 484,
+ 485, 473,
+ 486, 485,
+ 486, 474,
+ 487, 486,
+ 487, 475,
+ 488, 487,
+ 488, 476,
+ 489, 488,
+ 489, 477,
+ 490, 489,
+ 490, 478,
+ 491, 490,
+ 491, 479,
+ 492, 491,
+ 492, 480,
+ 49, 492,
+ 493, 481,
+ 494, 493,
+ 494, 482,
+ 495, 494,
+ 495, 483,
+ 496, 495,
+ 496, 484,
+ 497, 496,
+ 497, 485,
+ 498, 497,
+ 498, 486,
+ 499, 498,
+ 499, 487,
+ 500, 499,
+ 500, 488,
+ 501, 500,
+ 501, 489,
+ 502, 501,
+ 502, 490,
+ 503, 502,
+ 503, 491,
+ 504, 503,
+ 504, 492,
+ 61, 504,
+ 505, 493,
+ 506, 505,
+ 506, 494,
+ 507, 506,
+ 507, 495,
+ 508, 507,
+ 508, 496,
+ 509, 508,
+ 509, 497,
+ 510, 509,
+ 510, 498,
+ 511, 510,
+ 511, 499,
+ 512, 511,
+ 512, 500,
+ 513, 512,
+ 513, 501,
+ 514, 513,
+ 514, 502,
+ 515, 514,
+ 515, 503,
+ 516, 515,
+ 516, 504,
+ 73, 516,
+ 517, 505,
+ 518, 517,
+ 518, 506,
+ 519, 518,
+ 519, 507,
+ 520, 519,
+ 520, 508,
+ 521, 520,
+ 521, 509,
+ 522, 521,
+ 522, 510,
+ 523, 522,
+ 523, 511,
+ 524, 523,
+ 524, 512,
+ 525, 524,
+ 525, 513,
+ 526, 525,
+ 526, 514,
+ 527, 526,
+ 527, 515,
+ 528, 527,
+ 528, 516,
+ 85, 528,
+ 529, 517,
+ 530, 529,
+ 530, 518,
+ 531, 530,
+ 531, 519,
+ 532, 531,
+ 532, 520,
+ 533, 532,
+ 533, 521,
+ 534, 533,
+ 534, 522,
+ 535, 534,
+ 535, 523,
+ 536, 535,
+ 536, 524,
+ 537, 536,
+ 537, 525,
+ 538, 537,
+ 538, 526,
+ 539, 538,
+ 539, 527,
+ 540, 539,
+ 540, 528,
+ 97, 540,
+ 541, 529,
+ 542, 541,
+ 542, 530,
+ 543, 542,
+ 543, 531,
+ 544, 543,
+ 544, 532,
+ 545, 544,
+ 545, 533,
+ 546, 545,
+ 546, 534,
+ 547, 546,
+ 547, 535,
+ 548, 547,
+ 548, 536,
+ 549, 548,
+ 549, 537,
+ 550, 549,
+ 550, 538,
+ 551, 550,
+ 551, 539,
+ 552, 551,
+ 552, 540,
+ 109, 552,
+ 553, 541,
+ 554, 553,
+ 554, 542,
+ 555, 554,
+ 555, 543,
+ 556, 555,
+ 556, 544,
+ 557, 556,
+ 557, 545,
+ 558, 557,
+ 558, 546,
+ 559, 558,
+ 559, 547,
+ 560, 559,
+ 560, 548,
+ 561, 560,
+ 561, 549,
+ 562, 561,
+ 562, 550,
+ 563, 562,
+ 563, 551,
+ 564, 563,
+ 564, 552,
+ 121, 564,
+ 565, 553,
+ 566, 565,
+ 566, 554,
+ 567, 566,
+ 567, 555,
+ 568, 567,
+ 568, 556,
+ 569, 568,
+ 569, 557,
+ 570, 569,
+ 570, 558,
+ 571, 570,
+ 571, 559,
+ 572, 571,
+ 572, 560,
+ 573, 572,
+ 573, 561,
+ 574, 573,
+ 574, 562,
+ 575, 574,
+ 575, 563,
+ 576, 575,
+ 576, 564,
+ 133, 576,
+ 866, 565,
+ 853, 866,
+ 853, 566,
+ 852, 853,
+ 852, 567,
+ 851, 852,
+ 851, 568,
+ 850, 851,
+ 850, 569,
+ 849, 850,
+ 849, 570,
+ 848, 849,
+ 848, 571,
+ 847, 848,
+ 847, 572,
+ 846, 847,
+ 846, 573,
+ 845, 846,
+ 845, 574,
+ 844, 845,
+ 844, 575,
+ 843, 844,
+ 843, 576,
+ 842, 843,
+ 577, 2,
+ 578, 577,
+ 579, 578,
+ 580, 579,
+ 581, 580,
+ 582, 581,
+ 583, 582,
+ 584, 583,
+ 585, 584,
+ 586, 585,
+ 587, 586,
+ 300, 587,
+ 588, 3,
+ 589, 588,
+ 590, 589,
+ 591, 590,
+ 592, 591,
+ 593, 592,
+ 594, 593,
+ 595, 594,
+ 596, 595,
+ 597, 596,
+ 598, 597,
+ 299, 598,
+ 599, 4,
+ 600, 599,
+ 601, 600,
+ 602, 601,
+ 603, 602,
+ 604, 603,
+ 605, 604,
+ 606, 605,
+ 607, 606,
+ 608, 607,
+ 609, 608,
+ 298, 609,
+ 610, 5,
+ 611, 610,
+ 612, 611,
+ 613, 612,
+ 614, 613,
+ 615, 614,
+ 616, 615,
+ 617, 616,
+ 618, 617,
+ 619, 618,
+ 620, 619,
+ 297, 620,
+ 621, 6,
+ 622, 621,
+ 623, 622,
+ 624, 623,
+ 625, 624,
+ 626, 625,
+ 627, 626,
+ 628, 627,
+ 629, 628,
+ 630, 629,
+ 631, 630,
+ 296, 631,
+ 632, 7,
+ 633, 632,
+ 634, 633,
+ 635, 634,
+ 636, 635,
+ 637, 636,
+ 638, 637,
+ 639, 638,
+ 640, 639,
+ 641, 640,
+ 642, 641,
+ 295, 642,
+ 643, 8,
+ 644, 643,
+ 645, 644,
+ 646, 645,
+ 647, 646,
+ 648, 647,
+ 649, 648,
+ 650, 649,
+ 651, 650,
+ 652, 651,
+ 653, 652,
+ 294, 653,
+ 654, 9,
+ 655, 654,
+ 656, 655,
+ 657, 656,
+ 658, 657,
+ 659, 658,
+ 660, 659,
+ 661, 660,
+ 662, 661,
+ 663, 662,
+ 664, 663,
+ 293, 664,
+ 665, 10,
+ 666, 665,
+ 667, 666,
+ 668, 667,
+ 669, 668,
+ 670, 669,
+ 671, 670,
+ 672, 671,
+ 673, 672,
+ 674, 673,
+ 675, 674,
+ 292, 675,
+ 676, 11,
+ 677, 676,
+ 678, 677,
+ 679, 678,
+ 680, 679,
+ 681, 680,
+ 682, 681,
+ 683, 682,
+ 684, 683,
+ 685, 684,
+ 686, 685,
+ 291, 686,
+ 687, 12,
+ 688, 687,
+ 689, 688,
+ 690, 689,
+ 691, 690,
+ 692, 691,
+ 693, 692,
+ 694, 693,
+ 695, 694,
+ 696, 695,
+ 697, 696,
+ 290, 697,
+ 444, 577,
+ 443, 578,
+ 442, 579,
+ 441, 580,
+ 440, 581,
+ 439, 582,
+ 438, 583,
+ 437, 584,
+ 436, 585,
+ 435, 586,
+ 434, 587,
+ 577, 588,
+ 578, 589,
+ 579, 590,
+ 580, 591,
+ 581, 592,
+ 582, 593,
+ 583, 594,
+ 584, 595,
+ 585, 596,
+ 586, 597,
+ 587, 598,
+ 588, 599,
+ 589, 600,
+ 590, 601,
+ 591, 602,
+ 592, 603,
+ 593, 604,
+ 594, 605,
+ 595, 606,
+ 596, 607,
+ 597, 608,
+ 598, 609,
+ 599, 610,
+ 600, 611,
+ 601, 612,
+ 602, 613,
+ 603, 614,
+ 604, 615,
+ 605, 616,
+ 606, 617,
+ 607, 618,
+ 608, 619,
+ 609, 620,
+ 610, 621,
+ 611, 622,
+ 612, 623,
+ 613, 624,
+ 614, 625,
+ 615, 626,
+ 616, 627,
+ 617, 628,
+ 618, 629,
+ 619, 630,
+ 620, 631,
+ 621, 632,
+ 622, 633,
+ 623, 634,
+ 624, 635,
+ 625, 636,
+ 626, 637,
+ 627, 638,
+ 628, 639,
+ 629, 640,
+ 630, 641,
+ 631, 642,
+ 632, 643,
+ 633, 644,
+ 634, 645,
+ 635, 646,
+ 636, 647,
+ 637, 648,
+ 638, 649,
+ 639, 650,
+ 640, 651,
+ 641, 652,
+ 642, 653,
+ 643, 654,
+ 644, 655,
+ 645, 656,
+ 646, 657,
+ 647, 658,
+ 648, 659,
+ 649, 660,
+ 650, 661,
+ 651, 662,
+ 652, 663,
+ 653, 664,
+ 654, 665,
+ 655, 666,
+ 656, 667,
+ 657, 668,
+ 658, 669,
+ 659, 670,
+ 660, 671,
+ 661, 672,
+ 662, 673,
+ 663, 674,
+ 664, 675,
+ 665, 676,
+ 666, 677,
+ 667, 678,
+ 668, 679,
+ 669, 680,
+ 670, 681,
+ 671, 682,
+ 672, 683,
+ 673, 684,
+ 674, 685,
+ 675, 686,
+ 676, 687,
+ 677, 688,
+ 678, 689,
+ 679, 690,
+ 680, 691,
+ 681, 692,
+ 682, 693,
+ 683, 694,
+ 684, 695,
+ 685, 696,
+ 686, 697,
+ 687, 146,
+ 688, 147,
+ 689, 148,
+ 690, 149,
+ 691, 150,
+ 692, 151,
+ 693, 152,
+ 694, 153,
+ 695, 154,
+ 696, 155,
+ 697, 156,
+ 711, 710,
+ 712, 711,
+ 713, 712,
+ 714, 713,
+ 715, 714,
+ 716, 715,
+ 717, 716,
+ 718, 717,
+ 719, 718,
+ 720, 719,
+ 721, 720,
+ 855, 721,
+ 723, 722,
+ 724, 723,
+ 725, 724,
+ 726, 725,
+ 727, 726,
+ 728, 727,
+ 729, 728,
+ 730, 729,
+ 731, 730,
+ 732, 731,
+ 733, 732,
+ 856, 733,
+ 735, 734,
+ 736, 735,
+ 737, 736,
+ 738, 737,
+ 739, 738,
+ 740, 739,
+ 741, 740,
+ 742, 741,
+ 743, 742,
+ 744, 743,
+ 745, 744,
+ 857, 745,
+ 747, 746,
+ 748, 747,
+ 749, 748,
+ 750, 749,
+ 751, 750,
+ 752, 751,
+ 753, 752,
+ 754, 753,
+ 755, 754,
+ 756, 755,
+ 757, 756,
+ 858, 757,
+ 759, 758,
+ 760, 759,
+ 761, 760,
+ 762, 761,
+ 763, 762,
+ 764, 763,
+ 765, 764,
+ 766, 765,
+ 767, 766,
+ 768, 767,
+ 769, 768,
+ 859, 769,
+ 771, 770,
+ 772, 771,
+ 773, 772,
+ 774, 773,
+ 775, 774,
+ 776, 775,
+ 777, 776,
+ 778, 777,
+ 779, 778,
+ 780, 779,
+ 781, 780,
+ 860, 781,
+ 783, 782,
+ 784, 783,
+ 785, 784,
+ 786, 785,
+ 787, 786,
+ 788, 787,
+ 789, 788,
+ 790, 789,
+ 791, 790,
+ 792, 791,
+ 793, 792,
+ 861, 793,
+ 795, 794,
+ 796, 795,
+ 797, 796,
+ 798, 797,
+ 799, 798,
+ 800, 799,
+ 801, 800,
+ 802, 801,
+ 803, 802,
+ 804, 803,
+ 805, 804,
+ 862, 805,
+ 807, 806,
+ 808, 807,
+ 809, 808,
+ 810, 809,
+ 811, 810,
+ 812, 811,
+ 813, 812,
+ 814, 813,
+ 815, 814,
+ 816, 815,
+ 817, 816,
+ 863, 817,
+ 819, 818,
+ 820, 819,
+ 821, 820,
+ 822, 821,
+ 823, 822,
+ 824, 823,
+ 825, 824,
+ 826, 825,
+ 827, 826,
+ 828, 827,
+ 829, 828,
+ 864, 829,
+ 831, 830,
+ 832, 831,
+ 833, 832,
+ 834, 833,
+ 835, 834,
+ 836, 835,
+ 837, 836,
+ 838, 837,
+ 839, 838,
+ 840, 839,
+ 841, 840,
+ 865, 841,
+ 699, 711,
+ 700, 712,
+ 701, 713,
+ 702, 714,
+ 703, 715,
+ 704, 716,
+ 705, 717,
+ 706, 718,
+ 707, 719,
+ 708, 720,
+ 709, 721,
+ 711, 723,
+ 712, 724,
+ 713, 725,
+ 714, 726,
+ 715, 727,
+ 716, 728,
+ 717, 729,
+ 718, 730,
+ 719, 731,
+ 720, 732,
+ 721, 733,
+ 723, 735,
+ 724, 736,
+ 725, 737,
+ 726, 738,
+ 727, 739,
+ 728, 740,
+ 729, 741,
+ 730, 742,
+ 731, 743,
+ 732, 744,
+ 733, 745,
+ 735, 747,
+ 736, 748,
+ 737, 749,
+ 738, 750,
+ 739, 751,
+ 740, 752,
+ 741, 753,
+ 742, 754,
+ 743, 755,
+ 744, 756,
+ 745, 757,
+ 747, 759,
+ 748, 760,
+ 749, 761,
+ 750, 762,
+ 751, 763,
+ 752, 764,
+ 753, 765,
+ 754, 766,
+ 755, 767,
+ 756, 768,
+ 757, 769,
+ 759, 771,
+ 760, 772,
+ 761, 773,
+ 762, 774,
+ 763, 775,
+ 764, 776,
+ 765, 777,
+ 766, 778,
+ 767, 779,
+ 768, 780,
+ 769, 781,
+ 771, 783,
+ 772, 784,
+ 773, 785,
+ 774, 786,
+ 775, 787,
+ 776, 788,
+ 777, 789,
+ 778, 790,
+ 779, 791,
+ 780, 792,
+ 781, 793,
+ 783, 795,
+ 784, 796,
+ 785, 797,
+ 786, 798,
+ 787, 799,
+ 788, 800,
+ 789, 801,
+ 790, 802,
+ 791, 803,
+ 792, 804,
+ 793, 805,
+ 795, 807,
+ 796, 808,
+ 797, 809,
+ 798, 810,
+ 799, 811,
+ 800, 812,
+ 801, 813,
+ 802, 814,
+ 803, 815,
+ 804, 816,
+ 805, 817,
+ 807, 819,
+ 808, 820,
+ 809, 821,
+ 810, 822,
+ 811, 823,
+ 812, 824,
+ 813, 825,
+ 814, 826,
+ 815, 827,
+ 816, 828,
+ 817, 829,
+ 819, 831,
+ 820, 832,
+ 821, 833,
+ 822, 834,
+ 823, 835,
+ 824, 836,
+ 825, 837,
+ 826, 838,
+ 827, 839,
+ 828, 840,
+ 829, 841,
+ 831, 843,
+ 832, 844,
+ 833, 845,
+ 834, 846,
+ 835, 847,
+ 836, 848,
+ 837, 849,
+ 838, 850,
+ 839, 851,
+ 840, 852,
+ 841, 853 ;
+
+ dynamics_face_edges =
+ 2, 3, 5, 1,
+ 5, 6, 8, 4,
+ 8, 9, 11, 7,
+ 11, 12, 14, 10,
+ 14, 15, 17, 13,
+ 17, 18, 20, 16,
+ 20, 21, 23, 19,
+ 23, 24, 26, 22,
+ 26, 27, 29, 25,
+ 29, 30, 32, 28,
+ 32, 33, 35, 31,
+ 35, 36, 302, 34,
+ 37, 38, 39, 3,
+ 39, 40, 41, 6,
+ 41, 42, 43, 9,
+ 43, 44, 45, 12,
+ 45, 46, 47, 15,
+ 47, 48, 49, 18,
+ 49, 50, 51, 21,
+ 51, 52, 53, 24,
+ 53, 54, 55, 27,
+ 55, 56, 57, 30,
+ 57, 58, 59, 33,
+ 59, 60, 337, 36,
+ 61, 62, 63, 38,
+ 63, 64, 65, 40,
+ 65, 66, 67, 42,
+ 67, 68, 69, 44,
+ 69, 70, 71, 46,
+ 71, 72, 73, 48,
+ 73, 74, 75, 50,
+ 75, 76, 77, 52,
+ 77, 78, 79, 54,
+ 79, 80, 81, 56,
+ 81, 82, 83, 58,
+ 83, 84, 361, 60,
+ 85, 86, 87, 62,
+ 87, 88, 89, 64,
+ 89, 90, 91, 66,
+ 91, 92, 93, 68,
+ 93, 94, 95, 70,
+ 95, 96, 97, 72,
+ 97, 98, 99, 74,
+ 99, 100, 101, 76,
+ 101, 102, 103, 78,
+ 103, 104, 105, 80,
+ 105, 106, 107, 82,
+ 107, 108, 385, 84,
+ 109, 110, 111, 86,
+ 111, 112, 113, 88,
+ 113, 114, 115, 90,
+ 115, 116, 117, 92,
+ 117, 118, 119, 94,
+ 119, 120, 121, 96,
+ 121, 122, 123, 98,
+ 123, 124, 125, 100,
+ 125, 126, 127, 102,
+ 127, 128, 129, 104,
+ 129, 130, 131, 106,
+ 131, 132, 409, 108,
+ 133, 134, 135, 110,
+ 135, 136, 137, 112,
+ 137, 138, 139, 114,
+ 139, 140, 141, 116,
+ 141, 142, 143, 118,
+ 143, 144, 145, 120,
+ 145, 146, 147, 122,
+ 147, 148, 149, 124,
+ 149, 150, 151, 126,
+ 151, 152, 153, 128,
+ 153, 154, 155, 130,
+ 155, 156, 433, 132,
+ 157, 158, 159, 134,
+ 159, 160, 161, 136,
+ 161, 162, 163, 138,
+ 163, 164, 165, 140,
+ 165, 166, 167, 142,
+ 167, 168, 169, 144,
+ 169, 170, 171, 146,
+ 171, 172, 173, 148,
+ 173, 174, 175, 150,
+ 175, 176, 177, 152,
+ 177, 178, 179, 154,
+ 179, 180, 457, 156,
+ 181, 182, 183, 158,
+ 183, 184, 185, 160,
+ 185, 186, 187, 162,
+ 187, 188, 189, 164,
+ 189, 190, 191, 166,
+ 191, 192, 193, 168,
+ 193, 194, 195, 170,
+ 195, 196, 197, 172,
+ 197, 198, 199, 174,
+ 199, 200, 201, 176,
+ 201, 202, 203, 178,
+ 203, 204, 481, 180,
+ 205, 206, 207, 182,
+ 207, 208, 209, 184,
+ 209, 210, 211, 186,
+ 211, 212, 213, 188,
+ 213, 214, 215, 190,
+ 215, 216, 217, 192,
+ 217, 218, 219, 194,
+ 219, 220, 221, 196,
+ 221, 222, 223, 198,
+ 223, 224, 225, 200,
+ 225, 226, 227, 202,
+ 227, 228, 505, 204,
+ 229, 230, 231, 206,
+ 231, 232, 233, 208,
+ 233, 234, 235, 210,
+ 235, 236, 237, 212,
+ 237, 238, 239, 214,
+ 239, 240, 241, 216,
+ 241, 242, 243, 218,
+ 243, 244, 245, 220,
+ 245, 246, 247, 222,
+ 247, 248, 249, 224,
+ 249, 250, 251, 226,
+ 251, 252, 529, 228,
+ 253, 254, 255, 230,
+ 255, 256, 257, 232,
+ 257, 258, 259, 234,
+ 259, 260, 261, 236,
+ 261, 262, 263, 238,
+ 263, 264, 265, 240,
+ 265, 266, 267, 242,
+ 267, 268, 269, 244,
+ 269, 270, 271, 246,
+ 271, 272, 273, 248,
+ 273, 274, 275, 250,
+ 275, 276, 553, 252,
+ 277, 278, 279, 254,
+ 279, 280, 281, 256,
+ 281, 282, 283, 258,
+ 283, 284, 285, 260,
+ 285, 286, 287, 262,
+ 287, 288, 289, 264,
+ 289, 290, 291, 266,
+ 291, 292, 293, 268,
+ 293, 294, 295, 270,
+ 295, 296, 297, 272,
+ 297, 298, 299, 274,
+ 299, 300, 577, 276,
+ 302, 303, 305, 301,
+ 305, 306, 308, 304,
+ 308, 309, 311, 307,
+ 311, 312, 314, 310,
+ 314, 315, 317, 313,
+ 317, 318, 320, 316,
+ 320, 321, 323, 319,
+ 323, 324, 326, 322,
+ 326, 327, 329, 325,
+ 329, 330, 332, 328,
+ 332, 333, 335, 331,
+ 335, 336, 602, 334,
+ 337, 338, 339, 303,
+ 339, 340, 341, 306,
+ 341, 342, 343, 309,
+ 343, 344, 345, 312,
+ 345, 346, 347, 315,
+ 347, 348, 349, 318,
+ 349, 350, 351, 321,
+ 351, 352, 353, 324,
+ 353, 354, 355, 327,
+ 355, 356, 357, 330,
+ 357, 358, 359, 333,
+ 359, 360, 637, 336,
+ 361, 362, 363, 338,
+ 363, 364, 365, 340,
+ 365, 366, 367, 342,
+ 367, 368, 369, 344,
+ 369, 370, 371, 346,
+ 371, 372, 373, 348,
+ 373, 374, 375, 350,
+ 375, 376, 377, 352,
+ 377, 378, 379, 354,
+ 379, 380, 381, 356,
+ 381, 382, 383, 358,
+ 383, 384, 661, 360,
+ 385, 386, 387, 362,
+ 387, 388, 389, 364,
+ 389, 390, 391, 366,
+ 391, 392, 393, 368,
+ 393, 394, 395, 370,
+ 395, 396, 397, 372,
+ 397, 398, 399, 374,
+ 399, 400, 401, 376,
+ 401, 402, 403, 378,
+ 403, 404, 405, 380,
+ 405, 406, 407, 382,
+ 407, 408, 685, 384,
+ 409, 410, 411, 386,
+ 411, 412, 413, 388,
+ 413, 414, 415, 390,
+ 415, 416, 417, 392,
+ 417, 418, 419, 394,
+ 419, 420, 421, 396,
+ 421, 422, 423, 398,
+ 423, 424, 425, 400,
+ 425, 426, 427, 402,
+ 427, 428, 429, 404,
+ 429, 430, 431, 406,
+ 431, 432, 709, 408,
+ 433, 434, 435, 410,
+ 435, 436, 437, 412,
+ 437, 438, 439, 414,
+ 439, 440, 441, 416,
+ 441, 442, 443, 418,
+ 443, 444, 445, 420,
+ 445, 446, 447, 422,
+ 447, 448, 449, 424,
+ 449, 450, 451, 426,
+ 451, 452, 453, 428,
+ 453, 454, 455, 430,
+ 455, 456, 733, 432,
+ 457, 458, 459, 434,
+ 459, 460, 461, 436,
+ 461, 462, 463, 438,
+ 463, 464, 465, 440,
+ 465, 466, 467, 442,
+ 467, 468, 469, 444,
+ 469, 470, 471, 446,
+ 471, 472, 473, 448,
+ 473, 474, 475, 450,
+ 475, 476, 477, 452,
+ 477, 478, 479, 454,
+ 479, 480, 757, 456,
+ 481, 482, 483, 458,
+ 483, 484, 485, 460,
+ 485, 486, 487, 462,
+ 487, 488, 489, 464,
+ 489, 490, 491, 466,
+ 491, 492, 493, 468,
+ 493, 494, 495, 470,
+ 495, 496, 497, 472,
+ 497, 498, 499, 474,
+ 499, 500, 501, 476,
+ 501, 502, 503, 478,
+ 503, 504, 781, 480,
+ 505, 506, 507, 482,
+ 507, 508, 509, 484,
+ 509, 510, 511, 486,
+ 511, 512, 513, 488,
+ 513, 514, 515, 490,
+ 515, 516, 517, 492,
+ 517, 518, 519, 494,
+ 519, 520, 521, 496,
+ 521, 522, 523, 498,
+ 523, 524, 525, 500,
+ 525, 526, 527, 502,
+ 527, 528, 805, 504,
+ 529, 530, 531, 506,
+ 531, 532, 533, 508,
+ 533, 534, 535, 510,
+ 535, 536, 537, 512,
+ 537, 538, 539, 514,
+ 539, 540, 541, 516,
+ 541, 542, 543, 518,
+ 543, 544, 545, 520,
+ 545, 546, 547, 522,
+ 547, 548, 549, 524,
+ 549, 550, 551, 526,
+ 551, 552, 829, 528,
+ 553, 554, 555, 530,
+ 555, 556, 557, 532,
+ 557, 558, 559, 534,
+ 559, 560, 561, 536,
+ 561, 562, 563, 538,
+ 563, 564, 565, 540,
+ 565, 566, 567, 542,
+ 567, 568, 569, 544,
+ 569, 570, 571, 546,
+ 571, 572, 573, 548,
+ 573, 574, 575, 550,
+ 575, 576, 853, 552,
+ 577, 578, 579, 554,
+ 579, 580, 581, 556,
+ 581, 582, 583, 558,
+ 583, 584, 585, 560,
+ 585, 586, 587, 562,
+ 587, 588, 589, 564,
+ 589, 590, 591, 566,
+ 591, 592, 593, 568,
+ 593, 594, 595, 570,
+ 595, 596, 597, 572,
+ 597, 598, 599, 574,
+ 599, 600, 877, 576,
+ 603, 605, 601, 602,
+ 606, 608, 604, 605,
+ 609, 611, 607, 608,
+ 612, 614, 610, 611,
+ 615, 617, 613, 614,
+ 618, 620, 616, 617,
+ 621, 623, 619, 620,
+ 624, 626, 622, 623,
+ 627, 629, 625, 626,
+ 630, 632, 628, 629,
+ 633, 635, 631, 632,
+ 636, 902, 634, 635,
+ 638, 639, 603, 637,
+ 640, 641, 606, 639,
+ 642, 643, 609, 641,
+ 644, 645, 612, 643,
+ 646, 647, 615, 645,
+ 648, 649, 618, 647,
+ 650, 651, 621, 649,
+ 652, 653, 624, 651,
+ 654, 655, 627, 653,
+ 656, 657, 630, 655,
+ 658, 659, 633, 657,
+ 660, 937, 636, 659,
+ 662, 663, 638, 661,
+ 664, 665, 640, 663,
+ 666, 667, 642, 665,
+ 668, 669, 644, 667,
+ 670, 671, 646, 669,
+ 672, 673, 648, 671,
+ 674, 675, 650, 673,
+ 676, 677, 652, 675,
+ 678, 679, 654, 677,
+ 680, 681, 656, 679,
+ 682, 683, 658, 681,
+ 684, 961, 660, 683,
+ 686, 687, 662, 685,
+ 688, 689, 664, 687,
+ 690, 691, 666, 689,
+ 692, 693, 668, 691,
+ 694, 695, 670, 693,
+ 696, 697, 672, 695,
+ 698, 699, 674, 697,
+ 700, 701, 676, 699,
+ 702, 703, 678, 701,
+ 704, 705, 680, 703,
+ 706, 707, 682, 705,
+ 708, 985, 684, 707,
+ 710, 711, 686, 709,
+ 712, 713, 688, 711,
+ 714, 715, 690, 713,
+ 716, 717, 692, 715,
+ 718, 719, 694, 717,
+ 720, 721, 696, 719,
+ 722, 723, 698, 721,
+ 724, 725, 700, 723,
+ 726, 727, 702, 725,
+ 728, 729, 704, 727,
+ 730, 731, 706, 729,
+ 732, 1009, 708, 731,
+ 734, 735, 710, 733,
+ 736, 737, 712, 735,
+ 738, 739, 714, 737,
+ 740, 741, 716, 739,
+ 742, 743, 718, 741,
+ 744, 745, 720, 743,
+ 746, 747, 722, 745,
+ 748, 749, 724, 747,
+ 750, 751, 726, 749,
+ 752, 753, 728, 751,
+ 754, 755, 730, 753,
+ 756, 1033, 732, 755,
+ 758, 759, 734, 757,
+ 760, 761, 736, 759,
+ 762, 763, 738, 761,
+ 764, 765, 740, 763,
+ 766, 767, 742, 765,
+ 768, 769, 744, 767,
+ 770, 771, 746, 769,
+ 772, 773, 748, 771,
+ 774, 775, 750, 773,
+ 776, 777, 752, 775,
+ 778, 779, 754, 777,
+ 780, 1057, 756, 779,
+ 782, 783, 758, 781,
+ 784, 785, 760, 783,
+ 786, 787, 762, 785,
+ 788, 789, 764, 787,
+ 790, 791, 766, 789,
+ 792, 793, 768, 791,
+ 794, 795, 770, 793,
+ 796, 797, 772, 795,
+ 798, 799, 774, 797,
+ 800, 801, 776, 799,
+ 802, 803, 778, 801,
+ 804, 1081, 780, 803,
+ 806, 807, 782, 805,
+ 808, 809, 784, 807,
+ 810, 811, 786, 809,
+ 812, 813, 788, 811,
+ 814, 815, 790, 813,
+ 816, 817, 792, 815,
+ 818, 819, 794, 817,
+ 820, 821, 796, 819,
+ 822, 823, 798, 821,
+ 824, 825, 800, 823,
+ 826, 827, 802, 825,
+ 828, 1105, 804, 827,
+ 830, 831, 806, 829,
+ 832, 833, 808, 831,
+ 834, 835, 810, 833,
+ 836, 837, 812, 835,
+ 838, 839, 814, 837,
+ 840, 841, 816, 839,
+ 842, 843, 818, 841,
+ 844, 845, 820, 843,
+ 846, 847, 822, 845,
+ 848, 849, 824, 847,
+ 850, 851, 826, 849,
+ 852, 1129, 828, 851,
+ 854, 855, 830, 853,
+ 856, 857, 832, 855,
+ 858, 859, 834, 857,
+ 860, 861, 836, 859,
+ 862, 863, 838, 861,
+ 864, 865, 840, 863,
+ 866, 867, 842, 865,
+ 868, 869, 844, 867,
+ 870, 871, 846, 869,
+ 872, 873, 848, 871,
+ 874, 875, 850, 873,
+ 876, 1153, 852, 875,
+ 878, 879, 854, 877,
+ 880, 881, 856, 879,
+ 882, 883, 858, 881,
+ 884, 885, 860, 883,
+ 886, 887, 862, 885,
+ 888, 889, 864, 887,
+ 890, 891, 866, 889,
+ 892, 893, 868, 891,
+ 894, 895, 870, 893,
+ 896, 897, 872, 895,
+ 898, 899, 874, 897,
+ 900, 1177, 876, 899,
+ 903, 905, 901, 902,
+ 906, 908, 904, 905,
+ 909, 911, 907, 908,
+ 912, 914, 910, 911,
+ 915, 917, 913, 914,
+ 918, 920, 916, 917,
+ 921, 923, 919, 920,
+ 924, 926, 922, 923,
+ 927, 929, 925, 926,
+ 930, 932, 928, 929,
+ 933, 935, 931, 932,
+ 936, 2, 934, 935,
+ 938, 939, 903, 937,
+ 940, 941, 906, 939,
+ 942, 943, 909, 941,
+ 944, 945, 912, 943,
+ 946, 947, 915, 945,
+ 948, 949, 918, 947,
+ 950, 951, 921, 949,
+ 952, 953, 924, 951,
+ 954, 955, 927, 953,
+ 956, 957, 930, 955,
+ 958, 959, 933, 957,
+ 960, 37, 936, 959,
+ 962, 963, 938, 961,
+ 964, 965, 940, 963,
+ 966, 967, 942, 965,
+ 968, 969, 944, 967,
+ 970, 971, 946, 969,
+ 972, 973, 948, 971,
+ 974, 975, 950, 973,
+ 976, 977, 952, 975,
+ 978, 979, 954, 977,
+ 980, 981, 956, 979,
+ 982, 983, 958, 981,
+ 984, 61, 960, 983,
+ 986, 987, 962, 985,
+ 988, 989, 964, 987,
+ 990, 991, 966, 989,
+ 992, 993, 968, 991,
+ 994, 995, 970, 993,
+ 996, 997, 972, 995,
+ 998, 999, 974, 997,
+ 1000, 1001, 976, 999,
+ 1002, 1003, 978, 1001,
+ 1004, 1005, 980, 1003,
+ 1006, 1007, 982, 1005,
+ 1008, 85, 984, 1007,
+ 1010, 1011, 986, 1009,
+ 1012, 1013, 988, 1011,
+ 1014, 1015, 990, 1013,
+ 1016, 1017, 992, 1015,
+ 1018, 1019, 994, 1017,
+ 1020, 1021, 996, 1019,
+ 1022, 1023, 998, 1021,
+ 1024, 1025, 1000, 1023,
+ 1026, 1027, 1002, 1025,
+ 1028, 1029, 1004, 1027,
+ 1030, 1031, 1006, 1029,
+ 1032, 109, 1008, 1031,
+ 1034, 1035, 1010, 1033,
+ 1036, 1037, 1012, 1035,
+ 1038, 1039, 1014, 1037,
+ 1040, 1041, 1016, 1039,
+ 1042, 1043, 1018, 1041,
+ 1044, 1045, 1020, 1043,
+ 1046, 1047, 1022, 1045,
+ 1048, 1049, 1024, 1047,
+ 1050, 1051, 1026, 1049,
+ 1052, 1053, 1028, 1051,
+ 1054, 1055, 1030, 1053,
+ 1056, 133, 1032, 1055,
+ 1058, 1059, 1034, 1057,
+ 1060, 1061, 1036, 1059,
+ 1062, 1063, 1038, 1061,
+ 1064, 1065, 1040, 1063,
+ 1066, 1067, 1042, 1065,
+ 1068, 1069, 1044, 1067,
+ 1070, 1071, 1046, 1069,
+ 1072, 1073, 1048, 1071,
+ 1074, 1075, 1050, 1073,
+ 1076, 1077, 1052, 1075,
+ 1078, 1079, 1054, 1077,
+ 1080, 157, 1056, 1079,
+ 1082, 1083, 1058, 1081,
+ 1084, 1085, 1060, 1083,
+ 1086, 1087, 1062, 1085,
+ 1088, 1089, 1064, 1087,
+ 1090, 1091, 1066, 1089,
+ 1092, 1093, 1068, 1091,
+ 1094, 1095, 1070, 1093,
+ 1096, 1097, 1072, 1095,
+ 1098, 1099, 1074, 1097,
+ 1100, 1101, 1076, 1099,
+ 1102, 1103, 1078, 1101,
+ 1104, 181, 1080, 1103,
+ 1106, 1107, 1082, 1105,
+ 1108, 1109, 1084, 1107,
+ 1110, 1111, 1086, 1109,
+ 1112, 1113, 1088, 1111,
+ 1114, 1115, 1090, 1113,
+ 1116, 1117, 1092, 1115,
+ 1118, 1119, 1094, 1117,
+ 1120, 1121, 1096, 1119,
+ 1122, 1123, 1098, 1121,
+ 1124, 1125, 1100, 1123,
+ 1126, 1127, 1102, 1125,
+ 1128, 205, 1104, 1127,
+ 1130, 1131, 1106, 1129,
+ 1132, 1133, 1108, 1131,
+ 1134, 1135, 1110, 1133,
+ 1136, 1137, 1112, 1135,
+ 1138, 1139, 1114, 1137,
+ 1140, 1141, 1116, 1139,
+ 1142, 1143, 1118, 1141,
+ 1144, 1145, 1120, 1143,
+ 1146, 1147, 1122, 1145,
+ 1148, 1149, 1124, 1147,
+ 1150, 1151, 1126, 1149,
+ 1152, 229, 1128, 1151,
+ 1154, 1155, 1130, 1153,
+ 1156, 1157, 1132, 1155,
+ 1158, 1159, 1134, 1157,
+ 1160, 1161, 1136, 1159,
+ 1162, 1163, 1138, 1161,
+ 1164, 1165, 1140, 1163,
+ 1166, 1167, 1142, 1165,
+ 1168, 1169, 1144, 1167,
+ 1170, 1171, 1146, 1169,
+ 1172, 1173, 1148, 1171,
+ 1174, 1175, 1150, 1173,
+ 1176, 253, 1152, 1175,
+ 1178, 1179, 1154, 1177,
+ 1180, 1181, 1156, 1179,
+ 1182, 1183, 1158, 1181,
+ 1184, 1185, 1160, 1183,
+ 1186, 1187, 1162, 1185,
+ 1188, 1189, 1164, 1187,
+ 1190, 1191, 1166, 1189,
+ 1192, 1193, 1168, 1191,
+ 1194, 1195, 1170, 1193,
+ 1196, 1197, 1172, 1195,
+ 1198, 1199, 1174, 1197,
+ 1200, 277, 1176, 1199,
+ 934, 1, 1201, 1333,
+ 931, 1333, 1202, 1334,
+ 928, 1334, 1203, 1335,
+ 925, 1335, 1204, 1336,
+ 922, 1336, 1205, 1337,
+ 919, 1337, 1206, 1338,
+ 916, 1338, 1207, 1339,
+ 913, 1339, 1208, 1340,
+ 910, 1340, 1209, 1341,
+ 907, 1341, 1210, 1342,
+ 904, 1342, 1211, 1343,
+ 901, 1343, 1212, 634,
+ 1201, 4, 1213, 1344,
+ 1202, 1344, 1214, 1345,
+ 1203, 1345, 1215, 1346,
+ 1204, 1346, 1216, 1347,
+ 1205, 1347, 1217, 1348,
+ 1206, 1348, 1218, 1349,
+ 1207, 1349, 1219, 1350,
+ 1208, 1350, 1220, 1351,
+ 1209, 1351, 1221, 1352,
+ 1210, 1352, 1222, 1353,
+ 1211, 1353, 1223, 1354,
+ 1212, 1354, 1224, 631,
+ 1213, 7, 1225, 1355,
+ 1214, 1355, 1226, 1356,
+ 1215, 1356, 1227, 1357,
+ 1216, 1357, 1228, 1358,
+ 1217, 1358, 1229, 1359,
+ 1218, 1359, 1230, 1360,
+ 1219, 1360, 1231, 1361,
+ 1220, 1361, 1232, 1362,
+ 1221, 1362, 1233, 1363,
+ 1222, 1363, 1234, 1364,
+ 1223, 1364, 1235, 1365,
+ 1224, 1365, 1236, 628,
+ 1225, 10, 1237, 1366,
+ 1226, 1366, 1238, 1367,
+ 1227, 1367, 1239, 1368,
+ 1228, 1368, 1240, 1369,
+ 1229, 1369, 1241, 1370,
+ 1230, 1370, 1242, 1371,
+ 1231, 1371, 1243, 1372,
+ 1232, 1372, 1244, 1373,
+ 1233, 1373, 1245, 1374,
+ 1234, 1374, 1246, 1375,
+ 1235, 1375, 1247, 1376,
+ 1236, 1376, 1248, 625,
+ 1237, 13, 1249, 1377,
+ 1238, 1377, 1250, 1378,
+ 1239, 1378, 1251, 1379,
+ 1240, 1379, 1252, 1380,
+ 1241, 1380, 1253, 1381,
+ 1242, 1381, 1254, 1382,
+ 1243, 1382, 1255, 1383,
+ 1244, 1383, 1256, 1384,
+ 1245, 1384, 1257, 1385,
+ 1246, 1385, 1258, 1386,
+ 1247, 1386, 1259, 1387,
+ 1248, 1387, 1260, 622,
+ 1249, 16, 1261, 1388,
+ 1250, 1388, 1262, 1389,
+ 1251, 1389, 1263, 1390,
+ 1252, 1390, 1264, 1391,
+ 1253, 1391, 1265, 1392,
+ 1254, 1392, 1266, 1393,
+ 1255, 1393, 1267, 1394,
+ 1256, 1394, 1268, 1395,
+ 1257, 1395, 1269, 1396,
+ 1258, 1396, 1270, 1397,
+ 1259, 1397, 1271, 1398,
+ 1260, 1398, 1272, 619,
+ 1261, 19, 1273, 1399,
+ 1262, 1399, 1274, 1400,
+ 1263, 1400, 1275, 1401,
+ 1264, 1401, 1276, 1402,
+ 1265, 1402, 1277, 1403,
+ 1266, 1403, 1278, 1404,
+ 1267, 1404, 1279, 1405,
+ 1268, 1405, 1280, 1406,
+ 1269, 1406, 1281, 1407,
+ 1270, 1407, 1282, 1408,
+ 1271, 1408, 1283, 1409,
+ 1272, 1409, 1284, 616,
+ 1273, 22, 1285, 1410,
+ 1274, 1410, 1286, 1411,
+ 1275, 1411, 1287, 1412,
+ 1276, 1412, 1288, 1413,
+ 1277, 1413, 1289, 1414,
+ 1278, 1414, 1290, 1415,
+ 1279, 1415, 1291, 1416,
+ 1280, 1416, 1292, 1417,
+ 1281, 1417, 1293, 1418,
+ 1282, 1418, 1294, 1419,
+ 1283, 1419, 1295, 1420,
+ 1284, 1420, 1296, 613,
+ 1285, 25, 1297, 1421,
+ 1286, 1421, 1298, 1422,
+ 1287, 1422, 1299, 1423,
+ 1288, 1423, 1300, 1424,
+ 1289, 1424, 1301, 1425,
+ 1290, 1425, 1302, 1426,
+ 1291, 1426, 1303, 1427,
+ 1292, 1427, 1304, 1428,
+ 1293, 1428, 1305, 1429,
+ 1294, 1429, 1306, 1430,
+ 1295, 1430, 1307, 1431,
+ 1296, 1431, 1308, 610,
+ 1297, 28, 1309, 1432,
+ 1298, 1432, 1310, 1433,
+ 1299, 1433, 1311, 1434,
+ 1300, 1434, 1312, 1435,
+ 1301, 1435, 1313, 1436,
+ 1302, 1436, 1314, 1437,
+ 1303, 1437, 1315, 1438,
+ 1304, 1438, 1316, 1439,
+ 1305, 1439, 1317, 1440,
+ 1306, 1440, 1318, 1441,
+ 1307, 1441, 1319, 1442,
+ 1308, 1442, 1320, 607,
+ 1309, 31, 1321, 1443,
+ 1310, 1443, 1322, 1444,
+ 1311, 1444, 1323, 1445,
+ 1312, 1445, 1324, 1446,
+ 1313, 1446, 1325, 1447,
+ 1314, 1447, 1326, 1448,
+ 1315, 1448, 1327, 1449,
+ 1316, 1449, 1328, 1450,
+ 1317, 1450, 1329, 1451,
+ 1318, 1451, 1330, 1452,
+ 1319, 1452, 1331, 1453,
+ 1320, 1453, 1332, 604,
+ 1321, 34, 301, 1454,
+ 1322, 1454, 304, 1455,
+ 1323, 1455, 307, 1456,
+ 1324, 1456, 310, 1457,
+ 1325, 1457, 313, 1458,
+ 1326, 1458, 316, 1459,
+ 1327, 1459, 319, 1460,
+ 1328, 1460, 322, 1461,
+ 1329, 1461, 325, 1462,
+ 1330, 1462, 328, 1463,
+ 1331, 1463, 331, 1464,
+ 1332, 1464, 334, 601,
+ 300, 1465, 1597, 578,
+ 1597, 1466, 1598, 580,
+ 1598, 1467, 1599, 582,
+ 1599, 1468, 1600, 584,
+ 1600, 1469, 1601, 586,
+ 1601, 1470, 1602, 588,
+ 1602, 1471, 1603, 590,
+ 1603, 1472, 1604, 592,
+ 1604, 1473, 1605, 594,
+ 1605, 1474, 1606, 596,
+ 1606, 1475, 1607, 598,
+ 1607, 1476, 878, 600,
+ 298, 1477, 1608, 1465,
+ 1608, 1478, 1609, 1466,
+ 1609, 1479, 1610, 1467,
+ 1610, 1480, 1611, 1468,
+ 1611, 1481, 1612, 1469,
+ 1612, 1482, 1613, 1470,
+ 1613, 1483, 1614, 1471,
+ 1614, 1484, 1615, 1472,
+ 1615, 1485, 1616, 1473,
+ 1616, 1486, 1617, 1474,
+ 1617, 1487, 1618, 1475,
+ 1618, 1488, 880, 1476,
+ 296, 1489, 1619, 1477,
+ 1619, 1490, 1620, 1478,
+ 1620, 1491, 1621, 1479,
+ 1621, 1492, 1622, 1480,
+ 1622, 1493, 1623, 1481,
+ 1623, 1494, 1624, 1482,
+ 1624, 1495, 1625, 1483,
+ 1625, 1496, 1626, 1484,
+ 1626, 1497, 1627, 1485,
+ 1627, 1498, 1628, 1486,
+ 1628, 1499, 1629, 1487,
+ 1629, 1500, 882, 1488,
+ 294, 1501, 1630, 1489,
+ 1630, 1502, 1631, 1490,
+ 1631, 1503, 1632, 1491,
+ 1632, 1504, 1633, 1492,
+ 1633, 1505, 1634, 1493,
+ 1634, 1506, 1635, 1494,
+ 1635, 1507, 1636, 1495,
+ 1636, 1508, 1637, 1496,
+ 1637, 1509, 1638, 1497,
+ 1638, 1510, 1639, 1498,
+ 1639, 1511, 1640, 1499,
+ 1640, 1512, 884, 1500,
+ 292, 1513, 1641, 1501,
+ 1641, 1514, 1642, 1502,
+ 1642, 1515, 1643, 1503,
+ 1643, 1516, 1644, 1504,
+ 1644, 1517, 1645, 1505,
+ 1645, 1518, 1646, 1506,
+ 1646, 1519, 1647, 1507,
+ 1647, 1520, 1648, 1508,
+ 1648, 1521, 1649, 1509,
+ 1649, 1522, 1650, 1510,
+ 1650, 1523, 1651, 1511,
+ 1651, 1524, 886, 1512,
+ 290, 1525, 1652, 1513,
+ 1652, 1526, 1653, 1514,
+ 1653, 1527, 1654, 1515,
+ 1654, 1528, 1655, 1516,
+ 1655, 1529, 1656, 1517,
+ 1656, 1530, 1657, 1518,
+ 1657, 1531, 1658, 1519,
+ 1658, 1532, 1659, 1520,
+ 1659, 1533, 1660, 1521,
+ 1660, 1534, 1661, 1522,
+ 1661, 1535, 1662, 1523,
+ 1662, 1536, 888, 1524,
+ 288, 1537, 1663, 1525,
+ 1663, 1538, 1664, 1526,
+ 1664, 1539, 1665, 1527,
+ 1665, 1540, 1666, 1528,
+ 1666, 1541, 1667, 1529,
+ 1667, 1542, 1668, 1530,
+ 1668, 1543, 1669, 1531,
+ 1669, 1544, 1670, 1532,
+ 1670, 1545, 1671, 1533,
+ 1671, 1546, 1672, 1534,
+ 1672, 1547, 1673, 1535,
+ 1673, 1548, 890, 1536,
+ 286, 1549, 1674, 1537,
+ 1674, 1550, 1675, 1538,
+ 1675, 1551, 1676, 1539,
+ 1676, 1552, 1677, 1540,
+ 1677, 1553, 1678, 1541,
+ 1678, 1554, 1679, 1542,
+ 1679, 1555, 1680, 1543,
+ 1680, 1556, 1681, 1544,
+ 1681, 1557, 1682, 1545,
+ 1682, 1558, 1683, 1546,
+ 1683, 1559, 1684, 1547,
+ 1684, 1560, 892, 1548,
+ 284, 1561, 1685, 1549,
+ 1685, 1562, 1686, 1550,
+ 1686, 1563, 1687, 1551,
+ 1687, 1564, 1688, 1552,
+ 1688, 1565, 1689, 1553,
+ 1689, 1566, 1690, 1554,
+ 1690, 1567, 1691, 1555,
+ 1691, 1568, 1692, 1556,
+ 1692, 1569, 1693, 1557,
+ 1693, 1570, 1694, 1558,
+ 1694, 1571, 1695, 1559,
+ 1695, 1572, 894, 1560,
+ 282, 1573, 1696, 1561,
+ 1696, 1574, 1697, 1562,
+ 1697, 1575, 1698, 1563,
+ 1698, 1576, 1699, 1564,
+ 1699, 1577, 1700, 1565,
+ 1700, 1578, 1701, 1566,
+ 1701, 1579, 1702, 1567,
+ 1702, 1580, 1703, 1568,
+ 1703, 1581, 1704, 1569,
+ 1704, 1582, 1705, 1570,
+ 1705, 1583, 1706, 1571,
+ 1706, 1584, 896, 1572,
+ 280, 1585, 1707, 1573,
+ 1707, 1586, 1708, 1574,
+ 1708, 1587, 1709, 1575,
+ 1709, 1588, 1710, 1576,
+ 1710, 1589, 1711, 1577,
+ 1711, 1590, 1712, 1578,
+ 1712, 1591, 1713, 1579,
+ 1713, 1592, 1714, 1580,
+ 1714, 1593, 1715, 1581,
+ 1715, 1594, 1716, 1582,
+ 1716, 1595, 1717, 1583,
+ 1717, 1596, 898, 1584,
+ 278, 1200, 1718, 1585,
+ 1718, 1198, 1719, 1586,
+ 1719, 1196, 1720, 1587,
+ 1720, 1194, 1721, 1588,
+ 1721, 1192, 1722, 1589,
+ 1722, 1190, 1723, 1590,
+ 1723, 1188, 1724, 1591,
+ 1724, 1186, 1725, 1592,
+ 1725, 1184, 1726, 1593,
+ 1726, 1182, 1727, 1594,
+ 1727, 1180, 1728, 1595,
+ 1728, 1178, 900, 1596 ;
+
+ dynamics_face_links =
+ 444, 13, 2, 577,
+ 1, 14, 3, 589,
+ 2, 15, 4, 601,
+ 3, 16, 5, 613,
+ 4, 17, 6, 625,
+ 5, 18, 7, 637,
+ 6, 19, 8, 649,
+ 7, 20, 9, 661,
+ 8, 21, 10, 673,
+ 9, 22, 11, 685,
+ 10, 23, 12, 697,
+ 11, 24, 145, 709,
+ 456, 25, 14, 1,
+ 13, 26, 15, 2,
+ 14, 27, 16, 3,
+ 15, 28, 17, 4,
+ 16, 29, 18, 5,
+ 17, 30, 19, 6,
+ 18, 31, 20, 7,
+ 19, 32, 21, 8,
+ 20, 33, 22, 9,
+ 21, 34, 23, 10,
+ 22, 35, 24, 11,
+ 23, 36, 157, 12,
+ 468, 37, 26, 13,
+ 25, 38, 27, 14,
+ 26, 39, 28, 15,
+ 27, 40, 29, 16,
+ 28, 41, 30, 17,
+ 29, 42, 31, 18,
+ 30, 43, 32, 19,
+ 31, 44, 33, 20,
+ 32, 45, 34, 21,
+ 33, 46, 35, 22,
+ 34, 47, 36, 23,
+ 35, 48, 169, 24,
+ 480, 49, 38, 25,
+ 37, 50, 39, 26,
+ 38, 51, 40, 27,
+ 39, 52, 41, 28,
+ 40, 53, 42, 29,
+ 41, 54, 43, 30,
+ 42, 55, 44, 31,
+ 43, 56, 45, 32,
+ 44, 57, 46, 33,
+ 45, 58, 47, 34,
+ 46, 59, 48, 35,
+ 47, 60, 181, 36,
+ 492, 61, 50, 37,
+ 49, 62, 51, 38,
+ 50, 63, 52, 39,
+ 51, 64, 53, 40,
+ 52, 65, 54, 41,
+ 53, 66, 55, 42,
+ 54, 67, 56, 43,
+ 55, 68, 57, 44,
+ 56, 69, 58, 45,
+ 57, 70, 59, 46,
+ 58, 71, 60, 47,
+ 59, 72, 193, 48,
+ 504, 73, 62, 49,
+ 61, 74, 63, 50,
+ 62, 75, 64, 51,
+ 63, 76, 65, 52,
+ 64, 77, 66, 53,
+ 65, 78, 67, 54,
+ 66, 79, 68, 55,
+ 67, 80, 69, 56,
+ 68, 81, 70, 57,
+ 69, 82, 71, 58,
+ 70, 83, 72, 59,
+ 71, 84, 205, 60,
+ 516, 85, 74, 61,
+ 73, 86, 75, 62,
+ 74, 87, 76, 63,
+ 75, 88, 77, 64,
+ 76, 89, 78, 65,
+ 77, 90, 79, 66,
+ 78, 91, 80, 67,
+ 79, 92, 81, 68,
+ 80, 93, 82, 69,
+ 81, 94, 83, 70,
+ 82, 95, 84, 71,
+ 83, 96, 217, 72,
+ 528, 97, 86, 73,
+ 85, 98, 87, 74,
+ 86, 99, 88, 75,
+ 87, 100, 89, 76,
+ 88, 101, 90, 77,
+ 89, 102, 91, 78,
+ 90, 103, 92, 79,
+ 91, 104, 93, 80,
+ 92, 105, 94, 81,
+ 93, 106, 95, 82,
+ 94, 107, 96, 83,
+ 95, 108, 229, 84,
+ 540, 109, 98, 85,
+ 97, 110, 99, 86,
+ 98, 111, 100, 87,
+ 99, 112, 101, 88,
+ 100, 113, 102, 89,
+ 101, 114, 103, 90,
+ 102, 115, 104, 91,
+ 103, 116, 105, 92,
+ 104, 117, 106, 93,
+ 105, 118, 107, 94,
+ 106, 119, 108, 95,
+ 107, 120, 241, 96,
+ 552, 121, 110, 97,
+ 109, 122, 111, 98,
+ 110, 123, 112, 99,
+ 111, 124, 113, 100,
+ 112, 125, 114, 101,
+ 113, 126, 115, 102,
+ 114, 127, 116, 103,
+ 115, 128, 117, 104,
+ 116, 129, 118, 105,
+ 117, 130, 119, 106,
+ 118, 131, 120, 107,
+ 119, 132, 253, 108,
+ 564, 133, 122, 109,
+ 121, 134, 123, 110,
+ 122, 135, 124, 111,
+ 123, 136, 125, 112,
+ 124, 137, 126, 113,
+ 125, 138, 127, 114,
+ 126, 139, 128, 115,
+ 127, 140, 129, 116,
+ 128, 141, 130, 117,
+ 129, 142, 131, 118,
+ 130, 143, 132, 119,
+ 131, 144, 265, 120,
+ 576, 853, 134, 121,
+ 133, 841, 135, 122,
+ 134, 829, 136, 123,
+ 135, 817, 137, 124,
+ 136, 805, 138, 125,
+ 137, 793, 139, 126,
+ 138, 781, 140, 127,
+ 139, 769, 141, 128,
+ 140, 757, 142, 129,
+ 141, 745, 143, 130,
+ 142, 733, 144, 131,
+ 143, 721, 277, 132,
+ 12, 157, 146, 709,
+ 145, 158, 147, 710,
+ 146, 159, 148, 711,
+ 147, 160, 149, 712,
+ 148, 161, 150, 713,
+ 149, 162, 151, 714,
+ 150, 163, 152, 715,
+ 151, 164, 153, 716,
+ 152, 165, 154, 717,
+ 153, 166, 155, 718,
+ 154, 167, 156, 719,
+ 155, 168, 289, 720,
+ 24, 169, 158, 145,
+ 157, 170, 159, 146,
+ 158, 171, 160, 147,
+ 159, 172, 161, 148,
+ 160, 173, 162, 149,
+ 161, 174, 163, 150,
+ 162, 175, 164, 151,
+ 163, 176, 165, 152,
+ 164, 177, 166, 153,
+ 165, 178, 167, 154,
+ 166, 179, 168, 155,
+ 167, 180, 301, 156,
+ 36, 181, 170, 157,
+ 169, 182, 171, 158,
+ 170, 183, 172, 159,
+ 171, 184, 173, 160,
+ 172, 185, 174, 161,
+ 173, 186, 175, 162,
+ 174, 187, 176, 163,
+ 175, 188, 177, 164,
+ 176, 189, 178, 165,
+ 177, 190, 179, 166,
+ 178, 191, 180, 167,
+ 179, 192, 313, 168,
+ 48, 193, 182, 169,
+ 181, 194, 183, 170,
+ 182, 195, 184, 171,
+ 183, 196, 185, 172,
+ 184, 197, 186, 173,
+ 185, 198, 187, 174,
+ 186, 199, 188, 175,
+ 187, 200, 189, 176,
+ 188, 201, 190, 177,
+ 189, 202, 191, 178,
+ 190, 203, 192, 179,
+ 191, 204, 325, 180,
+ 60, 205, 194, 181,
+ 193, 206, 195, 182,
+ 194, 207, 196, 183,
+ 195, 208, 197, 184,
+ 196, 209, 198, 185,
+ 197, 210, 199, 186,
+ 198, 211, 200, 187,
+ 199, 212, 201, 188,
+ 200, 213, 202, 189,
+ 201, 214, 203, 190,
+ 202, 215, 204, 191,
+ 203, 216, 337, 192,
+ 72, 217, 206, 193,
+ 205, 218, 207, 194,
+ 206, 219, 208, 195,
+ 207, 220, 209, 196,
+ 208, 221, 210, 197,
+ 209, 222, 211, 198,
+ 210, 223, 212, 199,
+ 211, 224, 213, 200,
+ 212, 225, 214, 201,
+ 213, 226, 215, 202,
+ 214, 227, 216, 203,
+ 215, 228, 349, 204,
+ 84, 229, 218, 205,
+ 217, 230, 219, 206,
+ 218, 231, 220, 207,
+ 219, 232, 221, 208,
+ 220, 233, 222, 209,
+ 221, 234, 223, 210,
+ 222, 235, 224, 211,
+ 223, 236, 225, 212,
+ 224, 237, 226, 213,
+ 225, 238, 227, 214,
+ 226, 239, 228, 215,
+ 227, 240, 361, 216,
+ 96, 241, 230, 217,
+ 229, 242, 231, 218,
+ 230, 243, 232, 219,
+ 231, 244, 233, 220,
+ 232, 245, 234, 221,
+ 233, 246, 235, 222,
+ 234, 247, 236, 223,
+ 235, 248, 237, 224,
+ 236, 249, 238, 225,
+ 237, 250, 239, 226,
+ 238, 251, 240, 227,
+ 239, 252, 373, 228,
+ 108, 253, 242, 229,
+ 241, 254, 243, 230,
+ 242, 255, 244, 231,
+ 243, 256, 245, 232,
+ 244, 257, 246, 233,
+ 245, 258, 247, 234,
+ 246, 259, 248, 235,
+ 247, 260, 249, 236,
+ 248, 261, 250, 237,
+ 249, 262, 251, 238,
+ 250, 263, 252, 239,
+ 251, 264, 385, 240,
+ 120, 265, 254, 241,
+ 253, 266, 255, 242,
+ 254, 267, 256, 243,
+ 255, 268, 257, 244,
+ 256, 269, 258, 245,
+ 257, 270, 259, 246,
+ 258, 271, 260, 247,
+ 259, 272, 261, 248,
+ 260, 273, 262, 249,
+ 261, 274, 263, 250,
+ 262, 275, 264, 251,
+ 263, 276, 397, 252,
+ 132, 277, 266, 253,
+ 265, 278, 267, 254,
+ 266, 279, 268, 255,
+ 267, 280, 269, 256,
+ 268, 281, 270, 257,
+ 269, 282, 271, 258,
+ 270, 283, 272, 259,
+ 271, 284, 273, 260,
+ 272, 285, 274, 261,
+ 273, 286, 275, 262,
+ 274, 287, 276, 263,
+ 275, 288, 409, 264,
+ 144, 721, 278, 265,
+ 277, 722, 279, 266,
+ 278, 723, 280, 267,
+ 279, 724, 281, 268,
+ 280, 725, 282, 269,
+ 281, 726, 283, 270,
+ 282, 727, 284, 271,
+ 283, 728, 285, 272,
+ 284, 729, 286, 273,
+ 285, 730, 287, 274,
+ 286, 731, 288, 275,
+ 287, 732, 421, 276,
+ 301, 290, 720, 156,
+ 302, 291, 708, 289,
+ 303, 292, 696, 290,
+ 304, 293, 684, 291,
+ 305, 294, 672, 292,
+ 306, 295, 660, 293,
+ 307, 296, 648, 294,
+ 308, 297, 636, 295,
+ 309, 298, 624, 296,
+ 310, 299, 612, 297,
+ 311, 300, 600, 298,
+ 312, 433, 588, 299,
+ 313, 302, 289, 168,
+ 314, 303, 290, 301,
+ 315, 304, 291, 302,
+ 316, 305, 292, 303,
+ 317, 306, 293, 304,
+ 318, 307, 294, 305,
+ 319, 308, 295, 306,
+ 320, 309, 296, 307,
+ 321, 310, 297, 308,
+ 322, 311, 298, 309,
+ 323, 312, 299, 310,
+ 324, 445, 300, 311,
+ 325, 314, 301, 180,
+ 326, 315, 302, 313,
+ 327, 316, 303, 314,
+ 328, 317, 304, 315,
+ 329, 318, 305, 316,
+ 330, 319, 306, 317,
+ 331, 320, 307, 318,
+ 332, 321, 308, 319,
+ 333, 322, 309, 320,
+ 334, 323, 310, 321,
+ 335, 324, 311, 322,
+ 336, 457, 312, 323,
+ 337, 326, 313, 192,
+ 338, 327, 314, 325,
+ 339, 328, 315, 326,
+ 340, 329, 316, 327,
+ 341, 330, 317, 328,
+ 342, 331, 318, 329,
+ 343, 332, 319, 330,
+ 344, 333, 320, 331,
+ 345, 334, 321, 332,
+ 346, 335, 322, 333,
+ 347, 336, 323, 334,
+ 348, 469, 324, 335,
+ 349, 338, 325, 204,
+ 350, 339, 326, 337,
+ 351, 340, 327, 338,
+ 352, 341, 328, 339,
+ 353, 342, 329, 340,
+ 354, 343, 330, 341,
+ 355, 344, 331, 342,
+ 356, 345, 332, 343,
+ 357, 346, 333, 344,
+ 358, 347, 334, 345,
+ 359, 348, 335, 346,
+ 360, 481, 336, 347,
+ 361, 350, 337, 216,
+ 362, 351, 338, 349,
+ 363, 352, 339, 350,
+ 364, 353, 340, 351,
+ 365, 354, 341, 352,
+ 366, 355, 342, 353,
+ 367, 356, 343, 354,
+ 368, 357, 344, 355,
+ 369, 358, 345, 356,
+ 370, 359, 346, 357,
+ 371, 360, 347, 358,
+ 372, 493, 348, 359,
+ 373, 362, 349, 228,
+ 374, 363, 350, 361,
+ 375, 364, 351, 362,
+ 376, 365, 352, 363,
+ 377, 366, 353, 364,
+ 378, 367, 354, 365,
+ 379, 368, 355, 366,
+ 380, 369, 356, 367,
+ 381, 370, 357, 368,
+ 382, 371, 358, 369,
+ 383, 372, 359, 370,
+ 384, 505, 360, 371,
+ 385, 374, 361, 240,
+ 386, 375, 362, 373,
+ 387, 376, 363, 374,
+ 388, 377, 364, 375,
+ 389, 378, 365, 376,
+ 390, 379, 366, 377,
+ 391, 380, 367, 378,
+ 392, 381, 368, 379,
+ 393, 382, 369, 380,
+ 394, 383, 370, 381,
+ 395, 384, 371, 382,
+ 396, 517, 372, 383,
+ 397, 386, 373, 252,
+ 398, 387, 374, 385,
+ 399, 388, 375, 386,
+ 400, 389, 376, 387,
+ 401, 390, 377, 388,
+ 402, 391, 378, 389,
+ 403, 392, 379, 390,
+ 404, 393, 380, 391,
+ 405, 394, 381, 392,
+ 406, 395, 382, 393,
+ 407, 396, 383, 394,
+ 408, 529, 384, 395,
+ 409, 398, 385, 264,
+ 410, 399, 386, 397,
+ 411, 400, 387, 398,
+ 412, 401, 388, 399,
+ 413, 402, 389, 400,
+ 414, 403, 390, 401,
+ 415, 404, 391, 402,
+ 416, 405, 392, 403,
+ 417, 406, 393, 404,
+ 418, 407, 394, 405,
+ 419, 408, 395, 406,
+ 420, 541, 396, 407,
+ 421, 410, 397, 276,
+ 422, 411, 398, 409,
+ 423, 412, 399, 410,
+ 424, 413, 400, 411,
+ 425, 414, 401, 412,
+ 426, 415, 402, 413,
+ 427, 416, 403, 414,
+ 428, 417, 404, 415,
+ 429, 418, 405, 416,
+ 430, 419, 406, 417,
+ 431, 420, 407, 418,
+ 432, 553, 408, 419,
+ 732, 422, 409, 288,
+ 744, 423, 410, 421,
+ 756, 424, 411, 422,
+ 768, 425, 412, 423,
+ 780, 426, 413, 424,
+ 792, 427, 414, 425,
+ 804, 428, 415, 426,
+ 816, 429, 416, 427,
+ 828, 430, 417, 428,
+ 840, 431, 418, 429,
+ 852, 432, 419, 430,
+ 864, 565, 420, 431,
+ 445, 434, 588, 300,
+ 446, 435, 587, 433,
+ 447, 436, 586, 434,
+ 448, 437, 585, 435,
+ 449, 438, 584, 436,
+ 450, 439, 583, 437,
+ 451, 440, 582, 438,
+ 452, 441, 581, 439,
+ 453, 442, 580, 440,
+ 454, 443, 579, 441,
+ 455, 444, 578, 442,
+ 456, 1, 577, 443,
+ 457, 446, 433, 312,
+ 458, 447, 434, 445,
+ 459, 448, 435, 446,
+ 460, 449, 436, 447,
+ 461, 450, 437, 448,
+ 462, 451, 438, 449,
+ 463, 452, 439, 450,
+ 464, 453, 440, 451,
+ 465, 454, 441, 452,
+ 466, 455, 442, 453,
+ 467, 456, 443, 454,
+ 468, 13, 444, 455,
+ 469, 458, 445, 324,
+ 470, 459, 446, 457,
+ 471, 460, 447, 458,
+ 472, 461, 448, 459,
+ 473, 462, 449, 460,
+ 474, 463, 450, 461,
+ 475, 464, 451, 462,
+ 476, 465, 452, 463,
+ 477, 466, 453, 464,
+ 478, 467, 454, 465,
+ 479, 468, 455, 466,
+ 480, 25, 456, 467,
+ 481, 470, 457, 336,
+ 482, 471, 458, 469,
+ 483, 472, 459, 470,
+ 484, 473, 460, 471,
+ 485, 474, 461, 472,
+ 486, 475, 462, 473,
+ 487, 476, 463, 474,
+ 488, 477, 464, 475,
+ 489, 478, 465, 476,
+ 490, 479, 466, 477,
+ 491, 480, 467, 478,
+ 492, 37, 468, 479,
+ 493, 482, 469, 348,
+ 494, 483, 470, 481,
+ 495, 484, 471, 482,
+ 496, 485, 472, 483,
+ 497, 486, 473, 484,
+ 498, 487, 474, 485,
+ 499, 488, 475, 486,
+ 500, 489, 476, 487,
+ 501, 490, 477, 488,
+ 502, 491, 478, 489,
+ 503, 492, 479, 490,
+ 504, 49, 480, 491,
+ 505, 494, 481, 360,
+ 506, 495, 482, 493,
+ 507, 496, 483, 494,
+ 508, 497, 484, 495,
+ 509, 498, 485, 496,
+ 510, 499, 486, 497,
+ 511, 500, 487, 498,
+ 512, 501, 488, 499,
+ 513, 502, 489, 500,
+ 514, 503, 490, 501,
+ 515, 504, 491, 502,
+ 516, 61, 492, 503,
+ 517, 506, 493, 372,
+ 518, 507, 494, 505,
+ 519, 508, 495, 506,
+ 520, 509, 496, 507,
+ 521, 510, 497, 508,
+ 522, 511, 498, 509,
+ 523, 512, 499, 510,
+ 524, 513, 500, 511,
+ 525, 514, 501, 512,
+ 526, 515, 502, 513,
+ 527, 516, 503, 514,
+ 528, 73, 504, 515,
+ 529, 518, 505, 384,
+ 530, 519, 506, 517,
+ 531, 520, 507, 518,
+ 532, 521, 508, 519,
+ 533, 522, 509, 520,
+ 534, 523, 510, 521,
+ 535, 524, 511, 522,
+ 536, 525, 512, 523,
+ 537, 526, 513, 524,
+ 538, 527, 514, 525,
+ 539, 528, 515, 526,
+ 540, 85, 516, 527,
+ 541, 530, 517, 396,
+ 542, 531, 518, 529,
+ 543, 532, 519, 530,
+ 544, 533, 520, 531,
+ 545, 534, 521, 532,
+ 546, 535, 522, 533,
+ 547, 536, 523, 534,
+ 548, 537, 524, 535,
+ 549, 538, 525, 536,
+ 550, 539, 526, 537,
+ 551, 540, 527, 538,
+ 552, 97, 528, 539,
+ 553, 542, 529, 408,
+ 554, 543, 530, 541,
+ 555, 544, 531, 542,
+ 556, 545, 532, 543,
+ 557, 546, 533, 544,
+ 558, 547, 534, 545,
+ 559, 548, 535, 546,
+ 560, 549, 536, 547,
+ 561, 550, 537, 548,
+ 562, 551, 538, 549,
+ 563, 552, 539, 550,
+ 564, 109, 540, 551,
+ 565, 554, 541, 420,
+ 566, 555, 542, 553,
+ 567, 556, 543, 554,
+ 568, 557, 544, 555,
+ 569, 558, 545, 556,
+ 570, 559, 546, 557,
+ 571, 560, 547, 558,
+ 572, 561, 548, 559,
+ 573, 562, 549, 560,
+ 574, 563, 550, 561,
+ 575, 564, 551, 562,
+ 576, 121, 552, 563,
+ 864, 566, 553, 432,
+ 863, 567, 554, 565,
+ 862, 568, 555, 566,
+ 861, 569, 556, 567,
+ 860, 570, 557, 568,
+ 859, 571, 558, 569,
+ 858, 572, 559, 570,
+ 857, 573, 560, 571,
+ 856, 574, 561, 572,
+ 855, 575, 562, 573,
+ 854, 576, 563, 574,
+ 853, 133, 564, 575,
+ 444, 1, 589, 578,
+ 443, 577, 590, 579,
+ 442, 578, 591, 580,
+ 441, 579, 592, 581,
+ 440, 580, 593, 582,
+ 439, 581, 594, 583,
+ 438, 582, 595, 584,
+ 437, 583, 596, 585,
+ 436, 584, 597, 586,
+ 435, 585, 598, 587,
+ 434, 586, 599, 588,
+ 433, 587, 600, 300,
+ 577, 2, 601, 590,
+ 578, 589, 602, 591,
+ 579, 590, 603, 592,
+ 580, 591, 604, 593,
+ 581, 592, 605, 594,
+ 582, 593, 606, 595,
+ 583, 594, 607, 596,
+ 584, 595, 608, 597,
+ 585, 596, 609, 598,
+ 586, 597, 610, 599,
+ 587, 598, 611, 600,
+ 588, 599, 612, 299,
+ 589, 3, 613, 602,
+ 590, 601, 614, 603,
+ 591, 602, 615, 604,
+ 592, 603, 616, 605,
+ 593, 604, 617, 606,
+ 594, 605, 618, 607,
+ 595, 606, 619, 608,
+ 596, 607, 620, 609,
+ 597, 608, 621, 610,
+ 598, 609, 622, 611,
+ 599, 610, 623, 612,
+ 600, 611, 624, 298,
+ 601, 4, 625, 614,
+ 602, 613, 626, 615,
+ 603, 614, 627, 616,
+ 604, 615, 628, 617,
+ 605, 616, 629, 618,
+ 606, 617, 630, 619,
+ 607, 618, 631, 620,
+ 608, 619, 632, 621,
+ 609, 620, 633, 622,
+ 610, 621, 634, 623,
+ 611, 622, 635, 624,
+ 612, 623, 636, 297,
+ 613, 5, 637, 626,
+ 614, 625, 638, 627,
+ 615, 626, 639, 628,
+ 616, 627, 640, 629,
+ 617, 628, 641, 630,
+ 618, 629, 642, 631,
+ 619, 630, 643, 632,
+ 620, 631, 644, 633,
+ 621, 632, 645, 634,
+ 622, 633, 646, 635,
+ 623, 634, 647, 636,
+ 624, 635, 648, 296,
+ 625, 6, 649, 638,
+ 626, 637, 650, 639,
+ 627, 638, 651, 640,
+ 628, 639, 652, 641,
+ 629, 640, 653, 642,
+ 630, 641, 654, 643,
+ 631, 642, 655, 644,
+ 632, 643, 656, 645,
+ 633, 644, 657, 646,
+ 634, 645, 658, 647,
+ 635, 646, 659, 648,
+ 636, 647, 660, 295,
+ 637, 7, 661, 650,
+ 638, 649, 662, 651,
+ 639, 650, 663, 652,
+ 640, 651, 664, 653,
+ 641, 652, 665, 654,
+ 642, 653, 666, 655,
+ 643, 654, 667, 656,
+ 644, 655, 668, 657,
+ 645, 656, 669, 658,
+ 646, 657, 670, 659,
+ 647, 658, 671, 660,
+ 648, 659, 672, 294,
+ 649, 8, 673, 662,
+ 650, 661, 674, 663,
+ 651, 662, 675, 664,
+ 652, 663, 676, 665,
+ 653, 664, 677, 666,
+ 654, 665, 678, 667,
+ 655, 666, 679, 668,
+ 656, 667, 680, 669,
+ 657, 668, 681, 670,
+ 658, 669, 682, 671,
+ 659, 670, 683, 672,
+ 660, 671, 684, 293,
+ 661, 9, 685, 674,
+ 662, 673, 686, 675,
+ 663, 674, 687, 676,
+ 664, 675, 688, 677,
+ 665, 676, 689, 678,
+ 666, 677, 690, 679,
+ 667, 678, 691, 680,
+ 668, 679, 692, 681,
+ 669, 680, 693, 682,
+ 670, 681, 694, 683,
+ 671, 682, 695, 684,
+ 672, 683, 696, 292,
+ 673, 10, 697, 686,
+ 674, 685, 698, 687,
+ 675, 686, 699, 688,
+ 676, 687, 700, 689,
+ 677, 688, 701, 690,
+ 678, 689, 702, 691,
+ 679, 690, 703, 692,
+ 680, 691, 704, 693,
+ 681, 692, 705, 694,
+ 682, 693, 706, 695,
+ 683, 694, 707, 696,
+ 684, 695, 708, 291,
+ 685, 11, 709, 698,
+ 686, 697, 710, 699,
+ 687, 698, 711, 700,
+ 688, 699, 712, 701,
+ 689, 700, 713, 702,
+ 690, 701, 714, 703,
+ 691, 702, 715, 704,
+ 692, 703, 716, 705,
+ 693, 704, 717, 706,
+ 694, 705, 718, 707,
+ 695, 706, 719, 708,
+ 696, 707, 720, 290,
+ 697, 12, 145, 710,
+ 698, 709, 146, 711,
+ 699, 710, 147, 712,
+ 700, 711, 148, 713,
+ 701, 712, 149, 714,
+ 702, 713, 150, 715,
+ 703, 714, 151, 716,
+ 704, 715, 152, 717,
+ 705, 716, 153, 718,
+ 706, 717, 154, 719,
+ 707, 718, 155, 720,
+ 708, 719, 156, 289,
+ 144, 733, 722, 277,
+ 721, 734, 723, 278,
+ 722, 735, 724, 279,
+ 723, 736, 725, 280,
+ 724, 737, 726, 281,
+ 725, 738, 727, 282,
+ 726, 739, 728, 283,
+ 727, 740, 729, 284,
+ 728, 741, 730, 285,
+ 729, 742, 731, 286,
+ 730, 743, 732, 287,
+ 731, 744, 421, 288,
+ 143, 745, 734, 721,
+ 733, 746, 735, 722,
+ 734, 747, 736, 723,
+ 735, 748, 737, 724,
+ 736, 749, 738, 725,
+ 737, 750, 739, 726,
+ 738, 751, 740, 727,
+ 739, 752, 741, 728,
+ 740, 753, 742, 729,
+ 741, 754, 743, 730,
+ 742, 755, 744, 731,
+ 743, 756, 422, 732,
+ 142, 757, 746, 733,
+ 745, 758, 747, 734,
+ 746, 759, 748, 735,
+ 747, 760, 749, 736,
+ 748, 761, 750, 737,
+ 749, 762, 751, 738,
+ 750, 763, 752, 739,
+ 751, 764, 753, 740,
+ 752, 765, 754, 741,
+ 753, 766, 755, 742,
+ 754, 767, 756, 743,
+ 755, 768, 423, 744,
+ 141, 769, 758, 745,
+ 757, 770, 759, 746,
+ 758, 771, 760, 747,
+ 759, 772, 761, 748,
+ 760, 773, 762, 749,
+ 761, 774, 763, 750,
+ 762, 775, 764, 751,
+ 763, 776, 765, 752,
+ 764, 777, 766, 753,
+ 765, 778, 767, 754,
+ 766, 779, 768, 755,
+ 767, 780, 424, 756,
+ 140, 781, 770, 757,
+ 769, 782, 771, 758,
+ 770, 783, 772, 759,
+ 771, 784, 773, 760,
+ 772, 785, 774, 761,
+ 773, 786, 775, 762,
+ 774, 787, 776, 763,
+ 775, 788, 777, 764,
+ 776, 789, 778, 765,
+ 777, 790, 779, 766,
+ 778, 791, 780, 767,
+ 779, 792, 425, 768,
+ 139, 793, 782, 769,
+ 781, 794, 783, 770,
+ 782, 795, 784, 771,
+ 783, 796, 785, 772,
+ 784, 797, 786, 773,
+ 785, 798, 787, 774,
+ 786, 799, 788, 775,
+ 787, 800, 789, 776,
+ 788, 801, 790, 777,
+ 789, 802, 791, 778,
+ 790, 803, 792, 779,
+ 791, 804, 426, 780,
+ 138, 805, 794, 781,
+ 793, 806, 795, 782,
+ 794, 807, 796, 783,
+ 795, 808, 797, 784,
+ 796, 809, 798, 785,
+ 797, 810, 799, 786,
+ 798, 811, 800, 787,
+ 799, 812, 801, 788,
+ 800, 813, 802, 789,
+ 801, 814, 803, 790,
+ 802, 815, 804, 791,
+ 803, 816, 427, 792,
+ 137, 817, 806, 793,
+ 805, 818, 807, 794,
+ 806, 819, 808, 795,
+ 807, 820, 809, 796,
+ 808, 821, 810, 797,
+ 809, 822, 811, 798,
+ 810, 823, 812, 799,
+ 811, 824, 813, 800,
+ 812, 825, 814, 801,
+ 813, 826, 815, 802,
+ 814, 827, 816, 803,
+ 815, 828, 428, 804,
+ 136, 829, 818, 805,
+ 817, 830, 819, 806,
+ 818, 831, 820, 807,
+ 819, 832, 821, 808,
+ 820, 833, 822, 809,
+ 821, 834, 823, 810,
+ 822, 835, 824, 811,
+ 823, 836, 825, 812,
+ 824, 837, 826, 813,
+ 825, 838, 827, 814,
+ 826, 839, 828, 815,
+ 827, 840, 429, 816,
+ 135, 841, 830, 817,
+ 829, 842, 831, 818,
+ 830, 843, 832, 819,
+ 831, 844, 833, 820,
+ 832, 845, 834, 821,
+ 833, 846, 835, 822,
+ 834, 847, 836, 823,
+ 835, 848, 837, 824,
+ 836, 849, 838, 825,
+ 837, 850, 839, 826,
+ 838, 851, 840, 827,
+ 839, 852, 430, 828,
+ 134, 853, 842, 829,
+ 841, 854, 843, 830,
+ 842, 855, 844, 831,
+ 843, 856, 845, 832,
+ 844, 857, 846, 833,
+ 845, 858, 847, 834,
+ 846, 859, 848, 835,
+ 847, 860, 849, 836,
+ 848, 861, 850, 837,
+ 849, 862, 851, 838,
+ 850, 863, 852, 839,
+ 851, 864, 431, 840,
+ 133, 576, 854, 841,
+ 853, 575, 855, 842,
+ 854, 574, 856, 843,
+ 855, 573, 857, 844,
+ 856, 572, 858, 845,
+ 857, 571, 859, 846,
+ 858, 570, 860, 847,
+ 859, 569, 861, 848,
+ 860, 568, 862, 849,
+ 861, 567, 863, 850,
+ 862, 566, 864, 851,
+ 863, 565, 432, 852 ;
+
+ dynamics_node_x = -45, -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30,
+ 37.5, -45, -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, -45,
+ -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, -45, -37.5,
+ -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, -45, -37.5, -30,
+ -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, -45, -37.5, -30, -22.5,
+ -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, -45, -37.5, -30, -22.5, -15, -7.5,
+ 0, 7.5, 15, 22.5, 30, 37.5, -45, -37.5, -30, -22.5, -15, -7.5, 0, 7.5,
+ 15, 22.5, 30, 37.5, -45, -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5,
+ 30, 37.5, -45, -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5,
+ -45, -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, -45,
+ -37.5, -30, -22.5, -15, -7.5, 0, 7.5, 15, 22.5, 30, 37.5, 45, 52.5, 60,
+ 67.5, 75, 82.5, 90, 97.5, 105, 112.5, 120, 127.5, 45, 52.5, 60, 67.5, 75,
+ 82.5, 90, 97.5, 105, 112.5, 120, 127.5, 45, 52.5, 60, 67.5, 75, 82.5, 90,
+ 97.5, 105, 112.5, 120, 127.5, 45, 52.5, 60, 67.5, 75, 82.5, 90, 97.5,
+ 105, 112.5, 120, 127.5, 45, 52.5, 60, 67.5, 75, 82.5, 90, 97.5, 105,
+ 112.5, 120, 127.5, 45, 52.5, 60, 67.5, 75, 82.5, 90, 97.5, 105, 112.5,
+ 120, 127.5, 45, 52.5, 60, 67.5, 75, 82.5, 90, 97.5, 105, 112.5, 120,
+ 127.5, 45, 52.5, 60, 67.5, 75, 82.5, 90, 97.5, 105, 112.5, 120, 127.5,
+ 45, 52.5, 60, 67.5, 75, 82.5, 90, 97.5, 105, 112.5, 120, 127.5, 45, 52.5,
+ 60, 67.5, 75, 82.5, 90, 97.5, 105, 112.5, 120, 127.5, 45, 52.5, 60, 67.5,
+ 75, 82.5, 90, 97.5, 105, 112.5, 120, 127.5, 45, 52.5, 60, 67.5, 75, 82.5,
+ 90, 97.5, 105, 112.5, 120, 127.5, 135, 142.5, 150, 157.5, 165, 172.5,
+ -180, -172.5, -165, -157.5, -150, -142.5, 135, 142.5, 150, 157.5, 165,
+ 172.5, -180, -172.5, -165, -157.5, -150, -142.5, 135, 142.5, 150, 157.5,
+ 165, 172.5, -180, -172.5, -165, -157.5, -150, -142.5, 135, 142.5, 150,
+ 157.5, 165, 172.5, -180, -172.5, -165, -157.5, -150, -142.5, 135, 142.5,
+ 150, 157.5, 165, 172.5, -180, -172.5, -165, -157.5, -150, -142.5, 135,
+ 142.5, 150, 157.5, 165, 172.5, -180, -172.5, -165, -157.5, -150, -142.5,
+ 135, 142.5, 150, 157.5, 165, 172.5, -180, -172.5, -165, -157.5, -150,
+ -142.5, 135, 142.5, 150, 157.5, 165, 172.5, -180, -172.5, -165, -157.5,
+ -150, -142.5, 135, 142.5, 150, 157.5, 165, 172.5, -180, -172.5, -165,
+ -157.5, -150, -142.5, 135, 142.5, 150, 157.5, 165, 172.5, -180, -172.5,
+ -165, -157.5, -150, -142.5, 135, 142.5, 150, 157.5, 165, 172.5, -180,
+ -172.5, -165, -157.5, -150, -142.5, 135, 142.5, 150, 157.5, 165, 172.5,
+ -180, -172.5, -165, -157.5, -150, -142.5, -135, -127.5, -120, -112.5,
+ -105, -97.5, -90, -82.5, -75, -67.5, -60, -52.5, -135, -127.5, -120,
+ -112.5, -105, -97.5, -90, -82.5, -75, -67.5, -60, -52.5, -135, -127.5,
+ -120, -112.5, -105, -97.5, -90, -82.5, -75, -67.5, -60, -52.5, -135,
+ -127.5, -120, -112.5, -105, -97.5, -90, -82.5, -75, -67.5, -60, -52.5,
+ -135, -127.5, -120, -112.5, -105, -97.5, -90, -82.5, -75, -67.5, -60,
+ -52.5, -135, -127.5, -120, -112.5, -105, -97.5, -90, -82.5, -75, -67.5,
+ -60, -52.5, -135, -127.5, -120, -112.5, -105, -97.5, -90, -82.5, -75,
+ -67.5, -60, -52.5, -135, -127.5, -120, -112.5, -105, -97.5, -90, -82.5,
+ -75, -67.5, -60, -52.5, -135, -127.5, -120, -112.5, -105, -97.5, -90,
+ -82.5, -75, -67.5, -60, -52.5, -135, -127.5, -120, -112.5, -105, -97.5,
+ -90, -82.5, -75, -67.5, -60, -52.5, -135, -127.5, -120, -112.5, -105,
+ -97.5, -90, -82.5, -75, -67.5, -60, -52.5, -135, -127.5, -120, -112.5,
+ -105, -97.5, -90, -82.5, -75, -67.5, -60, -52.5, -45, -53.04155641726,
+ -61.6392220370136, -70.7508909984478, -80.2643896827547, -90,
+ -99.7356103172453, -109.249109001552, -118.360777962986,
+ -126.95844358274, -135, -36.95844358274, -45, -54.3428701752672,
+ -65.1039093610171, -77.1545477812505, -90, -102.84545221875,
+ -114.896090638983, -125.657129824733, -135, -143.04155641726,
+ -28.3607779629864, -35.6571298247328, -45, -57.1017141696649,
+ -72.3678051586227, -90, -107.632194841377, -122.898285830335, -135,
+ -144.342870175267, -151.639222037014, -19.2491090015522,
+ -24.8960906389829, -32.8982858303351, -45, -63.8335530583408, -90,
+ -116.166446941659, -135, -147.101714169665, -155.103909361017,
+ -160.750890998448, -9.73561031724535, -12.8454522187495,
+ -17.6321948413773, -26.1664469416592, -45, -90, -135, -153.833553058341,
+ -162.367805158623, -167.15454778125, -170.264389682755, 0, 0, 0, 0, 0, 0,
+ -180, -180, -180, -180, -180, 9.73561031724534, 12.8454522187495,
+ 17.6321948413773, 26.1664469416592, 45, 90, 135, 153.833553058341,
+ 162.367805158623, 167.15454778125, 170.264389682755, 19.2491090015522,
+ 24.8960906389829, 32.8982858303351, 45, 63.8335530583408, 90,
+ 116.166446941659, 135, 147.101714169665, 155.103909361017,
+ 160.750890998448, 28.3607779629864, 35.6571298247328, 45,
+ 57.1017141696649, 72.3678051586227, 90, 107.632194841377,
+ 122.898285830335, 135, 144.342870175267, 151.639222037014,
+ 36.95844358274, 45, 54.3428701752672, 65.1039093610171, 77.1545477812505,
+ 90, 102.84545221875, 114.896090638983, 125.657129824733, 135,
+ 143.04155641726, 45, 53.0415564172599, 61.6392220370136,
+ 70.7508909984478, 80.2643896827547, 90, 99.7356103172453,
+ 109.249109001552, 118.360777962986, 126.95844358274, 135, 45, 52.5, 60,
+ 67.5, 75, 82.5, 90, 97.5, 105, 112.5, 120, 127.5, 37.5, 45,
+ 53.04155641726, 61.6392220370136, 70.7508909984478, 80.2643896827547, 90,
+ 99.7356103172453, 109.249109001552, 118.360777962986, 126.95844358274,
+ 135, 30, 36.95844358274, 45, 54.3428701752672, 65.1039093610171,
+ 77.1545477812505, 90, 102.84545221875, 114.896090638983,
+ 125.657129824733, 135, 143.04155641726, 22.5, 28.3607779629864,
+ 35.6571298247328, 45, 57.1017141696649, 72.3678051586227, 90,
+ 107.632194841377, 122.898285830335, 135, 144.342870175267,
+ 151.639222037014, 15, 19.2491090015522, 24.8960906389829,
+ 32.8982858303351, 45, 63.8335530583408, 90, 116.166446941659, 135,
+ 147.101714169665, 155.103909361017, 160.750890998448, 7.50000000000001,
+ 9.73561031724535, 12.8454522187495, 17.6321948413773, 26.1664469416592,
+ 45, 90, 135, 153.833553058341, 162.367805158623, 167.15454778125,
+ 170.264389682755, -0, -0, -0, -0, -0, -0, 0, -180, -180, -180, -180,
+ -180, -7.5, -9.73561031724534, -12.8454522187495, -17.6321948413773,
+ -26.1664469416592, -45, -90, -135, -153.833553058341, -162.367805158623,
+ -167.15454778125, -170.264389682755, -15, -19.2491090015522,
+ -24.8960906389829, -32.8982858303351, -45, -63.8335530583408, -90,
+ -116.166446941659, -135, -147.101714169665, -155.103909361017,
+ -160.750890998448, -22.5, -28.3607779629864, -35.6571298247328, -45,
+ -57.1017141696649, -72.3678051586227, -90, -107.632194841377,
+ -122.898285830335, -135, -144.342870175267, -151.639222037014, -30,
+ -36.95844358274, -45, -54.3428701752672, -65.1039093610171,
+ -77.1545477812505, -90, -102.84545221875, -114.896090638983,
+ -125.657129824733, -135, -143.04155641726, -37.5, -45, -53.0415564172599,
+ -61.6392220370136, -70.7508909984478, -80.2643896827547, -90,
+ -99.7356103172453, -109.249109001552, -118.360777962986,
+ -126.95844358274, -135, -45, -52.5, -60, -67.5, -75, -82.5, -90, -97.5,
+ -105, -112.5, -120, -127.5, 135, 142.5, 150, 157.5, 165, 172.5, -180,
+ -172.5, -165, -157.5, -150, -142.5, -135 ;
+
+ dynamics_node_y = 35.2643896827547, 38.4268434976953, 40.8933946491309,
+ 42.7342096008998, 44.0070271956363, 44.753861966975, 45, 44.753861966975,
+ 44.0070271956363, 42.7342096008998, 40.8933946491309, 38.4268434976953,
+ 28.4834661179317, 31.3314426644734, 33.6050181915629, 35.3335026120138,
+ 36.5451381553822, 37.2625128714784, 37.5, 37.2625128714784,
+ 36.5451381553822, 35.3335026120138, 33.6050181915629, 31.3314426644734,
+ 22.2076542985965, 24.6098050837908, 26.565051177078, 28.0755542102809,
+ 29.1474262640282, 29.7872947635816, 30, 29.7872947635816,
+ 29.1474262640282, 28.0755542102809, 26.565051177078, 24.6098050837908,
+ 16.3249499368952, 18.1914391843494, 19.7338984646069, 20.9410204722438,
+ 21.8063277400641, 22.3264806874313, 22.5, 22.3264806874313,
+ 21.8063277400641, 20.9410204722438, 19.7338984646069, 18.1914391843494,
+ 10.7285831216091, 12.0011964297362, 13.0643134295083, 13.9041999653766,
+ 14.5108186990699, 14.8773865849752, 15, 14.8773865849752,
+ 14.5108186990699, 13.9041999653766, 13.0643134295083, 12.0011964297362,
+ 5.31847183939939, 5.96274919276321, 6.50445695752584, 6.93488111564006,
+ 7.247207855436, 7.43655768147728, 7.5, 7.43655768147728, 7.247207855436,
+ 6.93488111564006, 6.50445695752584, 5.96274919276321, -0, -0, -0, -0, -0,
+ -0, -0, -0, -0, -0, -0, -0, -5.31847183939939, -5.9627491927632,
+ -6.50445695752584, -6.93488111564005, -7.24720785543599,
+ -7.43655768147727, -7.5, -7.43655768147727, -7.24720785543599,
+ -6.93488111564005, -6.50445695752584, -5.9627491927632,
+ -10.7285831216091, -12.0011964297362, -13.0643134295083,
+ -13.9041999653766, -14.5108186990699, -14.8773865849752, -15,
+ -14.8773865849752, -14.5108186990699, -13.9041999653766,
+ -13.0643134295083, -12.0011964297362, -16.3249499368952,
+ -18.1914391843494, -19.7338984646069, -20.9410204722438,
+ -21.8063277400641, -22.3264806874313, -22.5, -22.3264806874313,
+ -21.8063277400641, -20.9410204722438, -19.7338984646069,
+ -18.1914391843494, -22.2076542985965, -24.6098050837908,
+ -26.565051177078, -28.0755542102809, -29.1474262640282,
+ -29.7872947635816, -30, -29.7872947635816, -29.1474262640282,
+ -28.0755542102809, -26.565051177078, -24.6098050837908,
+ -28.4834661179317, -31.3314426644734, -33.6050181915629,
+ -35.3335026120138, -36.5451381553822, -37.2625128714784, -37.5,
+ -37.2625128714784, -36.5451381553822, -35.3335026120138,
+ -33.6050181915629, -31.3314426644734, 35.2643896827547, 38.4268434976953,
+ 40.8933946491309, 42.7342096008998, 44.0070271956363, 44.753861966975,
+ 45, 44.753861966975, 44.0070271956363, 42.7342096008998,
+ 40.8933946491309, 38.4268434976953, 28.4834661179317, 31.3314426644734,
+ 33.6050181915629, 35.3335026120138, 36.5451381553822, 37.2625128714784,
+ 37.5, 37.2625128714784, 36.5451381553822, 35.3335026120138,
+ 33.6050181915629, 31.3314426644734, 22.2076542985965, 24.6098050837908,
+ 26.565051177078, 28.0755542102809, 29.1474262640282, 29.7872947635816,
+ 30, 29.7872947635816, 29.1474262640282, 28.0755542102809,
+ 26.565051177078, 24.6098050837908, 16.3249499368952, 18.1914391843494,
+ 19.7338984646069, 20.9410204722438, 21.8063277400641, 22.3264806874313,
+ 22.5, 22.3264806874313, 21.8063277400641, 20.9410204722438,
+ 19.7338984646069, 18.1914391843494, 10.7285831216091, 12.0011964297362,
+ 13.0643134295083, 13.9041999653766, 14.5108186990699, 14.8773865849752,
+ 15, 14.8773865849752, 14.5108186990699, 13.9041999653766,
+ 13.0643134295083, 12.0011964297362, 5.31847183939939, 5.96274919276321,
+ 6.50445695752584, 6.93488111564006, 7.247207855436, 7.43655768147728,
+ 7.5, 7.43655768147728, 7.247207855436, 6.93488111564006,
+ 6.50445695752584, 5.96274919276321, -0, -0, -0, -0, -0, -0, -0, -0, -0,
+ -0, -0, -0, -5.31847183939939, -5.9627491927632, -6.50445695752584,
+ -6.93488111564005, -7.24720785543599, -7.43655768147727, -7.5,
+ -7.43655768147727, -7.24720785543599, -6.93488111564005,
+ -6.50445695752584, -5.9627491927632, -10.7285831216091,
+ -12.0011964297362, -13.0643134295083, -13.9041999653766,
+ -14.5108186990699, -14.8773865849752, -15, -14.8773865849752,
+ -14.5108186990699, -13.9041999653766, -13.0643134295083,
+ -12.0011964297362, -16.3249499368952, -18.1914391843494,
+ -19.7338984646069, -20.9410204722438, -21.8063277400641,
+ -22.3264806874313, -22.5, -22.3264806874313, -21.8063277400641,
+ -20.9410204722438, -19.7338984646069, -18.1914391843494,
+ -22.2076542985965, -24.6098050837908, -26.565051177078,
+ -28.0755542102809, -29.1474262640282, -29.7872947635816, -30,
+ -29.7872947635816, -29.1474262640282, -28.0755542102809,
+ -26.565051177078, -24.6098050837908, -28.4834661179317,
+ -31.3314426644734, -33.6050181915629, -35.3335026120138,
+ -36.5451381553822, -37.2625128714784, -37.5, -37.2625128714784,
+ -36.5451381553822, -35.3335026120138, -33.6050181915629,
+ -31.3314426644734, 35.2643896827547, 38.4268434976953, 40.8933946491309,
+ 42.7342096008998, 44.0070271956363, 44.753861966975, 45, 44.753861966975,
+ 44.0070271956363, 42.7342096008998, 40.8933946491309, 38.4268434976953,
+ 28.4834661179317, 31.3314426644734, 33.6050181915629, 35.3335026120138,
+ 36.5451381553822, 37.2625128714784, 37.5, 37.2625128714784,
+ 36.5451381553822, 35.3335026120138, 33.6050181915629, 31.3314426644734,
+ 22.2076542985965, 24.6098050837908, 26.565051177078, 28.0755542102809,
+ 29.1474262640282, 29.7872947635816, 30, 29.7872947635816,
+ 29.1474262640282, 28.0755542102809, 26.565051177078, 24.6098050837908,
+ 16.3249499368952, 18.1914391843494, 19.7338984646069, 20.9410204722438,
+ 21.8063277400641, 22.3264806874313, 22.5, 22.3264806874313,
+ 21.8063277400641, 20.9410204722438, 19.7338984646069, 18.1914391843494,
+ 10.7285831216091, 12.0011964297362, 13.0643134295083, 13.9041999653766,
+ 14.5108186990699, 14.8773865849752, 15, 14.8773865849752,
+ 14.5108186990699, 13.9041999653766, 13.0643134295083, 12.0011964297362,
+ 5.31847183939939, 5.96274919276321, 6.50445695752584, 6.93488111564006,
+ 7.247207855436, 7.43655768147728, 7.5, 7.43655768147728, 7.247207855436,
+ 6.93488111564006, 6.50445695752584, 5.96274919276321, -0, -0, -0, -0, -0,
+ -0, -0, -0, -0, -0, -0, -0, -5.31847183939939, -5.9627491927632,
+ -6.50445695752584, -6.93488111564005, -7.24720785543599,
+ -7.43655768147727, -7.5, -7.43655768147727, -7.24720785543599,
+ -6.93488111564005, -6.50445695752584, -5.9627491927632,
+ -10.7285831216091, -12.0011964297362, -13.0643134295083,
+ -13.9041999653766, -14.5108186990699, -14.8773865849752, -15,
+ -14.8773865849752, -14.5108186990699, -13.9041999653766,
+ -13.0643134295083, -12.0011964297362, -16.3249499368952,
+ -18.1914391843494, -19.7338984646069, -20.9410204722438,
+ -21.8063277400641, -22.3264806874313, -22.5, -22.3264806874313,
+ -21.8063277400641, -20.9410204722438, -19.7338984646069,
+ -18.1914391843494, -22.2076542985965, -24.6098050837908,
+ -26.565051177078, -28.0755542102809, -29.1474262640282,
+ -29.7872947635816, -30, -29.7872947635816, -29.1474262640282,
+ -28.0755542102809, -26.565051177078, -24.6098050837908,
+ -28.4834661179317, -31.3314426644734, -33.6050181915629,
+ -35.3335026120138, -36.5451381553822, -37.2625128714784, -37.5,
+ -37.2625128714784, -36.5451381553822, -35.3335026120138,
+ -33.6050181915629, -31.3314426644734, 35.2643896827547, 38.4268434976953,
+ 40.8933946491309, 42.7342096008998, 44.0070271956363, 44.753861966975,
+ 45, 44.753861966975, 44.0070271956363, 42.7342096008998,
+ 40.8933946491309, 38.4268434976953, 28.4834661179317, 31.3314426644734,
+ 33.6050181915629, 35.3335026120138, 36.5451381553822, 37.2625128714784,
+ 37.5, 37.2625128714784, 36.5451381553822, 35.3335026120138,
+ 33.6050181915629, 31.3314426644734, 22.2076542985965, 24.6098050837908,
+ 26.565051177078, 28.0755542102809, 29.1474262640282, 29.7872947635816,
+ 30, 29.7872947635816, 29.1474262640282, 28.0755542102809,
+ 26.565051177078, 24.6098050837908, 16.3249499368952, 18.1914391843494,
+ 19.7338984646069, 20.9410204722438, 21.8063277400641, 22.3264806874313,
+ 22.5, 22.3264806874313, 21.8063277400641, 20.9410204722438,
+ 19.7338984646069, 18.1914391843494, 10.7285831216091, 12.0011964297362,
+ 13.0643134295083, 13.9041999653766, 14.5108186990699, 14.8773865849752,
+ 15, 14.8773865849752, 14.5108186990699, 13.9041999653766,
+ 13.0643134295083, 12.0011964297362, 5.31847183939939, 5.96274919276321,
+ 6.50445695752584, 6.93488111564006, 7.247207855436, 7.43655768147728,
+ 7.5, 7.43655768147728, 7.247207855436, 6.93488111564006,
+ 6.50445695752584, 5.96274919276321, -0, -0, -0, -0, -0, -0, -0, -0, -0,
+ -0, -0, -0, -5.31847183939939, -5.9627491927632, -6.50445695752584,
+ -6.93488111564005, -7.24720785543599, -7.43655768147727, -7.5,
+ -7.43655768147727, -7.24720785543599, -6.93488111564005,
+ -6.50445695752584, -5.9627491927632, -10.7285831216091,
+ -12.0011964297362, -13.0643134295083, -13.9041999653766,
+ -14.5108186990699, -14.8773865849752, -15, -14.8773865849752,
+ -14.5108186990699, -13.9041999653766, -13.0643134295083,
+ -12.0011964297362, -16.3249499368952, -18.1914391843494,
+ -19.7338984646069, -20.9410204722438, -21.8063277400641,
+ -22.3264806874313, -22.5, -22.3264806874313, -21.8063277400641,
+ -20.9410204722438, -19.7338984646069, -18.1914391843494,
+ -22.2076542985965, -24.6098050837908, -26.565051177078,
+ -28.0755542102809, -29.1474262640282, -29.7872947635816, -30,
+ -29.7872947635816, -29.1474262640282, -28.0755542102809,
+ -26.565051177078, -24.6098050837908, -28.4834661179317,
+ -31.3314426644734, -33.6050181915629, -35.3335026120138,
+ -36.5451381553822, -37.2625128714784, -37.5, -37.2625128714784,
+ -36.5451381553822, -35.3335026120138, -33.6050181915629,
+ -31.3314426644734, 42.6611719623651, 46.1610034997872, 48.9119528722244,
+ 50.8969852747691, 52.0978484161962, 52.5, 52.0978484161962,
+ 50.8969852747691, 48.9119528722244, 46.1610034997872, 42.6611719623651,
+ 46.1610034997872, 50.7684795164077, 54.6036351534441, 57.5233157615547,
+ 59.3672407834663, 60, 59.3672407834663, 57.5233157615547,
+ 54.6036351534441, 50.7684795164078, 46.1610034997872, 48.9119528722244,
+ 54.6036351534441, 59.6388065951783, 63.7417202794995, 66.5086765471698,
+ 67.5, 66.5086765471698, 63.7417202794995, 59.6388065951783,
+ 54.6036351534441, 48.9119528722244, 50.8969852747691, 57.5233157615547,
+ 63.7417202794995, 69.2464290163152, 73.3772654499124, 75,
+ 73.3772654499124, 69.2464290163152, 63.7417202794995, 57.5233157615548,
+ 50.8969852747691, 52.0978484161962, 59.3672407834663, 66.5086765471698,
+ 73.3772654499124, 79.453161100789, 82.5, 79.453161100789,
+ 73.3772654499124, 66.5086765471698, 59.3672407834663, 52.0978484161962,
+ 52.5, 60, 67.5, 75, 82.5, 90, 82.5, 75, 67.5, 60, 52.5, 52.0978484161962,
+ 59.3672407834663, 66.5086765471698, 73.3772654499124, 79.453161100789,
+ 82.5, 79.453161100789, 73.3772654499124, 66.5086765471698,
+ 59.3672407834663, 52.0978484161962, 50.8969852747691, 57.5233157615547,
+ 63.7417202794995, 69.2464290163152, 73.3772654499124, 75,
+ 73.3772654499124, 69.2464290163152, 63.7417202794995, 57.5233157615548,
+ 50.8969852747691, 48.9119528722244, 54.6036351534441, 59.6388065951783,
+ 63.7417202794995, 66.5086765471698, 67.5, 66.5086765471698,
+ 63.7417202794995, 59.6388065951783, 54.6036351534441, 48.9119528722244,
+ 46.1610034997872, 50.7684795164078, 54.6036351534441, 57.5233157615548,
+ 59.3672407834663, 60, 59.3672407834663, 57.5233157615548,
+ 54.6036351534441, 50.7684795164078, 46.1610034997873, 42.6611719623651,
+ 46.1610034997872, 48.9119528722244, 50.8969852747691, 52.0978484161962,
+ 52.5, 52.0978484161962, 50.8969852747691, 48.9119528722244,
+ 46.1610034997873, 42.6611719623651, -35.2643896827547, -38.4268434976953,
+ -40.8933946491309, -42.7342096008998, -44.0070271956363,
+ -44.753861966975, -45, -44.753861966975, -44.0070271956363,
+ -42.7342096008998, -40.8933946491309, -38.4268434976953,
+ -38.4268434976953, -42.6611719623651, -46.1610034997872,
+ -48.9119528722244, -50.8969852747691, -52.0978484161962, -52.5,
+ -52.0978484161962, -50.8969852747691, -48.9119528722244,
+ -46.1610034997872, -42.6611719623651, -40.8933946491309,
+ -46.1610034997872, -50.7684795164077, -54.6036351534441,
+ -57.5233157615547, -59.3672407834663, -60, -59.3672407834663,
+ -57.5233157615547, -54.6036351534441, -50.7684795164078,
+ -46.1610034997872, -42.7342096008998, -48.9119528722244,
+ -54.6036351534441, -59.6388065951783, -63.7417202794995,
+ -66.5086765471698, -67.5, -66.5086765471698, -63.7417202794995,
+ -59.6388065951783, -54.6036351534441, -48.9119528722244,
+ -44.0070271956363, -50.8969852747691, -57.5233157615547,
+ -63.7417202794995, -69.2464290163152, -73.3772654499124, -75,
+ -73.3772654499124, -69.2464290163152, -63.7417202794995,
+ -57.5233157615548, -50.8969852747691, -44.753861966975,
+ -52.0978484161962, -59.3672407834663, -66.5086765471698,
+ -73.3772654499124, -79.453161100789, -82.5, -79.453161100789,
+ -73.3772654499124, -66.5086765471698, -59.3672407834663,
+ -52.0978484161962, -45, -52.5, -60, -67.5, -75, -82.5, -90, -82.5, -75,
+ -67.5, -60, -52.5, -44.753861966975, -52.0978484161962,
+ -59.3672407834663, -66.5086765471698, -73.3772654499124,
+ -79.453161100789, -82.5, -79.453161100789, -73.3772654499124,
+ -66.5086765471698, -59.3672407834663, -52.0978484161962,
+ -44.0070271956363, -50.8969852747691, -57.5233157615547,
+ -63.7417202794995, -69.2464290163152, -73.3772654499124, -75,
+ -73.3772654499124, -69.2464290163152, -63.7417202794995,
+ -57.5233157615548, -50.8969852747691, -42.7342096008998,
+ -48.9119528722244, -54.6036351534441, -59.6388065951783,
+ -63.7417202794995, -66.5086765471698, -67.5, -66.5086765471698,
+ -63.7417202794995, -59.6388065951783, -54.6036351534441,
+ -48.9119528722244, -40.8933946491309, -46.1610034997872,
+ -50.7684795164078, -54.6036351534441, -57.5233157615548,
+ -59.3672407834663, -60, -59.3672407834663, -57.5233157615548,
+ -54.6036351534441, -50.7684795164078, -46.1610034997873,
+ -38.4268434976953, -42.6611719623651, -46.1610034997872,
+ -48.9119528722244, -50.8969852747691, -52.0978484161962, -52.5,
+ -52.0978484161962, -50.8969852747691, -48.9119528722244,
+ -46.1610034997873, -42.6611719623651, -35.2643896827547,
+ -38.4268434976953, -40.8933946491309, -42.7342096008998,
+ -44.0070271956363, -44.753861966975, -45, -44.753861966975,
+ -44.0070271956363, -42.7342096008998, -40.8933946491309,
+ -38.4268434976953, -35.2643896827547, -38.4268434976953,
+ -40.8933946491309, -42.7342096008998, -44.0070271956363,
+ -44.753861966975, -45, -44.753861966975, -44.0070271956363,
+ -42.7342096008998, -40.8933946491309, -38.4268434976953, -35.2643896827547 ;
+
+ dynamics_face_x = -41.3152089030983, -33.806771088304, -26.2960492462929,
+ -18.7838104277648, -11.2706263664288, -3.75692946913451, 3.7569294691345,
+ 11.2706263664288, 18.7838104277648, 26.2960492462929, 33.806771088304,
+ 41.3152089030983, -41.2936109384805, -33.7887716035354,
+ -26.2819825548092, -18.7737791519095, -11.2646279062497,
+ -3.75493465965447, 3.75493465965447, 11.2646279062497, 18.7737791519095,
+ 26.2819825548092, 33.7887716035354, 41.2936109384805, -41.2763945590034,
+ -33.773869868729, -26.2699713858559, -18.7650111229678, -11.259302201907,
+ -3.75314966175661, 3.75314966175661, 11.259302201907, 18.7650111229678,
+ 26.2699713858559, 33.773869868729, 41.2763945590034, -41.2636238596043,
+ -33.7624809909733, -26.2605583606434, -18.7580048589284,
+ -11.2549899787732, -3.75169466260126, 3.75169466260126, 11.2549899787732,
+ 18.7580048589284, 26.2605583606434, 33.7624809909732, 41.2636238596043,
+ -41.2552106377437, -33.7548156148214, -26.254105045772,
+ -18.7531312562048, -11.2519601891623, -3.7506671461934, 3.75066714619339,
+ 11.2519601891623, 18.7531312562048, 26.254105045772, 33.7548156148213,
+ 41.2552106377437, -41.2510401544502, -33.7509666749151,
+ -26.2508281137282, -18.7506341927028, -11.2503981200382,
+ -3.75013569437423, 3.75013569437423, 11.2503981200382, 18.7506341927028,
+ 26.2508281137282, 33.7509666749151, 41.2510401544502, -41.2510401544502,
+ -33.7509666749151, -26.2508281137282, -18.7506341927028,
+ -11.2503981200382, -3.75013569437423, 3.75013569437423, 11.2503981200382,
+ 18.7506341927028, 26.2508281137282, 33.7509666749151, 41.2510401544502,
+ -41.2552106377437, -33.7548156148214, -26.254105045772,
+ -18.7531312562048, -11.2519601891623, -3.7506671461934, 3.75066714619339,
+ 11.2519601891623, 18.7531312562048, 26.254105045772, 33.7548156148213,
+ 41.2552106377437, -41.2636238596043, -33.7624809909732,
+ -26.2605583606434, -18.7580048589284, -11.2549899787732,
+ -3.75169466260126, 3.75169466260126, 11.2549899787732, 18.7580048589284,
+ 26.2605583606434, 33.7624809909732, 41.2636238596043, -41.2763945590034,
+ -33.773869868729, -26.2699713858559, -18.7650111229678, -11.259302201907,
+ -3.75314966175661, 3.75314966175661, 11.259302201907, 18.7650111229678,
+ 26.2699713858559, 33.773869868729, 41.2763945590034, -41.2936109384805,
+ -33.7887716035354, -26.2819825548092, -18.7737791519095,
+ -11.2646279062497, -3.75493465965447, 3.75493465965447, 11.2646279062497,
+ 18.7737791519095, 26.2819825548092, 33.7887716035353, 41.2936109384805,
+ -41.3152089030983, -33.806771088304, -26.2960492462929,
+ -18.7838104277648, -11.2706263664288, -3.75692946913451,
+ 3.75692946913451, 11.2706263664288, 18.7838104277648, 26.2960492462929,
+ 33.806771088304, 41.3152089030983, 48.6847910969017, 56.1932289116959,
+ 63.7039507537071, 71.2161895722352, 78.7293736335712, 86.2430705308655,
+ 93.7569294691345, 101.270626366429, 108.783810427765, 116.296049246293,
+ 123.806771088304, 131.315208903098, 48.7063890615195, 56.2112283964646,
+ 63.7180174451908, 71.2262208480905, 78.7353720937503, 86.2450653403455,
+ 93.7549346596545, 101.26462790625, 108.773779151909, 116.281982554809,
+ 123.788771603535, 131.293610938481, 48.7236054409966, 56.226130131271,
+ 63.7300286141441, 71.2349888770322, 78.740697798093, 86.2468503382434,
+ 93.7531496617566, 101.259302201907, 108.765011122968, 116.269971385856,
+ 123.773869868729, 131.276394559003, 48.7363761403957, 56.2375190090268,
+ 63.7394416393566, 71.2419951410716, 78.7450100212268, 86.2483053373987,
+ 93.7516946626012, 101.254989978773, 108.758004858928, 116.260558360643,
+ 123.762480990973, 131.263623859604, 48.7447893622563, 56.2451843851786,
+ 63.745894954228, 71.2468687437952, 78.7480398108377, 86.2493328538066,
+ 93.7506671461934, 101.251960189162, 108.753131256205, 116.254105045772,
+ 123.754815614821, 131.255210637744, 48.7489598455498, 56.2490333250849,
+ 63.7491718862718, 71.2493658072972, 78.7496018799618, 86.2498643056258,
+ 93.7501356943742, 101.250398120038, 108.750634192703, 116.250828113728,
+ 123.750966674915, 131.25104015445, 48.7489598455498, 56.2490333250849,
+ 63.7491718862718, 71.2493658072972, 78.7496018799618, 86.2498643056258,
+ 93.7501356943742, 101.250398120038, 108.750634192703, 116.250828113728,
+ 123.750966674915, 131.25104015445, 48.7447893622563, 56.2451843851786,
+ 63.745894954228, 71.2468687437952, 78.7480398108377, 86.2493328538066,
+ 93.7506671461934, 101.251960189162, 108.753131256205, 116.254105045772,
+ 123.754815614821, 131.255210637744, 48.7363761403957, 56.2375190090268,
+ 63.7394416393566, 71.2419951410716, 78.7450100212268, 86.2483053373987,
+ 93.7516946626012, 101.254989978773, 108.758004858928, 116.260558360643,
+ 123.762480990973, 131.263623859604, 48.7236054409966, 56.226130131271,
+ 63.7300286141441, 71.2349888770322, 78.740697798093, 86.2468503382434,
+ 93.7531496617566, 101.259302201907, 108.765011122968, 116.269971385856,
+ 123.773869868729, 131.276394559003, 48.7063890615195, 56.2112283964646,
+ 63.7180174451908, 71.2262208480905, 78.7353720937503, 86.2450653403455,
+ 93.7549346596545, 101.26462790625, 108.773779151909, 116.281982554809,
+ 123.788771603535, 131.293610938481, 48.6847910969017, 56.193228911696,
+ 63.7039507537071, 71.2161895722352, 78.7293736335712, 86.2430705308655,
+ 93.7569294691345, 101.270626366429, 108.783810427765, 116.296049246293,
+ 123.806771088304, 131.315208903098, 138.684791096902, 146.193228911696,
+ 153.703950753707, 161.216189572235, 168.729373633571, 176.243070530866,
+ -176.243070530866, -168.729373633571, -161.216189572235,
+ -153.703950753707, -146.193228911696, -138.684791096902,
+ 138.706389061519, 146.211228396465, 153.718017445191, 161.226220848091,
+ 168.73537209375, 176.245065340346, -176.245065340346, -168.73537209375,
+ -161.226220848091, -153.718017445191, -146.211228396465,
+ -138.706389061519, 138.723605440997, 146.226130131271, 153.730028614144,
+ 161.234988877032, 168.740697798093, 176.246850338243, -176.246850338243,
+ -168.740697798093, -161.234988877032, -153.730028614144,
+ -146.226130131271, -138.723605440997, 138.736376140396, 146.237519009027,
+ 153.739441639357, 161.241995141072, 168.745010021227, 176.248305337399,
+ -176.248305337399, -168.745010021227, -161.241995141072,
+ -153.739441639357, -146.237519009027, -138.736376140396,
+ 138.744789362256, 146.245184385179, 153.745894954228, 161.246868743795,
+ 168.748039810838, 176.249332853807, -176.249332853807, -168.748039810838,
+ -161.246868743795, -153.745894954228, -146.245184385179,
+ -138.744789362256, 138.74895984555, 146.249033325085, 153.749171886272,
+ 161.249365807297, 168.749601879962, 176.249864305626, -176.249864305626,
+ -168.749601879962, -161.249365807297, -153.749171886272,
+ -146.249033325085, -138.74895984555, 138.74895984555, 146.249033325085,
+ 153.749171886272, 161.249365807297, 168.749601879962, 176.249864305626,
+ -176.249864305626, -168.749601879962, -161.249365807297,
+ -153.749171886272, -146.249033325085, -138.74895984555, 138.744789362256,
+ 146.245184385179, 153.745894954228, 161.246868743795, 168.748039810838,
+ 176.249332853807, -176.249332853807, -168.748039810838,
+ -161.246868743795, -153.745894954228, -146.245184385179,
+ -138.744789362256, 138.736376140396, 146.237519009027, 153.739441639357,
+ 161.241995141072, 168.745010021227, 176.248305337399, -176.248305337399,
+ -168.745010021227, -161.241995141072, -153.739441639357,
+ -146.237519009027, -138.736376140396, 138.723605440997, 146.226130131271,
+ 153.730028614144, 161.234988877032, 168.740697798093, 176.246850338243,
+ -176.246850338243, -168.740697798093, -161.234988877032,
+ -153.730028614144, -146.226130131271, -138.723605440997,
+ 138.706389061519, 146.211228396465, 153.718017445191, 161.226220848091,
+ 168.73537209375, 176.245065340346, -176.245065340346, -168.73537209375,
+ -161.226220848091, -153.718017445191, -146.211228396465,
+ -138.706389061519, 138.684791096902, 146.193228911696, 153.703950753707,
+ 161.216189572235, 168.729373633571, 176.243070530866, -176.243070530866,
+ -168.729373633571, -161.216189572235, -153.703950753707,
+ -146.193228911696, -138.684791096902, -131.315208903098,
+ -123.806771088304, -116.296049246293, -108.783810427765,
+ -101.270626366429, -93.7569294691345, -86.2430705308655,
+ -78.7293736335712, -71.2161895722352, -63.7039507537071,
+ -56.193228911696, -48.6847910969017, -131.293610938481,
+ -123.788771603535, -116.281982554809, -108.773779151909,
+ -101.26462790625, -93.7549346596545, -86.2450653403455,
+ -78.7353720937503, -71.2262208480905, -63.7180174451908,
+ -56.2112283964646, -48.7063890615195, -131.276394559003,
+ -123.773869868729, -116.269971385856, -108.765011122968,
+ -101.259302201907, -93.7531496617566, -86.2468503382434,
+ -78.740697798093, -71.2349888770322, -63.7300286141441, -56.226130131271,
+ -48.7236054409966, -131.263623859604, -123.762480990973,
+ -116.260558360643, -108.758004858928, -101.254989978773,
+ -93.7516946626013, -86.2483053373987, -78.7450100212269,
+ -71.2419951410716, -63.7394416393566, -56.2375190090268,
+ -48.7363761403957, -131.255210637744, -123.754815614821,
+ -116.254105045772, -108.753131256205, -101.251960189162,
+ -93.7506671461934, -86.2493328538066, -78.7480398108377,
+ -71.2468687437952, -63.745894954228, -56.2451843851787,
+ -48.7447893622563, -131.25104015445, -123.750966674915,
+ -116.250828113728, -108.750634192703, -101.250398120038,
+ -93.7501356943742, -86.2498643056258, -78.7496018799618,
+ -71.2493658072972, -63.7491718862718, -56.2490333250849,
+ -48.7489598455498, -131.25104015445, -123.750966674915,
+ -116.250828113728, -108.750634192703, -101.250398120038,
+ -93.7501356943742, -86.2498643056258, -78.7496018799618,
+ -71.2493658072972, -63.7491718862718, -56.2490333250849,
+ -48.7489598455498, -131.255210637744, -123.754815614821,
+ -116.254105045772, -108.753131256205, -101.251960189162,
+ -93.7506671461934, -86.2493328538066, -78.7480398108377,
+ -71.2468687437952, -63.745894954228, -56.2451843851787,
+ -48.7447893622563, -131.263623859604, -123.762480990973,
+ -116.260558360643, -108.758004858928, -101.254989978773,
+ -93.7516946626013, -86.2483053373987, -78.7450100212268,
+ -71.2419951410716, -63.7394416393566, -56.2375190090268,
+ -48.7363761403957, -131.276394559003, -123.773869868729,
+ -116.269971385856, -108.765011122968, -101.259302201907,
+ -93.7531496617566, -86.2468503382434, -78.740697798093,
+ -71.2349888770322, -63.7300286141441, -56.226130131271,
+ -48.7236054409966, -131.293610938481, -123.788771603535,
+ -116.281982554809, -108.773779151909, -101.26462790625,
+ -93.7549346596545, -86.2450653403455, -78.7353720937503,
+ -71.2262208480905, -63.7180174451908, -56.2112283964646,
+ -48.7063890615195, -131.315208903098, -123.806771088304,
+ -116.296049246293, -108.783810427765, -101.270626366429,
+ -93.7569294691345, -86.2430705308655, -78.7293736335712,
+ -71.2161895722352, -63.7039507537071, -56.193228911696,
+ -48.6847910969017, -45, -52.6789833932524, -60.6230549375758,
+ -68.8117766657024, -77.1996324828867, -85.7180395939545,
+ -94.2819604060455, -102.800367517113, -111.188223334298,
+ -119.376945062424, -127.321016606748, -135, -37.3210166067476, -45,
+ -53.5572094377989, -63.0474748751433, -73.4040282512066,
+ -84.3904814032623, -95.6095185967377, -106.595971748793,
+ -116.952525124857, -126.442790562201, -135, -142.678983393252,
+ -29.3769450624242, -36.4427905622011, -45, -55.4480118954588,
+ -68.0198276783457, -82.4232160454614, -97.5767839545386,
+ -111.980172321654, -124.551988104541, -135, -143.557209437799,
+ -150.623054937576, -21.1882233342976, -26.9525251248567,
+ -34.5519881045412, -45, -59.6237942274726, -79.0670957284935,
+ -100.932904271507, -120.376205772527, -135, -145.448011895459,
+ -153.047474875143, -158.811776665702, -12.8003675171133,
+ -16.5959717487934, -21.9801723216543, -30.3762057725274, -45,
+ -71.7600509981516, -108.239949001848, -135, -149.623794227473,
+ -158.019827678346, -163.404028251207, -167.199632482887,
+ -4.28196040604547, -5.60951859673771, -7.57678395453862,
+ -10.9329042715065, -18.2399490018484, -45, -135, -161.760050998152,
+ -169.067095728493, -172.423216045461, -174.390481403262,
+ -175.718039593955, 4.28196040604546, 5.6095185967377, 7.57678395453862,
+ 10.9329042715065, 18.2399490018484, 45, 135, 161.760050998152,
+ 169.067095728493, 172.423216045461, 174.390481403262, 175.718039593955,
+ 12.8003675171133, 16.5959717487934, 21.9801723216543, 30.3762057725274,
+ 45, 71.7600509981516, 108.239949001848, 135, 149.623794227473,
+ 158.019827678346, 163.404028251207, 167.199632482887, 21.1882233342975,
+ 26.9525251248567, 34.5519881045412, 45, 59.6237942274726,
+ 79.0670957284935, 100.932904271507, 120.376205772527, 135,
+ 145.448011895459, 153.047474875143, 158.811776665702, 29.3769450624242,
+ 36.4427905622011, 45, 55.4480118954588, 68.0198276783457,
+ 82.4232160454614, 97.5767839545386, 111.980172321654, 124.551988104541,
+ 135, 143.557209437799, 150.623054937576, 37.3210166067476, 45,
+ 53.5572094377988, 63.0474748751433, 73.4040282512066, 84.3904814032623,
+ 95.6095185967377, 106.595971748793, 116.952525124857, 126.442790562201,
+ 135, 142.678983393252, 45, 52.6789833932524, 60.6230549375758,
+ 68.8117766657024, 77.1996324828867, 85.7180395939545, 94.2819604060455,
+ 102.800367517113, 111.188223334298, 119.376945062424, 127.321016606748,
+ 135, 45, 52.6789833932524, 60.6230549375758, 68.8117766657024,
+ 77.1996324828867, 85.7180395939545, 94.2819604060455, 102.800367517113,
+ 111.188223334298, 119.376945062424, 127.321016606748, 135,
+ 37.3210166067476, 45, 53.5572094377989, 63.0474748751433,
+ 73.4040282512066, 84.3904814032623, 95.6095185967377, 106.595971748793,
+ 116.952525124857, 126.442790562201, 135, 142.678983393252,
+ 29.3769450624242, 36.4427905622011, 45, 55.4480118954588,
+ 68.0198276783457, 82.4232160454614, 97.5767839545386, 111.980172321654,
+ 124.551988104541, 135, 143.557209437799, 150.623054937576,
+ 21.1882233342976, 26.9525251248567, 34.5519881045412, 45,
+ 59.6237942274726, 79.0670957284935, 100.932904271507, 120.376205772527,
+ 135, 145.448011895459, 153.047474875143, 158.811776665702,
+ 12.8003675171133, 16.5959717487934, 21.9801723216543, 30.3762057725274,
+ 45, 71.7600509981516, 108.239949001848, 135, 149.623794227473,
+ 158.019827678346, 163.404028251207, 167.199632482887, 4.28196040604547,
+ 5.60951859673771, 7.57678395453863, 10.9329042715065, 18.2399490018484,
+ 45, 135, 161.760050998152, 169.067095728493, 172.423216045461,
+ 174.390481403262, 175.718039593955, -4.28196040604547, -5.6095185967377,
+ -7.57678395453862, -10.9329042715065, -18.2399490018484, -45, -135,
+ -161.760050998152, -169.067095728493, -172.423216045461,
+ -174.390481403262, -175.718039593955, -12.8003675171133,
+ -16.5959717487934, -21.9801723216543, -30.3762057725274, -45,
+ -71.7600509981516, -108.239949001848, -135, -149.623794227473,
+ -158.019827678346, -163.404028251207, -167.199632482887,
+ -21.1882233342976, -26.9525251248567, -34.5519881045412, -45,
+ -59.6237942274726, -79.0670957284935, -100.932904271507,
+ -120.376205772527, -135, -145.448011895459, -153.047474875143,
+ -158.811776665702, -29.3769450624242, -36.4427905622011, -45,
+ -55.4480118954588, -68.0198276783457, -82.4232160454614,
+ -97.5767839545386, -111.980172321654, -124.551988104541, -135,
+ -143.557209437799, -150.623054937576, -37.3210166067476, -45,
+ -53.5572094377988, -63.0474748751433, -73.4040282512066,
+ -84.3904814032623, -95.6095185967377, -106.595971748793,
+ -116.952525124857, -126.442790562201, -135, -142.678983393252, -45,
+ -52.6789833932524, -60.6230549375758, -68.8117766657024,
+ -77.1996324828867, -85.7180395939545, -94.2819604060455,
+ -102.800367517113, -111.188223334298, -119.376945062424,
+ -127.321016606748, -135 ;
+
+ dynamics_face_y = 33.432835056437, 36.1225579517621, 38.2011611172233,
+ 39.7153031042524, 40.7028339742457, 41.1899453510804, 41.1899453510804,
+ 40.7028339742457, 39.7153031042524, 38.2011611172233, 36.1225579517621,
+ 33.432835056437, 26.7072135908547, 29.0798692007378, 30.9488663048686,
+ 32.3308512179557, 33.2418639609319, 33.6941107346547, 33.6941107346547,
+ 33.2418639609319, 32.3308512179557, 30.9488663048686, 29.0798692007378,
+ 26.7072135908547, 20.3733724124488, 22.3180646012797, 23.8742427535654,
+ 25.0396134449724, 25.8149813748506, 26.2020626588906, 26.2020626588906,
+ 25.8149813748506, 25.0396134449724, 23.8742427535654, 22.3180646012797,
+ 20.3733724124488, 14.3408794594474, 15.7797430199215, 16.9450166682866,
+ 17.8263244005314, 18.417023334607, 18.7132512964975, 18.7132512964975,
+ 18.417023334607, 17.8263244005314, 16.9450166682866, 15.7797430199215,
+ 14.3408794594474, 8.52066086631705, 9.40290267273068, 10.1231569053278,
+ 10.6715840982511, 11.0410464332339, 11.2269142890384, 11.2269142890384,
+ 11.0410464332339, 10.6715840982511, 10.1231569053278, 9.40290267273068,
+ 8.52066086631705, 2.82632454855766, 3.12345847186503, 3.36701515896158,
+ 3.55310369075469, 3.67879389436188, 3.74212862554603, 3.74212862554603,
+ 3.67879389436188, 3.55310369075469, 3.36701515896158, 3.12345847186503,
+ 2.82632454855766, -2.82632454855766, -3.12345847186503,
+ -3.36701515896158, -3.55310369075468, -3.67879389436188,
+ -3.74212862554603, -3.74212862554603, -3.67879389436188,
+ -3.55310369075468, -3.36701515896158, -3.12345847186503,
+ -2.82632454855766, -8.52066086631705, -9.40290267273067,
+ -10.1231569053278, -10.6715840982511, -11.0410464332339,
+ -11.2269142890384, -11.2269142890384, -11.0410464332339,
+ -10.6715840982511, -10.1231569053278, -9.40290267273067,
+ -8.52066086631705, -14.3408794594474, -15.7797430199215,
+ -16.9450166682866, -17.8263244005314, -18.417023334607,
+ -18.7132512964974, -18.7132512964974, -18.417023334607,
+ -17.8263244005314, -16.9450166682866, -15.7797430199215,
+ -14.3408794594474, -20.3733724124488, -22.3180646012797,
+ -23.8742427535654, -25.0396134449724, -25.8149813748506,
+ -26.2020626588906, -26.2020626588906, -25.8149813748506,
+ -25.0396134449724, -23.8742427535654, -22.3180646012797,
+ -20.3733724124488, -26.7072135908547, -29.0798692007378,
+ -30.9488663048686, -32.3308512179557, -33.2418639609319,
+ -33.6941107346547, -33.6941107346547, -33.2418639609319,
+ -32.3308512179557, -30.9488663048686, -29.0798692007378,
+ -26.7072135908547, -33.432835056437, -36.1225579517621,
+ -38.2011611172233, -39.7153031042524, -40.7028339742457,
+ -41.1899453510804, -41.1899453510804, -40.7028339742457,
+ -39.7153031042524, -38.2011611172233, -36.1225579517621,
+ -33.432835056437, 33.432835056437, 36.1225579517621, 38.2011611172233,
+ 39.7153031042524, 40.7028339742457, 41.1899453510804, 41.1899453510804,
+ 40.7028339742457, 39.7153031042524, 38.2011611172233, 36.1225579517621,
+ 33.432835056437, 26.7072135908547, 29.0798692007378, 30.9488663048686,
+ 32.3308512179557, 33.2418639609319, 33.6941107346547, 33.6941107346547,
+ 33.2418639609319, 32.3308512179557, 30.9488663048686, 29.0798692007378,
+ 26.7072135908547, 20.3733724124488, 22.3180646012797, 23.8742427535654,
+ 25.0396134449724, 25.8149813748506, 26.2020626588906, 26.2020626588906,
+ 25.8149813748506, 25.0396134449724, 23.8742427535654, 22.3180646012797,
+ 20.3733724124488, 14.3408794594474, 15.7797430199215, 16.9450166682866,
+ 17.8263244005314, 18.417023334607, 18.7132512964975, 18.7132512964975,
+ 18.417023334607, 17.8263244005314, 16.9450166682866, 15.7797430199215,
+ 14.3408794594474, 8.52066086631705, 9.40290267273068, 10.1231569053278,
+ 10.6715840982511, 11.0410464332339, 11.2269142890384, 11.2269142890384,
+ 11.0410464332339, 10.6715840982511, 10.1231569053278, 9.40290267273068,
+ 8.52066086631705, 2.82632454855766, 3.12345847186503, 3.36701515896158,
+ 3.55310369075469, 3.67879389436188, 3.74212862554603, 3.74212862554603,
+ 3.67879389436188, 3.55310369075469, 3.36701515896158, 3.12345847186503,
+ 2.82632454855766, -2.82632454855766, -3.12345847186503,
+ -3.36701515896158, -3.55310369075468, -3.67879389436188,
+ -3.74212862554603, -3.74212862554603, -3.67879389436188,
+ -3.55310369075468, -3.36701515896158, -3.12345847186503,
+ -2.82632454855766, -8.52066086631705, -9.40290267273067,
+ -10.1231569053278, -10.6715840982511, -11.0410464332339,
+ -11.2269142890384, -11.2269142890384, -11.0410464332339,
+ -10.6715840982511, -10.1231569053278, -9.40290267273067,
+ -8.52066086631705, -14.3408794594474, -15.7797430199215,
+ -16.9450166682866, -17.8263244005314, -18.417023334607,
+ -18.7132512964974, -18.7132512964974, -18.417023334607,
+ -17.8263244005314, -16.9450166682866, -15.7797430199215,
+ -14.3408794594474, -20.3733724124488, -22.3180646012797,
+ -23.8742427535654, -25.0396134449724, -25.8149813748506,
+ -26.2020626588906, -26.2020626588906, -25.8149813748506,
+ -25.0396134449724, -23.8742427535654, -22.3180646012797,
+ -20.3733724124488, -26.7072135908547, -29.0798692007378,
+ -30.9488663048686, -32.3308512179557, -33.2418639609319,
+ -33.6941107346547, -33.6941107346547, -33.2418639609319,
+ -32.3308512179557, -30.9488663048686, -29.0798692007378,
+ -26.7072135908547, -33.432835056437, -36.1225579517621,
+ -38.2011611172233, -39.7153031042524, -40.7028339742457,
+ -41.1899453510804, -41.1899453510804, -40.7028339742457,
+ -39.7153031042524, -38.2011611172233, -36.1225579517621,
+ -33.432835056437, 33.432835056437, 36.1225579517621, 38.2011611172233,
+ 39.7153031042524, 40.7028339742457, 41.1899453510804, 41.1899453510804,
+ 40.7028339742457, 39.7153031042524, 38.2011611172233, 36.1225579517621,
+ 33.432835056437, 26.7072135908547, 29.0798692007378, 30.9488663048686,
+ 32.3308512179557, 33.2418639609319, 33.6941107346547, 33.6941107346547,
+ 33.2418639609319, 32.3308512179557, 30.9488663048686, 29.0798692007378,
+ 26.7072135908547, 20.3733724124488, 22.3180646012797, 23.8742427535654,
+ 25.0396134449724, 25.8149813748506, 26.2020626588906, 26.2020626588906,
+ 25.8149813748506, 25.0396134449724, 23.8742427535654, 22.3180646012797,
+ 20.3733724124488, 14.3408794594474, 15.7797430199215, 16.9450166682866,
+ 17.8263244005314, 18.417023334607, 18.7132512964975, 18.7132512964975,
+ 18.417023334607, 17.8263244005314, 16.9450166682866, 15.7797430199215,
+ 14.3408794594474, 8.52066086631705, 9.40290267273068, 10.1231569053278,
+ 10.6715840982511, 11.0410464332339, 11.2269142890384, 11.2269142890384,
+ 11.0410464332339, 10.6715840982511, 10.1231569053278, 9.40290267273068,
+ 8.52066086631705, 2.82632454855766, 3.12345847186503, 3.36701515896158,
+ 3.55310369075469, 3.67879389436188, 3.74212862554603, 3.74212862554603,
+ 3.67879389436188, 3.55310369075469, 3.36701515896158, 3.12345847186503,
+ 2.82632454855766, -2.82632454855766, -3.12345847186503,
+ -3.36701515896158, -3.55310369075468, -3.67879389436188,
+ -3.74212862554603, -3.74212862554603, -3.67879389436188,
+ -3.55310369075468, -3.36701515896158, -3.12345847186503,
+ -2.82632454855766, -8.52066086631705, -9.40290267273067,
+ -10.1231569053278, -10.6715840982511, -11.0410464332339,
+ -11.2269142890384, -11.2269142890384, -11.0410464332339,
+ -10.6715840982511, -10.1231569053278, -9.40290267273067,
+ -8.52066086631705, -14.3408794594474, -15.7797430199215,
+ -16.9450166682866, -17.8263244005314, -18.417023334607,
+ -18.7132512964974, -18.7132512964974, -18.417023334607,
+ -17.8263244005314, -16.9450166682866, -15.7797430199215,
+ -14.3408794594474, -20.3733724124488, -22.3180646012797,
+ -23.8742427535654, -25.0396134449724, -25.8149813748505,
+ -26.2020626588906, -26.2020626588906, -25.8149813748505,
+ -25.0396134449724, -23.8742427535654, -22.3180646012797,
+ -20.3733724124488, -26.7072135908547, -29.0798692007378,
+ -30.9488663048686, -32.3308512179557, -33.2418639609319,
+ -33.6941107346547, -33.6941107346547, -33.2418639609319,
+ -32.3308512179557, -30.9488663048686, -29.0798692007378,
+ -26.7072135908547, -33.432835056437, -36.1225579517621,
+ -38.2011611172233, -39.7153031042524, -40.7028339742457,
+ -41.1899453510804, -41.1899453510804, -40.7028339742457,
+ -39.7153031042524, -38.2011611172233, -36.1225579517621,
+ -33.432835056437, 33.432835056437, 36.1225579517621, 38.2011611172233,
+ 39.7153031042524, 40.7028339742457, 41.1899453510804, 41.1899453510804,
+ 40.7028339742457, 39.7153031042524, 38.2011611172233, 36.1225579517621,
+ 33.432835056437, 26.7072135908547, 29.0798692007378, 30.9488663048686,
+ 32.3308512179557, 33.2418639609319, 33.6941107346547, 33.6941107346547,
+ 33.2418639609319, 32.3308512179557, 30.9488663048686, 29.0798692007378,
+ 26.7072135908547, 20.3733724124488, 22.3180646012797, 23.8742427535654,
+ 25.0396134449724, 25.8149813748506, 26.2020626588906, 26.2020626588906,
+ 25.8149813748506, 25.0396134449724, 23.8742427535654, 22.3180646012797,
+ 20.3733724124488, 14.3408794594474, 15.7797430199215, 16.9450166682866,
+ 17.8263244005314, 18.417023334607, 18.7132512964975, 18.7132512964975,
+ 18.417023334607, 17.8263244005314, 16.9450166682866, 15.7797430199215,
+ 14.3408794594474, 8.52066086631705, 9.40290267273068, 10.1231569053278,
+ 10.6715840982511, 11.0410464332339, 11.2269142890384, 11.2269142890384,
+ 11.0410464332339, 10.6715840982511, 10.1231569053278, 9.40290267273068,
+ 8.52066086631705, 2.82632454855766, 3.12345847186503, 3.36701515896158,
+ 3.55310369075469, 3.67879389436188, 3.74212862554603, 3.74212862554603,
+ 3.67879389436188, 3.55310369075469, 3.36701515896158, 3.12345847186503,
+ 2.82632454855766, -2.82632454855766, -3.12345847186503,
+ -3.36701515896158, -3.55310369075468, -3.67879389436188,
+ -3.74212862554603, -3.74212862554603, -3.67879389436188,
+ -3.55310369075468, -3.36701515896158, -3.12345847186503,
+ -2.82632454855766, -8.52066086631705, -9.40290267273067,
+ -10.1231569053278, -10.6715840982511, -11.0410464332339,
+ -11.2269142890384, -11.2269142890384, -11.0410464332339,
+ -10.6715840982511, -10.1231569053278, -9.40290267273067,
+ -8.52066086631705, -14.3408794594474, -15.7797430199215,
+ -16.9450166682866, -17.8263244005314, -18.417023334607,
+ -18.7132512964974, -18.7132512964974, -18.417023334607,
+ -17.8263244005314, -16.9450166682866, -15.7797430199215,
+ -14.3408794594474, -20.3733724124488, -22.3180646012797,
+ -23.8742427535654, -25.0396134449724, -25.8149813748505,
+ -26.2020626588906, -26.2020626588906, -25.8149813748505,
+ -25.0396134449724, -23.8742427535654, -22.3180646012797,
+ -20.3733724124488, -26.7072135908547, -29.0798692007378,
+ -30.9488663048686, -32.3308512179557, -33.2418639609319,
+ -33.6941107346547, -33.6941107346547, -33.2418639609319,
+ -32.3308512179557, -30.9488663048686, -29.0798692007378,
+ -26.7072135908547, -33.432835056437, -36.1225579517621,
+ -38.2011611172233, -39.7153031042524, -40.7028339742457,
+ -41.1899453510804, -41.1899453510804, -40.7028339742457,
+ -39.7153031042524, -38.2011611172233, -36.1225579517621,
+ -33.432835056437, 38.8150077347025, 42.1582896974909, 44.7910057014103,
+ 46.7407217209629, 48.028885464146, 48.6695532368043, 48.6695532368043,
+ 48.028885464146, 46.7407217209629, 44.7910057014103, 42.1582896974909,
+ 38.8150077347025, 42.1582896974908, 46.5794639642221, 50.2614918513234,
+ 53.1318721567636, 55.1100100086019, 56.1218639580552, 56.1218639580552,
+ 55.1100100086019, 53.1318721567636, 50.2614918513234, 46.5794639642222,
+ 42.1582896974909, 44.7910057014103, 50.2614918513234, 55.083961998064,
+ 59.0768040127068, 61.9916577943195, 63.5493286289719, 63.5493286289719,
+ 61.9916577943195, 59.0768040127068, 55.083961998064, 50.2614918513234,
+ 44.7910057014103, 46.7407217209629, 53.1318721567636, 59.0768040127068,
+ 64.3459021628081, 68.5184407025596, 70.9275913731519, 70.9275913731519,
+ 68.5184407025597, 64.3459021628081, 59.0768040127068, 53.1318721567636,
+ 46.7407217209629, 48.028885464146, 55.1100100086019, 61.9916577943195,
+ 68.5184407025597, 74.2857944271342, 78.1707754306064, 78.1707754306064,
+ 74.2857944271342, 68.5184407025597, 61.9916577943196, 55.1100100086019,
+ 48.028885464146, 48.6695532368043, 56.1218639580552, 63.5493286289719,
+ 70.9275913731519, 78.1707754306064, 84.7040547607168, 84.7040547607168,
+ 78.1707754306064, 70.9275913731519, 63.5493286289719, 56.1218639580552,
+ 48.6695532368043, 48.6695532368043, 56.1218639580552, 63.5493286289719,
+ 70.9275913731519, 78.1707754306064, 84.7040547607168, 84.7040547607168,
+ 78.1707754306064, 70.9275913731519, 63.5493286289719, 56.1218639580552,
+ 48.6695532368043, 48.028885464146, 55.1100100086019, 61.9916577943195,
+ 68.5184407025597, 74.2857944271342, 78.1707754306064, 78.1707754306064,
+ 74.2857944271342, 68.5184407025597, 61.9916577943196, 55.1100100086019,
+ 48.028885464146, 46.7407217209629, 53.1318721567636, 59.0768040127068,
+ 64.3459021628081, 68.5184407025597, 70.9275913731519, 70.9275913731519,
+ 68.5184407025597, 64.3459021628081, 59.0768040127068, 53.1318721567636,
+ 46.7407217209629, 44.7910057014103, 50.2614918513234, 55.083961998064,
+ 59.0768040127068, 61.9916577943196, 63.5493286289719, 63.5493286289719,
+ 61.9916577943196, 59.0768040127068, 55.083961998064, 50.2614918513234,
+ 44.7910057014103, 42.1582896974909, 46.5794639642222, 50.2614918513234,
+ 53.1318721567636, 55.1100100086019, 56.1218639580552, 56.1218639580552,
+ 55.1100100086019, 53.1318721567636, 50.2614918513234, 46.5794639642222,
+ 42.1582896974909, 38.8150077347025, 42.1582896974908, 44.7910057014103,
+ 46.7407217209629, 48.028885464146, 48.6695532368043, 48.6695532368043,
+ 48.028885464146, 46.7407217209629, 44.7910057014103, 42.1582896974909,
+ 38.8150077347025, -38.8150077347025, -42.1582896974909,
+ -44.7910057014103, -46.7407217209629, -48.028885464146,
+ -48.6695532368043, -48.6695532368043, -48.028885464146,
+ -46.7407217209629, -44.7910057014103, -42.1582896974909,
+ -38.8150077347025, -42.1582896974909, -46.5794639642221,
+ -50.2614918513234, -53.1318721567636, -55.1100100086019,
+ -56.1218639580552, -56.1218639580552, -55.1100100086019,
+ -53.1318721567636, -50.2614918513234, -46.5794639642222,
+ -42.1582896974909, -44.7910057014103, -50.2614918513234,
+ -55.083961998064, -59.0768040127068, -61.9916577943195,
+ -63.5493286289719, -63.5493286289719, -61.9916577943195,
+ -59.0768040127068, -55.083961998064, -50.2614918513234,
+ -44.7910057014103, -46.7407217209629, -53.1318721567636,
+ -59.0768040127068, -64.3459021628081, -68.5184407025596,
+ -70.9275913731519, -70.9275913731519, -68.5184407025597,
+ -64.3459021628081, -59.0768040127068, -53.1318721567636,
+ -46.7407217209629, -48.028885464146, -55.1100100086019,
+ -61.9916577943195, -68.5184407025596, -74.2857944271342,
+ -78.1707754306064, -78.1707754306064, -74.2857944271342,
+ -68.5184407025597, -61.9916577943196, -55.1100100086019,
+ -48.028885464146, -48.6695532368043, -56.1218639580552,
+ -63.5493286289719, -70.9275913731519, -78.1707754306064,
+ -84.7040547607168, -84.7040547607168, -78.1707754306064,
+ -70.9275913731519, -63.5493286289719, -56.1218639580552,
+ -48.6695532368043, -48.6695532368043, -56.1218639580552,
+ -63.5493286289719, -70.9275913731519, -78.1707754306064,
+ -84.7040547607168, -84.7040547607168, -78.1707754306064,
+ -70.9275913731519, -63.5493286289719, -56.1218639580552,
+ -48.6695532368043, -48.028885464146, -55.1100100086019,
+ -61.9916577943195, -68.5184407025597, -74.2857944271342,
+ -78.1707754306064, -78.1707754306064, -74.2857944271342,
+ -68.5184407025597, -61.9916577943196, -55.1100100086019,
+ -48.028885464146, -46.7407217209629, -53.1318721567636,
+ -59.0768040127068, -64.3459021628081, -68.5184407025597,
+ -70.9275913731519, -70.9275913731519, -68.5184407025597,
+ -64.3459021628081, -59.0768040127068, -53.1318721567636,
+ -46.7407217209629, -44.7910057014103, -50.2614918513234,
+ -55.083961998064, -59.0768040127068, -61.9916577943196,
+ -63.5493286289719, -63.5493286289719, -61.9916577943196,
+ -59.0768040127068, -55.083961998064, -50.2614918513234,
+ -44.7910057014103, -42.1582896974909, -46.5794639642222,
+ -50.2614918513234, -53.1318721567636, -55.1100100086019,
+ -56.1218639580552, -56.1218639580552, -55.1100100086019,
+ -53.1318721567636, -50.2614918513234, -46.5794639642222,
+ -42.1582896974909, -38.8150077347025, -42.1582896974909,
+ -44.7910057014103, -46.7407217209629, -48.028885464146,
+ -48.6695532368043, -48.6695532368043, -48.028885464146,
+ -46.7407217209629, -44.7910057014103, -42.1582896974909, -38.8150077347025 ;
+}
diff --git a/xios_examples/read_unstructured_domain_resample/resample.F90 b/xios_examples/read_unstructured_domain_resample/resample.F90
new file mode 100644
index 0000000..c4f5d80
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/resample.F90
@@ -0,0 +1,151 @@
+!-----------------------------------------------------------------------------
+! (C) Crown copyright 2020 Met Office. All rights reserved.
+! The file LICENCE, distributed with this code, contains details of the terms
+! under which the code may be used.
+!-----------------------------------------------------------------------------
+!> Read 2D data on a domain and resample using the axis_input.nc file
+!>
+program resample
+ use xios
+ use mpi
+
+ implicit none
+
+ integer :: comm = -1
+ integer :: rank = -1
+ integer :: npar = 0
+
+ call initialise()
+ call simulate()
+ call finalise()
+contains
+
+ subroutine initialise()
+
+ type(xios_date) :: origin
+ type(xios_date) :: start
+ type(xios_duration) :: tstep
+ integer :: mpi_error
+ integer :: ni_glo
+ integer :: nj_glo
+ integer :: ni
+ integer :: nj
+ integer :: ibegin
+ integer :: jbegin
+ integer :: nvertex
+ integer :: ni_glo_r
+ integer :: nj_glo_r
+ integer :: ni_r
+ integer :: nj_r
+ integer :: ibegin_r
+ integer :: jbegin_r
+
+ ! Arbitrary datetime setup, required for XIOS but unused
+ origin = xios_date(2022, 2, 2, 12, 0, 0)
+ start = xios_date(2022, 12, 13, 12, 0, 0)
+ tstep = xios_hour
+
+ ! Initialise MPI and XIOS
+ call MPI_INIT(mpi_error)
+
+ call xios_initialize('client', return_comm=comm)
+
+ call MPI_Comm_rank(comm, rank, mpi_error)
+ call MPI_Comm_size(comm, npar, mpi_error)
+
+ ! use the domain_check context to obtain sizing information on all arrays and
+ ! the domain decomposition for use in defining the main context interpretation
+ call xios_context_initialize('domain_check', comm)
+ call xios_set_time_origin(origin)
+ call xios_set_start_date(start)
+ call xios_set_timestep(tstep)
+ call xios_close_context_definition()
+
+ call xios_get_domain_attr("original_domain", &
+ ni_glo=ni_glo, nj_glo=nj_glo, &
+ ni=ni, nj=nj, &
+ ibegin=ibegin, jbegin=jbegin, nvertex=nvertex)
+ print *, 'original_domain: rank,ni_glo,nj_glo,ni,nj,ibegin,jbegin,nvertex ',rank,ni_glo,nj_glo,ni,nj,ibegin,jbegin,nvertex
+
+ call xios_get_domain_attr("resampled_domain", &
+ ni_glo=ni_glo_r, nj_glo=nj_glo_r, &
+ ni=ni_r, nj=nj_r, &
+ ibegin=ibegin_r, jbegin=jbegin_r)
+ print *, 'resampled_domain: rank,ni_glo,nj_glo,ni,nj,ibegin,jbegin ',rank,ni_glo_r,nj_glo_r,ni_r,nj_r,ibegin_r,jbegin_r
+
+ ! initialize the main context for interacting with the data.
+ call xios_context_initialize('main', comm)
+
+ call xios_set_time_origin(origin)
+ call xios_set_start_date(start)
+ call xios_set_timestep(tstep)
+
+ call xios_set_domain_attr("original_domain", &
+ ni_glo=ni_glo, nj_glo=nj_glo, &
+ ni=ni, nj=nj, &
+ ibegin=ibegin, jbegin=jbegin, nvertex=nvertex)
+ call xios_set_domain_attr("resampled_domain", &
+ ni_glo=ni_glo_r, nj_glo=nj_glo_r, &
+ ni=ni_r, nj=nj_r, &
+ ibegin=ibegin_r, jbegin=jbegin_r)
+
+ call xios_close_context_definition()
+
+ end subroutine initialise
+
+ subroutine finalise()
+
+ integer :: mpi_error
+
+ ! Finalise all XIOS contexts and MPI
+ call xios_set_current_context('domain_check')
+ call xios_context_finalize()
+ call xios_set_current_context('main')
+ call xios_context_finalize()
+ call MPI_Comm_free(comm, mpi_error)
+ call xios_finalize()
+ call MPI_Finalize(mpi_error)
+
+ end subroutine finalise
+
+ subroutine simulate()
+
+ type(xios_date) :: current
+ integer :: ts
+ integer :: lenx
+ integer :: lenrx
+ integer :: leny
+ integer :: lenry
+
+ ! Allocatable arrays, size is taken from input file
+ double precision, dimension (:,:), allocatable :: inodata
+ double precision, dimension (:,:), allocatable :: inedata
+
+ call xios_get_domain_attr('original_domain', ni=lenx, nj=leny)
+ call xios_get_domain_attr('resampled_domain', ni=lenrx, nj=lenry)
+
+ print *, 'original_domain: rank,lenx,leny ',rank,lenx,leny
+ print *, 'resampled_domain: rank,lenx,leny ',rank,lenrx,lenry
+
+ allocate ( inodata(leny, lenx) )
+ allocate ( inedata(lenry, lenrx) )
+
+ ! Load data from the input file
+ call xios_recv_field('odatain', inodata)
+ call xios_recv_field('edatain', inedata)
+
+ do ts=1, 1
+ call xios_update_calendar(ts)
+ call xios_get_current_date(current)
+ ! Send (copy) the original data to the output file.
+ call xios_send_field('odata', inodata)
+ ! Send (copy) the expected data to the output file.
+ call xios_send_field('edata', inedata)
+ enddo
+
+ deallocate (inodata)
+ deallocate (inedata)
+
+ end subroutine simulate
+
+end program resample
diff --git a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
new file mode 100644
index 0000000..ac333bc
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
@@ -0,0 +1,47 @@
+import copy
+import glob
+import netCDF4
+import numpy as np
+import os
+import subprocess
+import unittest
+
+import xios_examples.shared_testing as xshared
+
+this_path = os.path.realpath(__file__)
+this_dir = os.path.dirname(this_path)
+
+class TestResampleDomain(xshared._TestCase):
+ test_dir = this_dir
+ transient_inputs = ['domain_input.nc', 'domain_input_ugrid.nc']
+ transient_outputs = ['domain_output.nc', 'domain_output_ugrid.nc']
+ rtol = 0.7
+ mesh_file_cdl = 'mesh_C12.cdl'
+
+
+# A list of input function names where XIOS is known to produce different
+# output from the expected output data
+# for future investigation / ToDo
+# this is a dict, where the name of the key is the name of the test
+# to register as a known_failure (tname)
+# and the value is a string explaining the failure
+# this handles FAIL conditions but NOT ERROR conditions
+known_failures = {}
+
+# iterate over analytic function names
+for f in ['sinusiod', 'harmonic', 'vortex', 'gulfstream']:
+ # unique name for the test
+ tname = f'test_{f}'
+ # add the test as an attribute (function) to the test class
+ if os.environ.get('MVER', '').startswith('XIOS3/trunk'):
+ # these tests are hitting exceptions with XIOS3
+ # but not XIOS2, so skip for XIOS3 runner
+ setattr(TestResampleDomain, tname,
+ unittest.skip(TestResampleDomain.make_a_resample_test(f)))
+ elif tname in known_failures:
+ # set decorator @unittest.expectedFailure
+ setattr(TestResampleDomain, tname,
+ unittest.expectedFailure(TestResampleDomain.make_a_resample_test(f, nc_method='data_func', nclients=3)))
+ else:
+ setattr(TestResampleDomain, tname,
+ TestResampleDomain.make_a_resample_test(f, nc_method='data_func', nclients=3))
diff --git a/xios_examples/read_unstructured_domain_resample/xios.xml b/xios_examples/read_unstructured_domain_resample/xios.xml
new file mode 100644
index 0000000..9ec1df0
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/xios.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ performance
+
+
+ 1.0
+
+
+
+
+ true
+
+ 100
+
+
+ true
+
+
+
+
diff --git a/xios_examples/shared_testing.py b/xios_examples/shared_testing.py
index 111d2ce..440c47e 100644
--- a/xios_examples/shared_testing.py
+++ b/xios_examples/shared_testing.py
@@ -5,6 +5,9 @@
import os
import subprocess
import unittest
+from pathlib import Path
+
+import xios_examples.gen_netcdf as gn
this_path = os.path.realpath(__file__)
this_dir = os.path.dirname(this_path)
@@ -21,6 +24,26 @@ class _TestCase(unittest.TestCase):
transient_outputs = []
rtol = 5e-03
executable = './resample.exe'
+ mesh_file_cdl = None
+
+ @classmethod
+ def make_netcdf(cls, inf, inputfile, nc_method='cdl_files'):
+ if nc_method == 'cdl_files':
+ # create a netCDF file from the `.cdl` input
+ subprocess.run(['ncgen', '-k', 'nc4', '-o', inputfile,
+ inf], cwd=cls.test_dir, check=True)
+ elif nc_method == 'data_func':
+ mesh_file_nc = None
+ if cls.mesh_file_cdl is not None:
+ mesh_file_nc = Path(cls.mesh_file_cdl).with_suffix('.nc')
+ # create a mesh netCDF file from the mesh `.cdl` file
+ subprocess.run(['ncgen', '-k', 'nc4', '-o', mesh_file_nc,
+ cls.mesh_file_cdl], cwd=cls.test_dir, check=True)
+ # create a netCDF file from an analytic function
+ cwd = Path(cls.test_dir)
+ if mesh_file_nc is not None:
+ mesh_file_nc = cwd/mesh_file_nc
+ gn.run(cwd/inputfile, func_str=inf, mesh_file=mesh_file_nc)
@classmethod
def run_mpi_xios(cls, nclients=1, nservers=1):
@@ -113,21 +136,21 @@ def tearDownClass(cls):
@classmethod
- def make_a_resample_test(cls, inf, nclients=1, nservers=1):
+ def make_a_resample_test(cls, inf, nc_method='cdl_files',
+ nclients=1, nservers=1):
"""
this function makes a test case and returns it as a test function,
suitable to be dynamically added to a TestCase for running.
"""
# always copy for value, don't pass by reference.
- infile = copy.copy(inf)
+ infcp = copy.copy(inf)
# expected by the fortran XIOS resample program's main.xml
inputfile = cls.transient_inputs[0]
outputfile = cls.transient_outputs[0]
def test_resample(self):
- # create a netCDF file from the `.cdl` input
- subprocess.run(['ncgen', '-k', 'nc4', '-o', inputfile,
- infile], cwd=cls.test_dir, check=True)
+ # create a netCDF file using nc_method
+ cls.make_netcdf(infcp, inputfile, nc_method=nc_method)
cls.run_mpi_xios(nclients=nclients, nservers=nservers)
# load the result netCDF file