zKQpC|{kQthdbdwJ+WvFd&HLZ!KkNQx|2dY({?oed;Uq|#@Ta|S?3oL=s%Hij@c*Y8vpapfWLVD
zS)V}vIr@O}&v^HoWY0~1e*SqWf&Me@5%(Ye^AFx<*}h|~eP8yc{pWfD{U@RKUw^g#
zY;@l@{r>&e!}gyr$+O*kUuRz5|8D2Ghi=bHb{
z`>%EJeJ4@ONSsY9w(+nqO`?f^#?RMy?I5bF!7HKVr}Fb?y47
z26r!h{Q7cyuWxgs4#Ts*=vwQyapu0(k|$Ee;joNDZ{b+)=53TUf5`5NSycElC7$_d
zaxoRYI`Y$Umm0=f$6s98IP*OH+&p&N%=qSY$H8)$yv0@H@pXHC-tUZx7gtISVcci!yynsMmpa@xF2i>G^j$uC=#vD@6|vvt|=GkNg6I=}Vs
z`}{BZjm^4faLxIK7$>^#`@XxD?CH#-k@99(g(-t*u1hnwe%k?>oVS&^{H)~eI8r48QTsE)tA1(Vz>}YNM
zvOlEGVKScE+`M+)?D*Pou)H>}^dBw#!F@g(XYZ5s8@~=rA9Cl-#@YK!{?TsUht4nS
z?Ed3Z+#Ls7hqcmwWPXbKjn7the9S!bb=Twl=eKzLyqeb;H}9X%Z(nymN&j)znOzUk
zXWVsZ$Itq0oLQfdvJWEN^=bBPad%(X^=sFe8Mm!6KOwHQej8`*iTq~`hy*Z!+!lC`u_p7L}rly
literal 0
HcmV?d00001
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..b9092a4
--- /dev/null
+++ b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
@@ -0,0 +1,52 @@
+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']
+ transient_outputs = ['domain_output.nc']
+ rtol = 5e-03
+
+
+# A list of input `.cdl` files 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 = {'test_domain_input_edge_simple_square_ten':
+ ('The bi-linear polynomial poorly reproduces the'
+ ' input x^2+y^2 function'),
+ 'test_domain_input_simple_square_ten':
+ ('The bi-linear polynomial poorly reproduces the'
+ ' input x^2+y^2 function')
+ }
+
+# iterate through `.cdl` files in this test case folder
+for f in glob.glob('{}/*.cdl'.format(this_dir)):
+ # unique name for the test
+ tname = 'test_{}'.format(os.path.splitext(os.path.basename(f))[0])
+ # 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, nclients=3)))
+ else:
+ setattr(TestResampleDomain, tname,
+ TestResampleDomain.make_a_resample_test(f, 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
+
+
+
+
From 329fa20745a97a6be7c7538e8091b8a0b24b1f75 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Wed, 1 May 2024 17:49:37 +0100
Subject: [PATCH 02/14] Added more comprehensive command line parsing to
get_netcdf.py
---
.../dataFunc.py | 7 +++
.../gen_netcdf.py | 53 +++++++++++++------
2 files changed, 45 insertions(+), 15 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/dataFunc.py b/xios_examples/read_unstructured_domain_resample/dataFunc.py
index 1e16a3b..b0aa3ec 100644
--- a/xios_examples/read_unstructured_domain_resample/dataFunc.py
+++ b/xios_examples/read_unstructured_domain_resample/dataFunc.py
@@ -103,7 +103,14 @@ def func_cossin(self, latarr, lonarr):
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/read_unstructured_domain_resample/gen_netcdf.py b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
index ead4aeb..f1ac9b0 100644
--- a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
+++ b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
@@ -1,5 +1,6 @@
import sys
import os
+import argparse
import netCDF4 as nc
import numpy as np
from dataFunc import dataFunc
@@ -12,7 +13,8 @@ def create_ncfile(ncfile, nlat, nlon, func, dim_prefix='', dim_suffix='', data_p
ncfile.createDimension(latname, nlat)
ncfile.createDimension(lonname, nlon)
- ncfile.createDimension('nbounds', 2)
+ if 'nbounds' not in ncfile.dimensions:
+ ncfile.createDimension('nbounds', 2)
lat = ncfile.createVariable(latname, np.float32, (latname,))
lat.units = 'degrees_north'
@@ -203,21 +205,42 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
ncmeshin.close()
+def getargs():
+
+ 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 data")
+ parser.add_argument("--meshvar", help="Variable name of mesh data in netCDF file")
+ parser.add_argument("--func", help="Analytic function for data variable", choices=funclist, default='sinusiod')
+ parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data",type = int, default=101)
+ parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data",type = int, default=100)
+ parser.add_argument("--nlatr", help="Number of latitude points for resampled grid",type = int, default=81)
+ parser.add_argument("--nlonr", help="Number of longitude points for resampled grid",type = int, default=80)
+ parser.add_argument("file_out", help="Name of netCDF non-UGRID output file")
+
+ args = parser.parse_args()
+
+ if (args.meshfile and args.meshvar is None) or (args.meshvar and args.meshfile is None):
+ parser.error("UGRID netCDF file output requires both options --meshfile and --meshvar to be specified")
+
+ return args
+
if __name__ == "__main__":
- mesh_file = 'mesh_C12.nc'
- mesh_varname = 'dynamics'
- file_out = 'domain_input.nc'
- func_str = "sinusiod"
- if len(sys.argv) == 2:
- file_out = sys.argv[1]
- elif len(sys.argv) > 2:
- file_out = sys.argv[1]
- func_str = sys.argv[2]
+ args = getargs()
+
+ mesh_file = args.meshfile
+ mesh_varname = args.meshvar
+ file_out = args.file_out
+ func_str = args.func
df = dataFunc()
func = df.get_func(func_str)
- mkugrid = True
+ mkugrid = args.meshfile is not None
data_prefix = 'original_'
@@ -233,12 +256,12 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
ncfile = nc.Dataset(file_out, 'w', format='NETCDF4')
if not mkugrid:
- nlat = 101
- nlon = 100
+ nlat = args.nlat
+ nlon = args.nlon
create_ncfile(ncfile, nlat, nlon, func, data_prefix=data_prefix)
- nlat = 81
- nlon = 80
+ nlat = args.nlatr
+ nlon = args.nlonr
data_prefix = 'resample_'
dim_suffix = '_resample'
create_ncfile(ncfile, nlat, nlon, func, data_prefix=data_prefix, dim_suffix=dim_suffix)
From 95ee7869324d5af2109ed6d1f3d7f949b56f8b10 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Wed, 1 May 2024 18:13:55 +0100
Subject: [PATCH 03/14] Add default values to help text
---
.../read_unstructured_domain_resample/gen_netcdf.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
index f1ac9b0..03b3b2b 100644
--- a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
+++ b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
@@ -215,11 +215,11 @@ def getargs():
parser.add_argument("--meshfile", help="Name of netCDF file containing UGRID mesh data")
parser.add_argument("--meshvar", help="Variable name of mesh data in netCDF file")
- parser.add_argument("--func", help="Analytic function for data variable", choices=funclist, default='sinusiod')
- parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data",type = int, default=101)
- parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data",type = int, default=100)
- parser.add_argument("--nlatr", help="Number of latitude points for resampled grid",type = int, default=81)
- parser.add_argument("--nlonr", help="Number of longitude points for resampled grid",type = int, default=80)
+ parser.add_argument("--func", help="Analytic function for data variable (default: %(default)s)", choices=funclist, default='sinusiod')
+ parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data (default: %(default)s)",type = int, default=101)
+ parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data (default: %(default)s)",type = int, default=100)
+ parser.add_argument("--nlatr", help="Number of latitude points for resampled grid (default: %(default)s)",type = int, default=81)
+ parser.add_argument("--nlonr", help="Number of longitude points for resampled grid (default: %(default)s)",type = int, default=80)
parser.add_argument("file_out", help="Name of netCDF non-UGRID output file")
args = parser.parse_args()
From 04baaf184a780e834b2785a3a77d113aa7526d5b Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Thu, 2 May 2024 18:15:16 +0100
Subject: [PATCH 04/14] Work out mesh topology variable name if not given.
Improve help text
---
.../add_bounds.py | 9 +++++-
.../gen_netcdf.py | 32 ++++++++++++-------
2 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/add_bounds.py b/xios_examples/read_unstructured_domain_resample/add_bounds.py
index 553be4d..5547507 100644
--- a/xios_examples/read_unstructured_domain_resample/add_bounds.py
+++ b/xios_examples/read_unstructured_domain_resample/add_bounds.py
@@ -3,11 +3,18 @@
import os
import netCDF4 as nc
-def add_bounds(file, mesh_varname='Mesh2d', verbose=False):
+def add_bounds(file, mesh_varname=None, verbose=False):
ncfile = nc.Dataset(file, 'a', format='NETCDF4')
if verbose: print (ncfile)
+ if mesh_varname is None:
+ for name,var in ncfile.variables.items():
+ if 'cf_role' in var.ncattrs():
+ if var.cf_role == 'mesh_topology':
+ mesh_varname = name
+ break
+
mesh_var = ncfile.variables[mesh_varname]
if verbose: print(mesh_var)
diff --git a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
index 03b3b2b..d3a12eb 100644
--- a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
+++ b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
@@ -56,11 +56,24 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
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
-
- meshin_var = ncmeshin.variables[meshin_varname]
face_node_connectivity = ncmeshin.variables[meshin_var.face_node_connectivity]
edge_node_connectivity = ncmeshin.variables[meshin_var.edge_node_connectivity]
@@ -213,20 +226,17 @@ def getargs():
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 data")
- parser.add_argument("--meshvar", help="Variable name of mesh data in netCDF file")
+ parser.add_argument("--meshfile", help="Name of netCDF file containing UGRID mesh topology data, needed for UGRID data")
+ parser.add_argument("--meshvar", help="Variable name of mesh topology data in netCDF file, optional for UGRID data", default=None)
parser.add_argument("--func", help="Analytic function for data variable (default: %(default)s)", choices=funclist, default='sinusiod')
- parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data (default: %(default)s)",type = int, default=101)
- parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data (default: %(default)s)",type = int, default=100)
- parser.add_argument("--nlatr", help="Number of latitude points for resampled grid (default: %(default)s)",type = int, default=81)
- parser.add_argument("--nlonr", help="Number of longitude points for resampled grid (default: %(default)s)",type = int, default=80)
+ parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data (default: %(default)d)", type = int, default=101)
+ parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data (default: %(default)d)", type = int, default=100)
+ parser.add_argument("--nlatr", help="Number of latitude points for resampled grid (default: %(default)d)", type = int, default=81)
+ parser.add_argument("--nlonr", help="Number of longitude points for resampled grid (default: %(default)d)", type = int, default=80)
parser.add_argument("file_out", help="Name of netCDF non-UGRID output file")
args = parser.parse_args()
- if (args.meshfile and args.meshvar is None) or (args.meshvar and args.meshfile is None):
- parser.error("UGRID netCDF file output requires both options --meshfile and --meshvar to be specified")
-
return args
if __name__ == "__main__":
From ef7b7d270a6919de44b73ff9e8f53efd3490fde1 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Thu, 2 May 2024 19:26:08 +0100
Subject: [PATCH 05/14] Fix using global var instead of local var bug. Put main
code into function so it can be imported and called
---
.../gen_netcdf.py | 51 ++++++++++---------
1 file changed, 27 insertions(+), 24 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
index d3a12eb..0bfb4d3 100644
--- a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
+++ b/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
@@ -108,13 +108,13 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
ncmeshout.Conventions = "UGRID-1.0"
start_index = 0
- face_dim = ncfile.createDimension(f'n{meshout_varname}_face', nface)
- node_dim = ncfile.createDimension(f'n{meshout_varname}_node', nnode)
- edge_dim = ncfile.createDimension(f'n{meshout_varname}_edge', nedge)
- vertex_dim = ncfile.createDimension(f'n{meshout_varname}_vertex', 4)
- two_dim = ncfile.createDimension('Two', 2)
+ 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 = ncfile.createVariable(meshout_varname, np.int32)
+ 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)
@@ -128,71 +128,71 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
meshout_var.edge_face_connectivity = f"{meshout_varname}_edge_face_links"
meshout_var.face_face_connectivity = f"{meshout_varname}_face_links"
- face_x = ncfile.createVariable(f"{meshout_varname}_face_x", np.float32, (face_dim,))
+ face_x = ncmeshout.createVariable(f"{meshout_varname}_face_x", np.float32, (face_dim,))
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 = ncfile.createVariable(f"{meshout_varname}_face_y", np.float32, (face_dim,))
+ face_y = ncmeshout.createVariable(f"{meshout_varname}_face_y", np.float32, (face_dim,))
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 = ncfile.createVariable(f"{meshout_varname}_node_x", np.float32, (node_dim,))
+ node_x = ncmeshout.createVariable(f"{meshout_varname}_node_x", np.float32, (node_dim,))
node_x.standard_name = "longitude"
node_x.long_name = "Longitude of mesh nodes."
node_x.units = "degrees_east"
node_x[:] = node_lon
- node_y = ncfile.createVariable(f"{meshout_varname}_node_y", np.float32, (node_dim,))
+ node_y = ncmeshout.createVariable(f"{meshout_varname}_node_y", np.float32, (node_dim,))
node_y.standard_name = "latitude"
node_y.long_name = "Latitude of mesh nodes."
node_y.units = "degrees_north"
node_y[:] = node_lat
- edge_x = ncfile.createVariable(f"{meshout_varname}_edge_x", np.float32, (edge_dim,))
+ edge_x = ncmeshout.createVariable(f"{meshout_varname}_edge_x", np.float32, (edge_dim,))
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 = ncfile.createVariable(f"{meshout_varname}_edge_y", np.float32, (edge_dim,))
+ edge_y = ncmeshout.createVariable(f"{meshout_varname}_edge_y", np.float32, (edge_dim,))
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 = ncfile.createVariable(f"{meshout_varname}_face_nodes", np.int32, (face_dim,vertex_dim))
+ face_node = ncmeshout.createVariable(f"{meshout_varname}_face_nodes", np.int32, (face_dim,vertex_dim))
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 = ncfile.createVariable(f"{meshout_varname}_edge_nodes", np.int32, (edge_dim,two_dim))
+ edge_node = ncmeshout.createVariable(f"{meshout_varname}_edge_nodes", np.int32, (edge_dim,two_dim))
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 = ncfile.createVariable(f"{meshout_varname}_face_edges", np.int32, (face_dim,vertex_dim), fill_value=999999)
+ face_edge = ncmeshout.createVariable(f"{meshout_varname}_face_edges", np.int32, (face_dim,vertex_dim), 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 = ncfile.createVariable(f"{meshout_varname}_edge_face_links", np.int32, (edge_dim,two_dim), fill_value=-999)
+ edge_face = ncmeshout.createVariable(f"{meshout_varname}_edge_face_links", np.int32, (edge_dim,two_dim), 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 = ncfile.createVariable(f"{meshout_varname}_face_links", np.int32, (face_dim,vertex_dim), fill_value=999999)
+ face_face = ncmeshout.createVariable(f"{meshout_varname}_face_links", np.int32, (face_dim,vertex_dim), 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)
@@ -202,14 +202,14 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
if add_bounds:
face_x.bounds = f"{face_x.name}_bounds"
- face_x_bnds = ncfile.createVariable(face_x.bounds, face_x.dtype, face_node.dimensions)
+ 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 = ncfile.createVariable(face_y.bounds, face_y.dtype, face_node.dimensions)
+ 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 = ncfile.createVariable(dataname, np.float64, (face_dim,))
+ data = ncmeshout.createVariable(dataname, np.float64, (face_dim,))
data.long_name = "input data values"
data.mesh = meshout_varname
data.location = "face"
@@ -218,7 +218,7 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
ncmeshin.close()
-def getargs():
+def getargs(args=None):
df = dataFunc()
funclist = df.get_funclist()
@@ -235,13 +235,13 @@ def getargs():
parser.add_argument("--nlonr", help="Number of longitude points for resampled grid (default: %(default)d)", type = int, default=80)
parser.add_argument("file_out", help="Name of netCDF non-UGRID output file")
- args = parser.parse_args()
+ args = parser.parse_args(args)
return args
-if __name__ == "__main__":
+def main(args=None):
- args = getargs()
+ args = getargs(args)
mesh_file = args.meshfile
mesh_varname = args.meshvar
@@ -277,3 +277,6 @@ def getargs():
create_ncfile(ncfile, nlat, nlon, func, data_prefix=data_prefix, dim_suffix=dim_suffix)
ncfile.close()
+
+if __name__ == "__main__":
+ main()
From d86b62fd61fbf6cea98c35ae55eefcef4b9b9a18 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Tue, 7 May 2024 16:51:43 +0100
Subject: [PATCH 06/14] Add code to make tests work
---
.../dataFunc.py | 0
.../gen_netcdf.py | 56 +++++++++++--------
.../Makefile | 2 +-
.../iodef.xml | 9 +++
.../test_resample_cases.py | 29 +++++-----
xios_examples/shared_testing.py | 23 ++++++--
6 files changed, 76 insertions(+), 43 deletions(-)
rename xios_examples/{read_unstructured_domain_resample => }/dataFunc.py (100%)
rename xios_examples/{read_unstructured_domain_resample => }/gen_netcdf.py (89%)
create mode 100644 xios_examples/read_unstructured_domain_resample/iodef.xml
diff --git a/xios_examples/read_unstructured_domain_resample/dataFunc.py b/xios_examples/dataFunc.py
similarity index 100%
rename from xios_examples/read_unstructured_domain_resample/dataFunc.py
rename to xios_examples/dataFunc.py
diff --git a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py b/xios_examples/gen_netcdf.py
similarity index 89%
rename from xios_examples/read_unstructured_domain_resample/gen_netcdf.py
rename to xios_examples/gen_netcdf.py
index 0bfb4d3..14b025f 100644
--- a/xios_examples/read_unstructured_domain_resample/gen_netcdf.py
+++ b/xios_examples/gen_netcdf.py
@@ -3,7 +3,18 @@
import argparse
import netCDF4 as nc
import numpy as np
-from dataFunc import dataFunc
+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=''):
@@ -218,7 +229,7 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
ncmeshin.close()
-def getargs(args=None):
+def getargs(argv=None):
df = dataFunc()
funclist = df.get_funclist()
@@ -226,31 +237,28 @@ def getargs(args=None):
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")
- parser.add_argument("--meshvar", help="Variable name of mesh topology data in netCDF file, optional for UGRID data", default=None)
- parser.add_argument("--func", help="Analytic function for data variable (default: %(default)s)", choices=funclist, default='sinusiod')
- parser.add_argument("--nlat", help="Number of latitude points for original grid, not needed for UGRID data (default: %(default)d)", type = int, default=101)
- parser.add_argument("--nlon", help="Number of longitude points for original grid, not needed for UGRID data (default: %(default)d)", type = int, default=100)
- parser.add_argument("--nlatr", help="Number of latitude points for resampled grid (default: %(default)d)", type = int, default=81)
- parser.add_argument("--nlonr", help="Number of longitude points for resampled grid (default: %(default)d)", type = int, default=80)
+ 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 netCDF non-UGRID output file")
- args = parser.parse_args(args)
+ parser.set_defaults(**defaults)
+ args = parser.parse_args(argv)
return args
-def main(args=None):
-
- args = getargs(args)
-
- mesh_file = args.meshfile
- mesh_varname = args.meshvar
- file_out = args.file_out
- func_str = args.func
+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']):
df = dataFunc()
func = df.get_func(func_str)
- mkugrid = args.meshfile is not None
+ mkugrid = mesh_file is not None
data_prefix = 'original_'
@@ -266,17 +274,17 @@ def main(args=None):
ncfile = nc.Dataset(file_out, 'w', format='NETCDF4')
if not mkugrid:
- nlat = args.nlat
- nlon = args.nlon
create_ncfile(ncfile, nlat, nlon, func, data_prefix=data_prefix)
- nlat = args.nlatr
- nlon = args.nlonr
data_prefix = 'resample_'
dim_suffix = '_resample'
- create_ncfile(ncfile, nlat, nlon, func, data_prefix=data_prefix, dim_suffix=dim_suffix)
+ 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
index 8f352fd..b37285e 100644
--- a/xios_examples/read_unstructured_domain_resample/Makefile
+++ b/xios_examples/read_unstructured_domain_resample/Makefile
@@ -55,4 +55,4 @@ run:
# cleanup
clean:
- rm -f *.exe *.o *.mod *.MOD *.out *.err
+ rm -f *.exe *.o *.mod *.MOD *.out *.err $(filter-out mesh_C12.nc,$(wildcard *.nc))
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/test_resample_cases.py b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
index b9092a4..92f5ff1 100644
--- a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
+++ b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
@@ -13,9 +13,10 @@
class TestResampleDomain(xshared._TestCase):
test_dir = this_dir
- transient_inputs = ['domain_input.nc']
- transient_outputs = ['domain_output.nc']
+ transient_inputs = ['domain_input.nc', 'domain_input_ugrid.nc']
+ transient_outputs = ['domain_output.nc', 'domain_output_ugrid.nc']
rtol = 5e-03
+ mesh_file = 'mesh_C12.nc'
# A list of input `.cdl` files where XIOS is known to produce different
@@ -25,18 +26,20 @@ class TestResampleDomain(xshared._TestCase):
# 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 = {'test_domain_input_edge_simple_square_ten':
- ('The bi-linear polynomial poorly reproduces the'
- ' input x^2+y^2 function'),
- 'test_domain_input_simple_square_ten':
- ('The bi-linear polynomial poorly reproduces the'
- ' input x^2+y^2 function')
+known_failures = {'test_sinusiod':
+ ('The difference file has large errors'),
+ 'test_harmonic':
+ ('The difference file has large errors'),
+ 'test_vortex':
+ ('The difference file has large errors'),
+ 'test_gulfstream':
+ ('The difference file has large errors')
}
-# iterate through `.cdl` files in this test case folder
-for f in glob.glob('{}/*.cdl'.format(this_dir)):
+# iterate over analytic function names
+for f in ['sinusiod', 'harmonic', 'vortex', 'gulfstream']:
# unique name for the test
- tname = 'test_{}'.format(os.path.splitext(os.path.basename(f))[0])
+ 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
@@ -46,7 +49,7 @@ class TestResampleDomain(xshared._TestCase):
elif tname in known_failures:
# set decorator @unittest.expectedFailure
setattr(TestResampleDomain, tname,
- unittest.expectedFailure(TestResampleDomain.make_a_resample_test(f, nclients=3)))
+ unittest.expectedFailure(TestResampleDomain.make_a_resample_test(f, nc_method='data_func', nclients=3)))
else:
setattr(TestResampleDomain, tname,
- TestResampleDomain.make_a_resample_test(f, nclients=3))
+ TestResampleDomain.make_a_resample_test(f, nc_method='data_func', nclients=3))
diff --git a/xios_examples/shared_testing.py b/xios_examples/shared_testing.py
index 111d2ce..f0b8456 100644
--- a/xios_examples/shared_testing.py
+++ b/xios_examples/shared_testing.py
@@ -21,6 +21,19 @@ class _TestCase(unittest.TestCase):
transient_outputs = []
rtol = 5e-03
executable = './resample.exe'
+ mesh_file = 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':
+ # create a netCDF file from an analytic function
+ os.chdir(cls.test_dir)
+ import xios_examples.gen_netcdf as gn
+ gn.run(inputfile, func_str=inf, mesh_file=cls.mesh_file)
@classmethod
def run_mpi_xios(cls, nclients=1, nservers=1):
@@ -113,21 +126,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
From e392266e89ac7b06bb79c55d22fcffcead7ffca7 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Wed, 15 May 2024 12:13:12 +0100
Subject: [PATCH 07/14] Changes requested in pull request, delete unused python
script and tidy up shared_testing.py
---
.../add_bounds.py | 51 -------------------
xios_examples/shared_testing.py | 8 +--
2 files changed, 5 insertions(+), 54 deletions(-)
delete mode 100644 xios_examples/read_unstructured_domain_resample/add_bounds.py
diff --git a/xios_examples/read_unstructured_domain_resample/add_bounds.py b/xios_examples/read_unstructured_domain_resample/add_bounds.py
deleted file mode 100644
index 5547507..0000000
--- a/xios_examples/read_unstructured_domain_resample/add_bounds.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import sys
-import shutil
-import os
-import netCDF4 as nc
-
-def add_bounds(file, mesh_varname=None, verbose=False):
-
- ncfile = nc.Dataset(file, 'a', format='NETCDF4')
- if verbose: print (ncfile)
-
- if mesh_varname is None:
- for name,var in ncfile.variables.items():
- if 'cf_role' in var.ncattrs():
- if var.cf_role == 'mesh_topology':
- mesh_varname = name
- break
-
- mesh_var = ncfile.variables[mesh_varname]
- if verbose: print(mesh_var)
-
- face_node_connectivity = ncfile.variables[mesh_var.face_node_connectivity]
- if verbose: print (face_node_connectivity)
-
- for face_coord,node_coord in zip(mesh_var.face_coordinates.split(" "),mesh_var.node_coordinates.split(" ")):
-
- face_coordvar = ncfile.variables[face_coord]
- if verbose: print (face_coordvar)
-
- node_coordvar = ncfile.variables[node_coord]
- if verbose: print (node_coordvar)
-
- face_coord_bnds = f'{face_coord}_bounds'
- face_coordvar.bounds = face_coord_bnds
- bnds = ncfile.createVariable(face_coord_bnds, face_coordvar.dtype, face_node_connectivity.dimensions)
- bnds[:] = node_coordvar[face_node_connectivity[:].flatten()-face_node_connectivity.start_index].reshape(bnds.shape)
- if verbose: print (bnds)
-
- ncfile.close()
-
-if __name__ == "__main__":
-
- if len(sys.argv) == 2:
- infile = sys.argv[1]
- name, ext = os.path.splitext(infile)
- outfile = f'{name}_bnds{ext}'
- elif len(sys.argv) > 2:
- infile = sys.argv[1]
- outfile = sys.argv[2]
-
- shutil.copy2(infile,outfile)
- add_bounds(outfile, verbose=False)
diff --git a/xios_examples/shared_testing.py b/xios_examples/shared_testing.py
index f0b8456..fe1f1b0 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)
@@ -31,9 +34,8 @@ def make_netcdf(cls, inf, inputfile, nc_method='cdl_files'):
inf], cwd=cls.test_dir, check=True)
elif nc_method == 'data_func':
# create a netCDF file from an analytic function
- os.chdir(cls.test_dir)
- import xios_examples.gen_netcdf as gn
- gn.run(inputfile, func_str=inf, mesh_file=cls.mesh_file)
+ cwd = Path(cls.test_dir)
+ gn.run(cwd/inputfile, func_str=inf, mesh_file=cwd/cls.mesh_file)
@classmethod
def run_mpi_xios(cls, nclients=1, nservers=1):
From a0c78d1e1235a278c4b7a43cc4ea9031d8df884c Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Thu, 16 May 2024 10:57:41 +0100
Subject: [PATCH 08/14] Add extra comments/docstrings
---
xios_examples/dataFunc.py | 8 ++++
xios_examples/gen_netcdf.py | 43 +++++++++++++++++--
.../test_resample_cases.py | 2 +-
3 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/xios_examples/dataFunc.py b/xios_examples/dataFunc.py
index b0aa3ec..87ebd6b 100644
--- a/xios_examples/dataFunc.py
+++ b/xios_examples/dataFunc.py
@@ -1,6 +1,14 @@
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):
diff --git a/xios_examples/gen_netcdf.py b/xios_examples/gen_netcdf.py
index 14b025f..2b67dd0 100644
--- a/xios_examples/gen_netcdf.py
+++ b/xios_examples/gen_netcdf.py
@@ -17,6 +17,19 @@
}
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}'
@@ -60,8 +73,19 @@ def create_ncfile(ncfile, nlat, nlon, func, dim_prefix='', dim_suffix='', data_p
data[:] = func(lat2d, lon2d)
def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add_bounds=True, data_prefix='', data_suffix=''):
-
- # Create unstructured mesh from lfric mesh netCDF file
+ """
+ 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}'
@@ -244,7 +268,7 @@ def getargs(argv=None):
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 netCDF non-UGRID output file")
+ parser.add_argument("file_out", help="Name of non-UGRID output netCDF file")
parser.set_defaults(**defaults)
args = parser.parse_args(argv)
@@ -255,6 +279,19 @@ 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)
diff --git a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
index 92f5ff1..66d029a 100644
--- a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
+++ b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
@@ -19,7 +19,7 @@ class TestResampleDomain(xshared._TestCase):
mesh_file = 'mesh_C12.nc'
-# A list of input `.cdl` files where XIOS is known to produce different
+# 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
From 5ee7c84b8fd531241abe1a600debc90f34693a78 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Mon, 20 May 2024 13:29:16 +0100
Subject: [PATCH 09/14] Remove XIOS3 skip test
---
.../test_resample_cases.py | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
index 66d029a..32beb6b 100644
--- a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
+++ b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
@@ -41,12 +41,7 @@ class TestResampleDomain(xshared._TestCase):
# 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:
+ if 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)))
From b8c377f0f5e060b61d63ed54185dd132a7058cd2 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Mon, 20 May 2024 19:01:59 +0100
Subject: [PATCH 10/14] Increase relative tolerance value so there are no known
failures
---
.../test_resample_cases.py | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
index 32beb6b..d7d15a4 100644
--- a/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
+++ b/xios_examples/read_unstructured_domain_resample/test_resample_cases.py
@@ -15,7 +15,7 @@ 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 = 5e-03
+ rtol = 0.7
mesh_file = 'mesh_C12.nc'
@@ -26,15 +26,7 @@ class TestResampleDomain(xshared._TestCase):
# 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 = {'test_sinusiod':
- ('The difference file has large errors'),
- 'test_harmonic':
- ('The difference file has large errors'),
- 'test_vortex':
- ('The difference file has large errors'),
- 'test_gulfstream':
- ('The difference file has large errors')
- }
+known_failures = {}
# iterate over analytic function names
for f in ['sinusiod', 'harmonic', 'vortex', 'gulfstream']:
From ebe1a9578ca8f150acbbd4bc54e1a0d2bb4aad83 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Tue, 21 May 2024 12:26:37 +0100
Subject: [PATCH 11/14] Replace Dimension instances with Dimension names in
createVariable as only versions >=1.6.0 of python netCDF4 support using
Dimension instances
---
xios_examples/gen_netcdf.py | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/xios_examples/gen_netcdf.py b/xios_examples/gen_netcdf.py
index 2b67dd0..56b48d3 100644
--- a/xios_examples/gen_netcdf.py
+++ b/xios_examples/gen_netcdf.py
@@ -163,71 +163,71 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
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,))
+ 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,))
+ 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,))
+ 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,))
+ 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,))
+ 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,))
+ 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,vertex_dim))
+ 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,two_dim))
+ 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,vertex_dim), fill_value=999999)
+ 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,two_dim), fill_value=-999)
+ 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,vertex_dim), fill_value=999999)
+ 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)
@@ -244,7 +244,7 @@ def create_ncfile_unstructured(ncmeshout, meshin_file, meshin_varname, func, add
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,))
+ data = ncmeshout.createVariable(dataname, np.float64, (face_dim.name,))
data.long_name = "input data values"
data.mesh = meshout_varname
data.location = "face"
From 84d7edfb22ae70fa85675b42f1121666f78820d4 Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Tue, 21 May 2024 13:44:37 +0100
Subject: [PATCH 12/14] Add read_access=.true. to xml, seems to be needed by
XIOS3 but not XIOS2
---
.../read_unstructured_domain_resample/domain_check.xml | 4 ++--
xios_examples/read_unstructured_domain_resample/main.xml | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/xios_examples/read_unstructured_domain_resample/domain_check.xml b/xios_examples/read_unstructured_domain_resample/domain_check.xml
index a37e8fc..574c831 100644
--- a/xios_examples/read_unstructured_domain_resample/domain_check.xml
+++ b/xios_examples/read_unstructured_domain_resample/domain_check.xml
@@ -16,10 +16,10 @@
-
+
-
+
diff --git a/xios_examples/read_unstructured_domain_resample/main.xml b/xios_examples/read_unstructured_domain_resample/main.xml
index 757e96d..3be9630 100644
--- a/xios_examples/read_unstructured_domain_resample/main.xml
+++ b/xios_examples/read_unstructured_domain_resample/main.xml
@@ -32,10 +32,10 @@
-
+
-
+
From 6a0a48236f9d242170e63dd2fdc6044ffab4be5d Mon Sep 17 00:00:00 2001
From: Jeff Cole <9701718+jeff-cole@users.noreply.github.com>
Date: Wed, 22 May 2024 13:15:53 +0100
Subject: [PATCH 13/14] Replace mesh_C12.nc with cdl version + code changes to
use cdl file
---
.../Makefile | 59 +-
.../mesh_C12.cdl | 5216 +++++++++++++++++
.../mesh_C12.nc | Bin 85592 -> 0 bytes
.../test_resample_cases.py | 2 +-
xios_examples/shared_testing.py | 12 +-
5 files changed, 5228 insertions(+), 61 deletions(-)
mode change 100644 => 120000 xios_examples/read_unstructured_domain_resample/Makefile
create mode 100644 xios_examples/read_unstructured_domain_resample/mesh_C12.cdl
delete mode 100644 xios_examples/read_unstructured_domain_resample/mesh_C12.nc
diff --git a/xios_examples/read_unstructured_domain_resample/Makefile b/xios_examples/read_unstructured_domain_resample/Makefile
deleted file mode 100644
index b37285e..0000000
--- a/xios_examples/read_unstructured_domain_resample/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-# Make file for the resample demonstartion XIOS programme
-# Targets provided our detailed below...
-#
-# all: (default) Build the resample programme
-# clean: Delete all final products and working files
-# run: run the programme
-#
-# Environment Variables expected by this MakeFile:
-#
-# NETCDF_LIBDIR: the directories for the netCDF lib files
-# encoded as a -L string, e.g.
-# "-L/dir1 -L/dir2"
-# NETCDF_INCDIR: the directories for the netCDF include files
-# encoded as a -I string, e.g.
-# "-I/dir3 -I/dir4"
-# (note, this is for consistency with the XIOS build process
-# required for the CI build machine.
-# this is not required for other directories)
-#
-# XIOS_INCDIR: The directory for XIOS include files
-# XIOS_LIBDIR: The directory for XIOS lib files
-# XIOS_BINDIR: The directory for XIOS binary files
-
-FCFLAGS = -g
-
-FC = mpif90 # compiler driver for MPI programs
-
-# compiler flag, includes
-FCFLAGS += -I$(XIOS_INCDIR) $(NETCDF_INCDIR)
-
-# loader flags
-LDFLAGS = \
- -L$(XIOS_LIBDIR) \
- $(NETCDF_LIBDIR) \
- -lxios \
- -lnetcdf \
- -lnetcdff \
- -lstdc++
-
-.PHONY: all, clean, run
-
-all: resample
-
-# fortran compilation
-%.o: %.F90
- $(FC) $(FCFLAGS) -c $<
-
-# fortran linking
-resample: resample.o
- $(FC) -o resample.exe resample.o $(LDFLAGS) \
- && ln -fs $(XIOS_BINDIR)/xios_server.exe .
-
-run:
- mpiexec -n 1 ./resample.exe : -n 1 ./xios_server.exe
-
-# cleanup
-clean:
- rm -f *.exe *.o *.mod *.MOD *.out *.err $(filter-out mesh_C12.nc,$(wildcard *.nc))
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/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/mesh_C12.nc b/xios_examples/read_unstructured_domain_resample/mesh_C12.nc
deleted file mode 100644
index 705fe1cef3183540f55bac5f45fc7a85db7295ca..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 85592
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