From 44c89fe14e959c68d3c55f9b384a4370845b348a Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 00:34:29 -0300 Subject: [PATCH 01/10] feat(stars): map lambda Andromedae's surface from its interferometry, and two measured limbs --- .../raster/tecplot-lonlat-map.test.mts | 16 + .../src/objects/raster/tecplot-lonlat-map.ts | 20 +- .../archives/interferometry/rotir/surface.jl | 61 +- .../seasons/udkadua-mirc-2011-09/season.json | 134 + .../archives/interferometry/spotless-disc.mts | 11 +- .../interferometry/surface-reconstruction.mts | 29 +- .../archives/interferometry/surface-star.mts | 198 ++ .../interferometry/surface-star.test.mts | 58 + .../src/new-object/maps/routes.mts | 2 + .../src/new-object/maps/surface-maps.mts | 4 +- .../src/new-object/resolved/resolved-maps.mts | 151 + .../src/new-object/resolved/resolved.mts | 31 + .../src/new-object/resolved/resolved.test.mts | 69 + src/objects/arcturus/NOTICE.md | 2 + src/objects/arcturus/README.md | 2 + src/objects/arcturus/investigations.json | 9 + .../arcturus/source/content/object.json | 4 +- src/objects/arcturus/source/manifest.json | 47 +- .../photometry/claret-2011-v-quadratic.tsv | 19 - .../lacour-2008-limb-darkening.json | 13 + .../source/preparation/acquisition.json | 36 - .../arcturus/source/preparation/raster.json | 24 +- .../arcturus/source/presentation/context.png | Bin 54059 -> 35650 bytes src/objects/udkadua/NOTICE.md | 2 +- src/objects/udkadua/README.md | 9 +- src/objects/udkadua/investigations.json | 26 +- src/objects/udkadua/object.json | 10 + .../udkadua/source/content/object.json | 82 +- src/objects/udkadua/source/manifest.json | 61 +- .../photometry/claret-2011-v-quadratic.tsv | 11 - .../martinez-2021-limb-darkening.json | 13 + .../source/preparation/acquisition.json | 36 - .../udkadua/source/preparation/raster.json | 98 +- .../udkadua/source/preparation/rotation.json | 12 +- .../udkadua/source/presentation/context.png | Bin 52446 -> 35029 bytes .../interferometry/udkadua-mirc-2011-09.dat | 2706 +++++++++++++++++ src/objects/udkadua/text.json | 10 + src/sources/arxiv-1508-04755.json | 54 + src/sources/arxiv-2107-06366.json | 52 + ...tir-demos-lambda-andromedae-mirc-2011.json | 31 + src/sources/rotir-jl.json | 34 + 41 files changed, 3959 insertions(+), 228 deletions(-) create mode 100644 packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json create mode 100644 packages/telescope-cli/src/archives/interferometry/surface-star.mts create mode 100644 packages/telescope-cli/src/archives/interferometry/surface-star.test.mts create mode 100644 packages/telescope-cli/src/new-object/resolved/resolved-maps.mts create mode 100644 packages/telescope-cli/src/new-object/resolved/resolved.mts create mode 100644 packages/telescope-cli/src/new-object/resolved/resolved.test.mts delete mode 100644 src/objects/arcturus/source/photometry/claret-2011-v-quadratic.tsv create mode 100644 src/objects/arcturus/source/photometry/lacour-2008-limb-darkening.json delete mode 100644 src/objects/udkadua/source/photometry/claret-2011-v-quadratic.tsv create mode 100644 src/objects/udkadua/source/photometry/martinez-2021-limb-darkening.json create mode 100644 src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat create mode 100644 src/sources/arxiv-1508-04755.json create mode 100644 src/sources/arxiv-2107-06366.json create mode 100644 src/sources/rotir-demos-lambda-andromedae-mirc-2011.json create mode 100644 src/sources/rotir-jl.json diff --git a/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts b/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts index 6968cfab9b4..4f8342633ef 100644 --- a/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts +++ b/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts @@ -57,3 +57,19 @@ iota('ι Horologii: every deposited epoch reproduces the field energy of the pap // The strongest radial or azimuthal field in the 18 maps is 16.4 G; the paper's color bar runs to +/-12 G and saturates beyond. assert.ok(largest > 12 && largest < 17, `${largest}`); }); + +test('a map outlines where a column of its own changes sign: the edge of what was never seen', async () => { + const work = await mkdtemp(resolve(tmpdir(), 'tecplot-')); + try { + // The second column is positive east of longitude 135 and negative before it: it crosses zero between the nodes at 90 and 180. + const rows = []; for (let j = 0; j < 3; j++) for (let i = 0; i < 5; i++) rows.push(`${i * 90} ${-90 + j * 90} 1 ${i * 90 - 135}`); + await writeFile(resolve(work, 'map.dat'), `TITLE = "test"\nVARIABLES = "Longitude [Deg]" "Latitude [Deg]" "B [G]" "Facing"\nZONE I=5, J=3, K=1, ZONETYPE=Ordered\nDATAPACKING=POINT\nDT=(SINGLE SINGLE SINGLE SINGLE)\n${rows.join('\n')}\n`); + const map = await loadTecplotLonLatMap(work, { path: 'map.dat', variable: 'B [G]', outlineZeroOf: 'Facing' }); + assert.equal(map.outline!(135, 0, 1), true); assert.equal(map.outline!(133, 0, 1), false); assert.equal(map.outline!(137, 0, 1), false); + // Toward a pole a pixel spans more longitude, so the line keeps its width on the sphere. + assert.equal(map.outline!(137, 60, 1), true); + assert.equal(map.report.outlineZeroOf, 'Facing'); + assert.equal((await loadTecplotLonLatMap(work, { path: 'map.dat', variable: 'B [G]' })).outline, undefined); + await assert.rejects(loadTecplotLonLatMap(work, { path: 'map.dat', variable: 'B [G]', outlineZeroOf: 'Seen' }), /no column "Seen"/u); + } finally { await rm(work, { recursive: true, force: true }); } +}); diff --git a/packages/bake/src/objects/raster/tecplot-lonlat-map.ts b/packages/bake/src/objects/raster/tecplot-lonlat-map.ts index 54ab64fb08c..a2af948f1b3 100644 --- a/packages/bake/src/objects/raster/tecplot-lonlat-map.ts +++ b/packages/bake/src/objects/raster/tecplot-lonlat-map.ts @@ -6,7 +6,9 @@ * * The nodes are checked to form a regular grid from longitude 0 to 360 and latitude -90 to 90, both ends included; the map is * bilinear between nodes, so every node keeps its deposited value. `outlineLatitudes` (optional) are drawn as thin black lines, for - * a limit the paper draws on its maps, such as the latitude the star never turns toward us. */ + * a limit the paper draws on its maps, such as the latitude the star never turns toward us. `outlineZeroOf` (optional) names + * another column of the table, and the same thin line is drawn where that column changes sign: the edge of what a map's own + * coverage column says was never seen. */ import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path'; import { requireArray, requireFiniteNumber, requireRecord, requireString } from '@cssearth/core'; @@ -40,6 +42,12 @@ export async function loadTecplotLonLatMap(root: string, value: unknown) { const column = table.variables.indexOf(variable); if (column < 2) throw new TypeError(`${path}: no map variable "${variable}"; it has ${table.variables.slice(2).map(v => `"${v}"`).join(', ')}.`); const node = (i: number, j: number) => table.values[j * table.columns + i]![column]!; + const edgeColumn = dataset.outlineZeroOf === undefined ? -1 : table.variables.indexOf(requireString(dataset.outlineZeroOf, 'outlineZeroOf')); + if (dataset.outlineZeroOf !== undefined && edgeColumn < 2) throw new TypeError(`${path}: no column "${String(dataset.outlineZeroOf)}" to outline the zero of.`); + // The edge column at a place, bilinear between nodes as the map is. + const edge = (longitude: number, latitude: number) => { const x = (((longitude % 360) + 360) % 360) / table.lonStep, y = (Math.max(-90, Math.min(90, latitude)) + 90) / table.latStep; + const i = Math.min(table.columns - 2, Math.floor(x)), j = Math.min(table.rows - 2, Math.floor(y)), dx = x - i, dy = y - j, at = (a: number, b: number) => table.values[b * table.columns + a]![edgeColumn]!; + return at(i, j) * (1 - dx) * (1 - dy) + at(i + 1, j) * dx * (1 - dy) + at(i, j + 1) * (1 - dx) * dy + at(i + 1, j + 1) * dx * dy; }; let minimum = Infinity, maximum = -Infinity; for (const row of table.values) { minimum = Math.min(minimum, row[column]!); maximum = Math.max(maximum, row[column]!); } return { @@ -49,9 +57,13 @@ export async function loadTecplotLonLatMap(root: string, value: unknown) { const i = Math.min(table.columns - 2, Math.floor(x)), j = Math.min(table.rows - 2, Math.floor(y)), dx = x - i, dy = y - j; return node(i, j) * (1 - dx) * (1 - dy) + node(i + 1, j) * dx * (1 - dy) + node(i, j + 1) * (1 - dx) * dy + node(i + 1, j + 1) * dx * dy; }, - ...(outlines.length ? { outline(_longitude: number, latitude: number, pixelDegrees: number) { - return outlines.some(limit => Math.abs(latitude - limit) <= pixelDegrees / 2); + ...(outlines.length || edgeColumn >= 2 ? { outline(longitude: number, latitude: number, pixelDegrees: number) { + if (outlines.some(limit => Math.abs(latitude - limit) <= pixelDegrees / 2)) return true; + if (edgeColumn < 2 || !Number.isFinite(longitude) || !Number.isFinite(latitude)) return false; + // A pixel is on the edge when the column's sign differs between its sides, east to west or north to south. + const half = pixelDegrees / 2, across = half / Math.max(0.05, Math.cos(latitude * Math.PI / 180)); + return edge(longitude - across, latitude) > 0 !== edge(longitude + across, latitude) > 0 || edge(longitude, latitude - half) > 0 !== edge(longitude, latitude + half) > 0; } } : {}), - report: { format: 'tecplot-lonlat-map', variable, grid: { columns: table.columns, rows: table.rows, stepDegrees: [table.lonStep, table.latStep] }, minimum, maximum, outlineLatitudes: outlines }, + report: { format: 'tecplot-lonlat-map', variable, grid: { columns: table.columns, rows: table.rows, stepDegrees: [table.lonStep, table.latStep] }, minimum, maximum, outlineLatitudes: outlines, ...(edgeColumn >= 2 ? { outlineZeroOf: table.variables[edgeColumn] } : {}) }, }; } diff --git a/packages/telescope-cli/src/archives/interferometry/rotir/surface.jl b/packages/telescope-cli/src/archives/interferometry/rotir/surface.jl index 9a3fbbf0ef5..d3b46b73ddf 100644 --- a/packages/telescope-cli/src/archives/interferometry/rotir/surface.jl +++ b/packages/telescope-cli/src/archives/interferometry/rotir/surface.jl @@ -1,6 +1,9 @@ # Surface reconstruction of a star on a HEALPix sphere with ROTIR, from key=value arguments. # -# julia --project=packages/telescope-cli/src/archives/interferometry/rotir surface.jl oifits= radius_mas= ld1= map= ... +# julia --project=packages/telescope-cli/src/archives/interferometry/rotir surface.jl oifits=[,...] radius_mas= ld1= map= ... +# +# Several files are several epochs of one rotating star: each is placed at its own mean time after the first, and the star +# turns between them with `rotation_period_days`. One file is one epoch at time 0. # # packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts writes the arguments and documents each one. This script only runs # the pinned code and writes what it computed: ROTIR's surface map (its own FITS), the same map on a grid of ROTIR's own @@ -17,30 +20,32 @@ need(key) = haskey(args, key) ? args[key] : error("missing argument $key") number(key, default=nothing) = haskey(args, key) ? parse(Float64, args[key]) : (default === nothing ? error("missing argument $key") : default) const T = Float64 -data = readoifits_multiepochs([String(need("oifits"))], warn=false, verbose=false, T=T)[1, :] +data = readoifits_multiepochs(String.(split(need("oifits"), ",")), warn=false, verbose=false, T=T)[1, :] # Squared visibilities and closure phases only: an Inf error is OITOOLS' own way of leaving an observable out. -for field in (:t3amp_err, :visamp_err, :visphi_err) - hasproperty(data[1], field) && (getproperty(data[1], field) .= T(Inf)) +for epoch in data, field in (:t3amp_err, :visamp_err, :visphi_err) + hasproperty(epoch, field) && (getproperty(epoch, field) .= T(Inf)) end +# Days after the first epoch, from each file's own mean time. +tepochs = length(data) == 1 ? [zero(T)] : T.([epoch.mean_mjd - data[1].mean_mjd for epoch in data]) params = (surface_type = 0, radius = number("radius_mas"), tpole = 6000.0, ldtype = Int(number("ld_law", 1)), ld1 = number("ld1"), ld2 = number("ld2", 0.0), inclination = number("inclination"), position_angle = number("position_angle"), rotation_period = number("rotation_period_days", 1.0)) level = Int(number("level", 4)) tessels = tessellation_healpix(level; T=T) -stars = create_star_multiepochs(tessels, params, [zero(T)]) +stars = create_star_multiepochs(tessels, params, tepochs) setup_oi!(data, stars) x0 = parametric_temperature_map(params, stars[1]) npix = length(x0) regtype = String(need("regularizer")) operator = regtype in ("sobel", "sobel2") ? sobel_gradient_healpix(level; T=T) : regtype in ("tv", "tv2") ? tv_neighbors_healpix(level; T=T) : nothing regularizers = regtype == "none" ? [] : [[regtype, number("weight"), operator, 1:npix]] -start = chi2_breakdown(x0, stars[1], data[1]) +start = chi2_breakdown(x0, stars, data) x = image_reconstruct_oi(x0, data, stars; maxiter=Int(number("maxiter", 500)), regularizers=regularizers, verbose=false) -final = chi2_breakdown(x, stars[1], data[1]) +final = chi2_breakdown(x, stars, data) star = stars[1] -save_surface_map(String(need("map")), x, params; nside_exp=level, tepochs=[zero(T)], field=:temperature, +save_surface_map(String(need("map")), x, params; nside_exp=level, tepochs=tepochs, field=:temperature, chi2=final.v2 + final.t3phi, ndata=final.nv2 + final.nt3phi, comment="ROTIR $(regtype) $(get(args, "weight", "0")); V2 and T3PHI only") # The map on ROTIR's own coordinates: row r holds colatitude (r - 1/2) * 180 / rows from the pole, column c longitude @@ -59,15 +64,45 @@ end # The sky as ROTIR sees it: surface brightness times limb darkening, rasterized on its own projection. Columns run East to # West and rows South to North, so the header states CDELT1 negative like an interferometric reconstruction. +# A later epoch's sky goes beside the first, numbered: -2.fits is the second. pixel = number("sky_pixel_mas"); pixels = Int(number("sky_pixels")) -sky = rasterize_polygon_image(star.proj_west, star.proj_north, x .* star.ldmap .* star.vis_weights, pixel, pixels) -FITS(String(need("sky")), "w") do io - # rasterize_polygon_image indexes [north, west]; FITS wants the first axis along columns. - write(io, permutedims(Float64.(sky), (2, 1)); header=FITSHeader(["CDELT1", "CDELT2", "CUNIT1", "CUNIT2"], [-pixel, pixel, "mas", "mas"], ["east left", "north up", "", ""])) +for (k, epoch) in enumerate(stars) + sky = rasterize_polygon_image(epoch.proj_west, epoch.proj_north, x .* epoch.ldmap .* epoch.vis_weights, pixel, pixels) + FITS(k == 1 ? String(need("sky")) : replace(String(need("sky")), r"\.fits$" => "-$k.fits"), "w") do io + # rasterize_polygon_image indexes [north, west]; FITS wants the first axis along columns. + write(io, permutedims(Float64.(sky), (2, 1)); header=FITSHeader(["CDELT1", "CDELT2", "CUNIT1", "CUNIT2"], [-pixel, pixel, "mas", "mas"], ["east left", "north up", "", ""])) + end +end + +# How squarely each tile ever faced the observer: the largest cosine of its emission angle over the epochs, on the map's grid. +facing = vec(maximum(reduce(hcat, [epoch.normals[:, 3] for epoch in stars]), dims=2)) +if haskey(args, "coverage") + seen = Array{Float32}(undef, grid_columns, grid_rows) + for r in 1:grid_rows, c in 1:grid_columns + seen[c, r] = Float32(facing[argmax(tile_vectors' * direction((r - 0.5) / grid_rows * π, (c - 0.5) / grid_columns * 2π))]) + end + FITS(String(args["coverage"]), "w") do io + write(io, seen; header=FITSHeader(["CTYPE1", "CTYPE2", "ROWORDER"], ["ROTIR-LONGITUDE", "ROTIR-COLATITUDE", "pole-first"], ["right-handed about the pole", "from the pole", "FITS row 1 is colatitude 0"])) + end end +# Where the observer and the sky's North and West lie in the star's own frame at each epoch, solved from the tiles ROTIR +# projected (a tile's normal toward the observer, and its centre's place on the sky, are its body direction times each). +body(values) = (tile_vectors * tile_vectors') \ (tile_vectors * values) +# The same for a quantity ROTIR keeps at the four corners of each tile: column k of the corners, tile by tile. +corner_vectors = reduce(hcat, [direction(tessels.unit_spherical[i, k, 2], tessels.unit_spherical[i, k, 3]) for k in 1:4 for i in 1:npix]) +corners(values) = (corner_vectors * corner_vectors') \ (corner_vectors * vec(values)) +angles(v) = (acosd(clamp(v[3] / norm(v), -1, 1)), mod(atand(v[2], v[1]), 360)) -visible = findall(star.normals[:, 3] .> 0) +visible = findall(facing .> 0) open(String(need("summary")), "w") do io @printf(io, "tiles=%d\nvisible_tiles=%d\nvis2=%d\nt3phi=%d\nstart_chi2r_vis2=%.6f\nstart_chi2r_t3phi=%.6f\nchi2r_vis2=%.6f\nchi2r_t3phi=%.6f\ncontrast=%.6f\n", npix, length(visible), final.nv2, final.nt3phi, start.v2r, start.t3phir, final.v2r, final.t3phir, std(x[visible]) / mean(x[visible])) + @printf(io, "epochs=%d\n", length(stars)) + for (k, epoch) in enumerate(stars) + observer = angles(body(epoch.normals[:, 3])); north = corners(epoch.proj_north); west = corners(epoch.proj_west) + # The pole on the sky: its angle from North through East (East is minus West), and how far it leans toward the observer. + @printf(io, "epoch_days_%d=%.6f\nobserver_colatitude_%d=%.6f\nobserver_longitude_%d=%.6f\npole_position_angle_%d=%.6f\n", + k, tepochs[k], k, observer[1], k, observer[2], k, mod(atand(-west[3], north[3]), 360)) + @printf(io, "epoch_chi2r_vis2_%d=%.6f\nepoch_chi2r_t3phi_%d=%.6f\n", k, final.epochs[k].v2r, k, final.epochs[k].t3phir) + end end diff --git a/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json b/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json new file mode 100644 index 00000000000..d1facf9404e --- /dev/null +++ b/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json @@ -0,0 +1,134 @@ +{ + "schema": "cssearth-star-surface-season@1", + "id": "udkadua-mirc-2011-09", + "object": "udkadua", + "title": "λ Andromedae, CHARA/MIRC, six nights from 2 to 24 September 2011 (Parks et al. 2021; Martinez et al. 2021)", + "target": "λ Andromedae", + "instrument": "mirc", + "band": "CHARA/MIRC H band (1.49-1.73 um), eight channels", + "papers": [ + { + "record": "arxiv-2107-06366", + "citation": "Martinez et al. (2021), ApJ 916, 60", + "title": "Martinez et al. (2021): Dynamical Surface Imaging of λ Andromedae", + "arxiv": "2107.06366", + "doi": "10.3847/1538-4357/ac06a5", + "creators": [ + "A. O. Martinez", + "F. R. Baron", + "J. D. Monnier", + "R. M. Roettenbacher", + "J. R. Parks" + ], + "year": "2021", + "locator": "arXiv listing and Crossref: title, authors, DOI. Table 4 gives the star's angular radius, limb-darkening coefficient, inclination, position angle and rotation period; section V describes the ROTIR reconstruction of the 2010 and 2011 nights." + }, + { + "record": "arxiv-1508-04755", + "citation": "Parks et al. (2021), ApJ 913, 54", + "title": "Parks et al. (2021): Interferometric Imaging of λ Andromedae: Evidence of Starspots and Rotation", + "arxiv": "1508.04755", + "doi": "10.3847/1538-4357/abb670", + "creators": [ + "J. R. Parks", + "R. J. White", + "F. Baron", + "J. D. Monnier", + "B. Kloppenborg", + "G. W. Henry", + "et al." + ], + "year": "2021", + "locator": "arXiv listing and Crossref: title, authors, DOI. Table 1 lists the six nights of September 2011 and their numbers of points; section III.2 describes the SQUEEZE images." + } + ], + "data": { + "record": "rotir-demos-lambda-andromedae-mirc-2011", + "title": "λ Andromedae, CHARA/MIRC calibrated visibilities of six nights of September 2011, as shipped with ROTIR.jl", + "url": "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data", + "publisher": "F. Baron, ROTIR.jl (GitHub)", + "license": "Shipped in the public ROTIR.jl repository (GPL-3.0); CHARA Array data, acknowledge the array and the papers", + "locator": "Six files 2011Sep02 to 2011Sep24 .lam_And_prepped.oifits under demos/data at the pinned commit, read by demos/lam_and_reconstruction.jl there; their numbers of squared visibilities match Parks et al. (2021), Table 1.", + "credit": "CHARA Array/MIRC, September 2011, as calibrated by the authors of Parks et al. (2021) and Martinez et al. (2021) and shipped with ROTIR.jl (F. Baron)" + }, + "filesSource": "The calibrated files the authors ship with ROTIR.jl at the commit this repository pins (demos/data), the six nights of 2011 both papers image.", + "nights": [ + { + "night": "2011-09-02", + "file": "2011Sep02.lam_And_prepped.oifits", + "origin": "https://raw.githubusercontent.com/fabienbaron/ROTIR.jl/ad308759b741b861b6c19fedd001c323a3a64479/demos/data/2011Sep02.lam_And_prepped.oifits", + "bytes": 141120 + }, + { + "night": "2011-09-06", + "file": "2011Sep06.lam_And_prepped.oifits", + "origin": "https://raw.githubusercontent.com/fabienbaron/ROTIR.jl/ad308759b741b861b6c19fedd001c323a3a64479/demos/data/2011Sep06.lam_And_prepped.oifits", + "bytes": 167040 + }, + { + "night": "2011-09-10", + "file": "2011Sep10.lam_And_prepped.oifits", + "origin": "https://raw.githubusercontent.com/fabienbaron/ROTIR.jl/ad308759b741b861b6c19fedd001c323a3a64479/demos/data/2011Sep10.lam_And_prepped.oifits", + "bytes": 112320 + }, + { + "night": "2011-09-14", + "file": "2011Sep14.lam_And_prepped.oifits", + "origin": "https://raw.githubusercontent.com/fabienbaron/ROTIR.jl/ad308759b741b861b6c19fedd001c323a3a64479/demos/data/2011Sep14.lam_And_prepped.oifits", + "bytes": 279360 + }, + { + "night": "2011-09-19", + "file": "2011Sep19.lam_And_prepped.oifits", + "origin": "https://raw.githubusercontent.com/fabienbaron/ROTIR.jl/ad308759b741b861b6c19fedd001c323a3a64479/demos/data/2011Sep19.lam_And_prepped.oifits", + "bytes": 282240 + }, + { + "night": "2011-09-24", + "file": "2011Sep24.lam_And_prepped.oifits", + "origin": "https://raw.githubusercontent.com/fabienbaron/ROTIR.jl/ad308759b741b861b6c19fedd001c323a3a64479/demos/data/2011Sep24.lam_And_prepped.oifits", + "bytes": 77760 + } + ], + "star": { + "diameterMas": { + "value": 2.742, + "source": "Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366): angular radius 1.371 +/- 0.005 mas" + }, + "limbPowerLaw": { + "value": 0.231, + "source": "Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366): limb-darkening coefficient 0.231 +/- 0.024, power law" + }, + "inclinationDegrees": { + "value": 85.63, + "source": "Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366): inclination 85.63 +/- 2.32 degrees" + }, + "positionAngleDegrees": { + "value": 26.09, + "source": "Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366): position angle 26.09 +/- 0.82 degrees" + }, + "rotationPeriodDays": { + "value": 54.2, + "source": "Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366): rotation period 54.2 d, held fixed in the fit" + } + }, + "reconstruction": { + "code": "rotir", + "level": 3, + "regularizer": "sobel2", + "weight": 10, + "iterations": 1000, + "source": "demos/lam_and_reconstruction.jl in ROTIR.jl at the pinned commit, the authors script for these six files: HEALPix level 3, sobel2 at weight 10, 1000 iterations. The paper printed a total-variation weight of 0.01 for its 2021 code; the pinned code states that its regularizer weights do not carry over." + }, + "referenceNight": "2011-09-14", + "referenceNightSource": "A display choice of this repository: the night with the most squared visibilities (864).", + "check": { + "twinScales": [ + 0.98, + 0.99, + 1, + 1.01, + 1.02 + ] + } +} diff --git a/packages/telescope-cli/src/archives/interferometry/spotless-disc.mts b/packages/telescope-cli/src/archives/interferometry/spotless-disc.mts index b18471f22eb..631eff81802 100644 --- a/packages/telescope-cli/src/archives/interferometry/spotless-disc.mts +++ b/packages/telescope-cli/src/archives/interferometry/spotless-disc.mts @@ -18,6 +18,7 @@ import { resolve } from 'node:path'; import { pathToFileURL } from 'node:url'; import { convolveGaussian, readReconstruction } from '@cssearth/bake/objects/layers/observation'; import { binaryTable, numbers, readFitsHdus, tableColumn, writeCell, writeComplexCell, type BinaryTable, type TableColumn } from '@cssearth/bake/objects/raster'; +import { limbDarkenedDiscVisibility } from './alma-disc-selfcal.mts'; const MAS_RAD = Math.PI / 180 / 3.6e6; @@ -46,15 +47,16 @@ export function normalStream(seed: number) { return () => Math.sqrt(-2 * Math.log(uniform())) * Math.cos(2 * Math.PI * uniform()); } -export interface SpotlessOptions { readonly diameterMas: number; readonly limbDarkening?: number; readonly seed?: number } +export interface SpotlessOptions { readonly diameterMas: number; readonly limbDarkening?: number; readonly seed?: number; + /** The exponent of a power-law limb, I(mu) = mu^alpha (Hestroffer 1997), in place of the linear law. */ readonly powerLaw?: number } /** The OIFITS bytes with every squared visibility, closure phase and OI_VIS amplitude and phase replaced by the spotless * disc's, noise included. Flags, errors, (u, v) and every other table are kept, so the reconstruction sees the same sampling and * weights. OI_VIS follows its table's declared types: an absolute amplitude is the disc's |V|, a differential or unstated one is * |V| over the row's mean, and a correlated flux is left as measured; the phase is the disc's own 0 or 180 degrees, which a * differential phase's offset and slope do not change. Complex VISDATA and GRAVITY's RVIS and IVIS follow the same values. */ -export function simulateSpotlessDisc(input: Buffer, { diameterMas, limbDarkening = 0, seed = 1 }: SpotlessOptions) { - if (!(diameterMas > 0) || !(limbDarkening >= 0 && limbDarkening <= 1)) throw new TypeError('A spotless disc needs a positive diameter and a limb-darkening coefficient between 0 and 1.'); +export function simulateSpotlessDisc(input: Buffer, { diameterMas, limbDarkening = 0, seed = 1, powerLaw }: SpotlessOptions) { + if (!(diameterMas > 0) || !(limbDarkening >= 0 && limbDarkening <= 1) || (powerLaw !== undefined && !(powerLaw >= 0))) throw new TypeError('A spotless disc needs a positive diameter and a limb-darkening coefficient between 0 and 1, or a power-law exponent that is not negative.'); const bytes = Buffer.from(input), hdus = readFitsHdus(bytes), noise = normalStream(seed); const wavelengths = new Map(); for (const hdu of hdus.filter(hdu => hdu.extname === 'OI_WAVELENGTH')) { @@ -62,7 +64,8 @@ export function simulateSpotlessDisc(input: Buffer, { diameterMas, limbDarkening wavelengths.set(String(hdu.header.INSNAME), Array.from({ length: table.rows }, (_, row) => numbers(bytes, table, row, column)[0]!)); } const channels = (table: BinaryTable) => { const list = wavelengths.get(String(table.hdu.header.INSNAME)); if (!list) throw new Error(`No OI_WAVELENGTH for ${String(table.hdu.header.INSNAME)}.`); return list; }; - const visibility = (u: number, v: number, wavelength: number) => limbDarkenedVisibility(Math.hypot(u, v), wavelength, diameterMas, limbDarkening); + const visibility = (u: number, v: number, wavelength: number) => powerLaw === undefined ? limbDarkenedVisibility(Math.hypot(u, v), wavelength, diameterMas, limbDarkening) + : limbDarkenedDiscVisibility(Math.hypot(u, v) / wavelength, diameterMas * MAS_RAD, powerLaw, 200); let vis2 = 0, t3 = 0; for (const hdu of hdus.filter(hdu => hdu.extname === 'OI_VIS2')) { const table = binaryTable(hdu), list = channels(table); diff --git a/packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts b/packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts index 64010d7ef8d..55761a12013 100644 --- a/packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts +++ b/packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts @@ -2,9 +2,12 @@ /** Reconstruct a star's surface on a sphere with the pinned ROTIR toolchain, and write the star as ROTIR projects it on the sky * so the result can be checked with the same tools as a sky-plane image (spotless-disc.mts). * - * node packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts --diameter-mas - * [--limb-darkening ] [--inclination ] [--position-angle ] [--regularizer tv|sobel2|none] [--weight ] - * [--level ] [--iterations ] [--sky-pixel-mas

] [--sky-pixels ] + * node packages/telescope-cli/src/archives/interferometry/surface-reconstruction.mts [,...] --diameter-mas + * [--limb-darkening ] [--limb-law linear|power] [--inclination ] [--position-angle ] [--rotation-period-days

] + * [--regularizer tv|sobel2|none] [--weight ] [--level ] [--iterations ] [--sky-pixel-mas

] [--sky-pixels ] + * + * Several files are several nights of one turning star: ROTIR places each at its own mean time and turns the star between + * them with the rotation period, so one surface is fitted to all of them (the way Martinez et al. 2021 mapped λ Andromedae). * * Why a sphere: a flat reconstruction may put light anywhere in its field, so a star a few beams across (Polaris, 3.1 mas at * 0.55 mas) has too many unknowns for its data. On a sphere of known size and limb darkening only the surface brightness of the @@ -23,24 +26,34 @@ import { requireString } from '@cssearth/core'; export interface SurfaceOptions { readonly diameterMas: number; readonly limbDarkening?: number; readonly inclinationDegrees?: number; readonly positionAngleDegrees?: number; + /** The law `limbDarkening` is the coefficient of: linear, I = 1 - u (1 - mu), or the power law I = mu^u (Hestroffer 1997). */ + readonly limbLaw?: 'linear' | 'power'; + /** The rotation period that turns the star between several files' nights, and whether to write how squarely each cell ever + * faced the observer (surface-coverage.fits). */ + readonly rotationPeriodDays?: number; readonly coverage?: boolean; readonly threads?: number; readonly regularizer?: 'tv' | 'sobel2' | 'none'; readonly weight?: number; readonly level?: number; readonly iterations?: number; readonly skyPixelMas?: number; readonly skyPixels?: number; readonly gridColumns?: number; readonly gridRows?: number; } /** The key=value arguments surface.jl reads, in a fixed order so a run is reproducible from its record. */ -export function surfaceArguments(oifits: string, directory: string, options: SurfaceOptions) { +export function surfaceArguments(oifits: string | readonly string[], directory: string, options: SurfaceOptions) { const { diameterMas, limbDarkening = 0, inclinationDegrees = 90, positionAngleDegrees = 0, regularizer = 'tv', weight = 0.05, level = 4, iterations = 500 } = options; + const files = typeof oifits === 'string' ? [oifits] : oifits; + if (!files.length || files.some(file => file.includes(','))) throw new TypeError('A surface reconstruction reads one or more files, none with a comma in its path.'); + if (files.length > 1 && !(options.rotationPeriodDays! > 0)) throw new RangeError('Several nights of one star need its rotation period.'); if (!(diameterMas > 0) || !(limbDarkening >= 0 && limbDarkening <= 1) || !Number.isInteger(level) || level < 2 || level > 7 || !Number.isInteger(iterations) || iterations < 1) { throw new RangeError('A surface reconstruction needs a positive diameter, a linear limb darkening between 0 and 1, a HEALPix level 2-7 and whole iterations.'); } // The sky render spans twice the disc by default, at a tenth of the diameter per pixel or finer. const skyPixelMas = options.skyPixelMas ?? diameterMas / 64, skyPixels = options.skyPixels ?? 128; return [ - `oifits=${resolve(oifits)}`, `radius_mas=${diameterMas / 2}`, 'ld_law=1', `ld1=${limbDarkening}`, `inclination=${inclinationDegrees}`, `position_angle=${positionAngleDegrees}`, + `oifits=${files.map(file => resolve(file)).join(',')}`, `radius_mas=${diameterMas / 2}`, `ld_law=${options.limbLaw === 'power' ? 3 : 1}`, `ld1=${limbDarkening}`, `inclination=${inclinationDegrees}`, `position_angle=${positionAngleDegrees}`, + ...(options.rotationPeriodDays === undefined ? [] : [`rotation_period_days=${options.rotationPeriodDays}`]), `regularizer=${regularizer}`, `weight=${weight}`, `level=${level}`, `maxiter=${iterations}`, `map=${resolve(directory, 'surface-map.fits')}`, `grid=${resolve(directory, 'surface-grid.fits')}`, `grid_columns=${options.gridColumns ?? 360}`, `grid_rows=${options.gridRows ?? 180}`, `sky=${resolve(directory, 'surface-sky.fits')}`, `sky_pixel_mas=${skyPixelMas}`, `sky_pixels=${skyPixels}`, `summary=${resolve(directory, 'surface-summary.txt')}`, + ...(options.coverage ? [`coverage=${resolve(directory, 'surface-coverage.fits')}`] : []), ]; } @@ -56,11 +69,11 @@ export function parseSurfaceSummary(text: string) { return values; } -export async function reconstructSurface(oifits: string, directory: string, options: SurfaceOptions) { +export async function reconstructSurface(oifits: string | readonly string[], directory: string, options: SurfaceOptions) { const root = await toolchainPath('rotir'), { entry } = await toolchainDescriptor('rotir'); await mkdir(directory, { recursive: true }); const script = resolve(import.meta.dirname, 'rotir/surface.jl'); - const run = spawnSync(resolve(root, requireString(entry.executable)), ['--threads=8', `--project=${toolchainEnvironment(entry)}`, script, ...surfaceArguments(oifits, directory, options)], + const run = spawnSync(resolve(root, requireString(entry.executable)), [`--threads=${options.threads ?? 8}`, `--project=${toolchainEnvironment(entry)}`, script, ...surfaceArguments(oifits, directory, options)], { env: { ...process.env, JULIA_DEPOT_PATH: resolve(root, 'depot') }, stdio: ['ignore', 'inherit', 'pipe'], encoding: 'utf8' }); // ROTIR prints five warnings about OITOOLS bindings at load; they are known and harmless on the pinned commits. const errors = String(run.stderr).split('\n').filter(line => line.trim() && !/Imported binding OITOOLS\.visibility_|^\s*[└│┌]\s*$/u.test(line)); @@ -75,7 +88,7 @@ if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1] const diameterMas = number('--diameter-mas'); if (!oifits || !directory || diameterMas === undefined) throw new TypeError('Usage: surface-reconstruction --diameter-mas [options]'); const pick = (key: string, value: T | undefined) => value === undefined ? {} : { [key]: value }; - const result = await reconstructSurface(oifits, directory, { diameterMas, ...pick('limbDarkening', number('--limb-darkening')), ...pick('inclinationDegrees', number('--inclination')), + const result = await reconstructSurface(oifits.split(','), directory, { diameterMas, ...pick('limbDarkening', number('--limb-darkening')), ...pick('limbLaw', option('--limb-law') as SurfaceOptions['limbLaw']), ...pick('rotationPeriodDays', number('--rotation-period-days')), ...pick('inclinationDegrees', number('--inclination')), ...pick('positionAngleDegrees', number('--position-angle')), ...pick('regularizer', option('--regularizer') as SurfaceOptions['regularizer']), ...pick('weight', number('--weight')), ...pick('level', number('--level')), ...pick('iterations', number('--iterations')), ...pick('skyPixelMas', number('--sky-pixel-mas')), ...pick('skyPixels', number('--sky-pixels')) }); console.log(`${result.directory}: reduced chi-squared ${result.summary.chi2r_vis2!.toFixed(2)} on squared visibilities and ${result.summary.chi2r_t3phi!.toFixed(2)} on closure phases; surface contrast ${(result.summary.contrast! * 100).toFixed(2)}%.`); diff --git a/packages/telescope-cli/src/archives/interferometry/surface-star.mts b/packages/telescope-cli/src/archives/interferometry/surface-star.mts new file mode 100644 index 00000000000..af19b5db9aa --- /dev/null +++ b/packages/telescope-cli/src/archives/interferometry/surface-star.mts @@ -0,0 +1,198 @@ +#!/usr/bin/env node +/** One command from a star's calibrated interferometry over several nights to a verdict on its surface map. + * + * node packages/telescope-cli/src/archives/interferometry/surface-star.mts + * + * image-star.mts makes a sky-plane image of one epoch with SQUEEZE. A star that turns between its nights has no single sky + * image: this command fits one surface to all the nights with ROTIR, the way the star's authors did. The season + * (seasons//season.json, schema cssearth-star-surface-season@1) pins everything a person chose: the calibrated files and + * where they are published, the star's size, limb, axis and period, each with the paper cell it is read from, and the + * reconstruction settings with their source. The run: + * + * 1. Fetch the calibrated files a checkout lacks, each checked against its recorded size. + * 2. Twins. A spotless limb-darkened disc on every night's own sampling and errors (spotless-disc.mts) at the season's twin + * sizes, the two interleaved halves of every night, and the same halves of the spotless disc. + * 3. Reconstruct. ROTIR with the season's settings on the nights, on each twin and on each half: ten runs, one at a time. + * 4. Check, with image-star's three checks and limits, on the star as ROTIR projects it on the sky at every night, the nights + * taken together: the fit, the spots against the spottiest spotless twin, and the two halves once each half's twin is + * subtracted. One thing differs from a sky-plane image, and is this repository's reading, not a paper's: SQUEEZE is free + * to draw a disc of any size, while ROTIR's sphere has the size it is given, so a spotless twin of another size may not fit + * on it at all. A twin whose own reconstruction fails the fit limit is kept in the verdict and does not decide the spots: + * were the star that disc, the first check would have refused the star. + * 5. Write the map as a table on the star's own longitudes and latitudes, longitude 0 on the meridian that faced the Earth on + * the season's reference night, with how squarely each node ever faced the observer; a node that never did holds the mean. + * + * The result is verdict.json and, whatever the verdict, .dat in the work directory. */ +import { mkdir, readFile, stat, writeFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; +import { pathToFileURL } from 'node:url'; +import { requireArray, requireFiniteNumber, requireRecord, requireString } from '@cssearth/core'; +import { readChannelRows } from '@cssearth/bake/objects/layers/observation'; +import { readFitsImage } from '@cssearth/fits'; +import { TWIN_SCALES } from './image-star.mts'; +import { selectOifits } from './oifits-select.mts'; +import { compareSpotMaps, RECONSTRUCTION_CHI2_LIMIT, reconstructionVerdict, reproducibility, simulateSpotlessDisc, spotMap, type ReconstructionPlane } from './spotless-disc.mts'; +import { readSurfaceGrid, sampleSurfaceGrid } from './surface-dataset.mts'; +import { reconstructSurface, type SurfaceOptions } from './surface-reconstruction.mts'; +import { toolchainDescriptor } from './toolchain.mts'; + +export const SURFACE_SEASON_SCHEMA = 'cssearth-star-surface-season@1'; +export const SURFACE_MAP_SCHEMA = 'cssearth-star-surface-map@1'; + +export interface Cited { readonly value: number; readonly source: string } +/** A paper the season rests on, and where the calibrated files are published: what the source catalogue records of each. */ +export interface SeasonPaper { readonly record: string; readonly citation: string; readonly title: string; readonly arxiv: string; readonly doi: string; readonly creators: readonly string[]; readonly year: string; readonly locator: string } +export interface SeasonData { readonly record: string; readonly title: string; readonly url: string; readonly publisher: string; readonly license: string; readonly locator: string; readonly credit: string } +export interface SurfaceNight { readonly night: string; readonly file: string; readonly origin: string; readonly bytes: number } +export interface SurfaceSeason { + readonly id: string; readonly object: string; readonly title: string; readonly target: string; readonly instrument: string; readonly band: string; readonly nights: readonly SurfaceNight[]; + readonly papers: readonly SeasonPaper[]; readonly data: SeasonData; + readonly star: { readonly diameterMas: Cited; readonly limbPowerLaw: Cited; readonly inclinationDegrees: Cited; readonly positionAngleDegrees: Cited; readonly rotationPeriodDays: Cited }; + readonly recipe: { readonly level: number; readonly regularizer: 'sobel2' | 'tv'; readonly weight: number; readonly iterations: number; readonly source: string }; + /** The night whose Earth-facing meridian is the map's longitude 0. */ + readonly referenceNight: string; readonly twinScales: readonly number[]; +} + +const NIGHT = /^\d{4}-\d\d-\d\d$/u; + +export function parseSurfaceSeason(value: unknown): SurfaceSeason { + const record = requireRecord(value, 'surface season'); + if (record.schema !== SURFACE_SEASON_SCHEMA) throw new TypeError('Unexpected surface season schema.'); + const cited = (entry: unknown, name: string): Cited => { const one = requireRecord(entry, name); return { value: requireFiniteNumber(one.value, `${name} value`), source: requireString(one.source, `${name} source`) }; }; + const nights = requireArray(record.nights, 'nights').map((entry, i): SurfaceNight => { const night = requireRecord(entry, `nights[${i}]`); + const one = { night: requireString(night.night, 'night'), file: requireString(night.file, 'file'), origin: requireString(night.origin, 'origin'), bytes: requireFiniteNumber(night.bytes, 'bytes') }; + if (!NIGHT.test(one.night) || one.file.includes('/') || one.file.includes(',') || !/^https:\/\//u.test(one.origin) || !(one.bytes > 0)) throw new TypeError(`Night ${one.night}: a date, a plain file name, an https origin and its size.`); + return one; }); + if (nights.length < 2 || new Set(nights.map(night => night.night)).size !== nights.length || nights.some((night, i) => i > 0 && night.night <= nights[i - 1]!.night)) throw new TypeError('A surface season is two or more nights in order, each once.'); + const star = requireRecord(record.star, 'star'), recipe = requireRecord(record.reconstruction, 'reconstruction'), check = requireRecord(record.check ?? {}, 'check'); + if (recipe.code !== 'rotir') throw new TypeError('A surface season reconstructs with ROTIR.'); + const regularizer = requireString(recipe.regularizer, 'regularizer'); + if (regularizer !== 'sobel2' && regularizer !== 'tv') throw new TypeError(`No regularizer ${regularizer}.`); + const referenceNight = requireString(record.referenceNight, 'referenceNight'); + if (!nights.some(night => night.night === referenceNight)) throw new TypeError(`The reference night ${referenceNight} is not one of the season's.`); + const text = (entry: Record, keys: readonly string[], what: string) => Object.fromEntries(keys.map(key => [key, requireString(entry[key], `${what} ${key}`)])); + const papers = requireArray(record.papers, 'papers').map((entry, i) => { const paper = requireRecord(entry, `papers[${i}]`); + return { ...text(paper, ['record', 'citation', 'title', 'arxiv', 'doi', 'year', 'locator'], `papers[${i}]`), creators: requireArray(paper.creators, 'creators').map(name => requireString(name, 'creator')) } as unknown as SeasonPaper; }); + if (!papers.length) throw new TypeError('A surface season names the papers whose data and method it follows.'); + const data = text(requireRecord(record.data, 'data'), ['record', 'title', 'url', 'publisher', 'license', 'locator', 'credit'], 'data') as unknown as SeasonData; + const parsed: SurfaceSeason = { id: requireString(record.id, 'id'), object: requireString(record.object, 'object'), title: requireString(record.title, 'title'), target: requireString(record.target, 'target'), instrument: requireString(record.instrument, 'instrument'), band: requireString(record.band, 'band'), nights, papers, data, + star: { diameterMas: cited(star.diameterMas, 'diameterMas'), limbPowerLaw: cited(star.limbPowerLaw, 'limbPowerLaw'), inclinationDegrees: cited(star.inclinationDegrees, 'inclinationDegrees'), positionAngleDegrees: cited(star.positionAngleDegrees, 'positionAngleDegrees'), rotationPeriodDays: cited(star.rotationPeriodDays, 'rotationPeriodDays') }, + recipe: { level: requireFiniteNumber(recipe.level, 'level'), regularizer, weight: requireFiniteNumber(recipe.weight, 'weight'), iterations: requireFiniteNumber(recipe.iterations, 'iterations'), source: requireString(recipe.source, 'reconstruction source') }, + referenceNight, twinScales: check.twinScales === undefined ? TWIN_SCALES : requireArray(check.twinScales, 'twinScales').map(scale => requireFiniteNumber(scale, 'twin scale')) }; + if (!(parsed.star.diameterMas.value > 0) || !(parsed.star.limbPowerLaw.value >= 0) || !(parsed.star.rotationPeriodDays.value > 0) || !(parsed.star.inclinationDegrees.value > 0 && parsed.star.inclinationDegrees.value <= 90)) throw new RangeError('The star needs a positive diameter and period, a limb exponent that is not negative and an inclination up to 90 degrees.'); + return parsed; +} + +/** The step of the table's nodes, in degrees: finer than a level-3 HEALPix tile (7.3 degrees), as the magnetic maps' tables are. */ +export const TABLE_STEP_DEGREES = 5; +export const BRIGHTNESS_VARIABLE = 'Brightness [%]', FACING_VARIABLE = 'Facing'; + +/** The map as a Tecplot table the raster recipe reads (tecplot-lonlat-map.ts). `grid` and `facing` are surface.jl's, on ROTIR's + * longitudes; `observerLongitude` is ROTIR's longitude of the meridian facing the observer on the reference night, which becomes + * longitude 0. Brightness is in percent of the mean over the nodes that ever faced the observer, each weighted by its area; + * a node that never did holds 100. */ +export function surfaceTable(grid: { readonly columns: number; readonly rows: number; readonly values: ArrayLike }, facing: { readonly columns: number; readonly rows: number; readonly values: ArrayLike }, observerLongitude: number, title: string) { + const step = TABLE_STEP_DEGREES, columns = 360 / step + 1, rows = 180 / step + 1, nodes: { longitude: number; latitude: number; value: number; facing: number }[] = []; + // A node on a pole or on the closing meridian reads the cell just inside the grid. + const inside = (latitude: number) => Math.min(180 - 1e-6, Math.max(1e-6, 90 - latitude)); + for (let j = 0; j < rows; j++) for (let i = 0; i < columns; i++) { const longitude = i * step, latitude = -90 + j * step, rotir = longitude % 360 + observerLongitude; + nodes.push({ longitude, latitude, value: sampleSurfaceGrid(grid, inside(latitude), rotir), facing: sampleSurfaceGrid(facing, inside(latitude), rotir) }); } + let sum = 0, weight = 0; + for (const node of nodes) if (node.facing > 0 && node.longitude < 360) { const area = Math.cos(node.latitude * Math.PI / 180); sum += node.value * area; weight += area; } + if (!(weight > 0) || !(sum > 0)) throw new Error('No node of the map ever faced the observer.'); + const mean = sum / weight, lines = [`TITLE = "${title.replaceAll('"', "'")}"`, `VARIABLES = "Longitude [Deg]" "Latitude [Deg]" "${BRIGHTNESS_VARIABLE}" "${FACING_VARIABLE}"`, `ZONE I=${columns}, J=${rows}, K=1, ZONETYPE=Ordered`, 'DATAPACKING=POINT', 'DT=(SINGLE SINGLE SINGLE SINGLE)']; + let minimum = Infinity, maximum = -Infinity, seen = 0; + for (const node of nodes) { const percent = node.facing > 0 ? node.value / mean * 100 : 100; if (node.facing > 0) { minimum = Math.min(minimum, percent); maximum = Math.max(maximum, percent); seen++; } + lines.push(`${node.longitude.toFixed(1)} ${node.latitude.toFixed(1)} ${percent.toFixed(3)} ${node.facing.toFixed(4)}`); } + return { text: `${lines.join('\n')}\n`, minimumPercent: Number(minimum.toFixed(3)), maximumPercent: Number(maximum.toFixed(3)), nodes: nodes.length, seenNodes: seen }; +} + +/** The spotless twin the spot check is taken against: the spottiest of those whose own reconstruction fits on the sphere. The + * twin of the sphere's own size must be one of them, or the run checks nothing. */ +export function decidingTwin(twins: readonly T[]): T { + const fitting = twins.filter(twin => twin.fits); + if (!fitting.some(twin => twin.scale === 1)) throw new Error('The spotless twin of the season\'s own size does not fit on its sphere: the run is not a check.'); + return fitting.reduce((worst, twin) => twin.ratio < worst.ratio ? twin : worst); +} + +const exists = (path: string) => stat(path).then(() => true, () => false); +/** The star as surface.jl rasterised it on the sky: a plain image with its pixel size in CDELT2, in milliarcseconds. */ +export function readSurfaceSky(bytes: Buffer): ReconstructionPlane { + const image = readFitsImage(bytes), pixelMas = Math.abs(requireFiniteNumber(image.header.CDELT2, 'CDELT2')); + if (image.header.CUNIT2 !== 'mas' || !(pixelMas > 0)) throw new TypeError('Not a sky image written by surface.jl.'); + return { width: image.width, height: image.height, values: image.values, pixelMas }; +} + +export async function surfaceStar(seasonDirectory: string, work: string, { threads = 4 }: { threads?: number } = {}) { + const season = parseSurfaceSeason(JSON.parse(await readFile(resolve(seasonDirectory, 'season.json'), 'utf8')) as unknown); + await mkdir(resolve(work, 'data'), { recursive: true }); + + // 1. Fetch. + for (const night of season.nights) { const path = resolve(work, 'data', night.file); + if ((await stat(path).catch(() => null))?.size !== night.bytes) { const response = await fetch(night.origin); + if (!response.ok) throw new Error(`${night.origin} answered ${response.status}.`); + const bytes = Buffer.from(await response.arrayBuffer()); + if (bytes.length !== night.bytes) throw new Error(`${night.file} is ${bytes.length} bytes at its origin, not the recorded ${night.bytes}.`); + await writeFile(path, bytes); } } + const real = await Promise.all(season.nights.map(night => readFile(resolve(work, 'data', night.file)))); + const rows = real.map(bytes => readChannelRows(bytes)); + let longest = 0, wavelengthSum = 0, wavelengthCount = 0; + for (const night of rows) { for (const row of night.vis2) longest = Math.max(longest, Math.hypot(row.u, row.v)); for (const wavelength of night.wavelengthsMetres) { wavelengthSum += wavelength; wavelengthCount++; } } + const beamMas = wavelengthSum / wavelengthCount / (2 * longest) * 206264806.247, diameterMas = season.star.diameterMas.value, alpha = season.star.limbPowerLaw.value; + + // 2. Twins and halves. Each night's twin has its own noise draw; a half's twin is that half of the night's twin. + const twin = (scale: number) => real.map((bytes, i) => simulateSpotlessDisc(bytes, { diameterMas: diameterMas * scale, powerLaw: alpha, seed: i + 1 }).bytes); + const twinName = (scale: number) => scale === 1 ? 'spotless' : `spotless-${scale}`, scales = [...new Set([1, ...season.twinScales])]; + const sets: Record = { season: real }; + for (const scale of scales) sets[twinName(scale)] = twin(scale); + for (const half of ['even', 'odd'] as const) { sets[half] = real.map(bytes => selectOifits(bytes, { half }).bytes); sets[`${half}-spotless`] = sets.spotless!.map(bytes => selectOifits(bytes, { half }).bytes); } + + // 3. Reconstruct, one run at a time. A run whose inputs and settings are the ones it was made from is kept. + const options: SurfaceOptions = { diameterMas, limbDarkening: alpha, limbLaw: 'power', inclinationDegrees: season.star.inclinationDegrees.value, positionAngleDegrees: season.star.positionAngleDegrees.value, rotationPeriodDays: season.star.rotationPeriodDays.value, + regularizer: season.recipe.regularizer, weight: season.recipe.weight, level: season.recipe.level, iterations: season.recipe.iterations, coverage: true, threads, skyPixelMas: diameterMas / 64, skyPixels: 128, gridColumns: 720, gridRows: 360 }; + const summaries: Record> = {}; + for (const [name, files] of Object.entries(sets)) { const directory = resolve(work, name), paths: string[] = [], stamp = JSON.stringify(options); + await mkdir(directory, { recursive: true }); + let same = await readFile(resolve(directory, 'settings.json'), 'utf8').catch(() => '') === stamp && await exists(resolve(directory, 'surface-summary.txt')); + for (const [i, bytes] of files.entries()) { const path = resolve(directory, season.nights[i]!.file); if (!(await readFile(path).catch(() => null))?.equals(bytes)) { same = false; await writeFile(path, bytes); } paths.push(path); } + if (!same) { await reconstructSurface(paths, directory, options); await writeFile(resolve(directory, 'settings.json'), stamp); } + summaries[name] = Object.fromEntries((await readFile(resolve(directory, 'surface-summary.txt'), 'utf8')).split('\n').filter(Boolean).map(line => { const [key, number] = line.split('='); return [key!, Number(number)]; })); } + + // 4. Check: the spot maps of every night's sky, end to end. + const skies = async (name: string) => { const maps: Float64Array[] = []; + for (let k = 1; k <= season.nights.length; k++) maps.push(spotMap(readSurfaceSky(await readFile(resolve(work, name, k === 1 ? 'surface-sky.fits' : `surface-sky-${k}.fits`))), diameterMas, beamMas)); + const joined = new Float64Array(maps.reduce((sum, map) => sum + map.length, 0)); let offset = 0; for (const map of maps) { joined.set(map, offset); offset += map.length; } return joined; }; + const seasonSpots = await skies('season'), twins = []; + for (const scale of scales) { const own = summaries[twinName(scale)]!, chi2 = { vis2: own.chi2r_vis2!, closurePhase: own.chi2r_t3phi! }; + twins.push({ scale, diameterMas: diameterMas * scale, chi2, fits: chi2.vis2 <= RECONSTRUCTION_CHI2_LIMIT && chi2.closurePhase <= RECONSTRUCTION_CHI2_LIMIT, ...compareSpotMaps(seasonSpots, await skies(twinName(scale))) }); } + const spots = { ...decidingTwin(twins), twins: twins.map(({ scale, spotlessRms, ratio, chi2, fits }) => ({ scale, spotlessRms, ratio, chi2, fits })) }; + const halves = reproducibility(await skies('even'), await skies('even-spotless'), await skies('odd'), await skies('odd-spotless')); + const fit = summaries.season!, verdict = reconstructionVerdict({ vis2: fit.chi2r_vis2!, closurePhase: fit.chi2r_t3phi! }, spots, halves); + + // 5. The table, on the meridian that faced the Earth on the reference night. + const reference = season.nights.findIndex(night => night.night === season.referenceNight) + 1, observerLongitude = fit[`observer_longitude_${reference}`]!; + const table = surfaceTable(readSurfaceGrid(await readFile(resolve(work, 'season/surface-grid.fits'))), readSurfaceGrid(await readFile(resolve(work, 'season/surface-coverage.fits'))), observerLongitude, + `Surface brightness of ${season.title}, ROTIR on ${season.nights.length} nights (season ${season.id})`); + await writeFile(resolve(work, `${season.id}.dat`), table.text); + const { entry } = await toolchainDescriptor('rotir'), packages = requireRecord(entry.packages, 'rotir packages'); + const commit = (name: string) => requireString(requireRecord(packages[name], name).commit, `${name} commit`); + // Longitude 0 of the table minus each night's Earth-facing meridian: where on the map the observer stood that night. + const nights = season.nights.map((night, i) => ({ night: night.night, file: night.file, origin: night.origin, bytes: night.bytes, vis2: rows[i]!.vis2.length, closurePhases: rows[i]!.t3.length, daysAfterFirst: fit[`epoch_days_${i + 1}`]!, + subObserverLongitude: Number((((fit[`observer_longitude_${i + 1}`]! - observerLongitude) % 360 + 540) % 360 - 180).toFixed(3)), subObserverLatitude: Number((90 - fit[`observer_colatitude_${i + 1}`]!).toFixed(3)), + chi2: { vis2: fit[`epoch_chi2r_vis2_${i + 1}`]!, closurePhase: fit[`epoch_chi2r_t3phi_${i + 1}`]! } })); + const result = { schema: SURFACE_MAP_SCHEMA, season: season.id, object: season.object, title: season.title, target: season.target, instrument: season.instrument, band: season.band, papers: season.papers, data: season.data, star: season.star, recipe: season.recipe, referenceNight: season.referenceNight, + codes: { rotir: commit('ROTIR'), oitools: commit('OITOOLS') }, beamMas: Number(beamMas.toFixed(4)), longestBaselineMetres: Number(longest.toFixed(2)), nights, + points: { vis2: fit.vis2!, closurePhases: fit.t3phi! }, tiles: fit.tiles!, tilesSeen: fit.visible_tiles!, + fit: { vis2: fit.chi2r_vis2!, closurePhase: fit.chi2r_t3phi!, spotlessVis2: fit.start_chi2r_vis2!, spotlessClosurePhase: fit.start_chi2r_t3phi!, contrast: fit.contrast! }, + spots, halves, verdict, table: { file: `${season.id}.dat`, stepDegrees: TABLE_STEP_DEGREES, ...table, text: undefined } }; + await writeFile(resolve(work, 'verdict.json'), `${JSON.stringify(result, null, 2)}\n`); + return result; +} + +if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) { + const [seasonDirectory, work] = process.argv.slice(2); + if (!seasonDirectory || !work) throw new TypeError('Usage: surface-star '); + const result = await surfaceStar(resolve(seasonDirectory), resolve(work)); + console.log(result.verdict.cast ? `${result.season}: cast.` : `${result.season}: not cast, because ${result.verdict.reasons.join('; ')}.`); + console.log(JSON.stringify({ fit: result.fit, spotRatio: result.spots.ratio, twins: result.spots.twins, halves: result.halves, table: result.table }, null, 2)); +} diff --git a/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts b/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts new file mode 100644 index 00000000000..ba7168085d5 --- /dev/null +++ b/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts @@ -0,0 +1,58 @@ +import assert from 'node:assert/strict'; +import { readFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; +import { sourceTest } from '@cssearth/objects/node/source-test'; +import { parseTecplotLonLat } from '@cssearth/bake/objects/raster'; +import { surfaceArguments } from './surface-reconstruction.mts'; +import { BRIGHTNESS_VARIABLE, decidingTwin, FACING_VARIABLE, parseSurfaceSeason, surfaceTable, TABLE_STEP_DEGREES } from './surface-star.mts'; +const test = sourceTest(); + +const SEASON = resolve(import.meta.dirname, 'seasons/udkadua-mirc-2011-09/season.json'); + +test('the λ Andromedae season parses: six nights in order, every value of the star with its paper cell, and malformed seasons fail', async () => { + const record = JSON.parse(await readFile(SEASON, 'utf8')) as Record, season = parseSurfaceSeason(record); + assert.equal(season.object, 'udkadua'); assert.equal(season.nights.length, 6); assert.equal(season.referenceNight, '2011-09-14'); + assert.deepEqual([season.star.diameterMas.value, season.star.limbPowerLaw.value, season.star.inclinationDegrees.value, season.star.positionAngleDegrees.value, season.star.rotationPeriodDays.value], [2.742, 0.231, 85.63, 26.09, 54.2]); + for (const cited of Object.values(season.star)) assert.match(cited.source, /Martinez et al\. \(2021\), ApJ 916, 60, Table 4/u); + assert.deepEqual([season.recipe.level, season.recipe.regularizer, season.recipe.weight, season.recipe.iterations], [3, 'sobel2', 10, 1000]); + for (const night of season.nights) assert.match(night.origin, /^https:\/\/raw\.githubusercontent\.com\/fabienbaron\/ROTIR\.jl\/[0-9a-f]{40}\/demos\/data\//u); + assert.throws(() => parseSurfaceSeason({ ...record, referenceNight: '2011-09-15' }), /not one of the season's/u); + assert.throws(() => parseSurfaceSeason({ ...record, nights: (record.nights as unknown[]).slice(0, 1) }), /two or more nights/u); + assert.throws(() => parseSurfaceSeason({ ...record, reconstruction: { ...(record.reconstruction as object), code: 'squeeze' } }), /ROTIR/u); + assert.throws(() => parseSurfaceSeason({ ...record, papers: [] }), /names the papers/u); +}); + +test('several nights are one run: every file, the power law, the period that turns the star between them, and the coverage', () => { + const args = surfaceArguments(['a.oifits', 'b.oifits'], '/work', { diameterMas: 2.742, limbDarkening: 0.231, limbLaw: 'power', inclinationDegrees: 85.63, positionAngleDegrees: 26.09, rotationPeriodDays: 54.2, regularizer: 'sobel2', weight: 10, level: 3, iterations: 1000, coverage: true }); + const values = Object.fromEntries(args.map(arg => arg.split('=') as [string, string])); + assert.match(values.oifits!, /a\.oifits,.*b\.oifits$/u); + assert.deepEqual([values.ld_law, values.ld1, values.rotation_period_days, values.regularizer, values.weight, values.level, values.coverage], ['3', '0.231', '54.2', 'sobel2', '10', '3', '/work/surface-coverage.fits']); + assert.throws(() => surfaceArguments(['a.oifits', 'b.oifits'], '/work', { diameterMas: 2.7 }), /rotation period/u); + // One file, as Polaris was run, states no period and writes no coverage. + assert.ok(!surfaceArguments('a.oifits', '/work', { diameterMas: 3.16 }).some(arg => /^(?:rotation_period_days|coverage)=/u.test(arg))); +}); + +test('the table puts longitude 0 on the meridian that faced the observer, and a node never seen holds the mean', () => { + // ROTIR's grid, 36 x 18 cells: brightness 2 where its longitude is under 180 and 1 beyond; the observer stood at 270 on the + // reference night, and nothing east of ROTIR longitude 90 to 180 was ever seen. + const columns = 36, rows = 18, values = new Float32Array(columns * rows), facing = new Float32Array(columns * rows); + for (let r = 0; r < rows; r++) for (let c = 0; c < columns; c++) { const longitude = (c + 0.5) * 10; values[r * columns + c] = longitude < 180 ? 2 : 1; facing[r * columns + c] = longitude > 90 && longitude < 180 ? -0.5 : 0.5; } + const table = surfaceTable({ columns, rows, values }, { columns, rows, values: facing }, 270, 'a "test" star'); + const parsed = parseTecplotLonLat(table.text, 'test.dat'), brightness = parsed.variables.indexOf(BRIGHTNESS_VARIABLE), seen = parsed.variables.indexOf(FACING_VARIABLE); + assert.deepEqual([parsed.columns, parsed.rows, parsed.lonStep], [360 / TABLE_STEP_DEGREES + 1, 180 / TABLE_STEP_DEGREES + 1, TABLE_STEP_DEGREES]); + const at = (longitude: number, latitude: number) => parsed.values[(latitude + 90) / TABLE_STEP_DEGREES * parsed.columns + longitude / TABLE_STEP_DEGREES]!; + // Table longitude 0 is ROTIR 270 (brightness 1); table 100 is ROTIR 10 (brightness 2); table 200 is ROTIR 110, never seen. + assert.ok(at(100, 0)[brightness]! / at(0, 0)[brightness]! > 1.99 && at(100, 0)[brightness]! / at(0, 0)[brightness]! < 2.01); + assert.equal(at(200, 0)[brightness], 100); assert.ok(at(200, 0)[seen]! < 0 && at(0, 0)[seen]! > 0); + // The seen surface is two thirds at 1 and one third at 2: its mean is 4/3, so the two values are 75% and 150%. + assert.ok(Math.abs(table.minimumPercent - 75) < 1.5 && Math.abs(table.maximumPercent - 150) < 3, `${table.minimumPercent} ${table.maximumPercent}`); + assert.doesNotMatch(table.text.split('\n')[0]!, /"test"/u); +}); + +test('the spots are taken against the spottiest spotless twin that fits on the sphere', () => { + const twins = [{ scale: 1, ratio: 2.94, fits: true }, { scale: 0.98, ratio: 1.51, fits: false }, { scale: 0.99, ratio: 2.57, fits: true }, { scale: 1.01, ratio: 2.14, fits: true }, { scale: 1.02, ratio: 1.4, fits: false }]; + assert.equal(decidingTwin(twins).scale, 1.01); + // Where the data do not hold the size, every twin fits and the spottiest decides, as for a sky-plane image. + assert.equal(decidingTwin(twins.map(twin => ({ ...twin, fits: true }))).scale, 1.02); + assert.throws(() => decidingTwin(twins.map(twin => ({ ...twin, fits: twin.scale !== 1 }))), /not a check/u); +}); diff --git a/packages/telescope-cli/src/new-object/maps/routes.mts b/packages/telescope-cli/src/new-object/maps/routes.mts index 4e0a9f9781a..7129327dad7 100644 --- a/packages/telescope-cli/src/new-object/maps/routes.mts +++ b/packages/telescope-cli/src/new-object/maps/routes.mts @@ -7,4 +7,6 @@ export const MAP_ROUTES: Readonly runSurfaceMaps((await import('../magnetic/maps.mts')).MAGNETIC_ROUTE, spec, context) }, // Brightness maps made from a star's TESS, K2 or Kepler light curves (brightness/brightness.mts). brightnessMaps: { name: 'brightness maps', run: async (spec, context) => runSurfaceMaps((await import('../brightness/brightness.mts')).BRIGHTNESS_ROUTE, spec, context) }, + // Surface maps fitted to a star's interferometry of several nights (resolved/resolved.mts). + resolvedMaps: { name: 'surface maps', run: async (spec, context) => runSurfaceMaps((await import('../resolved/resolved.mts')).RESOLVED_ROUTE, spec, context) }, }; diff --git a/packages/telescope-cli/src/new-object/maps/surface-maps.mts b/packages/telescope-cli/src/new-object/maps/surface-maps.mts index 174d3b71f47..bfd10576a4b 100644 --- a/packages/telescope-cli/src/new-object/maps/surface-maps.mts +++ b/packages/telescope-cli/src/new-object/maps/surface-maps.mts @@ -39,6 +39,8 @@ export interface MapKind { report(maps: readonly M[], scale: MapScale): string; /** Whether a map's page draws the star at the map's tilt, so the latitude the star never shows may be outlined. Left out: it does. */ outlines?(map: M): boolean; + /** A column of the map's own table whose change of sign is outlined: the edge of what the table says was never seen. */ + readonly outlineZeroOf?: string; /** Where one map's table goes, the archive it is read from and the records it is bound to, when they differ from map to map * (a kind fed by several missions). Left out: the kind's own `directory`, `archiveUrl` and `references`. */ directoryOf?(map: M): string; archiveOf?(map: M): string; referencesOf?(map: M): readonly { readonly catalogueId: string; readonly role: string; readonly evidence: string }[]; @@ -99,7 +101,7 @@ export function surfaceMapFiles(kind: MapKind, entry: S redistribution: words.redistribution, consumers: [consumerOf(map)], sourceBinding: { kind: 'catalogued', references: (kind.referencesOf?.(map) ?? kind.references).map(reference => ({ ...reference })) } }); newSurfaces.push({ id: choice.id, output: first.output, thumbnail: first.thumbnail, source: path, falseColor: true, science: { kind: 'terrestrial-scientific', id: choice.id, label: choice.label, format: 'tecplot-lonlat-map', path, variable: kind.variable, - ...(outlined ? { outlineLatitudes: [-tilt] } : {}), consumer: consumerOf(map), sampling: 'bilinear', displaySampling: 'bilinear', outputLongitudeOrigin: 0, units: kind.units, minimum: scale.minimum, maximum: scale.maximum, colors: [...kind.colors], labels, + ...(outlined ? { outlineLatitudes: [-tilt] } : {}), ...(kind.outlineZeroOf ? { outlineZeroOf: kind.outlineZeroOf } : {}), consumer: consumerOf(map), sampling: 'bilinear', displaySampling: 'bilinear', outputLongitudeOrigin: 0, units: kind.units, minimum: scale.minimum, maximum: scale.maximum, colors: [...kind.colors], labels, description: words.description, title: words.surfaceTitle, sourceUrl: archive } }); newControls.push({ id: choice.id, label: kind.controlLabel, qualification: words.qualification, thumbnail: `${star.id}-dataset-${choice.id}.webp`, surface: `${star.id}-surface-${choice.id}@2x.webp`, poles: `${star.id}-poles-${choice.id}@2x.webp`, diff --git a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts new file mode 100644 index 00000000000..ea533eba8cd --- /dev/null +++ b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts @@ -0,0 +1,151 @@ +/** A star's surface resolved by an interferometer over several nights, as datasets of the star's page: the map kind of + * maps/surface-maps.mts for the reconstructions `archives/interferometry/surface-star.mts` makes with ROTIR. + * + * A map is drawn only when its reduction passed the three checks there. Every sentence says it is this project's + * reduction of the authors' calibrated nights with their code and settings, not their published map, and gives the fit's + * own numbers. The star's tilt, the direction of its pole on the sky and its period are the paper's, cited in the season; + * a page that draws its axis by convention takes them. Nothing here names a star: the season says whose nights they are. */ +import { inclinedPoleOrientation } from '@cssearth/bake/objects/stellar'; +import { requireArray, requireFiniteNumber, requireRecord, requireString } from '@cssearth/core'; +import { DISPLAY_ORIENTATION_SCHEMA, INVESTIGATION_LEDGER_SCHEMA } from '@cssearth/objects'; +import { RECONSTRUCTION_CHI2_LIMIT, REPRODUCIBILITY_CORRELATION, SPOT_CONTRAST_RATIO } from '../../archives/interferometry/spotless-disc.mts'; +import { BRIGHTNESS_VARIABLE, FACING_VARIABLE, SURFACE_MAP_SCHEMA, type SeasonData, type SeasonPaper } from '../../archives/interferometry/surface-star.mts'; +import { LIMB_STRENGTH, tinted } from '../brightness/brightness-maps.mts'; +import { scaleEnd, type MapKind, type SurfaceMap, type SurfaceMapChoice } from '../maps/surface-maps.mts'; + +type Json = Record; +const json = (value: unknown) => `${JSON.stringify(value, null, 2)}\n`; +export const RESOLVED_GENERATOR = 'packages/telescope-cli/src/archives/interferometry/surface-star.mts', RESOLVED_CONSUMER = 'rotir-surface', RESOLVED_DIRECTORY = 'science/interferometry'; +const ROTIR_RECORD = 'rotir-jl', ROTIR_URL = 'https://github.com/fabienbaron/ROTIR.jl'; +const COLORS = ['#1a1a1a', '#5c5c5c', '#9c9c9c', '#d6d6d6', '#ffffff'] as const, PALETTE = [[26, 26, 26], [92, 92, 92], [156, 156, 156], [214, 214, 214], [255, 255, 255]] as const; + +export interface ResolvedNight { readonly night: string; readonly vis2: number; readonly closurePhases: number; readonly subObserverLongitude: number } +export interface ResolvedSurfaceMap extends SurfaceMap { + readonly season: string; readonly instrument: string; readonly band: string; readonly papers: readonly SeasonPaper[]; readonly data: SeasonData; + readonly diameterMas: number; readonly diameterSource: string; readonly limbPowerLaw: number; readonly positionAngleDegrees: number; readonly positionAngleSource: string; + readonly nights: readonly ResolvedNight[]; readonly referenceNight: string; readonly beamMas: number; readonly vis2: number; readonly closurePhases: number; + readonly fit: { readonly vis2: number; readonly closurePhase: number; readonly spotlessVis2: number; readonly spotlessClosurePhase: number }; + /** The deciding twin's ratio and size, the twins that did not fit on the sphere, and the halves' correlation. */ + readonly spotRatio: number; readonly spotScale: number; readonly unfitTwins: readonly { readonly scale: number; readonly closurePhase: number }[]; readonly halves: number; + readonly darkestPercent: number; readonly brightestPercent: number; readonly recipe: string; readonly codes: readonly string[]; +} + +/** What a season's receipt says of its map, read once and checked. A reduction that did not pass its checks is no map. */ +export function reducedSurface(choice: SurfaceMapChoice, receipt: unknown, table: string): ResolvedSurfaceMap { + const record = requireRecord(receipt, `${choice.program} receipt`); + if (record.schema !== SURFACE_MAP_SCHEMA || record.season !== choice.program) throw new TypeError(`${choice.program}: its receipt is not this season's surface map.`); + const verdict = requireRecord(record.verdict, 'verdict'); + if (verdict.cast !== true) throw new Error(`${choice.program} is not cast: ${requireArray(verdict.reasons, 'reasons').join('; ')}.`); + const star = requireRecord(record.star, 'star'), cited = (name: string) => { const one = requireRecord(star[name], name); return { value: requireFiniteNumber(one.value, name), source: requireString(one.source, `${name} source`) }; }; + const fit = requireRecord(record.fit, 'fit'), spots = requireRecord(record.spots, 'spots'), about = requireRecord(record.table, 'table'), recipe = requireRecord(record.recipe, 'recipe'), codes = requireRecord(record.codes, 'codes'); + const nights = requireArray(record.nights, 'nights').map((entry): ResolvedNight => { const night = requireRecord(entry, 'night'); return { night: requireString(night.night, 'night'), vis2: requireFiniteNumber(night.vis2, 'vis2'), closurePhases: requireFiniteNumber(night.closurePhases, 'closurePhases'), subObserverLongitude: requireFiniteNumber(night.subObserverLongitude, 'subObserverLongitude') }; }); + const points = requireRecord(record.points, 'points'); + if (!table.includes(`"${BRIGHTNESS_VARIABLE}"`) || !table.includes(`"${FACING_VARIABLE}"`) || !table.includes('ZONE I=')) throw new TypeError(`${choice.program}: the table is not a surface map of ${RESOLVED_GENERATOR}.`); + return { choice, table, targetName: requireString(record.target, 'target'), season: choice.program, instrument: requireString(record.instrument, 'instrument'), band: requireString(record.band, 'band'), + papers: requireArray(record.papers, 'papers') as SeasonPaper[], data: requireRecord(record.data, 'data') as unknown as SeasonData, + inclinationDegrees: cited('inclinationDegrees').value, inclinationSource: cited('inclinationDegrees').source, periodDays: cited('rotationPeriodDays').value, periodSource: cited('rotationPeriodDays').source, + diameterMas: cited('diameterMas').value, diameterSource: cited('diameterMas').source, limbPowerLaw: cited('limbPowerLaw').value, positionAngleDegrees: cited('positionAngleDegrees').value, positionAngleSource: cited('positionAngleDegrees').source, + nights, referenceNight: requireString(record.referenceNight, 'referenceNight'), beamMas: requireFiniteNumber(record.beamMas, 'beamMas'), vis2: requireFiniteNumber(points.vis2, 'vis2'), closurePhases: requireFiniteNumber(points.closurePhases, 'closurePhases'), + fit: { vis2: requireFiniteNumber(fit.vis2, 'fit vis2'), closurePhase: requireFiniteNumber(fit.closurePhase, 'fit closure phase'), spotlessVis2: requireFiniteNumber(fit.spotlessVis2, 'spotless vis2'), spotlessClosurePhase: requireFiniteNumber(fit.spotlessClosurePhase, 'spotless closure phase') }, + spotRatio: requireFiniteNumber(spots.ratio, 'spot ratio'), spotScale: requireFiniteNumber(spots.scale, 'spot scale'), + unfitTwins: requireArray(spots.twins, 'twins').map(entry => requireRecord(entry, 'twin')).filter(twin => twin.fits === false).map(twin => ({ scale: requireFiniteNumber(twin.scale, 'twin scale'), closurePhase: requireFiniteNumber(requireRecord(twin.chi2, 'twin chi2').closurePhase, 'twin closure phase') })), + halves: requireFiniteNumber(requireRecord(record.halves, 'halves').correlation, 'halves'), darkestPercent: requireFiniteNumber(about.minimumPercent, 'minimumPercent'), brightestPercent: requireFiniteNumber(about.maximumPercent, 'maximumPercent'), + recipe: `HEALPix level ${requireFiniteNumber(recipe.level, 'level')}, ${requireString(recipe.regularizer, 'regularizer')} at weight ${requireFiniteNumber(recipe.weight, 'weight')}, ${requireFiniteNumber(recipe.iterations, 'iterations')} iterations`, + codes: [`ROTIR.jl ${requireString(codes.rotir, 'rotir').slice(0, 8)}`, `OITOOLS.jl ${requireString(codes.oitools, 'oitools').slice(0, 8)}`] }; +} + +const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] as const; +const day = (night: string) => `${Number(night.slice(8, 10))} ${MONTHS[Number(night.slice(5, 7)) - 1]!} ${night.slice(0, 4)}`; +/** "2 to 24 September 2011" for nights of one month, else both days in full. */ +export const span = (nights: readonly { readonly night: string }[]) => { const first = nights[0]!.night, last = nights.at(-1)!.night; + return first.slice(0, 7) === last.slice(0, 7) ? `${Number(first.slice(8, 10))} to ${day(last)}` : `${day(first)} to ${day(last)}`; }; +const fixed = (value: number) => value.toFixed(2); +const cite = (map: ResolvedSurfaceMap) => map.papers.map(paper => paper.citation).join('; '); +/** The degrees of longitude that faced the Earth on no night: the nights' sub-Earth meridians span a range, and a hemisphere is seen from each. */ +export const unseenDegrees = (map: Pick) => { const at = map.nights.map(night => night.subObserverLongitude); return Math.max(0, 180 - (Math.max(...at) - Math.min(...at))); }; +/** The smallest detail the nights resolve, in degrees of the star's surface at the middle of its disc. */ +const resolved = (map: ResolvedSurfaceMap) => Math.round(2 * Math.asin(Math.min(1, map.beamMas / map.diameterMas)) * 180 / Math.PI); +const scaleOf = (maps: readonly ResolvedSurfaceMap[]) => { const reach = scaleEnd(Math.max(...maps.flatMap(map => [100 - map.darkestPercent, map.brightestPercent - 100]))); return { minimum: 100 - reach, maximum: 100 + reach, labels: [`${100 - reach}%`, '100%', `${100 + reach}%`] }; }; +const checks = (map: ResolvedSurfaceMap) => `The fit leaves a reduced chi-squared of ${fixed(map.fit.vis2)} on the squared visibilities and ${fixed(map.fit.closurePhase)} on the closure phases, where a spotless star leaves ${fixed(map.fit.spotlessVis2)} and ${fixed(map.fit.spotlessClosurePhase)} (limit ${RECONSTRUCTION_CHI2_LIMIT}); its spots are ${fixed(map.spotRatio)} times those the same fit draws on a spotless star of ${map.spotScale === 1 ? 'the same size' : `${fixed(map.spotScale * map.diameterMas)} mas`} (limit ${SPOT_CONTRAST_RATIO}); and two independent halves of the data give the same spots (correlation ${fixed(map.halves)}, limit ${REPRODUCIBILITY_CORRELATION})`; + +/** What is a resolved surface map's own in the records surface-maps.mts writes. */ +export const RESOLVED_MAPS: MapKind = { + consumer: RESOLVED_CONSUMER, directory: RESOLVED_DIRECTORY, inputTag: 'interferometry-map', stepGroup: 'surface', variable: BRIGHTNESS_VARIABLE, units: '%', controlLabel: 'Surface map', legendTitle: 'Surface brightness, infrared', + archiveUrl: ROTIR_URL, archiveOf: map => map.data.url, references: [], + referencesOf: map => [{ catalogueId: map.data.record, role: 'material', evidence: map.data.url }, ...map.papers.map(paper => ({ catalogueId: paper.record, role: 'method', evidence: `https://doi.org/${paper.doi}` })), { catalogueId: ROTIR_RECORD, role: 'method', evidence: ROTIR_URL }], + colors: COLORS, palette: PALETTE, outlineZeroOf: FACING_VARIABLE, outlines: () => false, + scale: scaleOf, + words(map, { count }) { const { choice } = map, when = span(map.nights), unseen = Math.round(unseenDegrees(map)), detail = resolved(map); + const edge = unseen > 0 ? ` The ${unseen}° of longitude that faced the Earth on none of the nights hold the mean, inside the black line.` : ''; + return { productId: `Surface map of ${map.targetName} from ${map.instrument}, ${when}`, + inputTitle: `Surface map of ${map.targetName} from its ${map.instrument} visibilities of ${when}: infrared brightness on a longitude-latitude grid`, + credit: `${map.data.credit}; the star's size, limb, axis and period from ${map.papers[0]!.citation}; map made in this project with ${map.codes.join(' and ')}`, displayCredit: `${map.instrument} · mapped here`, + license: map.data.license, licenseEvidence: [map.data.url], + acquisition: `Built by ${RESOLVED_GENERATOR} from the season ${map.season}: the ${map.nights.length} calibrated files at ${map.data.url}, fitted with the pinned ROTIR (${map.recipe}). The receipt with the fit and its checks is written again by that command under output/interferometry and is not kept in git.`, + redistribution: 'A table of fitted values made in this project; the calibrated files themselves are not redistributed.', + description: `Brightness of ${map.targetName}'s surface in the ${map.band}, fitted with ROTIR to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${when}: one surface on a sphere ${map.diameterMas} mas across that turns once in ${map.periodDays} d, tilted ${map.inclinationDegrees}° from the line of sight with its pole ${map.positionAngleDegrees}° east of north (${map.inclinationSource.split(':')[0]}). ${checks(map)}. Percent of the mean of the surface seen. Longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Nothing smaller than about ${detail}° of the surface is resolved.${edge} The same nights were imaged by their authors (${cite(map)}); this is a reduction made in this project with their code, not their published map.`, + surfaceTitle: `${map.instrument} · surface map made here · ${choice.label}`, qualification: `Mapped in this project · ${map.instrument}, ${choice.label.toLowerCase()}`, + notes: `Where ${map.targetName}'s surface was darker and brighter in infrared light on ${map.nights.length} nights, ${when}, worked out in this project from what the ${map.instrument} interferometer measured. The star turned by ${Math.round(180 - unseenDegrees(map))}° between the first night and the last, so one surface is fitted to all of them, with the size, tilt, pole direction and period ${map.papers[0]!.citation} measured. Both the longitudes and the latitudes of the dark regions are fixed by the data, down to about ${detail}° of the surface; nothing finer is.${edge} The colors are a scale of brightness in one infrared band, not the star's color or temperature.${count > 1 ? ` Step through the ${count} maps to see the spots change.` : ''} A reduction made in this project with the authors' code and calibrated nights, not their published map.`, + legendNote: `Darker: dimmer than the mean of the surface seen; white: brighter.${unseen > 0 ? ' Black line: the edge of what never faced the Earth on these nights.' : ''}`, + text: { title: `Surface map, ${choice.label}`, detail: `${choice.label}, mapped here`, summary: 'Darker and brighter regions of the star, worked out in this project from interferometry of several nights.' } }; }, + // The star in its own color over the map's scale: a darker tone of its hue where the infrared surface is dimmer. + natural(map, star) { const when = span(map.nights), scale = scaleOf([map]), less = Number((100 * (1 - map.darkestPercent / map.brightestPercent)).toFixed(0)), unseen = Math.round(unseenDegrees(map)); + return { id: 'color-surface', label: 'Color + brightness', minimum: scale.minimum, maximum: scale.maximum, colors: tinted(star.colorHex), limbStrength: LIMB_STRENGTH, + description: `The star's color (${star.colorHex}, its Color dataset) over the surface map this project made from ${map.instrument} interferometry of ${when}: the map's scale, ${scale.minimum}% to ${scale.maximum}% of the mean surface, runs from a darker, richer tone of the same hue to the color itself. The map is of infrared light (${map.band}), where the darkest region gives ${less}% less light than the brightest; how much darker the spots are in visible light is not measured, and no color change is drawn. Longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}.${unseen > 0 ? ` The ${unseen}° of longitude that never faced the Earth on these nights hold the mean.` : ''} A reduction made in this project, not a published map.`, + surfaceTitle: `${map.instrument} · the star in its color over its surface map · ${when}`, qualification: `The star's color, darker where ${map.instrument} saw its surface dimmer in the infrared · ${when}, mapped in this project`, + notes: `${map.targetName} in its own color, darker where interferometry of ${when} shows its surface darker. The interferometer resolved the star's disc, so the places of the dark regions, in longitude and latitude, are measured, down to about ${resolved(map)}° of the surface. The map is of infrared light, where the darkest region gives ${less}% less light than the brightest; it is drawn as a much darker tone of the star's own hue, and the Surface map's scale has the measured values. How dark the spots are in visible light, and their color, are not measured. The star is drawn as it faced the Earth on ${day(map.referenceNight)}, at the tilt and pole direction ${map.papers[0]!.citation} measured.${unseen > 0 ? ` The ${unseen}° of longitude that faced the Earth on none of the nights are drawn at the mean.` : ''} Spots come and go within weeks or months: this is the star then. The darkening toward the edge is the Color dataset's limb law, drawn ${LIMB_STRENGTH} times as strong. A reduction made in this project with the authors' code and calibrated nights, not their published map.`, + text: { title: `Color + brightness, ${MONTHS[Number(map.referenceNight.slice(5, 7)) - 1]!.slice(0, 3)} ${map.referenceNight.slice(0, 4)}`, detail: `${map.instrument}, ${when}`, summary: 'The star in its own color, darker where interferometry resolved darker regions on its surface.' } }; }, + report(maps, scale) { const count = maps.length; return `${count} surface ${count === 1 ? 'map' : 'maps'} on one scale of ${scale.minimum}% to ${scale.maximum}% (${maps.map(map => `${map.choice.label}: ${map.nights.length} nights, chi-squared ${fixed(map.fit.vis2)} and ${fixed(map.fit.closurePhase)}, spots ${fixed(map.spotRatio)} times a spotless star's, halves ${fixed(map.halves)}`).join('; ')})`; }, +}; + +/** The records of the source catalogue (`src/sources`) a star's surface maps are bound to: the calibrated nights, the papers + * and the code. */ +export function resolvedSourceRecords(checkedOn: string, maps: readonly Pick[]): Map { + const records = new Map(); + for (const map of maps) { const { data } = map; + records.set(`src/sources/${data.record}.json`, json({ id: data.record, kind: 'data-product', identityLevel: 'work', title: data.title, identifiers: [], links: [{ role: 'archive', url: data.url, label: 'Files at the pinned commit' }], + evidence: [{ url: data.url, checkedOn, locator: data.locator }], relations: [], statements: [{ kind: 'credit', text: data.credit, scope: 'citation', evidence: data.url }], publisher: data.publisher })); + for (const paper of map.papers) { const url = `https://arxiv.org/abs/${paper.arxiv}`; + records.set(`src/sources/${paper.record}.json`, json({ id: paper.record, kind: 'publication', identityLevel: 'work', title: paper.title, identifiers: [{ type: 'arXiv', value: paper.arxiv }, { type: 'DOI', value: paper.doi }], + links: [{ role: 'archive', url, label: 'arXiv preprint' }, { role: 'landing', url: `https://doi.org/${paper.doi}`, label: 'Journal version' }], evidence: [{ url, checkedOn, locator: paper.locator }], relations: [], + statements: [{ kind: 'credit', text: paper.title.split(':')[0]!, scope: 'citation', evidence: url }], creators: paper.creators, publicationDate: paper.year })); } } + records.set(`src/sources/${ROTIR_RECORD}.json`, json({ id: ROTIR_RECORD, kind: 'software', identityLevel: 'work', title: 'ROTIR.jl: interferometric imaging and light curve inversion on rotating spheroids (F. Baron, A. O. Martinez)', + identifiers: [], links: [{ role: 'archive', url: ROTIR_URL, label: 'Source repository' }], evidence: [{ url: ROTIR_URL, checkedOn, locator: 'Repository page: name, description and GPL-3.0 licence. The commit run is pinned in packages/telescope-cli/src/archives/interferometry/toolchains.json.' }], relations: [], + statements: [{ kind: 'credit', text: 'ROTIR.jl (F. Baron and A. O. Martinez), GPL-3.0', scope: 'citation', evidence: ROTIR_URL }], creators: ['F. Baron', 'A. O. Martinez'] })); + return records; +} + +/** A star's rotation record with the axis its surface map is fitted with: the measured tilt and pole direction, and the + * meridian that turns longitude 0 toward the Earth, where the map puts the face of its reference night. */ +export function measuredAxisRotation(previous: Json, place: { readonly rightAscensionDegrees: number; readonly declinationDegrees: number }, map: Pick): Json { + const pole = inclinedPoleOrientation(place, map.inclinationDegrees, map.positionAngleDegrees), meridian = Number(((pole.displayMeridianDegrees % 360 + 360) % 360).toFixed(6)); + return { ...previous, schema: DISPLAY_ORIENTATION_SCHEMA, rightAscensionDegrees: pole.rightAscensionDegrees, declinationDegrees: pole.declinationDegrees, displayMeridianDegrees: meridian, phase: 'arbitrary-display-phase', + source: `Measured axis: spin inclination ${map.inclinationDegrees} degrees from the line of sight (${map.inclinationSource}), pole position angle ${map.positionAngleDegrees} degrees east of north (${map.positionAngleSource}) and rotation period ${map.periodDays} d (${map.periodSource}): the values the star's surface map is fitted with, the pole tilted toward us; computed by inclinedPoleOrientation in packages/bake/src/objects/stellar/gravity-darkening.ts. Longitude 0 faces the Earth, where the map puts the meridian that faced it on ${map.referenceNight}.`, + coordinateSystem: 'ICRF/J2000. +Z is the measured rotation pole, the one tilted toward the Earth. +X is the display meridian, set so that grid longitude 0 faces the Sun and Earth at the scene epoch; east longitude. No spin is propagated.', + qualification: 'The tilt and the direction of the pole on the sky are measured by interferometry. The star is drawn as it faced the Earth on one night; the rotation is not animated.' }; } + +const README_LEAD = '**Surface from interferometry.**', PROBLEM_LEAD = '- **Surface map.**', FRAME_LEAD = '- **Assumptions of the frame.**'; +/** The star's README with the paragraph on its surface map before the evidence, and the map's known limits among the problems. */ +export function withSurfaceReadme(readme: string, map: ResolvedSurfaceMap): string { + const unseen = Math.round(unseenDegrees(map)), unfit = map.unfitTwins.length ? ` Spotless twins ${map.unfitTwins.map(twin => `${Math.round(Math.abs(twin.scale - 1) * 100)}% ${twin.scale < 1 ? 'smaller' : 'larger'}`).join(' and ')} do not fit on the sphere at all (closure phases ${map.unfitTwins.map(twin => fixed(twin.closurePhase)).join(' and ')}), so they do not decide the spots: a reading of this repository, stated in surface-star.mts.` : ''; + const paragraph = `${README_LEAD} The datasets Color + brightness and Surface map are one fit of the star's surface to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${span(map.nights)} (${map.band}). The calibrated files are the authors', shipped with their code (${map.data.url}); the fit is ROTIR at the pinned commit (${map.recipe}, the settings of the authors' own script for these files), on a sphere of ${map.diameterMas} mas with a power-law limb of ${map.limbPowerLaw}, tilted ${map.inclinationDegrees}° with its pole ${map.positionAngleDegrees}° east of north and turning in ${map.periodDays} d (${map.inclinationSource.split(':')[0]}). ${checks(map)}.${unfit} The page's axis is that measured one, and longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Run again with \`node ${RESOLVED_GENERATOR} packages/telescope-cli/src/archives/interferometry/seasons/${map.season} output/interferometry/${map.season}\`. ${cite(map)} imaged the same nights; their maps are not redistributed here.`; + const problem = `${PROBLEM_LEAD} It is infrared brightness, drawn over the star's visible color as a darker tone: how dark the spots are in visible light is not measured. Nothing smaller than about ${resolved(map)}° of the surface is resolved${unseen > 0 ? `, and ${unseen}° of longitude never faced the Earth on these nights` : ''}. The map is of ${span(map.nights)}; spots change within months.`; + const lines = readme.split('\n').filter(line => !line.startsWith(README_LEAD) && !line.startsWith(PROBLEM_LEAD) && !line.startsWith(FRAME_LEAD)); + const evidence = lines.indexOf('## Evidence'); if (evidence >= 0) lines.splice(evidence, 0, paragraph, ''); else lines.push('', paragraph); + const problems = lines.indexOf('## Known problems'); + if (problems >= 0) lines.splice(problems + 2, 0, problem, `${FRAME_LEAD} The rotation phase is a convention: the star is drawn as it faced the Earth on one night and does not turn.`); else lines.push('', '## Known problems', '', problem); + return lines.join('\n').replace(/\n{3,}/gu, '\n\n'); +} + +/** The star's investigation ledger with the surface map's entry and the measured axis in place of the convention's. */ +export function withSurfaceLedger(ledger: unknown, map: ResolvedSurfaceMap): Json { + const record = requireRecord(ledger, 'investigation ledger'); if (record.schema !== INVESTIGATION_LEDGER_SCHEMA) throw new TypeError('Not an investigation ledger.'); + const id = `surface-${map.season}`, entries = requireArray(record.entries, 'entries').map(entry => requireRecord(entry, 'entry')).filter(entry => entry.id !== id && entry.id !== 'rotation-axis'); + return { ...record, entries: [...entries, + { id, subject: `${map.instrument} visibilities of ${span(map.nights)} as a surface map`, status: 'included', + finding: `The authors' calibrated files of ${map.nights.length} nights (${map.nights.map(night => `${day(night.night)}: ${night.vis2} squared visibilities`).join('; ')}) are public with their code. ROTIR at the pinned commit (${map.recipe}) fits one turning surface to all of them. ${checks(map)}.${map.unfitTwins.length ? ` Spotless twins of ${map.unfitTwins.map(twin => `${fixed(twin.scale * map.diameterMas)} mas`).join(' and ')} do not fit on the ${map.diameterMas} mas sphere (closure-phase chi-squared ${map.unfitTwins.map(twin => fixed(twin.closurePhase)).join(' and ')}) and so do not decide the spot check.` : ''} The published maps themselves are not redistributed.`, + evidence: [map.data.url, ...map.papers.map(paper => `https://doi.org/${paper.doi}`)] }, + { id: 'rotation-axis', subject: 'Rotation axis, period and prime meridian', status: 'included', + finding: `The page draws the axis the surface map is fitted with: inclination ${map.inclinationDegrees}° and pole position angle ${map.positionAngleDegrees}° east of north, with a period of ${map.periodDays} d (${map.inclinationSource.split(':')[0]}). No prime meridian is defined for the star: longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}, and the star is not turned.`, + evidence: map.papers.map(paper => `https://doi.org/${paper.doi}`) }] }; +} diff --git a/packages/telescope-cli/src/new-object/resolved/resolved.mts b/packages/telescope-cli/src/new-object/resolved/resolved.mts new file mode 100644 index 00000000000..555de90fdaa --- /dev/null +++ b/packages/telescope-cli/src/new-object/resolved/resolved.mts @@ -0,0 +1,31 @@ +/** `telescope new-object` for the surface maps this repository fits to a star's interferometry of several nights: the + * route (maps/route.mts) that writes a season's map as datasets of the star's page and bakes the star. resolved-maps.mts + * holds the records; `archives/interferometry/surface-star.mts` reduces a season and decides whether its map is cast. + * + * A page that draws its axis by convention takes the measured tilt and pole direction the map is fitted with. */ +import { readFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; +import { readJson, type MapRoute } from '../maps/route.mts'; +import type { SurfaceMapChoice } from '../maps/surface-maps.mts'; +import { measuredAxisRotation, reducedSurface, RESOLVED_GENERATOR, RESOLVED_MAPS, resolvedSourceRecords, withSurfaceLedger, withSurfaceReadme, type ResolvedSurfaceMap } from './resolved-maps.mts'; + +const SEASONS = 'packages/telescope-cli/src/archives/interferometry/seasons'; +const reduce = (season: string) => `node ${RESOLVED_GENERATOR} ${SEASONS}/${season} output/interferometry/${season}`; + +async function reduced(root: string, host: string, choice: SurfaceMapChoice): Promise { + const work = resolve(root, 'output/interferometry', choice.program); + const receipt = await readJson(resolve(work, 'verdict.json'), `${choice.program} is not reduced (${reduce(choice.program)})`); + const table = await readFile(resolve(work, `${choice.program}.dat`), 'utf8').catch(() => { throw new Error(`${choice.program}: its map table is not in output/interferometry (${reduce(choice.program)}).`); }); + const map = reducedSurface(choice, receipt, table); + if ((receipt as { object?: unknown }).object !== host) throw new Error(`${choice.program} is a season of ${String((receipt as { object?: unknown }).object)}, not of ${host}.`); + return map; +} + +/** The star's README and investigation ledger, with its newest map. */ +async function starRecords(root: string, host: string, maps: readonly ResolvedSurfaceMap[]): Promise> { + const at = `src/objects/${host}`, newest = maps.at(-1)!; + return new Map([[`${at}/README.md`, withSurfaceReadme(await readFile(resolve(root, at, 'README.md'), 'utf8'), newest)], + [`${at}/investigations.json`, `${JSON.stringify(withSurfaceLedger(await readJson(resolve(root, at, 'investigations.json'), `${host}: no investigation ledger`), newest), null, 2)}\n`]]); +} + +export const RESOLVED_ROUTE: MapRoute = { kind: RESOLVED_MAPS, specKey: 'resolvedMaps', name: 'surface maps', reduced, sourceRecords: resolvedSourceRecords, tiltedRotation: measuredAxisRotation, starRecords }; diff --git a/packages/telescope-cli/src/new-object/resolved/resolved.test.mts b/packages/telescope-cli/src/new-object/resolved/resolved.test.mts new file mode 100644 index 00000000000..19dfc8ef787 --- /dev/null +++ b/packages/telescope-cli/src/new-object/resolved/resolved.test.mts @@ -0,0 +1,69 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { isConventionOnly, surfaceMapFiles } from '../maps/surface-maps.mts'; +import { measuredAxisRotation, reducedSurface, RESOLVED_CONSUMER, RESOLVED_MAPS, resolvedSourceRecords, span, unseenDegrees, withSurfaceLedger, withSurfaceReadme } from './resolved-maps.mts'; + +const TABLE = 'TITLE = "test"\nVARIABLES = "Longitude [Deg]" "Latitude [Deg]" "Brightness [%]" "Facing"\nZONE I=73, J=37, K=1, ZONETYPE=Ordered\n'; +const CHOICE = { program: 'star-mirc-2011-09', id: 'surface-2011-09', label: 'September 2011' }; +const cell = (value: number, what: string) => ({ value, source: `Author et al. (2021), ApJ 1, 1, Table 4 (https://arxiv.org/abs/2107.00001): ${what}` }); +/** A season's receipt as surface-star.mts writes it: three nights, the twin 2% larger not fitting on the sphere. */ +const receipt = (cast = true) => ({ schema: 'cssearth-star-surface-map@1', season: CHOICE.program, object: 'hd-1', title: 'HD 1, CHARA/MIRC', target: 'HD 1', instrument: 'CHARA/MIRC', band: 'CHARA/MIRC H band (1.49-1.73 um)', + papers: [{ record: 'arxiv-2107-00001', citation: 'Author et al. (2021), ApJ 1, 1', title: 'Author et al. (2021): A star', arxiv: '2107.00001', doi: '10.1000/x', creators: ['A. Author'], year: '2021', locator: 'Table 4' }], + data: { record: 'code-demos-hd-1', title: 'HD 1 nights', url: 'https://github.com/example/code/tree/abc/demos/data', publisher: 'Example', license: 'Public', locator: 'Three files', credit: 'CHARA Array/MIRC, as calibrated by the authors' }, + star: { diameterMas: cell(2.742, 'radius'), limbPowerLaw: cell(0.231, 'limb'), inclinationDegrees: cell(85.63, 'inclination'), positionAngleDegrees: cell(26.09, 'position angle'), rotationPeriodDays: cell(54.2, 'period') }, + recipe: { level: 3, regularizer: 'sobel2', weight: 10, iterations: 1000, source: 'the authors\' script' }, referenceNight: '2011-09-14', codes: { rotir: 'ad308759b741b861b6c19fedd001c323a3a64479', oitools: 'f42d2beaf2760cb4beaeba0e0d0f1674a3c6c66a' }, beamMas: 0.5044, + nights: [{ night: '2011-09-02', vis2: 360, closurePhases: 432, subObserverLongitude: 79.131 }, { night: '2011-09-14', vis2: 864, closurePhases: 1104, subObserverLongitude: 0 }, { night: '2011-09-24', vis2: 200, closurePhases: 240, subObserverLongitude: -66.78 }], + points: { vis2: 1424, closurePhases: 1776 }, fit: { vis2: 1.717641, closurePhase: 2.300958, spotlessVis2: 3.127638, spotlessClosurePhase: 28.291627 }, + spots: { ratio: 2.143, scale: 1.01, twins: [{ scale: 1, ratio: 2.94, fits: true, chi2: { vis2: 1.02, closurePhase: 1.03 } }, { scale: 1.02, ratio: 1.4, fits: false, chi2: { vis2: 3.7, closurePhase: 9.4 } }] }, + halves: { correlation: 0.828 }, verdict: cast ? { cast: true, reasons: [] } : { cast: false, reasons: ['its spots are no stronger than a spotless disc\'s (ratio 1.40, limit 2)'] }, table: { minimumPercent: 71.777, maximumPercent: 110.192 } }); +const HOST = () => ({ content: { datasets: { defaultDataset: 'color', controls: [{ id: 'color', label: 'Color' }] } }, text: { datasets: { color: { title: 'Color' } } }, manifest: { inputs: [{ id: 'star-color', path: 'photometry/color.json', consumers: ['datasets'] }] }, + raster: { surfaces: [{ id: 'color', output: 'hd-1-surface-{id}{suffix}.webp', thumbnail: 'hd-1-dataset-{id}.webp', science: { kind: 'stellar-photometric-color' } }] }, + descriptor: { properties: { recipe: { surfaces: [{ id: 'body', datasets: [{ id: 'color', source: 'content', material: 'emission' }] }] } } } }); + +test('a season that did not pass its checks is no map, and one that did says what it was fitted with', () => { + assert.throws(() => reducedSurface(CHOICE, receipt(false), TABLE), /is not cast: its spots are no stronger/u); + assert.throws(() => reducedSurface({ ...CHOICE, program: 'another' }, receipt(), TABLE), /not this season's/u); + assert.throws(() => reducedSurface(CHOICE, receipt(), TABLE.replace(' "Facing"', '')), /not a surface map/u); + const map = reducedSurface(CHOICE, receipt(), TABLE); + assert.deepEqual([map.inclinationDegrees, map.positionAngleDegrees, map.periodDays, map.diameterMas, map.spotScale], [85.63, 26.09, 54.2, 2.742, 1.01]); + assert.deepEqual(map.unfitTwins, [{ scale: 1.02, closurePhase: 9.4 }]); + assert.equal(span(map.nights), '2 to 24 September 2011'); assert.ok(Math.abs(unseenDegrees(map) - 34.089) < 1e-6); +}); + +test('the page gains the star in its color over the map, the map with its scale, and an outline of what was never seen', () => { + const map = reducedSurface(CHOICE, receipt(), TABLE), { files, opensOn } = surfaceMapFiles(RESOLVED_MAPS, { host: 'hd-1', maps: [CHOICE] }, { id: 'hd-1', name: 'HD 1', colorHex: '#ffddbb' }, [map], HOST()); + const raster = JSON.parse(files.get('src/objects/hd-1/source/preparation/raster.json')!) as { surfaces: { id: string; science: Record }[] }; + const content = JSON.parse(files.get('src/objects/hd-1/source/content/object.json')!) as { datasets: { defaultDataset: string; controls: { id: string; notes?: string; step?: unknown }[] } }; + const manifest = JSON.parse(files.get('src/objects/hd-1/source/manifest.json')!) as { inputs: { id: string; path: string; sourceBinding?: { references: { catalogueId: string }[] } }[] }; + assert.equal(opensOn, 'color-surface'); assert.deepEqual(content.datasets.controls.map(control => control.id), ['color-surface', 'surface-2011-09', 'color']); + const drawn = raster.surfaces.find(surface => surface.id === 'surface-2011-09')!.science, natural = raster.surfaces.find(surface => surface.id === 'color-surface')!.science; + assert.deepEqual([drawn.format, drawn.variable, drawn.outlineZeroOf, drawn.consumer, drawn.minimum, drawn.maximum], ['tecplot-lonlat-map', 'Brightness [%]', 'Facing', RESOLVED_CONSUMER, 70, 130]); + assert.equal(drawn.outlineLatitudes, undefined); assert.equal(natural.outlineZeroOf, undefined); assert.equal(natural.limbOf, 'color'); + // One map has no steps; its table is tracked beside the star and bound to the nights, the paper and the code. + assert.equal(content.datasets.controls[1]!.step, undefined); + const input = manifest.inputs.find(one => one.path === 'science/interferometry/star-mirc-2011-09.dat')!; + assert.deepEqual(input.sourceBinding!.references.map(reference => reference.catalogueId), ['code-demos-hd-1', 'arxiv-2107-00001', 'rotir-jl']); + assert.equal(files.get('src/objects/hd-1/source/science/interferometry/star-mirc-2011-09.dat'), TABLE); + for (const control of content.datasets.controls.slice(0, 2)) assert.match(control.notes!, /not (?:a|their) published map|made in this project/u); + assert.match(content.datasets.controls[0]!.notes!, /34° of longitude that faced the Earth on none of the nights/u); + assert.deepEqual([...resolvedSourceRecords('2026-10-08', [map]).keys()], ['src/sources/code-demos-hd-1.json', 'src/sources/arxiv-2107-00001.json', 'src/sources/rotir-jl.json']); +}); + +test('a convention page takes the measured tilt and pole direction, and the records say what was checked', () => { + const map = reducedSurface(CHOICE, receipt(), TABLE), convention = { schema: 'cssearth-display-orientation@1', rightAscensionDegrees: 174.4, declinationDegrees: 43.5, displayMeridianDegrees: -90, source: 'No measured rotation axis or period is used.' }; + assert.equal(isConventionOnly(convention), true); + const measured = measuredAxisRotation(convention, { rightAscensionDegrees: 354.39, declinationDegrees: 46.46 }, map); + assert.equal(isConventionOnly(measured), false); assert.match(String(measured.source), /inclination 85\.63 degrees.*position angle 26\.09 degrees east of north.*54\.2 d/u); + // The pole tilted 4.4 degrees toward us and 26 degrees east of north: north of the star on the sky, away from its own declination by about that. + assert.ok(Number(measured.declinationDegrees) > 20 && Number(measured.declinationDegrees) < 46.46); + const readme = '# HD 1\n\n## Sources\n\n**Limb.** x\n\n## Evidence\n\ny\n\n## Known problems\n\n- **Assumptions of the frame.** The axis\'s position angle and the rotation phase are conventions.\n- **Model limb.** z\n'; + const written = withSurfaceReadme(readme, map); + assert.match(written, /\*\*Surface from interferometry\.\*\* .*1,424 squared visibilities and 1,776 closure phases.*chi-squared of 1\.72 on the squared visibilities and 2\.30 on the closure phases.*2\.14 times.*2\.77 mas.*correlation 0\.83.*2% larger do not fit on the sphere at all \(closure phases 9\.40\)/su); + assert.ok(written.indexOf('**Surface from interferometry.**') < written.indexOf('## Evidence')); + assert.match(written, /- \*\*Surface map\.\*\* It is infrared brightness/u); assert.doesNotMatch(written, /position angle and the rotation phase are conventions/u); + assert.equal(withSurfaceReadme(written, map), written); + const ledger = withSurfaceLedger({ schema: 'cssearth-investigation-ledger@1', objectId: 'hd-1', entries: [{ id: 'placement', subject: 'Placement', status: 'included', finding: 'x' }] }, map) as { entries: { id: string; status: string; finding: string }[] }; + assert.deepEqual(ledger.entries.map(entry => entry.id), ['placement', 'surface-star-mirc-2011-09', 'rotation-axis']); + assert.match(ledger.entries[1]!.finding, /Spotless twins of 2\.80 mas do not fit on the 2\.742 mas sphere/u); + assert.deepEqual(withSurfaceLedger(ledger, map), ledger); +}); diff --git a/src/objects/arcturus/NOTICE.md b/src/objects/arcturus/NOTICE.md index 118a311afa7..7bda2da2d8e 100644 --- a/src/objects/arcturus/NOTICE.md +++ b/src/objects/arcturus/NOTICE.md @@ -3,3 +3,5 @@ Shape: a sphere of the radius from Lacour, Meimon, Thiébaut et al., "The limb-darkened Arcturus: imaging with the IOTA/IONIC interferometer", A&A 485, 561 (2008), arXiv:0804.0192. No image of the photosphere is shown; the neutral gray is a display convention. Placement: SIMBAD (CDS, Strasbourg) position, proper motion, parallax and radial velocity with the references SIMBAD lists. No measured rotation axis is adopted: the display axis is celestial north. + +Limb darkening: Lacour et al. (2008), A&A 485, 561. diff --git a/src/objects/arcturus/README.md b/src/objects/arcturus/README.md index 6e24e3bb7b0..e6ca10efd04 100644 --- a/src/objects/arcturus/README.md +++ b/src/objects/arcturus/README.md @@ -14,6 +14,7 @@ Rotation: no rotation axis or period is adopted here; see Known problems for wha Color dataset: The color of Arcturus's spectrum as the Pulkovo spectrophotometric catalogue measured it from the ground, 320-1080 nm at 10 nm resolution. Its samples from 380 to 780 nm are weighted by the CIE 1931 2° observer and converted to sRGB with the D65 white, brightest channel full ([stellar-photometric-color.ts](../../../packages/bake/src/objects/stellar/stellar-photometric-color.ts)): **#ffd8a5**. The file, how it is read and the full citation are in [stellar-color.json](source/photometry/stellar-color.json). The disc is darkened toward its edge by the quadratic V-band law that Claret & Bloemen (2011, A&A 529, A75) compute from ATLAS model atmospheres, read at 4295 K and log g 1.66: the edge is 18% as bright as the centre. That law is a model, not a measurement of this star. Gravity: log g 1.66 +/- 0.05 measured by Ramirez & Allende Prieto 2011 (ApJ 743, 135; https://arxiv.org/abs/1109.4425), abstract. The catalogue swatch, the minimap and the navigation marker use the same color. [stellar-spectra/author.mts](../../../packages/telescope-cli/authoring/stellar-spectra/author.mts) writes the colors from these inputs, and `--check` recomputes them. Cross-check: Kiehling (1987), HR 5340: an independent ground-based scan gives #ffdab0, 11 levels from the dataset color in its most different channel (the threshold for agreement is 12). +**Limb.** The disc is dimmed toward the limb by the power law I(mu) = mu^0.258 that Lacour et al. (2008), A&A 485, 561 fit to the star's resolved disc (IOTA/IONIC H band, 1.5-1.8 um, seven channels fitted with one law; not a visible band). ## Evidence @@ -24,5 +25,6 @@ Run of 2026-09-21 (this version): ## Known problems The cited paper images Arcturus’s limb darkening; this package shows a neutral sphere and does not cast that image. No mass is adopted. +- **Measured limb, other band.** The law was measured or fixed outside the visible band the color is drawn in; the visible limb is not measured. [Inputs](source/manifest.json) · [Preparation](source/preparation) · [Delivered files](inventory.json) · [Credits](NOTICE.md) diff --git a/src/objects/arcturus/investigations.json b/src/objects/arcturus/investigations.json index c762d6a3ce7..8ae57497fec 100644 --- a/src/objects/arcturus/investigations.json +++ b/src/objects/arcturus/investigations.json @@ -11,6 +11,15 @@ "https://simbad.cds.unistra.fr/simbad/sim-id?Ident=alf+Boo", "https://arxiv.org/abs/0804.0192" ] + }, + { + "id": "limb-darkening", + "subject": "Limb darkening", + "status": "included", + "finding": "The disc is dimmed toward the limb by the power law I(mu) = mu^0.258 that Lacour et al. (2008), A&A 485, 561 fit to the star's resolved disc (IOTA/IONIC H band, 1.5-1.8 um, seven channels fitted with one law; not a visible band).", + "evidence": [ + "https://doi.org/10.1051/0004-6361:200809611" + ] } ] } diff --git a/src/objects/arcturus/source/content/object.json b/src/objects/arcturus/source/content/object.json index f18c019064c..d9477c5993d 100644 --- a/src/objects/arcturus/source/content/object.json +++ b/src/objects/arcturus/source/content/object.json @@ -41,7 +41,7 @@ { "id": "color", "label": "Color", - "qualification": "Color from a measured spectrum of the star (Pulkovo catalogue). The disc is unresolved; its darker edge follows a model limb-darkening law, not a measurement.", + "qualification": "Color from a measured spectrum of the star (Pulkovo catalogue). The disc is unresolved; its darker edge follows a model limb-darkening law, not a measurement; darkening toward the edge from a published law.", "thumbnail": "arcturus-dataset-color.webp", "surface": "arcturus-surface-color@2x.webp", "poles": "arcturus-poles-color@2x.webp", @@ -51,7 +51,7 @@ "url": "https://cdsarc.cds.unistra.fr/viz-bin/cat/III/201" }, "falseColor": false, - "notes": "The color of Arcturus's spectrum as the Pulkovo spectrophotometric catalogue measured it from the ground, 320-1080 nm at 10 nm resolution. No resolved image of the surface is cast; the display axis is celestial north, a convention." + "notes": "The color of Arcturus's spectrum as the Pulkovo spectrophotometric catalogue measured it from the ground, 320-1080 nm at 10 nm resolution. No resolved image of the surface is cast; the display axis is celestial north, a convention. The darkening toward the edge is the power law I(mu) = mu^0.258 that Lacour et al. (2008), A&A 485, 561 fit to the star's resolved disc (IOTA/IONIC H band, 1.5-1.8 um, seven channels fitted with one law; not a visible band)." } ] }, diff --git a/src/objects/arcturus/source/manifest.json b/src/objects/arcturus/source/manifest.json index 792b7813c9b..c9855f14b16 100644 --- a/src/objects/arcturus/source/manifest.json +++ b/src/objects/arcturus/source/manifest.json @@ -137,32 +137,6 @@ ] } }, - { - "id": "arcturus-claret-2011-v-quadratic", - "path": "photometry/claret-2011-v-quadratic.tsv", - "origin": "https://vizier.cds.unistra.fr/viz-bin/asu-tsv", - "credit": "Claret & Bloemen (2011), A&A 529, A75; VizieR J/A+A/529/A75 (CDS)", - "license": "CDS VizieR catalogue: free use with citation", - "licenseEvidence": [ - "https://cds.unistra.fr/vizier-org/licences_vizier.html" - ], - "acquisition": "VizieR ASU TSV for J/A+A/529/A75/table-af, the grid nodes around the star's temperature and gravity (V filter, least-squares fit, solar metallicity, 2 km/s microturbulence), with the response's dated comment lines and blank lines removed so the bytes are stable; restored through source/preparation/acquisition.json.", - "redistribution": "A few catalogue rows, with citation", - "consumers": [ - "assets", - "datasets" - ], - "sourceBinding": { - "kind": "catalogued", - "references": [ - { - "catalogueId": "vizier-j-a-a-529-a75-claret-2011", - "role": "method", - "evidence": "src/objects/arcturus/source/photometry/claret-2011-v-quadratic.tsv" - } - ] - } - }, { "id": "arcturus-crosscheck-spectrum", "path": "photometry/crosscheck-kiehling-5340.tsv", @@ -188,11 +162,28 @@ } ] } + }, + { + "id": "arcturus-lacour-2008-limb-darkening", + "path": "photometry/lacour-2008-limb-darkening.json", + "origin": "https://doi.org/10.1051/0004-6361:200809611", + "credit": "Lacour et al. (2008), A&A 485, 561", + "license": "Factual numerical measurements; source attribution retained", + "acquisition": "Transcribed from the paper, each value with its quoted cell", + "redistribution": "Factual parameter transcription only; no paper figures", + "consumers": [ + "assets", + "datasets" + ], + "sourceBinding": { + "kind": "local", + "reason": "Published limb-darkening law transcribed with its cells; repinned when edited." + } } ], "generatedIntermediates": [ { - "id": "stellar-color-context-marker", + "id": "limb-darkened-disc-context-marker", "path": "presentation/context.png", "origin": "https://cdsarc.cds.unistra.fr/viz-bin/cat/III/201", "credit": "Photosphere color from the measured spectrum as a uniform disc; rendered by packages/telescope-cli/authoring/stellar-spectra/author.mts", @@ -207,7 +198,7 @@ "arcturus-pulkovo-spectrophotometry", "arcturus-cie-1931-2deg-cmf", "arcturus-preparation-raster", - "arcturus-claret-2011-v-quadratic" + "arcturus-lacour-2008-limb-darkening" ] }, "generator": "packages/telescope-cli/authoring/stellar-spectra/author.mts", diff --git a/src/objects/arcturus/source/photometry/claret-2011-v-quadratic.tsv b/src/objects/arcturus/source/photometry/claret-2011-v-quadratic.tsv deleted file mode 100644 index a0d3ea37fca..00000000000 --- a/src/objects/arcturus/source/photometry/claret-2011-v-quadratic.tsv +++ /dev/null @@ -1,19 +0,0 @@ -logg Teff Z xi a b Filt Met Mod -[cm/s2] K [Sun] km/s ------ ------ ---- ---- ------- ------- -- - - - 1.50 4000 0.0 2.0 1.3026 -0.4377 v L A - 2.00 4000 0.0 2.0 1.2949 -0.4268 v L A - 1.50 4250 0.0 2.0 1.2707 -0.3907 v L A - 2.00 4250 0.0 2.0 1.2666 -0.3818 v L A - 1.50 4500 0.0 2.0 1.2133 -0.3324 v L A - 2.00 4500 0.0 2.0 1.2066 -0.3206 v L A - 1.50 4750 0.0 2.0 1.1512 -0.2755 v L A - 2.00 4750 0.0 2.0 1.1409 -0.2588 v L A - 1.50 4000 0.0 2.0 0.9335 -0.0949 V L A - 2.00 4000 0.0 2.0 0.9298 -0.0937 V L A - 1.50 4250 0.0 2.0 0.8522 -0.0242 V L A - 2.00 4250 0.0 2.0 0.8543 -0.0269 V L A - 1.50 4500 0.0 2.0 0.7653 0.0463 V L A - 2.00 4500 0.0 2.0 0.7706 0.0423 V L A - 1.50 4750 0.0 2.0 0.6893 0.1012 V L A - 2.00 4750 0.0 2.0 0.6926 0.1012 V L A diff --git a/src/objects/arcturus/source/photometry/lacour-2008-limb-darkening.json b/src/objects/arcturus/source/photometry/lacour-2008-limb-darkening.json new file mode 100644 index 00000000000..5c9468d7982 --- /dev/null +++ b/src/objects/arcturus/source/photometry/lacour-2008-limb-darkening.json @@ -0,0 +1,13 @@ +{ + "schema": "cssearth-published-limb-darkening@1", + "objectId": "arcturus", + "law": "power", + "source": "Lacour et al. (2008), A&A 485, 561, Table 3, power-law limb darkening fitted to the IOTA/IONIC visibilities and closure phases of May 2006 (https://doi.org/10.1051/0004-6361:200809611)", + "band": "IOTA/IONIC H band, 1.5-1.8 um, seven channels fitted with one law; not a visible band", + "alpha": { + "value": 0.258, + "uncertainty": 0.003, + "cell": "α = 0.258 ± 0.003" + }, + "note": "I(mu)/I(1) = mu^alpha, the paper's equation 3 (Hestroffer 1997). Fitted with the limb-darkened diameter 20.900 ± 0.007 mas at a reduced chi-squared of 1.962; the paper recommends the power law over its two-parameter fit, which does no better (1.959). The record's radius keeps the diameter of that two-parameter fit, 20.922 mas, 0.1% larger. The visible limb is not measured." +} diff --git a/src/objects/arcturus/source/preparation/acquisition.json b/src/objects/arcturus/source/preparation/acquisition.json index fee943cd5c5..cb87f8c9925 100644 --- a/src/objects/arcturus/source/preparation/acquisition.json +++ b/src/objects/arcturus/source/preparation/acquisition.json @@ -10,42 +10,6 @@ "url": "https://cdsarc.cds.unistra.fr/ftp/III/201/table5.dat", "path": "photometry/pulkovo-table5.dat" }, - { - "kind": "request-download", - "groups": [ - "restore", - "refresh" - ], - "path": "photometry/claret-2011-v-quadratic.tsv", - "url": "https://vizier.cds.unistra.fr/viz-bin/asu-tsv", - "form": { - "-source": "J/A+A/529/A75/table-af", - "-out.max": "500", - "Teff": "4000..4750", - "logg": "1.5..2.0", - "Z": "=0", - "xi": "=2", - "Filt": "V", - "Met": "L", - "Mod": "A", - "-out": "logg,Teff,Z,xi,a,b,Filt,Met,Mod" - }, - "requiredText": [ - "logg\tTeff" - ], - "replacements": [ - { - "pattern": "^#.*\\n", - "flags": "gm", - "replacement": "" - }, - { - "pattern": "^\\s*\\n", - "flags": "gm", - "replacement": "" - } - ] - }, { "kind": "request-download", "groups": [ diff --git a/src/objects/arcturus/source/preparation/raster.json b/src/objects/arcturus/source/preparation/raster.json index 669f76a6c10..59e9d305ca3 100644 --- a/src/objects/arcturus/source/preparation/raster.json +++ b/src/objects/arcturus/source/preparation/raster.json @@ -26,25 +26,11 @@ "falseColor": false, "science": { "kind": "stellar-photometric-color", - "qualification": "Uniform photosphere color from the star's ground-based spectrophotometry (Pulkovo catalogue). The disc is unresolved: it is darkened toward the limb by the quadratic V-band law Claret & Bloemen (2011) compute from ATLAS model atmospheres at the star's temperature and gravity, a model rather than a measurement; no map or absolute brightness is implied. Self-luminous, so no lighting.", + "qualification": "Photosphere color from the star's ground-based spectrophotometry (Pulkovo catalogue). The disc is unresolved: it is darkened toward the limb by the quadratic V-band law Claret & Bloemen (2011) compute from ATLAS model atmospheres at the star's temperature and gravity, a model rather than a measurement; no map or absolute brightness is implied. Self-luminous, so no lighting. The disc is dimmed toward the limb by the power law I(mu) = mu^0.258 that Lacour et al. (2008), A&A 485, 561 fit to the star's resolved disc (IOTA/IONIC H band, 1.5-1.8 um, seven channels fitted with one law; not a visible band).", "limbDarkening": { - "law": "quadratic", - "path": "photometry/claret-2011-v-quadratic.tsv", - "grid": { - "teffK": 4295, - "logg": 1.66, - "models": { - "Filt": "V", - "Met": "L", - "Mod": "A" - } - }, - "columns": { - "teff": "Teff", - "logg": "logg", - "u1": "a", - "u2": "b" - } + "law": "power", + "published": true, + "path": "photometry/lacour-2008-limb-darkening.json" } } } @@ -67,7 +53,7 @@ }, "limbMaterial": { "logicalSize": 496, - "composition": "transparent: the sphere's own silhouette is the limb; the light just outside it is on the off-limb plate", + "composition": "black alpha darkens the photosphere according to the selected limb-darkening law; transparent outside the silhouette", "surfaceReplacement": false, "runtimeAlphaProcessing": false }, diff --git a/src/objects/arcturus/source/presentation/context.png b/src/objects/arcturus/source/presentation/context.png index d2b0260742f6bd2082eef1a6edc75ee32a2a3f07..320118e7cda4f896d377603a524ea032a2a42e5f 100644 GIT binary patch literal 35650 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

Nj;gKi9nVmr07B>c&1>y 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

^->~3NrPF7B*_x0>l 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

`2CBE`kdqr0!N z$Sk0CF=Jdx&4H}$_-E`Vu4nhcCVxDfx~*4PCFeWRHm`&gX>;debUe??L+3&k z+k4xY8<6h}fC>9+ith+#yYBq>NMz@7MGgneYU=h5Jmb z>Su_+E4|z1A0>I>r=K(zuj{L}L#0HqpZ85;!X&{GHM|1))iA$oUpk*lRz~Y7C<_w$ zFzTymPRzCNLfn#Ve+<{Wd}U`xq4_$YS9Xu4s&=!$Q;lj`IqCw?N|o3F#@enrHtO69 zOzEg^<;6MQyUD4_Orz<)_-)2t@k<@Tr;;v)Ym{Fv%+#3Y!tapIHScbc+hg=~|F)Yrm)OS4DP}1jmqFSZ_b9tuvPw+HxqPxf~BFLfim+bfikS z)k*<6GdWd1=cS|ckFclvWrI!ec4skz%?oqWkZohizZY=|gNhPU z;V4%*`prZ05+8}ACFnV+43X!u89$|THv_k@I&mO8^ZTuV2`|~$YL|X}q0(3wAHtKB zWSuL(gFV0NN+@Xh530{^L?dq(0nvT>bW)ypcZ4SHQ`>c}SsJMP&|y?-1y^_+uNMrF zT1+2BX3r6Qu{BYQawv;{wIo_$(2;V#gVavY!0Skmd^R&!EK_7 zv>hO|OACHG0Jp{s0wOaxKT*V4#k9M-H-^j+G`G4s#XjLu3t$iu!A(pM+_Bfs=19gH zg2m-NsAej06+}ejMu{tP^9X#)$VA*9#86{@-swvZQ;ilyU+Q=sRat#b#ibx2^ZNjJ z5_r_NK;6@j7D0|y;(rmT=iBb#=#|;M!cO_i=K+rafaP~SMsa0aJLObD!r6(g$Zcl6 z7Lo~=NV~NGVzn2 zON7wObPB?RlOYhd@jA?f@#z9dn@o$~#IXD}xTN@tC7cr1N005ZHeFq1TG`P46>Fn@ z|EAyx6=XUNi6ZSlY;`pb1`e}imKk6`y-TXdFW=Y5=UU)8rHWErvOv34BU7+?Jfv+j znh@;XYE|{#Ed>xwGl|p+3 zez7I8#&+=EVVxZo$o@JbLs<9K^A-IDaF*>#UL-*`YzRA>qoAgAv zYfMe3LDFGRc1YL*nV0!Fht|||oVbmlgb7X4OV^bDaheI;08Gs@z8H6B`TEpjX8zu? znFCp8ERs1Nb|F2yPk+A`U|@HVIk*Xa*r)@AjL`Xz5q3#6xE-9a!&Q$TMv&1jBBw1L zxt`ErBs963XKmBYDD;NZg8*++SK0ens z3IGmqj0MjyD;U{lvNA_%N)3ZH5o&o!rXbNx_eR+GUB%c=_XTbESGsSO(`9m27;?Jo z1xJr#S_iI!*P-il>z>hvlq&*_T2a*qOx*hVTk|(~&WgV<^uZePjP516uqLH?S(Dwm z`+~6Q8-bQVA5v%&k88E99IZ25s4XGS(5I@^qR5X+8%X}Yh}pMVr2F04%Al=k0}v4Y MhferBIS`TaH}_J5dA%|3^QdEja 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 BgD?O9 literal 52446 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%0A?3%5_`ApA3k{X`i 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 Date: Thu, 8 Oct 2026 00:37:43 -0300 Subject: [PATCH 02/10] docs(stars): describe surface maps of a star that turns between its nights --- docs/interferometric-imaging.md | 33 ++++++++++++++++++- .../raster/tecplot-lonlat-map.test.mts | 4 +-- packages/telescope-cli/AGENTS.md | 3 +- .../seasons/udkadua-mirc-2011-09/season.json | 4 +-- .../src/new-object/resolved/resolved-maps.mts | 10 +++--- src/objects/udkadua/README.md | 2 +- src/objects/udkadua/investigations.json | 6 ++-- .../udkadua/source/content/object.json | 6 ++-- src/objects/udkadua/source/manifest.json | 6 ++-- .../udkadua/source/preparation/raster.json | 8 ++--- src/objects/udkadua/text.json | 2 +- 11 files changed, 59 insertions(+), 25 deletions(-) diff --git a/docs/interferometric-imaging.md b/docs/interferometric-imaging.md index 394fe3a4014..a6f4e29aa41 100644 --- a/docs/interferometric-imaging.md +++ b/docs/interferometric-imaging.md @@ -6,7 +6,7 @@ A star's surface reaches this project as interferometric data, not as a picture. 1. **Calibrate.** Most public data are raw exposures in the ESO archive. The calibration tools plan a night from the archive's raw table, download the public frames and reduce them with ESO's own pipelines: `calibrate-pionier.mts` for VLTI/PIONIER, `calibrate-amber.mts` for VLTI/AMBER, `calibrate-gravity.mts` for VLTI/GRAVITY and `calibrate-matisse.mts` for VLTI/MATISSE. PIONIER and AMBER nights are planned from the raw table. GRAVITY and MATISSE need deeper calibration chains, so their tools follow the calibration tree the archive's calselector service gives for the science frame (`eso-associations.mts`). A table per instrument names the recipe for each kind of association, which children it reads, and which header keywords pick between alternatives, such as the dark with the science frame's integration time or the sky in the same beam-commutation state. An author's calibrated file, when one is public, can be used instead. 2. **Select.** `oifits-select.mts` flags channels outside chosen wavelength windows, data outside an MJD range, or every other exposure (`--half even|odd`), applies a published wavelength-scale correction, and can raise errors to a floor (`--error-floor`). The measured values themselves are never changed. -3. **Reconstruct.** SQUEEZE builds a flat sky-plane image. `surface-reconstruction.mts` runs ROTIR, which fits brightness directly on a sphere of known size and limb darkening. +3. **Reconstruct.** SQUEEZE builds a flat sky-plane image. `surface-reconstruction.mts` runs ROTIR, which fits brightness directly on a sphere of known size and limb darkening. Given several nights and a rotation period, it fits one turning surface to all of them. 4. **Check.** `spotless-disc.mts` simulates a spotless limb-darkened disc on the same sampling and errors, and the same recipe reconstructs it. A reconstruction may be cast only if it passes three conditions: - it fits its own data to a reduced chi-squared of 3 or better, on squared visibilities and on closure phases; - its spots are at least twice as strong as those of every spotless twin within 2 percent of the fitted size; @@ -87,6 +87,7 @@ Measured on 2026-09-16 with the pinned recipes and the spotless simulations the | R Dor, SQUEEZE, AMBER continuum | 1.74 and 2.99 | 1.31 | 0.36 | not cast | | R Aqr, SQUEEZE, PIONIER 2019 from raw, 16 nights, 5% and 2° error floors | 58 and 63 | 15.6 | 0.27 (without floors) | not cast | | R Aqr, `image-star.mts` on `seasons/r-aqr-pionier-2019`: lost fringes removed, 5%, 5e-6 and 2° floors | 71.8 and 71.9 | 5.76 (10.2 against the full-size twin) | 0.48 | not cast | +| λ Andromedae, ROTIR sphere on six nights, `surface-star.mts` on `seasons/udkadua-mirc-2011-09` (2026-10-08) | 1.72 and 2.30 | 2.14 (2.94 against the twin of the same size; 1.40 against one 2% larger, which does not fit the sphere) | 0.83 | cast: see below | The spot ratio depends on the twin's size. On one half of Betelgeuse's February 2020 data, a spotless disc leaves patches with rms 0.03 at 42.0 mas, 0.12 at 42.8 mas and 0.05 at 43.8 mas, against 0.13 in that half's image. More iterations (10 000), four chains and half-size pixels (0.39 mas) did not make a spotty twin clean. π¹ Gruis's twins stay at 0.012 to 0.019 over ±2 percent. The rows above measured with one twin are kept as measured. Since the check judges by the spottiest twin within 2 percent, Betelgeuse's image does not pass it. The Betelgeuse dataset is kept by decision and says on the page that its patches are not confirmed. @@ -152,6 +153,36 @@ The final image, after the 0.907 flux-scale correction applied to the visibiliti Two things do not match the paper and are not explained here. Its Table 1 gives 77 by 52 mas for this date where robust 0 in CASA gives 48.2 by 21.4; AIPS and CASA scale the Briggs robust parameter differently, which is a candidate and is not verified. And its text describes the array as reaching about 5 km, where the delivered data hold projected baselines from 14 to 8040 kilo-wavelengths — 18 m to 10.4 km at this frequency — after the delivery's own flag on spacings beyond 10 km. The paper states no brightness temperatures in its text, and the scale of its Figure 1 was not read. +## A star that turns between its nights + +A star that rotates during an observing run has no single sky image. `surface-star.mts` fits one surface to all the nights with ROTIR, which turns the sphere between them with the star's rotation period, and ends with a verdict: + +```bash +node packages/telescope-cli/src/archives/interferometry/surface-star.mts packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09 output/interferometry/udkadua-mirc-2011-09 +``` + +A surface season (`cssearth-star-surface-season@1`) names the calibrated files and where they are published, the star's size, limb, tilt, pole direction and period, each with the paper cell it is read from, the ROTIR settings with their source, and the night whose Earth-facing meridian becomes longitude 0. The command fetches the files, makes the spotless twins and the halves night by night, runs ROTIR ten times, applies the three conditions above to the star as ROTIR projects it on the sky on every night, the nights taken together, and writes the map as a table of brightness on the star's own longitudes and latitudes. `telescope new-object` with a spec's `resolvedMaps` puts a cast map on the star's page (`packages/telescope-cli/src/new-object/resolved/`), and gives a page that draws its axis by convention the measured tilt and pole direction. + +**λ Andromedae (page `udkadua`), six nights of CHARA/MIRC, 2 to 24 September 2011.** The calibrated files are the authors', shipped with ROTIR.jl at the commit this repository pins; Parks et al. (2021, ApJ 913, 54) imaged the same nights with SQUEEZE and Martinez et al. (2021, ApJ 916, 60) with ROTIR. Measured on 2026-10-08: 2,984 squared visibilities and 3,704 closure phases; a spotless star leaves reduced chi-squared 3.13 and 28.3. + +| Run | Reduced chi-squared, V² and closure phase | Spot ratio | Halves correlation | +| --- | --- | --- | --- | +| The season: Martinez et al.'s Table 4 values, the authors' script's settings | 1.72 and 2.30 | 2.94 against the twin of the same size; 2.57 and 2.14 against twins 1% smaller and larger | 0.83 | +| The same with the star values of the authors' script (tilt 78.1°, pole 24.0°, period 54.8 d) | 1.71 and 2.43 | not run | not run | + +Verdict: cast. The map of the second row correlates 0.83 with the season's over the surface seen. + +What in this is not printed in a paper: + +1. **The three conditions and their limits** are this repository's, as for every star above. +2. **Which spotless twins count.** SQUEEZE is free to draw a disc of any size; ROTIR's sphere has the size it is given. A spotless twin 2% smaller or larger does not fit on the 2.742 mas sphere at all (reduced chi-squared 2.49 and 7.42, 3.70 and 9.40), and nor does the star on a sphere 2% off (3.47 and 4.69, 2.65 and 3.46). Against those two twins the spot ratio is 1.51 and 1.40, under the limit. `surface-star.mts` keeps them in the verdict and lets the spottiest twin that fits decide (2.14): were the star such a disc, the first condition would have refused it. Read as the second condition is written above, with every twin within 2%, this map would not be cast. +3. **The star's values against the script's.** The size, limb, tilt, pole direction and period are Table 4 of Martinez et al. (2021). The script the authors ship for these files holds slightly different ones; the table's are used because they are the published ones. +4. **The regularizer.** The paper printed a total-variation weight of 0.01 for its 2021 code. The pinned code states that its weights do not carry over between regularizers, and its authors' script for these files uses `sobel2` at 10 on HEALPix level 3: those settings are used. +5. **Longitude 0** is the meridian that faced the Earth on 14 September 2011, the night with the most data. The star has no defined prime meridian, and the page does not turn it. +6. **What was never seen.** 34° of longitude faced the Earth on none of the nights. ROTIR fills them from its regularizer; the table holds the mean there, and the dataset draws a black line along the edge (`outlineZeroOf` in `tecplot-lonlat-map.ts`). The authors' plots gray the same tiles. +7. **The table** samples ROTIR's 768 tiles at nodes 5° apart, in percent of the mean of the surface seen. +8. **Color + brightness** draws the star's visible color darker where the infrared map is darker, with the look chosen for the brightness maps (`tinted`, `LIMB_STRENGTH`). The map is of the H band; how dark the spots are in visible light is not measured. + ## Sphere maps on a dataset `surface.jl` writes ROTIR's map on its own coordinates. `surface-dataset.mts` turns it into body east longitude, with ROTIR longitude equal to body longitude minus 90 degrees, and leaves unobserved cells and cells beyond 70 degrees of emission as no data. `surface-dataset.test.mts` measures that convention. It casts the Polaris map through the production camera and compares it with ROTIR's own sky projection: correlation 0.978 for the derived cast and 0.238 for the mirrored one. The same test reads the written map through the image-map loader and checks that the painter asks for body longitude 0 in the column a camera-cast dataset uses. diff --git a/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts b/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts index 4f8342633ef..08271d08afa 100644 --- a/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts +++ b/packages/bake/src/objects/raster/tecplot-lonlat-map.test.mts @@ -66,8 +66,8 @@ test('a map outlines where a column of its own changes sign: the edge of what wa await writeFile(resolve(work, 'map.dat'), `TITLE = "test"\nVARIABLES = "Longitude [Deg]" "Latitude [Deg]" "B [G]" "Facing"\nZONE I=5, J=3, K=1, ZONETYPE=Ordered\nDATAPACKING=POINT\nDT=(SINGLE SINGLE SINGLE SINGLE)\n${rows.join('\n')}\n`); const map = await loadTecplotLonLatMap(work, { path: 'map.dat', variable: 'B [G]', outlineZeroOf: 'Facing' }); assert.equal(map.outline!(135, 0, 1), true); assert.equal(map.outline!(133, 0, 1), false); assert.equal(map.outline!(137, 0, 1), false); - // Toward a pole a pixel spans more longitude, so the line keeps its width on the sphere. - assert.equal(map.outline!(137, 60, 1), true); + // Toward a pole a degree of longitude is shorter, so the line takes more of them and keeps its width on the sphere. + assert.equal(map.outline!(135.8, 0, 1), false); assert.equal(map.outline!(135.8, 60, 1), true); assert.equal(map.report.outlineZeroOf, 'Facing'); assert.equal((await loadTecplotLonLatMap(work, { path: 'map.dat', variable: 'B [G]' })).outline, undefined); await assert.rejects(loadTecplotLonLatMap(work, { path: 'map.dat', variable: 'B [G]', outlineZeroOf: 'Seen' }), /no column "Seen"/u); diff --git a/packages/telescope-cli/AGENTS.md b/packages/telescope-cli/AGENTS.md index 9fba196f242..6b12559d123 100644 --- a/packages/telescope-cli/AGENTS.md +++ b/packages/telescope-cli/AGENTS.md @@ -16,7 +16,7 @@ This package is the layer above the libraries: it imports `@cssearth/telescope`, `moving-targets.json`, `horizons-bodies.json`) beside that code, still read through `WORKSPACE`; JWST keeps one `jwst/programs/` root: time-series directories and imaging, cube and KLIP JSON files. Receipts retain their original bytes and are matched by program id, band and pinned product, never the previous directory. The interferometry reduction (`src/archives/interferometry/`: ALMA restores, VLTI calibration, star imaging) keeps its - toolchain pins (`toolchains.json`), the ROTIR Julia project (`rotir/`), star seasons (`seasons/`) and test fixtures beside + toolchain pins (`toolchains.json`), the ROTIR Julia project (`rotir/`), star seasons (`seasons/`: a sky-plane image of one epoch with SQUEEZE, `cssearth-star-season@1`, or one surface fitted to several nights of a turning star with ROTIR, `cssearth-star-surface-season@1`) and test fixtures beside it. Per-body authoring (the HST slit-scan map, the JWST band maps, the NACO body map, the ALMA thermal maps, the circumstellar discs) is `authoring//` (exported by no subpath: it imports this package through its own name, never the other way), a leaf the architecture check enforces; the Io JIRAM maps moved to `packages/bake/authoring/juno/`. Receipts and ledgers record program paths @@ -151,6 +151,7 @@ writes the records any map needs (table, manifest input, raster surface, dataset `route.mts` reads a spec, writes each star and bakes from a `MapRoute`; `routes.mts` lists the kinds (`MAP_ROUTES`). A kind supplies only what is its own: its column, units, colors, sentences, how its reduction is read and the catalogue records it is bound to. `magnetic/` is the kind for maps from polarised spectra (`--from-spectra`, a spec's `magneticMaps`; a convention page takes the maps' tilt) and +`resolved/` the kind for a surface fitted to a star's interferometry of several nights (a spec's `resolvedMaps`; `archives/interferometry/surface-star.mts` reduces a season with ROTIR and decides whether its map is cast; a convention page takes the measured tilt and pole direction the map is fitted with, and the table's own coverage column outlines what never faced the Earth), and `brightness/` the kind for maps from a star's TESS, K2 or Kepler light curves (`--from-pixels`, a spec's `brightnessMaps`; what differs by mission is one table, `MISSIONS`, which also says whose light curve is read: the mission's own, or KEPSEISMIC; a map's records name the published method that judged it, in the method's own words, and the paper's own light curve; a map drawn on a paper's own verdict says the rotation and its period are that paper's, names the method that refused the same light, and brings no measured period; the page's axis is never changed, and a period measured here goes into the star's measurements record; `new-object-cli.mts --pixel-light` writes the diff --git a/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json b/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json index d1facf9404e..892af564b2f 100644 --- a/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json +++ b/packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09/season.json @@ -4,8 +4,8 @@ "object": "udkadua", "title": "λ Andromedae, CHARA/MIRC, six nights from 2 to 24 September 2011 (Parks et al. 2021; Martinez et al. 2021)", "target": "λ Andromedae", - "instrument": "mirc", - "band": "CHARA/MIRC H band (1.49-1.73 um), eight channels", + "instrument": "CHARA/MIRC", + "band": "infrared H band (1.49-1.73 um, eight channels)", "papers": [ { "record": "arxiv-2107-06366", diff --git a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts index ea533eba8cd..f2a27caef41 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts @@ -60,13 +60,15 @@ const day = (night: string) => `${Number(night.slice(8, 10))} ${MONTHS[Number(ni export const span = (nights: readonly { readonly night: string }[]) => { const first = nights[0]!.night, last = nights.at(-1)!.night; return first.slice(0, 7) === last.slice(0, 7) ? `${Number(first.slice(8, 10))} to ${day(last)}` : `${day(first)} to ${day(last)}`; }; const fixed = (value: number) => value.toFixed(2); +/** A cited value's paper, without the cell after it: "Author (2021), Table 4 (url): value" gives the part before the last colon. */ +const paperOf = (source: string) => source.replace(/: [^:]*$/u, ''); const cite = (map: ResolvedSurfaceMap) => map.papers.map(paper => paper.citation).join('; '); /** The degrees of longitude that faced the Earth on no night: the nights' sub-Earth meridians span a range, and a hemisphere is seen from each. */ export const unseenDegrees = (map: Pick) => { const at = map.nights.map(night => night.subObserverLongitude); return Math.max(0, 180 - (Math.max(...at) - Math.min(...at))); }; /** The smallest detail the nights resolve, in degrees of the star's surface at the middle of its disc. */ const resolved = (map: ResolvedSurfaceMap) => Math.round(2 * Math.asin(Math.min(1, map.beamMas / map.diameterMas)) * 180 / Math.PI); const scaleOf = (maps: readonly ResolvedSurfaceMap[]) => { const reach = scaleEnd(Math.max(...maps.flatMap(map => [100 - map.darkestPercent, map.brightestPercent - 100]))); return { minimum: 100 - reach, maximum: 100 + reach, labels: [`${100 - reach}%`, '100%', `${100 + reach}%`] }; }; -const checks = (map: ResolvedSurfaceMap) => `The fit leaves a reduced chi-squared of ${fixed(map.fit.vis2)} on the squared visibilities and ${fixed(map.fit.closurePhase)} on the closure phases, where a spotless star leaves ${fixed(map.fit.spotlessVis2)} and ${fixed(map.fit.spotlessClosurePhase)} (limit ${RECONSTRUCTION_CHI2_LIMIT}); its spots are ${fixed(map.spotRatio)} times those the same fit draws on a spotless star of ${map.spotScale === 1 ? 'the same size' : `${fixed(map.spotScale * map.diameterMas)} mas`} (limit ${SPOT_CONTRAST_RATIO}); and two independent halves of the data give the same spots (correlation ${fixed(map.halves)}, limit ${REPRODUCIBILITY_CORRELATION})`; +const checks = (map: ResolvedSurfaceMap) => `The fit leaves a reduced chi-squared of ${fixed(map.fit.vis2)} on the squared visibilities and ${fixed(map.fit.closurePhase)} on the closure phases (limit ${RECONSTRUCTION_CHI2_LIMIT}), where a spotless star leaves ${fixed(map.fit.spotlessVis2)} and ${fixed(map.fit.spotlessClosurePhase)}; its spots are ${fixed(map.spotRatio)} times those the same fit draws on a spotless star of ${map.spotScale === 1 ? 'the same size' : `${fixed(map.spotScale * map.diameterMas)} mas`} (limit ${SPOT_CONTRAST_RATIO}); and two independent halves of the data give the same spots (correlation ${fixed(map.halves)}, limit ${REPRODUCIBILITY_CORRELATION})`; /** What is a resolved surface map's own in the records surface-maps.mts writes. */ export const RESOLVED_MAPS: MapKind = { @@ -83,7 +85,7 @@ export const RESOLVED_MAPS: MapKind = { license: map.data.license, licenseEvidence: [map.data.url], acquisition: `Built by ${RESOLVED_GENERATOR} from the season ${map.season}: the ${map.nights.length} calibrated files at ${map.data.url}, fitted with the pinned ROTIR (${map.recipe}). The receipt with the fit and its checks is written again by that command under output/interferometry and is not kept in git.`, redistribution: 'A table of fitted values made in this project; the calibrated files themselves are not redistributed.', - description: `Brightness of ${map.targetName}'s surface in the ${map.band}, fitted with ROTIR to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${when}: one surface on a sphere ${map.diameterMas} mas across that turns once in ${map.periodDays} d, tilted ${map.inclinationDegrees}° from the line of sight with its pole ${map.positionAngleDegrees}° east of north (${map.inclinationSource.split(':')[0]}). ${checks(map)}. Percent of the mean of the surface seen. Longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Nothing smaller than about ${detail}° of the surface is resolved.${edge} The same nights were imaged by their authors (${cite(map)}); this is a reduction made in this project with their code, not their published map.`, + description: `Brightness of ${map.targetName}'s surface in the ${map.band}, fitted with ROTIR to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${when}: one surface on a sphere ${map.diameterMas} mas across that turns once in ${map.periodDays} d, tilted ${map.inclinationDegrees}° from the line of sight with its pole ${map.positionAngleDegrees}° east of north (${paperOf(map.inclinationSource)}). ${checks(map)}. Percent of the mean of the surface seen. Longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Nothing smaller than about ${detail}° of the surface is resolved.${edge} The same nights were imaged by their authors (${cite(map)}); this is a reduction made in this project with their code, not their published map.`, surfaceTitle: `${map.instrument} · surface map made here · ${choice.label}`, qualification: `Mapped in this project · ${map.instrument}, ${choice.label.toLowerCase()}`, notes: `Where ${map.targetName}'s surface was darker and brighter in infrared light on ${map.nights.length} nights, ${when}, worked out in this project from what the ${map.instrument} interferometer measured. The star turned by ${Math.round(180 - unseenDegrees(map))}° between the first night and the last, so one surface is fitted to all of them, with the size, tilt, pole direction and period ${map.papers[0]!.citation} measured. Both the longitudes and the latitudes of the dark regions are fixed by the data, down to about ${detail}° of the surface; nothing finer is.${edge} The colors are a scale of brightness in one infrared band, not the star's color or temperature.${count > 1 ? ` Step through the ${count} maps to see the spots change.` : ''} A reduction made in this project with the authors' code and calibrated nights, not their published map.`, legendNote: `Darker: dimmer than the mean of the surface seen; white: brighter.${unseen > 0 ? ' Black line: the edge of what never faced the Earth on these nights.' : ''}`, @@ -128,7 +130,7 @@ const README_LEAD = '**Surface from interferometry.**', PROBLEM_LEAD = '- **Surf /** The star's README with the paragraph on its surface map before the evidence, and the map's known limits among the problems. */ export function withSurfaceReadme(readme: string, map: ResolvedSurfaceMap): string { const unseen = Math.round(unseenDegrees(map)), unfit = map.unfitTwins.length ? ` Spotless twins ${map.unfitTwins.map(twin => `${Math.round(Math.abs(twin.scale - 1) * 100)}% ${twin.scale < 1 ? 'smaller' : 'larger'}`).join(' and ')} do not fit on the sphere at all (closure phases ${map.unfitTwins.map(twin => fixed(twin.closurePhase)).join(' and ')}), so they do not decide the spots: a reading of this repository, stated in surface-star.mts.` : ''; - const paragraph = `${README_LEAD} The datasets Color + brightness and Surface map are one fit of the star's surface to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${span(map.nights)} (${map.band}). The calibrated files are the authors', shipped with their code (${map.data.url}); the fit is ROTIR at the pinned commit (${map.recipe}, the settings of the authors' own script for these files), on a sphere of ${map.diameterMas} mas with a power-law limb of ${map.limbPowerLaw}, tilted ${map.inclinationDegrees}° with its pole ${map.positionAngleDegrees}° east of north and turning in ${map.periodDays} d (${map.inclinationSource.split(':')[0]}). ${checks(map)}.${unfit} The page's axis is that measured one, and longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Run again with \`node ${RESOLVED_GENERATOR} packages/telescope-cli/src/archives/interferometry/seasons/${map.season} output/interferometry/${map.season}\`. ${cite(map)} imaged the same nights; their maps are not redistributed here.`; + const paragraph = `${README_LEAD} The datasets Color + brightness and Surface map are one fit of the star's surface to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${span(map.nights)} (${map.band}). The calibrated files are the authors', shipped with their code (${map.data.url}); the fit is ROTIR at the pinned commit (${map.recipe}, the settings of the authors' own script for these files), on a sphere of ${map.diameterMas} mas with a power-law limb of ${map.limbPowerLaw}, tilted ${map.inclinationDegrees}° with its pole ${map.positionAngleDegrees}° east of north and turning in ${map.periodDays} d (${paperOf(map.inclinationSource)}). ${checks(map)}.${unfit} The page's axis is that measured one, and longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Run again with \`node ${RESOLVED_GENERATOR} packages/telescope-cli/src/archives/interferometry/seasons/${map.season} output/interferometry/${map.season}\`. ${cite(map)} imaged the same nights; their maps are not redistributed here.`; const problem = `${PROBLEM_LEAD} It is infrared brightness, drawn over the star's visible color as a darker tone: how dark the spots are in visible light is not measured. Nothing smaller than about ${resolved(map)}° of the surface is resolved${unseen > 0 ? `, and ${unseen}° of longitude never faced the Earth on these nights` : ''}. The map is of ${span(map.nights)}; spots change within months.`; const lines = readme.split('\n').filter(line => !line.startsWith(README_LEAD) && !line.startsWith(PROBLEM_LEAD) && !line.startsWith(FRAME_LEAD)); const evidence = lines.indexOf('## Evidence'); if (evidence >= 0) lines.splice(evidence, 0, paragraph, ''); else lines.push('', paragraph); @@ -146,6 +148,6 @@ export function withSurfaceLedger(ledger: unknown, map: ResolvedSurfaceMap): Jso finding: `The authors' calibrated files of ${map.nights.length} nights (${map.nights.map(night => `${day(night.night)}: ${night.vis2} squared visibilities`).join('; ')}) are public with their code. ROTIR at the pinned commit (${map.recipe}) fits one turning surface to all of them. ${checks(map)}.${map.unfitTwins.length ? ` Spotless twins of ${map.unfitTwins.map(twin => `${fixed(twin.scale * map.diameterMas)} mas`).join(' and ')} do not fit on the ${map.diameterMas} mas sphere (closure-phase chi-squared ${map.unfitTwins.map(twin => fixed(twin.closurePhase)).join(' and ')}) and so do not decide the spot check.` : ''} The published maps themselves are not redistributed.`, evidence: [map.data.url, ...map.papers.map(paper => `https://doi.org/${paper.doi}`)] }, { id: 'rotation-axis', subject: 'Rotation axis, period and prime meridian', status: 'included', - finding: `The page draws the axis the surface map is fitted with: inclination ${map.inclinationDegrees}° and pole position angle ${map.positionAngleDegrees}° east of north, with a period of ${map.periodDays} d (${map.inclinationSource.split(':')[0]}). No prime meridian is defined for the star: longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}, and the star is not turned.`, + finding: `The page draws the axis the surface map is fitted with: inclination ${map.inclinationDegrees}° and pole position angle ${map.positionAngleDegrees}° east of north, with a period of ${map.periodDays} d (${paperOf(map.inclinationSource)}). No prime meridian is defined for the star: longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}, and the star is not turned.`, evidence: map.papers.map(paper => `https://doi.org/${paper.doi}`) }] }; } diff --git a/src/objects/udkadua/README.md b/src/objects/udkadua/README.md index 79249d3bc2c..59a3ea42330 100644 --- a/src/objects/udkadua/README.md +++ b/src/objects/udkadua/README.md @@ -10,7 +10,7 @@ Its brightness, measured band by band, gives 24 times the Sun's luminosity at 4, **Limb.** The disc is dimmed toward the limb by the power law I(mu) = mu^0.231 that Martinez et al. (2021), ApJ 916, 60 fit to the star's resolved disc (CHARA/MIRC H band, 1.5-1.7 um; not a visible band). -**Surface from interferometry.** The datasets Color + brightness and Surface map are one fit of the star's surface to the 2,984 squared visibilities and 3,704 closure phases mirc measured on 6 nights, 2 to 24 September 2011 (CHARA/MIRC H band (1.49-1.73 um), eight channels). The calibrated files are the authors', shipped with their code (https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data); the fit is ROTIR at the pinned commit (HEALPix level 3, sobel2 at weight 10, 1000 iterations, the settings of the authors' own script for these files), on a sphere of 2.742 mas with a power-law limb of 0.231, tilted 85.63° with its pole 26.09° east of north and turning in 54.2 d (Martinez et al. (2021), ApJ 916, 60, Table 4 (https). The fit leaves a reduced chi-squared of 1.72 on the squared visibilities and 2.30 on the closure phases, where a spotless star leaves 3.13 and 28.29 (limit 3); its spots are 2.14 times those the same fit draws on a spotless star of 2.77 mas (limit 2); and two independent halves of the data give the same spots (correlation 0.83, limit 0.5). Spotless twins 2% smaller and 2% larger do not fit on the sphere at all (closure phases 7.42 and 9.40), so they do not decide the spots: a reading of this repository, stated in surface-star.mts. The page's axis is that measured one, and longitude 0 is the meridian that faced the Earth on 14 September 2011. Run again with `node packages/telescope-cli/src/archives/interferometry/surface-star.mts packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09 output/interferometry/udkadua-mirc-2011-09`. Martinez et al. (2021), ApJ 916, 60; Parks et al. (2021), ApJ 913, 54 imaged the same nights; their maps are not redistributed here. +**Surface from interferometry.** The datasets Color + brightness and Surface map are one fit of the star's surface to the 2,984 squared visibilities and 3,704 closure phases CHARA/MIRC measured on 6 nights, 2 to 24 September 2011 (infrared H band (1.49-1.73 um, eight channels)). The calibrated files are the authors', shipped with their code (https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data); the fit is ROTIR at the pinned commit (HEALPix level 3, sobel2 at weight 10, 1000 iterations, the settings of the authors' own script for these files), on a sphere of 2.742 mas with a power-law limb of 0.231, tilted 85.63° with its pole 26.09° east of north and turning in 54.2 d (Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366)). The fit leaves a reduced chi-squared of 1.72 on the squared visibilities and 2.30 on the closure phases (limit 3), where a spotless star leaves 3.13 and 28.29; its spots are 2.14 times those the same fit draws on a spotless star of 2.77 mas (limit 2); and two independent halves of the data give the same spots (correlation 0.83, limit 0.5). Spotless twins 2% smaller and 2% larger do not fit on the sphere at all (closure phases 7.42 and 9.40), so they do not decide the spots: a reading of this repository, stated in surface-star.mts. The page's axis is that measured one, and longitude 0 is the meridian that faced the Earth on 14 September 2011. Run again with `node packages/telescope-cli/src/archives/interferometry/surface-star.mts packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09 output/interferometry/udkadua-mirc-2011-09`. Martinez et al. (2021), ApJ 916, 60; Parks et al. (2021), ApJ 913, 54 imaged the same nights; their maps are not redistributed here. ## Evidence diff --git a/src/objects/udkadua/investigations.json b/src/objects/udkadua/investigations.json index 27d6608487d..067f064ea6d 100644 --- a/src/objects/udkadua/investigations.json +++ b/src/objects/udkadua/investigations.json @@ -43,9 +43,9 @@ }, { "id": "surface-udkadua-mirc-2011-09", - "subject": "mirc visibilities of 2 to 24 September 2011 as a surface map", + "subject": "CHARA/MIRC visibilities of 2 to 24 September 2011 as a surface map", "status": "included", - "finding": "The authors' calibrated files of 6 nights (2 September 2011: 360 squared visibilities; 6 September 2011: 392 squared visibilities; 10 September 2011: 360 squared visibilities; 14 September 2011: 864 squared visibilities; 19 September 2011: 808 squared visibilities; 24 September 2011: 200 squared visibilities) are public with their code. ROTIR at the pinned commit (HEALPix level 3, sobel2 at weight 10, 1000 iterations) fits one turning surface to all of them. The fit leaves a reduced chi-squared of 1.72 on the squared visibilities and 2.30 on the closure phases, where a spotless star leaves 3.13 and 28.29 (limit 3); its spots are 2.14 times those the same fit draws on a spotless star of 2.77 mas (limit 2); and two independent halves of the data give the same spots (correlation 0.83, limit 0.5). Spotless twins of 2.69 mas and 2.80 mas do not fit on the 2.742 mas sphere (closure-phase chi-squared 7.42 and 9.40) and so do not decide the spot check. The published maps themselves are not redistributed.", + "finding": "The authors' calibrated files of 6 nights (2 September 2011: 360 squared visibilities; 6 September 2011: 392 squared visibilities; 10 September 2011: 360 squared visibilities; 14 September 2011: 864 squared visibilities; 19 September 2011: 808 squared visibilities; 24 September 2011: 200 squared visibilities) are public with their code. ROTIR at the pinned commit (HEALPix level 3, sobel2 at weight 10, 1000 iterations) fits one turning surface to all of them. The fit leaves a reduced chi-squared of 1.72 on the squared visibilities and 2.30 on the closure phases (limit 3), where a spotless star leaves 3.13 and 28.29; its spots are 2.14 times those the same fit draws on a spotless star of 2.77 mas (limit 2); and two independent halves of the data give the same spots (correlation 0.83, limit 0.5). Spotless twins of 2.69 mas and 2.80 mas do not fit on the 2.742 mas sphere (closure-phase chi-squared 7.42 and 9.40) and so do not decide the spot check. The published maps themselves are not redistributed.", "evidence": [ "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data", "https://doi.org/10.3847/1538-4357/ac06a5", @@ -56,7 +56,7 @@ "id": "rotation-axis", "subject": "Rotation axis, period and prime meridian", "status": "included", - "finding": "The page draws the axis the surface map is fitted with: inclination 85.63° and pole position angle 26.09° east of north, with a period of 54.2 d (Martinez et al. (2021), ApJ 916, 60, Table 4 (https). No prime meridian is defined for the star: longitude 0 is the meridian that faced the Earth on 14 September 2011, and the star is not turned.", + "finding": "The page draws the axis the surface map is fitted with: inclination 85.63° and pole position angle 26.09° east of north, with a period of 54.2 d (Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366)). No prime meridian is defined for the star: longitude 0 is the meridian that faced the Earth on 14 September 2011, and the star is not turned.", "evidence": [ "https://doi.org/10.3847/1538-4357/ac06a5", "https://doi.org/10.3847/1538-4357/abb670" diff --git a/src/objects/udkadua/source/content/object.json b/src/objects/udkadua/source/content/object.json index adc23638837..9cf85f4bb43 100644 --- a/src/objects/udkadua/source/content/object.json +++ b/src/objects/udkadua/source/content/object.json @@ -41,7 +41,7 @@ { "id": "color-surface", "label": "Color + brightness", - "qualification": "The star's color, darker where mirc saw its surface dimmer in the infrared · 2 to 24 September 2011, mapped in this project", + "qualification": "The star's color, darker where CHARA/MIRC saw its surface dimmer in the infrared · 2 to 24 September 2011, mapped in this project", "thumbnail": "udkadua-dataset-color-surface.webp", "surface": "udkadua-surface-color-surface@2x.webp", "poles": "udkadua-poles-color-surface@2x.webp", @@ -56,7 +56,7 @@ { "id": "surface-2011-09", "label": "Surface map", - "qualification": "Mapped in this project · mirc, september 2011", + "qualification": "Mapped in this project · CHARA/MIRC, september 2011", "thumbnail": "udkadua-dataset-surface-2011-09.webp", "surface": "udkadua-surface-surface-2011-09@2x.webp", "poles": "udkadua-poles-surface-2011-09@2x.webp", @@ -111,7 +111,7 @@ "meta": "%", "sourceUrl": "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data" }, - "notes": "Where λ Andromedae's surface was darker and brighter in infrared light on 6 nights, 2 to 24 September 2011, worked out in this project from what the mirc interferometer measured. The star turned by 146° between the first night and the last, so one surface is fitted to all of them, with the size, tilt, pole direction and period Martinez et al. (2021), ApJ 916, 60 measured. Both the longitudes and the latitudes of the dark regions are fixed by the data, down to about 21° of the surface; nothing finer is. The 34° of longitude that faced the Earth on none of the nights hold the mean, inside the black line. The colors are a scale of brightness in one infrared band, not the star's color or temperature. A reduction made in this project with the authors' code and calibrated nights, not their published map.", + "notes": "Where λ Andromedae's surface was darker and brighter in infrared light on 6 nights, 2 to 24 September 2011, worked out in this project from what the CHARA/MIRC interferometer measured. The star turned by 146° between the first night and the last, so one surface is fitted to all of them, with the size, tilt, pole direction and period Martinez et al. (2021), ApJ 916, 60 measured. Both the longitudes and the latitudes of the dark regions are fixed by the data, down to about 21° of the surface; nothing finer is. The 34° of longitude that faced the Earth on none of the nights hold the mean, inside the black line. The colors are a scale of brightness in one infrared band, not the star's color or temperature. A reduction made in this project with the authors' code and calibrated nights, not their published map.", "legendNote": "Darker: dimmer than the mean of the surface seen; white: brighter. Black line: the edge of what never faced the Earth on these nights." }, { diff --git a/src/objects/udkadua/source/manifest.json b/src/objects/udkadua/source/manifest.json index 632709e20be..2ab2d55a31f 100644 --- a/src/objects/udkadua/source/manifest.json +++ b/src/objects/udkadua/source/manifest.json @@ -209,11 +209,11 @@ "id": "udkadua-interferometry-map-surface-2011-09", "path": "science/interferometry/udkadua-mirc-2011-09.dat", "origin": "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data", - "productId": "Surface map of λ Andromedae from mirc, 2 to 24 September 2011", - "title": "Surface map of λ Andromedae from its mirc visibilities of 2 to 24 September 2011: infrared brightness on a longitude-latitude grid", + "productId": "Surface map of λ Andromedae from CHARA/MIRC, 2 to 24 September 2011", + "title": "Surface map of λ Andromedae from its CHARA/MIRC visibilities of 2 to 24 September 2011: infrared brightness on a longitude-latitude grid", "sourceUrl": "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data", "credit": "CHARA Array/MIRC, September 2011, as calibrated by the authors of Parks et al. (2021) and Martinez et al. (2021) and shipped with ROTIR.jl (F. Baron); the star's size, limb, axis and period from Martinez et al. (2021), ApJ 916, 60; map made in this project with ROTIR.jl ad308759 and OITOOLS.jl f42d2bea", - "displayCredit": "mirc · mapped here", + "displayCredit": "CHARA/MIRC · mapped here", "license": "Shipped in the public ROTIR.jl repository (GPL-3.0); CHARA Array data, acknowledge the array and the papers", "licenseEvidence": [ "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data" diff --git a/src/objects/udkadua/source/preparation/raster.json b/src/objects/udkadua/source/preparation/raster.json index d2da850106e..64e50de3a11 100644 --- a/src/objects/udkadua/source/preparation/raster.json +++ b/src/objects/udkadua/source/preparation/raster.json @@ -67,8 +67,8 @@ "100%", "130%" ], - "description": "Brightness of λ Andromedae's surface in the CHARA/MIRC H band (1.49-1.73 um), eight channels, fitted with ROTIR to the 2,984 squared visibilities and 3,704 closure phases mirc measured on 6 nights, 2 to 24 September 2011: one surface on a sphere 2.742 mas across that turns once in 54.2 d, tilted 85.63° from the line of sight with its pole 26.09° east of north (Martinez et al. (2021), ApJ 916, 60, Table 4 (https). The fit leaves a reduced chi-squared of 1.72 on the squared visibilities and 2.30 on the closure phases, where a spotless star leaves 3.13 and 28.29 (limit 3); its spots are 2.14 times those the same fit draws on a spotless star of 2.77 mas (limit 2); and two independent halves of the data give the same spots (correlation 0.83, limit 0.5). Percent of the mean of the surface seen. Longitude 0 is the meridian that faced the Earth on 14 September 2011. Nothing smaller than about 21° of the surface is resolved. The 34° of longitude that faced the Earth on none of the nights hold the mean, inside the black line. The same nights were imaged by their authors (Martinez et al. (2021), ApJ 916, 60; Parks et al. (2021), ApJ 913, 54); this is a reduction made in this project with their code, not their published map.", - "title": "mirc · surface map made here · September 2011", + "description": "Brightness of λ Andromedae's surface in the infrared H band (1.49-1.73 um, eight channels), fitted with ROTIR to the 2,984 squared visibilities and 3,704 closure phases CHARA/MIRC measured on 6 nights, 2 to 24 September 2011: one surface on a sphere 2.742 mas across that turns once in 54.2 d, tilted 85.63° from the line of sight with its pole 26.09° east of north (Martinez et al. (2021), ApJ 916, 60, Table 4 (https://arxiv.org/abs/2107.06366)). The fit leaves a reduced chi-squared of 1.72 on the squared visibilities and 2.30 on the closure phases (limit 3), where a spotless star leaves 3.13 and 28.29; its spots are 2.14 times those the same fit draws on a spotless star of 2.77 mas (limit 2); and two independent halves of the data give the same spots (correlation 0.83, limit 0.5). Percent of the mean of the surface seen. Longitude 0 is the meridian that faced the Earth on 14 September 2011. Nothing smaller than about 21° of the surface is resolved. The 34° of longitude that faced the Earth on none of the nights hold the mean, inside the black line. The same nights were imaged by their authors (Martinez et al. (2021), ApJ 916, 60; Parks et al. (2021), ApJ 913, 54); this is a reduction made in this project with their code, not their published map.", + "title": "CHARA/MIRC · surface map made here · September 2011", "sourceUrl": "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data" } }, @@ -105,8 +105,8 @@ ], "limbOf": "color", "limbStrength": 1.5, - "description": "The star's color (#ffddbb, its Color dataset) over the surface map this project made from mirc interferometry of 2 to 24 September 2011: the map's scale, 70% to 130% of the mean surface, runs from a darker, richer tone of the same hue to the color itself. The map is of infrared light (CHARA/MIRC H band (1.49-1.73 um), eight channels), where the darkest region gives 35% less light than the brightest; how much darker the spots are in visible light is not measured, and no color change is drawn. Longitude 0 is the meridian that faced the Earth on 14 September 2011. The 34° of longitude that never faced the Earth on these nights hold the mean. A reduction made in this project, not a published map.", - "title": "mirc · the star in its color over its surface map · 2 to 24 September 2011", + "description": "The star's color (#ffddbb, its Color dataset) over the surface map this project made from CHARA/MIRC interferometry of 2 to 24 September 2011: the map's scale, 70% to 130% of the mean surface, runs from a darker, richer tone of the same hue to the color itself. The map is of infrared light (infrared H band (1.49-1.73 um, eight channels)), where the darkest region gives 35% less light than the brightest; how much darker the spots are in visible light is not measured, and no color change is drawn. Longitude 0 is the meridian that faced the Earth on 14 September 2011. The 34° of longitude that never faced the Earth on these nights hold the mean. A reduction made in this project, not a published map.", + "title": "CHARA/MIRC · the star in its color over its surface map · 2 to 24 September 2011", "sourceUrl": "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data" } } diff --git a/src/objects/udkadua/text.json b/src/objects/udkadua/text.json index 2bb393d6b98..b3dfadfd997 100644 --- a/src/objects/udkadua/text.json +++ b/src/objects/udkadua/text.json @@ -54,7 +54,7 @@ }, "color-surface": { "title": "Color + brightness, Sep 2011", - "detail": "mirc, 2 to 24 September 2011", + "detail": "CHARA/MIRC, 2 to 24 September 2011", "summary": "The star in its own color, darker where interferometry resolved darker regions on its surface." } } From e766893e34c8a936f3480e995c86d3bd1178e3b9 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 00:41:13 -0300 Subject: [PATCH 03/10] fix(stars): take a surface map's coverage from the observer's place each night --- .../archives/interferometry/surface-star.mts | 25 +- .../interferometry/surface-star.test.mts | 15 +- .../interferometry/udkadua-mirc-2011-09.dat | 5394 ++++++++--------- 3 files changed, 2725 insertions(+), 2709 deletions(-) diff --git a/packages/telescope-cli/src/archives/interferometry/surface-star.mts b/packages/telescope-cli/src/archives/interferometry/surface-star.mts index af19b5db9aa..cea6d27599f 100644 --- a/packages/telescope-cli/src/archives/interferometry/surface-star.mts +++ b/packages/telescope-cli/src/archives/interferometry/surface-star.mts @@ -20,7 +20,8 @@ * on it at all. A twin whose own reconstruction fails the fit limit is kept in the verdict and does not decide the spots: * were the star that disc, the first check would have refused the star. * 5. Write the map as a table on the star's own longitudes and latitudes, longitude 0 on the meridian that faced the Earth on - * the season's reference night, with how squarely each node ever faced the observer; a node that never did holds the mean. + * the season's reference night, with how squarely each node ever faced the observer (from where ROTIR put the observer + * on each night); a node that never did holds the mean. * * The result is verdict.json and, whatever the verdict, .dat in the work directory. */ import { mkdir, readFile, stat, writeFile } from 'node:fs/promises'; @@ -87,16 +88,23 @@ export function parseSurfaceSeason(value: unknown): SurfaceSeason { export const TABLE_STEP_DEGREES = 5; export const BRIGHTNESS_VARIABLE = 'Brightness [%]', FACING_VARIABLE = 'Facing'; -/** The map as a Tecplot table the raster recipe reads (tecplot-lonlat-map.ts). `grid` and `facing` are surface.jl's, on ROTIR's - * longitudes; `observerLongitude` is ROTIR's longitude of the meridian facing the observer on the reference night, which becomes - * longitude 0. Brightness is in percent of the mean over the nodes that ever faced the observer, each weighted by its area; - * a node that never did holds 100. */ -export function surfaceTable(grid: { readonly columns: number; readonly rows: number; readonly values: ArrayLike }, facing: { readonly columns: number; readonly rows: number; readonly values: ArrayLike }, observerLongitude: number, title: string) { +/** How squarely a place on the star ever faced the observer: the largest cosine of its emission angle over the nights, from + * where ROTIR put the observer on each (its colatitude and longitude in the star's frame). Negative: never seen. */ +export function facingOf(observers: readonly { readonly colatitude: number; readonly longitude: number }[]) { + const radians = Math.PI / 180; + return (longitude: number, latitude: number) => Math.max(...observers.map(observer => Math.sin(latitude * radians) * Math.cos(observer.colatitude * radians) + Math.cos(latitude * radians) * Math.sin(observer.colatitude * radians) * Math.cos((longitude - observer.longitude) * radians))); +} + +/** The map as a Tecplot table the raster recipe reads (tecplot-lonlat-map.ts). `grid` is surface.jl's, on ROTIR's longitudes, + * and `facing` says how squarely a place on them ever faced the observer; `observerLongitude` is ROTIR's longitude of the + * meridian facing the observer on the reference night, which becomes longitude 0. Brightness is in percent of the mean over + * the nodes that ever faced the observer, each weighted by its area; a node that never did holds 100. */ +export function surfaceTable(grid: { readonly columns: number; readonly rows: number; readonly values: ArrayLike }, facing: (longitude: number, latitude: number) => number, observerLongitude: number, title: string) { const step = TABLE_STEP_DEGREES, columns = 360 / step + 1, rows = 180 / step + 1, nodes: { longitude: number; latitude: number; value: number; facing: number }[] = []; // A node on a pole or on the closing meridian reads the cell just inside the grid. const inside = (latitude: number) => Math.min(180 - 1e-6, Math.max(1e-6, 90 - latitude)); for (let j = 0; j < rows; j++) for (let i = 0; i < columns; i++) { const longitude = i * step, latitude = -90 + j * step, rotir = longitude % 360 + observerLongitude; - nodes.push({ longitude, latitude, value: sampleSurfaceGrid(grid, inside(latitude), rotir), facing: sampleSurfaceGrid(facing, inside(latitude), rotir) }); } + nodes.push({ longitude, latitude, value: sampleSurfaceGrid(grid, inside(latitude), rotir), facing: facing(rotir, latitude) }); } let sum = 0, weight = 0; for (const node of nodes) if (node.facing > 0 && node.longitude < 360) { const area = Math.cos(node.latitude * Math.PI / 180); sum += node.value * area; weight += area; } if (!(weight > 0) || !(sum > 0)) throw new Error('No node of the map ever faced the observer.'); @@ -171,7 +179,8 @@ export async function surfaceStar(seasonDirectory: string, work: string, { threa // 5. The table, on the meridian that faced the Earth on the reference night. const reference = season.nights.findIndex(night => night.night === season.referenceNight) + 1, observerLongitude = fit[`observer_longitude_${reference}`]!; - const table = surfaceTable(readSurfaceGrid(await readFile(resolve(work, 'season/surface-grid.fits'))), readSurfaceGrid(await readFile(resolve(work, 'season/surface-coverage.fits'))), observerLongitude, + const observers = season.nights.map((_night, i) => ({ colatitude: fit[`observer_colatitude_${i + 1}`]!, longitude: fit[`observer_longitude_${i + 1}`]! })); + const table = surfaceTable(readSurfaceGrid(await readFile(resolve(work, 'season/surface-grid.fits'))), facingOf(observers), observerLongitude, `Surface brightness of ${season.title}, ROTIR on ${season.nights.length} nights (season ${season.id})`); await writeFile(resolve(work, `${season.id}.dat`), table.text); const { entry } = await toolchainDescriptor('rotir'), packages = requireRecord(entry.packages, 'rotir packages'); diff --git a/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts b/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts index ba7168085d5..01dea93508f 100644 --- a/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts +++ b/packages/telescope-cli/src/archives/interferometry/surface-star.test.mts @@ -4,7 +4,7 @@ import { resolve } from 'node:path'; import { sourceTest } from '@cssearth/objects/node/source-test'; import { parseTecplotLonLat } from '@cssearth/bake/objects/raster'; import { surfaceArguments } from './surface-reconstruction.mts'; -import { BRIGHTNESS_VARIABLE, decidingTwin, FACING_VARIABLE, parseSurfaceSeason, surfaceTable, TABLE_STEP_DEGREES } from './surface-star.mts'; +import { BRIGHTNESS_VARIABLE, decidingTwin, FACING_VARIABLE, facingOf, parseSurfaceSeason, surfaceTable, TABLE_STEP_DEGREES } from './surface-star.mts'; const test = sourceTest(); const SEASON = resolve(import.meta.dirname, 'seasons/udkadua-mirc-2011-09/season.json'); @@ -35,9 +35,9 @@ test('several nights are one run: every file, the power law, the period that tur test('the table puts longitude 0 on the meridian that faced the observer, and a node never seen holds the mean', () => { // ROTIR's grid, 36 x 18 cells: brightness 2 where its longitude is under 180 and 1 beyond; the observer stood at 270 on the // reference night, and nothing east of ROTIR longitude 90 to 180 was ever seen. - const columns = 36, rows = 18, values = new Float32Array(columns * rows), facing = new Float32Array(columns * rows); - for (let r = 0; r < rows; r++) for (let c = 0; c < columns; c++) { const longitude = (c + 0.5) * 10; values[r * columns + c] = longitude < 180 ? 2 : 1; facing[r * columns + c] = longitude > 90 && longitude < 180 ? -0.5 : 0.5; } - const table = surfaceTable({ columns, rows, values }, { columns, rows, values: facing }, 270, 'a "test" star'); + const columns = 36, rows = 18, values = new Float32Array(columns * rows); + for (let r = 0; r < rows; r++) for (let c = 0; c < columns; c++) values[r * columns + c] = (c + 0.5) * 10 < 180 ? 2 : 1; + const table = surfaceTable({ columns, rows, values }, longitude => { const rotir = (longitude % 360 + 360) % 360; return rotir > 90 && rotir < 180 ? -0.5 : 0.5; }, 270, 'a "test" star'); const parsed = parseTecplotLonLat(table.text, 'test.dat'), brightness = parsed.variables.indexOf(BRIGHTNESS_VARIABLE), seen = parsed.variables.indexOf(FACING_VARIABLE); assert.deepEqual([parsed.columns, parsed.rows, parsed.lonStep], [360 / TABLE_STEP_DEGREES + 1, 180 / TABLE_STEP_DEGREES + 1, TABLE_STEP_DEGREES]); const at = (longitude: number, latitude: number) => parsed.values[(latitude + 90) / TABLE_STEP_DEGREES * parsed.columns + longitude / TABLE_STEP_DEGREES]!; @@ -49,6 +49,13 @@ test('the table puts longitude 0 on the meridian that faced the observer, and a assert.doesNotMatch(table.text.split('\n')[0]!, /"test"/u); }); +test('a place faced the observer as squarely as on its best night, and one behind the limb on every night never did', () => { + // The observer on the equator at longitude 270 on one night and at 180 on another. + const facing = facingOf([{ colatitude: 90, longitude: 270 }, { colatitude: 90, longitude: 180 }]); + assert.ok(Math.abs(facing(270, 0) - 1) < 1e-12 && Math.abs(facing(180, 0) - 1) < 1e-12); + assert.ok(Math.abs(facing(225, 0) - Math.SQRT1_2) < 1e-12); assert.ok(facing(30, 0) < 0); assert.ok(Math.abs(facing(0, 90)) < 1e-12); +}); + test('the spots are taken against the spottiest spotless twin that fits on the sphere', () => { const twins = [{ scale: 1, ratio: 2.94, fits: true }, { scale: 0.98, ratio: 1.51, fits: false }, { scale: 0.99, ratio: 2.57, fits: true }, { scale: 1.01, ratio: 2.14, fits: true }, { scale: 1.02, ratio: 1.4, fits: false }]; assert.equal(decidingTwin(twins).scale, 1.01); diff --git a/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat b/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat index 538fefd95e4..5db6ca8df5f 100644 --- a/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat +++ b/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat @@ -3,2704 +3,2704 @@ VARIABLES = "Longitude [Deg]" "Latitude [Deg]" "Brightness [%]" "Facing" ZONE I=73, J=37, K=1, ZONETYPE=Ordered DATAPACKING=POINT DT=(SINGLE SINGLE SINGLE SINGLE) -0.0 -90.0 99.885 0.0250 -5.0 -90.0 99.885 0.0250 -10.0 -90.0 99.885 0.0250 -15.0 -90.0 99.885 0.0250 -20.0 -90.0 99.885 0.0250 -25.0 -90.0 99.885 0.0250 -30.0 -90.0 99.885 0.0250 -35.0 -90.0 99.885 0.0250 -40.0 -90.0 99.885 0.0250 -45.0 -90.0 99.885 0.0250 -50.0 -90.0 99.885 0.0250 -55.0 -90.0 99.885 0.0250 -60.0 -90.0 99.885 0.0250 -65.0 -90.0 99.885 0.0250 -70.0 -90.0 99.885 0.0250 -75.0 -90.0 99.885 0.0250 -80.0 -90.0 100.000 -0.0038 -85.0 -90.0 100.000 -0.0038 -90.0 -90.0 100.000 -0.0038 -95.0 -90.0 100.000 -0.0038 -100.0 -90.0 100.000 -0.0038 -105.0 -90.0 100.000 -0.0038 -110.0 -90.0 100.000 -0.0038 -115.0 -90.0 100.000 -0.0038 -120.0 -90.0 100.000 -0.0038 -125.0 -90.0 100.000 -0.0038 -130.0 -90.0 100.000 -0.0038 -135.0 -90.0 100.000 -0.0038 -140.0 -90.0 100.000 -0.0038 -145.0 -90.0 100.000 -0.0038 -150.0 -90.0 100.000 -0.0038 -155.0 -90.0 100.000 -0.0038 -160.0 -90.0 100.000 -0.0038 -165.0 -90.0 100.000 -0.0038 -170.0 -90.0 100.000 -0.0565 -175.0 -90.0 100.000 -0.0565 -180.0 -90.0 100.000 -0.0565 -185.0 -90.0 100.000 -0.0565 -190.0 -90.0 100.000 -0.0565 -195.0 -90.0 100.000 -0.0565 -200.0 -90.0 100.000 -0.0565 -205.0 -90.0 100.000 -0.0565 -210.0 -90.0 100.000 -0.0565 -215.0 -90.0 100.000 -0.0565 -220.0 -90.0 100.000 -0.0565 -225.0 -90.0 100.000 -0.0565 -230.0 -90.0 100.000 -0.0565 -235.0 -90.0 100.000 -0.0565 -240.0 -90.0 100.000 -0.0565 -245.0 -90.0 100.000 -0.0565 -250.0 -90.0 100.000 -0.0565 -255.0 -90.0 100.000 -0.0565 -260.0 -90.0 100.040 0.0241 -265.0 -90.0 100.040 0.0241 -270.0 -90.0 100.040 0.0241 -275.0 -90.0 100.040 0.0241 -280.0 -90.0 100.040 0.0241 -285.0 -90.0 100.040 0.0241 -290.0 -90.0 100.040 0.0241 -295.0 -90.0 100.040 0.0241 -300.0 -90.0 100.040 0.0241 -305.0 -90.0 100.040 0.0241 -310.0 -90.0 100.040 0.0241 -315.0 -90.0 100.040 0.0241 -320.0 -90.0 100.040 0.0241 -325.0 -90.0 100.040 0.0241 -330.0 -90.0 100.040 0.0241 -335.0 -90.0 100.040 0.0241 -340.0 -90.0 100.040 0.0241 -345.0 -90.0 100.040 0.0241 -350.0 -90.0 99.885 0.0250 -355.0 -90.0 99.885 0.0250 -360.0 -90.0 99.885 0.0250 -0.0 -85.0 99.885 0.0250 -5.0 -85.0 99.885 0.0250 -10.0 -85.0 99.885 0.0250 -15.0 -85.0 99.885 0.0250 -20.0 -85.0 99.885 0.0250 -25.0 -85.0 99.885 0.0250 -30.0 -85.0 99.885 0.0250 -35.0 -85.0 99.885 0.0250 -40.0 -85.0 99.885 0.0250 -45.0 -85.0 99.885 0.0250 -50.0 -85.0 99.885 0.0250 -55.0 -85.0 99.885 0.0250 -60.0 -85.0 99.885 0.0250 -65.0 -85.0 99.885 0.0250 -70.0 -85.0 99.885 0.0250 -75.0 -85.0 99.885 0.0250 -80.0 -85.0 100.000 -0.0038 -85.0 -85.0 100.000 -0.0038 -90.0 -85.0 100.000 -0.0038 -95.0 -85.0 100.000 -0.0038 -100.0 -85.0 100.000 -0.0038 -105.0 -85.0 100.000 -0.0038 -110.0 -85.0 100.000 -0.0038 -115.0 -85.0 100.000 -0.0038 -120.0 -85.0 100.000 -0.0038 -125.0 -85.0 100.000 -0.0038 -130.0 -85.0 100.000 -0.0038 -135.0 -85.0 100.000 -0.0038 -140.0 -85.0 100.000 -0.0038 -145.0 -85.0 100.000 -0.0038 -150.0 -85.0 100.000 -0.0038 -155.0 -85.0 100.000 -0.0038 -160.0 -85.0 100.000 -0.0038 -165.0 -85.0 100.000 -0.0038 -170.0 -85.0 100.000 -0.0565 -175.0 -85.0 100.000 -0.0565 -180.0 -85.0 100.000 -0.0565 -185.0 -85.0 100.000 -0.0565 -190.0 -85.0 100.000 -0.0565 -195.0 -85.0 100.000 -0.0565 -200.0 -85.0 100.000 -0.0565 -205.0 -85.0 100.000 -0.0565 -210.0 -85.0 100.000 -0.0565 -215.0 -85.0 100.000 -0.0565 -220.0 -85.0 100.000 -0.0565 -225.0 -85.0 100.000 -0.0565 -230.0 -85.0 100.000 -0.0565 -235.0 -85.0 100.000 -0.0565 -240.0 -85.0 100.000 -0.0565 -245.0 -85.0 100.000 -0.0565 -250.0 -85.0 100.000 -0.0565 -255.0 -85.0 100.000 -0.0565 -260.0 -85.0 100.040 0.0241 -265.0 -85.0 100.040 0.0241 -270.0 -85.0 100.040 0.0241 -275.0 -85.0 100.040 0.0241 -280.0 -85.0 100.040 0.0241 -285.0 -85.0 100.040 0.0241 -290.0 -85.0 100.040 0.0241 -295.0 -85.0 100.040 0.0241 -300.0 -85.0 100.040 0.0241 -305.0 -85.0 100.040 0.0241 -310.0 -85.0 100.040 0.0241 -315.0 -85.0 100.040 0.0241 -320.0 -85.0 100.040 0.0241 -325.0 -85.0 100.040 0.0241 -330.0 -85.0 100.040 0.0241 -335.0 -85.0 100.040 0.0241 -340.0 -85.0 100.040 0.0241 -345.0 -85.0 100.040 0.0241 -350.0 -85.0 99.885 0.0250 -355.0 -85.0 99.885 0.0250 -360.0 -85.0 99.885 0.0250 -0.0 -80.0 102.212 0.1191 -5.0 -80.0 102.212 0.1191 -10.0 -80.0 102.212 0.1191 -15.0 -80.0 102.212 0.1191 -20.0 -80.0 102.212 0.1191 -25.0 -80.0 102.212 0.1191 -30.0 -80.0 102.212 0.1191 -35.0 -80.0 99.885 0.0250 -40.0 -80.0 101.130 0.1227 -45.0 -80.0 101.130 0.1227 -50.0 -80.0 101.130 0.1227 -55.0 -80.0 101.130 0.1227 -60.0 -80.0 101.130 0.1227 -65.0 -80.0 101.130 0.1227 -70.0 -80.0 101.130 0.1227 -75.0 -80.0 101.130 0.1227 -80.0 -80.0 101.703 0.1081 -85.0 -80.0 101.703 0.1081 -90.0 -80.0 101.703 0.1081 -95.0 -80.0 101.703 0.1081 -100.0 -80.0 101.703 0.1081 -105.0 -80.0 101.703 0.1081 -110.0 -80.0 101.703 0.1081 -115.0 -80.0 101.703 0.1081 -120.0 -80.0 101.703 0.1081 -125.0 -80.0 100.000 -0.0038 -130.0 -80.0 99.943 0.0010 -135.0 -80.0 99.943 0.0010 -140.0 -80.0 99.943 0.0010 -145.0 -80.0 99.943 0.0010 -150.0 -80.0 99.943 0.0010 -155.0 -80.0 99.943 0.0010 -160.0 -80.0 99.943 0.0010 -165.0 -80.0 99.943 0.0010 -170.0 -80.0 100.000 -0.1144 -175.0 -80.0 100.000 -0.1144 -180.0 -80.0 100.000 -0.1144 -185.0 -80.0 100.000 -0.1144 -190.0 -80.0 100.000 -0.1144 -195.0 -80.0 100.000 -0.1144 -200.0 -80.0 100.000 -0.1144 -205.0 -80.0 100.000 -0.1144 -210.0 -80.0 100.000 -0.1144 -215.0 -80.0 100.000 -0.0565 -220.0 -80.0 99.959 0.0343 -225.0 -80.0 99.959 0.0343 -230.0 -80.0 99.959 0.0343 -235.0 -80.0 99.959 0.0343 -240.0 -80.0 99.959 0.0343 -245.0 -80.0 99.959 0.0343 -250.0 -80.0 99.959 0.0343 -255.0 -80.0 99.959 0.0343 -260.0 -80.0 100.652 0.1191 -265.0 -80.0 100.652 0.1191 -270.0 -80.0 100.652 0.1191 -275.0 -80.0 100.652 0.1191 -280.0 -80.0 100.652 0.1191 -285.0 -80.0 100.652 0.1191 -290.0 -80.0 100.652 0.1191 -295.0 -80.0 100.652 0.1191 -300.0 -80.0 100.652 0.1191 -305.0 -80.0 100.040 0.0241 -310.0 -80.0 102.872 0.1232 -315.0 -80.0 102.872 0.1232 -320.0 -80.0 102.872 0.1232 -325.0 -80.0 102.872 0.1232 -330.0 -80.0 102.872 0.1232 -335.0 -80.0 102.872 0.1232 -340.0 -80.0 102.872 0.1232 -345.0 -80.0 102.872 0.1232 -350.0 -80.0 102.212 0.1191 -355.0 -80.0 102.212 0.1191 -360.0 -80.0 102.212 0.1191 -0.0 -75.0 106.231 0.2238 -5.0 -75.0 106.231 0.2238 -10.0 -75.0 102.212 0.1191 -15.0 -75.0 102.212 0.1191 -20.0 -75.0 102.212 0.1191 -25.0 -75.0 102.738 0.2266 -30.0 -75.0 102.738 0.2266 -35.0 -75.0 102.738 0.2266 -40.0 -75.0 102.738 0.2266 -45.0 -75.0 101.130 0.1227 -50.0 -75.0 101.130 0.1227 -55.0 -75.0 101.130 0.1227 -60.0 -75.0 102.691 0.2188 -65.0 -75.0 102.691 0.2188 -70.0 -75.0 102.691 0.2188 -75.0 -75.0 102.691 0.2188 -80.0 -75.0 103.221 0.2144 -85.0 -75.0 103.221 0.2144 -90.0 -75.0 103.221 0.2144 -95.0 -75.0 103.221 0.2144 -100.0 -75.0 101.703 0.1081 -105.0 -75.0 101.703 0.1081 -110.0 -75.0 101.703 0.1081 -115.0 -75.0 102.236 0.1410 -120.0 -75.0 102.236 0.1410 -125.0 -75.0 102.236 0.1410 -130.0 -75.0 102.236 0.1410 -135.0 -75.0 99.943 0.0010 -140.0 -75.0 99.943 0.0010 -145.0 -75.0 99.943 0.0010 -150.0 -75.0 99.955 0.0042 -155.0 -75.0 99.955 0.0042 -160.0 -75.0 99.955 0.0042 -165.0 -75.0 99.955 0.0042 -170.0 -75.0 100.000 -0.1497 -175.0 -75.0 100.000 -0.1497 -180.0 -75.0 100.000 -0.1497 -185.0 -75.0 100.000 -0.1497 -190.0 -75.0 100.000 -0.1144 -195.0 -75.0 100.000 -0.1144 -200.0 -75.0 100.000 -0.1144 -205.0 -75.0 100.000 -0.0154 -210.0 -75.0 100.000 -0.0154 -215.0 -75.0 100.000 -0.0154 -220.0 -75.0 100.000 -0.0154 -225.0 -75.0 99.959 0.0343 -230.0 -75.0 99.959 0.0343 -235.0 -75.0 99.959 0.0343 -240.0 -75.0 100.528 0.1220 -245.0 -75.0 100.528 0.1220 -250.0 -75.0 100.528 0.1220 -255.0 -75.0 100.528 0.1220 -260.0 -75.0 102.228 0.2082 -265.0 -75.0 102.228 0.2082 -270.0 -75.0 102.228 0.2082 -275.0 -75.0 102.228 0.2082 -280.0 -75.0 100.652 0.1191 -285.0 -75.0 100.652 0.1191 -290.0 -75.0 100.652 0.1191 -295.0 -75.0 103.394 0.2240 -300.0 -75.0 103.394 0.2240 -305.0 -75.0 103.394 0.2240 -310.0 -75.0 103.394 0.2240 -315.0 -75.0 102.872 0.1232 -320.0 -75.0 102.872 0.1232 -325.0 -75.0 102.872 0.1232 -330.0 -75.0 105.899 0.2221 -335.0 -75.0 105.899 0.2221 -340.0 -75.0 105.899 0.2221 -345.0 -75.0 105.899 0.2221 -350.0 -75.0 106.231 0.2238 -355.0 -75.0 106.231 0.2238 -360.0 -75.0 106.231 0.2238 -0.0 -70.0 106.231 0.2238 -5.0 -70.0 106.231 0.2238 -10.0 -70.0 106.231 0.2238 -15.0 -70.0 106.231 0.2238 -20.0 -70.0 105.429 0.3280 -25.0 -70.0 102.738 0.2266 -30.0 -70.0 102.738 0.2266 -35.0 -70.0 102.738 0.2266 -40.0 -70.0 102.738 0.2266 -45.0 -70.0 103.354 0.3253 -50.0 -70.0 103.354 0.3253 -55.0 -70.0 102.691 0.2188 -60.0 -70.0 102.691 0.2188 -65.0 -70.0 102.691 0.2188 -70.0 -70.0 102.691 0.2188 -75.0 -70.0 102.691 0.2188 -80.0 -70.0 103.221 0.2144 -85.0 -70.0 103.221 0.2144 -90.0 -70.0 103.221 0.2144 -95.0 -70.0 103.221 0.2144 -100.0 -70.0 103.221 0.2144 -105.0 -70.0 103.221 0.2144 -110.0 -70.0 103.306 0.2615 -115.0 -70.0 102.236 0.1410 -120.0 -70.0 102.236 0.1410 -125.0 -70.0 102.236 0.1410 -130.0 -70.0 102.236 0.1410 -135.0 -70.0 102.065 0.1516 -140.0 -70.0 102.065 0.1516 -145.0 -70.0 99.955 0.0042 -150.0 -70.0 99.955 0.0042 -155.0 -70.0 99.955 0.0042 -160.0 -70.0 99.955 0.0042 -165.0 -70.0 99.955 0.0042 -170.0 -70.0 100.000 -0.1497 -175.0 -70.0 100.000 -0.1497 -180.0 -70.0 100.000 -0.1497 -185.0 -70.0 100.000 -0.1497 -190.0 -70.0 100.000 -0.1497 -195.0 -70.0 100.000 -0.1497 -200.0 -70.0 100.000 -0.0722 -205.0 -70.0 100.000 -0.0154 -210.0 -70.0 100.000 -0.0154 -215.0 -70.0 100.000 -0.0154 -220.0 -70.0 100.000 -0.0154 -225.0 -70.0 100.732 0.0805 -230.0 -70.0 100.732 0.0805 -235.0 -70.0 100.528 0.1220 -240.0 -70.0 100.528 0.1220 -245.0 -70.0 100.528 0.1220 -250.0 -70.0 100.528 0.1220 -255.0 -70.0 100.528 0.1220 -260.0 -70.0 102.228 0.2082 -265.0 -70.0 102.228 0.2082 -270.0 -70.0 102.228 0.2082 -275.0 -70.0 102.228 0.2082 -280.0 -70.0 102.228 0.2082 -285.0 -70.0 102.228 0.2082 -290.0 -70.0 104.636 0.3287 -295.0 -70.0 103.394 0.2240 -300.0 -70.0 103.394 0.2240 -305.0 -70.0 103.394 0.2240 -310.0 -70.0 103.394 0.2240 -315.0 -70.0 104.613 0.3208 -320.0 -70.0 104.613 0.3208 -325.0 -70.0 105.899 0.2221 -330.0 -70.0 105.899 0.2221 -335.0 -70.0 105.899 0.2221 -340.0 -70.0 105.899 0.2221 -345.0 -70.0 105.899 0.2221 -350.0 -70.0 106.231 0.2238 -355.0 -70.0 106.231 0.2238 -360.0 -70.0 106.231 0.2238 -0.0 -65.0 107.787 0.3249 -5.0 -65.0 107.787 0.3249 -10.0 -65.0 107.787 0.3249 -15.0 -65.0 105.429 0.3280 -20.0 -65.0 105.429 0.3280 -25.0 -65.0 105.429 0.3280 -30.0 -65.0 105.429 0.3280 -35.0 -65.0 103.354 0.3253 -40.0 -65.0 103.354 0.3253 -45.0 -65.0 103.354 0.3253 -50.0 -65.0 103.354 0.3253 -55.0 -65.0 103.354 0.3253 -60.0 -65.0 104.131 0.3173 -65.0 -65.0 104.131 0.3173 -70.0 -65.0 104.131 0.3173 -75.0 -65.0 104.131 0.3173 -80.0 -65.0 104.382 0.3173 -85.0 -65.0 104.382 0.3173 -90.0 -65.0 104.382 0.3173 -95.0 -65.0 104.382 0.3173 -100.0 -65.0 104.382 0.3173 -105.0 -65.0 103.306 0.2615 -110.0 -65.0 103.306 0.2615 -115.0 -65.0 103.306 0.2615 -120.0 -65.0 103.306 0.2615 -125.0 -65.0 102.065 0.1516 -130.0 -65.0 102.065 0.1516 -135.0 -65.0 102.065 0.1516 -140.0 -65.0 102.065 0.1516 -145.0 -65.0 102.065 0.1516 -150.0 -65.0 99.963 0.0071 -155.0 -65.0 99.963 0.0071 -160.0 -65.0 99.963 0.0071 -165.0 -65.0 99.963 0.0071 -170.0 -65.0 100.000 -0.1470 -175.0 -65.0 100.000 -0.1470 -180.0 -65.0 100.000 -0.1470 -185.0 -65.0 100.000 -0.1470 -190.0 -65.0 100.000 -0.1470 -195.0 -65.0 100.000 -0.0722 -200.0 -65.0 100.000 -0.0722 -205.0 -65.0 100.000 -0.0722 -210.0 -65.0 100.000 -0.0722 -215.0 -65.0 100.732 0.0805 -220.0 -65.0 100.732 0.0805 -225.0 -65.0 100.732 0.0805 -230.0 -65.0 100.732 0.0805 -235.0 -65.0 100.732 0.0805 -240.0 -65.0 102.146 0.2076 -245.0 -65.0 102.146 0.2076 -250.0 -65.0 102.146 0.2076 -255.0 -65.0 102.146 0.2076 -260.0 -65.0 103.987 0.2939 -265.0 -65.0 103.987 0.2939 -270.0 -65.0 103.987 0.2939 -275.0 -65.0 103.987 0.2939 -280.0 -65.0 103.987 0.2939 -285.0 -65.0 104.636 0.3287 -290.0 -65.0 104.636 0.3287 -295.0 -65.0 104.636 0.3287 -300.0 -65.0 104.636 0.3287 -305.0 -65.0 104.613 0.3208 -310.0 -65.0 104.613 0.3208 -315.0 -65.0 104.613 0.3208 -320.0 -65.0 104.613 0.3208 -325.0 -65.0 104.613 0.3208 -330.0 -65.0 107.391 0.3175 -335.0 -65.0 107.391 0.3175 -340.0 -65.0 107.391 0.3175 -345.0 -65.0 107.391 0.3175 -350.0 -65.0 107.787 0.3249 -355.0 -65.0 107.787 0.3249 -360.0 -65.0 107.787 0.3249 -0.0 -60.0 107.194 0.4225 -5.0 -60.0 107.194 0.4225 -10.0 -60.0 106.956 0.4178 -15.0 -60.0 106.956 0.4178 -20.0 -60.0 106.956 0.4178 -25.0 -60.0 106.956 0.4178 -30.0 -60.0 103.557 0.4217 -35.0 -60.0 103.557 0.4217 -40.0 -60.0 103.557 0.4217 -45.0 -60.0 103.922 0.4254 -50.0 -60.0 103.922 0.4254 -55.0 -60.0 103.922 0.4254 -60.0 -60.0 103.922 0.4254 -65.0 -60.0 104.962 0.4167 -70.0 -60.0 104.962 0.4167 -75.0 -60.0 104.962 0.4167 -80.0 -60.0 105.050 0.4167 -85.0 -60.0 105.050 0.4167 -90.0 -60.0 105.050 0.4167 -95.0 -60.0 105.050 0.4167 -100.0 -60.0 103.766 0.3719 -105.0 -60.0 103.766 0.3719 -110.0 -60.0 103.766 0.3719 -115.0 -60.0 103.766 0.3719 -120.0 -60.0 102.975 0.2821 -125.0 -60.0 102.975 0.2821 -130.0 -60.0 102.975 0.2821 -135.0 -60.0 101.603 0.1570 -140.0 -60.0 101.603 0.1570 -145.0 -60.0 101.603 0.1570 -150.0 -60.0 101.603 0.1570 -155.0 -60.0 99.969 0.0101 -160.0 -60.0 99.969 0.0101 -165.0 -60.0 99.969 0.0101 -170.0 -60.0 100.000 -0.1429 -175.0 -60.0 100.000 -0.1429 -180.0 -60.0 100.000 -0.1429 -185.0 -60.0 100.000 -0.1429 -190.0 -60.0 100.000 -0.1270 -195.0 -60.0 100.000 -0.1270 -200.0 -60.0 100.000 -0.1270 -205.0 -60.0 100.000 -0.1270 -210.0 -60.0 100.140 0.0270 -215.0 -60.0 100.140 0.0270 -220.0 -60.0 100.140 0.0270 -225.0 -60.0 102.441 0.1714 -230.0 -60.0 102.441 0.1714 -235.0 -60.0 102.441 0.1714 -240.0 -60.0 102.441 0.1714 -245.0 -60.0 104.421 0.2908 -250.0 -60.0 104.421 0.2908 -255.0 -60.0 104.421 0.2908 -260.0 -60.0 105.105 0.3766 -265.0 -60.0 105.105 0.3766 -270.0 -60.0 105.105 0.3766 -275.0 -60.0 105.105 0.3766 -280.0 -60.0 105.478 0.4217 -285.0 -60.0 105.478 0.4217 -290.0 -60.0 105.478 0.4217 -295.0 -60.0 105.478 0.4217 -300.0 -60.0 104.514 0.4175 -305.0 -60.0 104.514 0.4175 -310.0 -60.0 104.514 0.4175 -315.0 -60.0 104.635 0.4238 -320.0 -60.0 104.635 0.4238 -325.0 -60.0 104.635 0.4238 -330.0 -60.0 104.635 0.4238 -335.0 -60.0 106.062 0.4095 -340.0 -60.0 106.062 0.4095 -345.0 -60.0 106.062 0.4095 -350.0 -60.0 107.194 0.4225 -355.0 -60.0 107.194 0.4225 -360.0 -60.0 107.194 0.4225 -0.0 -55.0 104.082 0.5161 +0.0 -90.0 100.000 -0.0765 +5.0 -90.0 100.000 -0.0765 +10.0 -90.0 100.000 -0.0765 +15.0 -90.0 100.000 -0.0765 +20.0 -90.0 100.000 -0.0765 +25.0 -90.0 100.000 -0.0765 +30.0 -90.0 100.000 -0.0765 +35.0 -90.0 100.000 -0.0765 +40.0 -90.0 100.000 -0.0765 +45.0 -90.0 100.000 -0.0765 +50.0 -90.0 100.000 -0.0765 +55.0 -90.0 100.000 -0.0765 +60.0 -90.0 100.000 -0.0765 +65.0 -90.0 100.000 -0.0765 +70.0 -90.0 100.000 -0.0765 +75.0 -90.0 100.000 -0.0765 +80.0 -90.0 100.000 -0.0765 +85.0 -90.0 100.000 -0.0765 +90.0 -90.0 100.000 -0.0765 +95.0 -90.0 100.000 -0.0765 +100.0 -90.0 100.000 -0.0765 +105.0 -90.0 100.000 -0.0765 +110.0 -90.0 100.000 -0.0765 +115.0 -90.0 100.000 -0.0765 +120.0 -90.0 100.000 -0.0765 +125.0 -90.0 100.000 -0.0765 +130.0 -90.0 100.000 -0.0765 +135.0 -90.0 100.000 -0.0765 +140.0 -90.0 100.000 -0.0765 +145.0 -90.0 100.000 -0.0765 +150.0 -90.0 100.000 -0.0765 +155.0 -90.0 100.000 -0.0765 +160.0 -90.0 100.000 -0.0765 +165.0 -90.0 100.000 -0.0765 +170.0 -90.0 100.000 -0.0765 +175.0 -90.0 100.000 -0.0765 +180.0 -90.0 100.000 -0.0765 +185.0 -90.0 100.000 -0.0765 +190.0 -90.0 100.000 -0.0765 +195.0 -90.0 100.000 -0.0765 +200.0 -90.0 100.000 -0.0765 +205.0 -90.0 100.000 -0.0765 +210.0 -90.0 100.000 -0.0765 +215.0 -90.0 100.000 -0.0765 +220.0 -90.0 100.000 -0.0765 +225.0 -90.0 100.000 -0.0765 +230.0 -90.0 100.000 -0.0765 +235.0 -90.0 100.000 -0.0765 +240.0 -90.0 100.000 -0.0765 +245.0 -90.0 100.000 -0.0765 +250.0 -90.0 100.000 -0.0765 +255.0 -90.0 100.000 -0.0765 +260.0 -90.0 100.000 -0.0765 +265.0 -90.0 100.000 -0.0765 +270.0 -90.0 100.000 -0.0765 +275.0 -90.0 100.000 -0.0765 +280.0 -90.0 100.000 -0.0765 +285.0 -90.0 100.000 -0.0765 +290.0 -90.0 100.000 -0.0765 +295.0 -90.0 100.000 -0.0765 +300.0 -90.0 100.000 -0.0765 +305.0 -90.0 100.000 -0.0765 +310.0 -90.0 100.000 -0.0765 +315.0 -90.0 100.000 -0.0765 +320.0 -90.0 100.000 -0.0765 +325.0 -90.0 100.000 -0.0765 +330.0 -90.0 100.000 -0.0765 +335.0 -90.0 100.000 -0.0765 +340.0 -90.0 100.000 -0.0765 +345.0 -90.0 100.000 -0.0765 +350.0 -90.0 100.000 -0.0765 +355.0 -90.0 100.000 -0.0765 +360.0 -90.0 100.000 -0.0765 +0.0 -85.0 99.884 0.0107 +5.0 -85.0 99.884 0.0104 +10.0 -85.0 99.884 0.0094 +15.0 -85.0 99.884 0.0091 +20.0 -85.0 99.884 0.0102 +25.0 -85.0 99.884 0.0107 +30.0 -85.0 99.884 0.0105 +35.0 -85.0 99.884 0.0097 +40.0 -85.0 99.884 0.0086 +45.0 -85.0 99.884 0.0099 +50.0 -85.0 99.884 0.0106 +55.0 -85.0 99.884 0.0107 +60.0 -85.0 99.884 0.0100 +65.0 -85.0 99.884 0.0088 +70.0 -85.0 99.884 0.0096 +75.0 -85.0 99.884 0.0105 +80.0 -85.0 99.945 0.0107 +85.0 -85.0 99.945 0.0103 +90.0 -85.0 99.945 0.0092 +95.0 -85.0 99.945 0.0074 +100.0 -85.0 99.945 0.0050 +105.0 -85.0 99.945 0.0020 +110.0 -85.0 100.000 -0.0016 +115.0 -85.0 100.000 -0.0058 +120.0 -85.0 100.000 -0.0105 +125.0 -85.0 100.000 -0.0157 +130.0 -85.0 100.000 -0.0213 +135.0 -85.0 100.000 -0.0274 +140.0 -85.0 100.000 -0.0339 +145.0 -85.0 100.000 -0.0406 +150.0 -85.0 100.000 -0.0477 +155.0 -85.0 100.000 -0.0550 +160.0 -85.0 100.000 -0.0624 +165.0 -85.0 100.000 -0.0699 +170.0 -85.0 100.000 -0.0775 +175.0 -85.0 100.000 -0.0851 +180.0 -85.0 100.000 -0.0926 +185.0 -85.0 100.000 -0.0999 +190.0 -85.0 100.000 -0.0960 +195.0 -85.0 100.000 -0.0886 +200.0 -85.0 100.000 -0.0811 +205.0 -85.0 100.000 -0.0735 +210.0 -85.0 100.000 -0.0659 +215.0 -85.0 100.000 -0.0584 +220.0 -85.0 100.000 -0.0511 +225.0 -85.0 100.000 -0.0439 +230.0 -85.0 100.000 -0.0370 +235.0 -85.0 100.000 -0.0304 +240.0 -85.0 100.000 -0.0241 +245.0 -85.0 100.000 -0.0183 +250.0 -85.0 100.000 -0.0128 +255.0 -85.0 100.000 -0.0079 +260.0 -85.0 100.000 -0.0035 +265.0 -85.0 100.039 0.0004 +270.0 -85.0 100.039 0.0037 +275.0 -85.0 100.039 0.0064 +280.0 -85.0 100.039 0.0084 +285.0 -85.0 100.039 0.0098 +290.0 -85.0 100.039 0.0106 +295.0 -85.0 100.039 0.0107 +300.0 -85.0 100.039 0.0101 +305.0 -85.0 100.039 0.0089 +310.0 -85.0 100.039 0.0070 +315.0 -85.0 100.039 0.0089 +320.0 -85.0 100.039 0.0101 +325.0 -85.0 100.039 0.0107 +330.0 -85.0 100.039 0.0106 +335.0 -85.0 100.039 0.0098 +340.0 -85.0 100.039 0.0084 +345.0 -85.0 100.039 0.0078 +350.0 -85.0 99.884 0.0094 +355.0 -85.0 99.884 0.0104 +360.0 -85.0 99.884 0.0107 +0.0 -80.0 102.212 0.0978 +5.0 -80.0 102.212 0.0972 +10.0 -80.0 102.212 0.0952 +15.0 -80.0 102.212 0.0945 +20.0 -80.0 102.212 0.0968 +25.0 -80.0 102.212 0.0978 +30.0 -80.0 102.212 0.0975 +35.0 -80.0 99.884 0.0958 +40.0 -80.0 101.130 0.0935 +45.0 -80.0 101.130 0.0962 +50.0 -80.0 101.130 0.0976 +55.0 -80.0 101.130 0.0977 +60.0 -80.0 101.130 0.0965 +65.0 -80.0 101.130 0.0939 +70.0 -80.0 101.130 0.0956 +75.0 -80.0 101.130 0.0974 +80.0 -80.0 101.702 0.0978 +85.0 -80.0 101.702 0.0969 +90.0 -80.0 101.702 0.0947 +95.0 -80.0 101.702 0.0912 +100.0 -80.0 101.702 0.0865 +105.0 -80.0 101.702 0.0805 +110.0 -80.0 101.702 0.0733 +115.0 -80.0 101.702 0.0650 +120.0 -80.0 101.702 0.0556 +125.0 -80.0 99.945 0.0453 +130.0 -80.0 99.942 0.0340 +135.0 -80.0 99.942 0.0218 +140.0 -80.0 99.942 0.0090 +145.0 -80.0 100.000 -0.0045 +150.0 -80.0 100.000 -0.0186 +155.0 -80.0 100.000 -0.0330 +160.0 -80.0 100.000 -0.0478 +165.0 -80.0 100.000 -0.0628 +170.0 -80.0 100.000 -0.0779 +175.0 -80.0 100.000 -0.0930 +180.0 -80.0 100.000 -0.1080 +185.0 -80.0 100.000 -0.1226 +190.0 -80.0 100.000 -0.1149 +195.0 -80.0 100.000 -0.1001 +200.0 -80.0 100.000 -0.0850 +205.0 -80.0 100.000 -0.0699 +210.0 -80.0 100.000 -0.0549 +215.0 -80.0 100.000 -0.0400 +220.0 -80.0 100.000 -0.0253 +225.0 -80.0 100.000 -0.0111 +230.0 -80.0 99.958 0.0027 +235.0 -80.0 99.958 0.0159 +240.0 -80.0 99.958 0.0284 +245.0 -80.0 99.958 0.0401 +250.0 -80.0 99.958 0.0509 +255.0 -80.0 99.958 0.0607 +260.0 -80.0 100.651 0.0695 +265.0 -80.0 100.651 0.0773 +270.0 -80.0 100.651 0.0838 +275.0 -80.0 100.651 0.0892 +280.0 -80.0 100.651 0.0932 +285.0 -80.0 100.651 0.0961 +290.0 -80.0 100.651 0.0976 +295.0 -80.0 100.651 0.0978 +300.0 -80.0 100.651 0.0966 +305.0 -80.0 100.039 0.0942 +310.0 -80.0 102.871 0.0905 +315.0 -80.0 102.871 0.0942 +320.0 -80.0 102.871 0.0966 +325.0 -80.0 102.871 0.0978 +330.0 -80.0 102.871 0.0976 +335.0 -80.0 102.871 0.0961 +340.0 -80.0 102.871 0.0932 +345.0 -80.0 102.871 0.0919 +350.0 -80.0 102.212 0.0952 +355.0 -80.0 102.212 0.0972 +360.0 -80.0 102.212 0.0978 +0.0 -75.0 106.231 0.1842 +5.0 -75.0 106.231 0.1832 +10.0 -75.0 102.212 0.1803 +15.0 -75.0 102.212 0.1793 +20.0 -75.0 102.212 0.1827 +25.0 -75.0 102.737 0.1841 +30.0 -75.0 102.737 0.1836 +35.0 -75.0 102.737 0.1812 +40.0 -75.0 102.737 0.1778 +45.0 -75.0 101.130 0.1818 +50.0 -75.0 101.130 0.1839 +55.0 -75.0 101.130 0.1840 +60.0 -75.0 102.690 0.1822 +65.0 -75.0 102.690 0.1784 +70.0 -75.0 102.690 0.1809 +75.0 -75.0 102.690 0.1835 +80.0 -75.0 103.220 0.1842 +85.0 -75.0 103.220 0.1829 +90.0 -75.0 103.220 0.1796 +95.0 -75.0 103.220 0.1744 +100.0 -75.0 101.702 0.1673 +105.0 -75.0 101.702 0.1583 +110.0 -75.0 101.702 0.1476 +115.0 -75.0 102.235 0.1353 +120.0 -75.0 102.235 0.1213 +125.0 -75.0 102.235 0.1058 +130.0 -75.0 102.235 0.0890 +135.0 -75.0 99.942 0.0709 +140.0 -75.0 99.942 0.0518 +145.0 -75.0 99.942 0.0316 +150.0 -75.0 99.954 0.0107 +155.0 -75.0 100.000 -0.0109 +160.0 -75.0 100.000 -0.0329 +165.0 -75.0 100.000 -0.0553 +170.0 -75.0 100.000 -0.0778 +175.0 -75.0 100.000 -0.1002 +180.0 -75.0 100.000 -0.1225 +185.0 -75.0 100.000 -0.1444 +190.0 -75.0 100.000 -0.1329 +195.0 -75.0 100.000 -0.1108 +200.0 -75.0 100.000 -0.0884 +205.0 -75.0 100.000 -0.0658 +210.0 -75.0 100.000 -0.0434 +215.0 -75.0 100.000 -0.0212 +220.0 -75.0 99.941 0.0006 +225.0 -75.0 99.958 0.0219 +230.0 -75.0 99.958 0.0424 +235.0 -75.0 99.958 0.0621 +240.0 -75.0 100.527 0.0807 +245.0 -75.0 100.527 0.0981 +250.0 -75.0 100.527 0.1142 +255.0 -75.0 100.527 0.1289 +260.0 -75.0 102.228 0.1420 +265.0 -75.0 102.228 0.1535 +270.0 -75.0 102.228 0.1633 +275.0 -75.0 102.228 0.1713 +280.0 -75.0 100.651 0.1774 +285.0 -75.0 100.651 0.1816 +290.0 -75.0 100.651 0.1838 +295.0 -75.0 103.393 0.1841 +300.0 -75.0 103.393 0.1824 +305.0 -75.0 103.393 0.1788 +310.0 -75.0 103.393 0.1732 +315.0 -75.0 102.871 0.1788 +320.0 -75.0 102.871 0.1824 +325.0 -75.0 102.871 0.1841 +330.0 -75.0 105.899 0.1838 +335.0 -75.0 105.899 0.1816 +340.0 -75.0 105.899 0.1774 +345.0 -75.0 105.899 0.1754 +350.0 -75.0 106.231 0.1803 +355.0 -75.0 106.231 0.1832 +360.0 -75.0 106.231 0.1842 +0.0 -70.0 106.231 0.2692 +5.0 -70.0 106.231 0.2679 +10.0 -70.0 106.231 0.2640 +15.0 -70.0 106.231 0.2626 +20.0 -70.0 105.429 0.2671 +25.0 -70.0 102.737 0.2691 +30.0 -70.0 102.737 0.2684 +35.0 -70.0 102.737 0.2652 +40.0 -70.0 102.737 0.2607 +45.0 -70.0 103.353 0.2660 +50.0 -70.0 103.353 0.2688 +55.0 -70.0 102.690 0.2689 +60.0 -70.0 102.690 0.2665 +65.0 -70.0 102.690 0.2615 +70.0 -70.0 102.690 0.2648 +75.0 -70.0 102.690 0.2683 +80.0 -70.0 103.220 0.2691 +85.0 -70.0 103.220 0.2674 +90.0 -70.0 103.220 0.2630 +95.0 -70.0 103.220 0.2562 +100.0 -70.0 103.220 0.2468 +105.0 -70.0 103.220 0.2350 +110.0 -70.0 103.305 0.2209 +115.0 -70.0 102.235 0.2045 +120.0 -70.0 102.235 0.1860 +125.0 -70.0 102.235 0.1656 +130.0 -70.0 102.235 0.1434 +135.0 -70.0 102.064 0.1195 +140.0 -70.0 102.064 0.0942 +145.0 -70.0 99.954 0.0676 +150.0 -70.0 99.954 0.0399 +155.0 -70.0 99.954 0.0114 +160.0 -70.0 100.000 -0.0177 +165.0 -70.0 100.000 -0.0473 +170.0 -70.0 100.000 -0.0770 +175.0 -70.0 100.000 -0.1067 +180.0 -70.0 100.000 -0.1362 +185.0 -70.0 100.000 -0.1651 +190.0 -70.0 100.000 -0.1498 +195.0 -70.0 100.000 -0.1206 +200.0 -70.0 100.000 -0.0910 +205.0 -70.0 100.000 -0.0613 +210.0 -70.0 100.000 -0.0316 +215.0 -70.0 100.000 -0.0022 +220.0 -70.0 99.941 0.0266 +225.0 -70.0 100.731 0.0547 +230.0 -70.0 100.731 0.0818 +235.0 -70.0 100.527 0.1077 +240.0 -70.0 100.527 0.1323 +245.0 -70.0 100.527 0.1554 +250.0 -70.0 100.527 0.1767 +255.0 -70.0 100.527 0.1961 +260.0 -70.0 102.228 0.2134 +265.0 -70.0 102.228 0.2286 +270.0 -70.0 102.228 0.2415 +275.0 -70.0 102.228 0.2521 +280.0 -70.0 102.228 0.2601 +285.0 -70.0 102.228 0.2657 +290.0 -70.0 104.635 0.2686 +295.0 -70.0 103.393 0.2690 +300.0 -70.0 103.393 0.2668 +305.0 -70.0 103.393 0.2620 +310.0 -70.0 103.393 0.2546 +315.0 -70.0 104.612 0.2620 +320.0 -70.0 104.612 0.2668 +325.0 -70.0 105.899 0.2690 +330.0 -70.0 105.899 0.2686 +335.0 -70.0 105.899 0.2657 +340.0 -70.0 105.899 0.2601 +345.0 -70.0 105.899 0.2575 +350.0 -70.0 106.231 0.2640 +355.0 -70.0 106.231 0.2679 +360.0 -70.0 106.231 0.2692 +0.0 -65.0 107.787 0.3521 +5.0 -65.0 107.787 0.3505 +10.0 -65.0 107.787 0.3457 +15.0 -65.0 105.429 0.3440 +20.0 -65.0 105.429 0.3496 +25.0 -65.0 105.429 0.3520 +30.0 -65.0 105.429 0.3512 +35.0 -65.0 103.353 0.3472 +40.0 -65.0 103.353 0.3416 +45.0 -65.0 103.353 0.3482 +50.0 -65.0 103.353 0.3516 +55.0 -65.0 103.353 0.3518 +60.0 -65.0 104.131 0.3488 +65.0 -65.0 104.131 0.3426 +70.0 -65.0 104.131 0.3467 +75.0 -65.0 104.131 0.3510 +80.0 -65.0 104.381 0.3520 +85.0 -65.0 104.381 0.3499 +90.0 -65.0 104.381 0.3445 +95.0 -65.0 104.381 0.3360 +100.0 -65.0 104.381 0.3244 +105.0 -65.0 103.305 0.3099 +110.0 -65.0 103.305 0.2924 +115.0 -65.0 103.305 0.2722 +120.0 -65.0 103.305 0.2494 +125.0 -65.0 102.064 0.2241 +130.0 -65.0 102.064 0.1966 +135.0 -65.0 102.064 0.1671 +140.0 -65.0 102.064 0.1358 +145.0 -65.0 102.064 0.1030 +150.0 -65.0 99.963 0.0688 +155.0 -65.0 99.963 0.0336 +160.0 -65.0 100.000 -0.0024 +165.0 -65.0 100.000 -0.0389 +170.0 -65.0 100.000 -0.0757 +175.0 -65.0 100.000 -0.1124 +180.0 -65.0 100.000 -0.1488 +185.0 -65.0 100.000 -0.1845 +190.0 -65.0 100.000 -0.1657 +195.0 -65.0 100.000 -0.1295 +200.0 -65.0 100.000 -0.0930 +205.0 -65.0 100.000 -0.0562 +210.0 -65.0 100.000 -0.0196 +215.0 -65.0 100.731 0.0167 +220.0 -65.0 100.731 0.0524 +225.0 -65.0 100.731 0.0871 +230.0 -65.0 100.731 0.1206 +235.0 -65.0 100.731 0.1526 +240.0 -65.0 102.145 0.1830 +245.0 -65.0 102.145 0.2115 +250.0 -65.0 102.145 0.2378 +255.0 -65.0 102.145 0.2618 +260.0 -65.0 103.986 0.2832 +265.0 -65.0 103.986 0.3020 +270.0 -65.0 103.986 0.3179 +275.0 -65.0 103.986 0.3310 +280.0 -65.0 103.986 0.3409 +285.0 -65.0 104.635 0.3478 +290.0 -65.0 104.635 0.3514 +295.0 -65.0 104.635 0.3519 +300.0 -65.0 104.635 0.3491 +305.0 -65.0 104.612 0.3432 +310.0 -65.0 104.612 0.3341 +315.0 -65.0 104.612 0.3432 +320.0 -65.0 104.612 0.3491 +325.0 -65.0 104.612 0.3519 +330.0 -65.0 107.390 0.3514 +335.0 -65.0 107.390 0.3478 +340.0 -65.0 107.390 0.3409 +345.0 -65.0 107.390 0.3377 +350.0 -65.0 107.787 0.3457 +355.0 -65.0 107.787 0.3505 +360.0 -65.0 107.787 0.3521 +0.0 -60.0 107.193 0.4323 +5.0 -60.0 107.193 0.4304 +10.0 -60.0 106.955 0.4247 +15.0 -60.0 106.955 0.4228 +20.0 -60.0 106.955 0.4294 +25.0 -60.0 106.955 0.4322 +30.0 -60.0 103.556 0.4312 +35.0 -60.0 103.556 0.4265 +40.0 -60.0 103.556 0.4199 +45.0 -60.0 103.922 0.4277 +50.0 -60.0 103.922 0.4317 +55.0 -60.0 103.922 0.4320 +60.0 -60.0 103.922 0.4284 +65.0 -60.0 104.961 0.4211 +70.0 -60.0 104.961 0.4260 +75.0 -60.0 104.961 0.4310 +80.0 -60.0 105.049 0.4323 +85.0 -60.0 105.049 0.4297 +90.0 -60.0 105.049 0.4234 +95.0 -60.0 105.049 0.4133 +100.0 -60.0 103.766 0.3996 +105.0 -60.0 103.766 0.3824 +110.0 -60.0 103.766 0.3617 +115.0 -60.0 103.766 0.3378 +120.0 -60.0 102.975 0.3108 +125.0 -60.0 102.975 0.2809 +130.0 -60.0 102.975 0.2484 +135.0 -60.0 101.603 0.2135 +140.0 -60.0 101.603 0.1765 +145.0 -60.0 101.603 0.1376 +150.0 -60.0 101.603 0.0972 +155.0 -60.0 99.968 0.0555 +160.0 -60.0 99.968 0.0129 +165.0 -60.0 100.000 -0.0303 +170.0 -60.0 100.000 -0.0738 +175.0 -60.0 100.000 -0.1172 +180.0 -60.0 100.000 -0.1602 +185.0 -60.0 100.000 -0.2025 +190.0 -60.0 100.000 -0.1802 +195.0 -60.0 100.000 -0.1375 +200.0 -60.0 100.000 -0.0942 +205.0 -60.0 100.000 -0.0507 +210.0 -60.0 100.000 -0.0074 +215.0 -60.0 100.139 0.0356 +220.0 -60.0 100.139 0.0777 +225.0 -60.0 102.440 0.1188 +230.0 -60.0 102.440 0.1584 +235.0 -60.0 102.440 0.1963 +240.0 -60.0 102.440 0.2323 +245.0 -60.0 104.420 0.2659 +250.0 -60.0 104.420 0.2971 +255.0 -60.0 104.420 0.3255 +260.0 -60.0 105.104 0.3508 +265.0 -60.0 105.104 0.3731 +270.0 -60.0 105.104 0.3919 +275.0 -60.0 105.104 0.4073 +280.0 -60.0 105.477 0.4191 +285.0 -60.0 105.477 0.4272 +290.0 -60.0 105.477 0.4315 +295.0 -60.0 105.477 0.4321 +300.0 -60.0 104.513 0.4288 +305.0 -60.0 104.513 0.4218 +310.0 -60.0 104.513 0.4111 +315.0 -60.0 104.635 0.4218 +320.0 -60.0 104.635 0.4288 +325.0 -60.0 104.635 0.4321 +330.0 -60.0 104.635 0.4315 +335.0 -60.0 106.061 0.4272 +340.0 -60.0 106.061 0.4191 +345.0 -60.0 106.061 0.4153 +350.0 -60.0 107.193 0.4247 +355.0 -60.0 107.193 0.4304 +360.0 -60.0 107.193 0.4323 +0.0 -55.0 104.081 0.5093 5.0 -55.0 105.795 0.5071 -10.0 -55.0 105.795 0.5071 -15.0 -55.0 105.795 0.5071 -20.0 -55.0 103.181 0.5200 -25.0 -55.0 103.181 0.5200 -30.0 -55.0 103.181 0.5200 -35.0 -55.0 102.578 0.5090 -40.0 -55.0 102.578 0.5090 -45.0 -55.0 102.578 0.5090 -50.0 -55.0 103.795 0.5178 -55.0 -55.0 103.795 0.5178 -60.0 -55.0 103.795 0.5178 -65.0 -55.0 104.524 0.5122 -70.0 -55.0 104.524 0.5122 -75.0 -55.0 104.524 0.5122 -80.0 -55.0 104.802 0.5122 -85.0 -55.0 104.802 0.5122 -90.0 -55.0 104.802 0.5122 -95.0 -55.0 103.853 0.4748 -100.0 -55.0 103.853 0.4748 -105.0 -55.0 103.853 0.4748 -110.0 -55.0 103.126 0.3998 -115.0 -55.0 103.126 0.3998 -120.0 -55.0 103.126 0.3998 -125.0 -55.0 102.621 0.2924 -130.0 -55.0 102.621 0.2924 -135.0 -55.0 102.621 0.2924 -140.0 -55.0 101.115 0.1604 -145.0 -55.0 101.115 0.1604 -150.0 -55.0 101.115 0.1604 -155.0 -55.0 99.969 0.0136 -160.0 -55.0 99.969 0.0136 -165.0 -55.0 99.969 0.0136 -170.0 -55.0 100.000 -0.1376 -175.0 -55.0 100.000 -0.1376 -180.0 -55.0 100.000 -0.1376 -185.0 -55.0 100.000 -0.1786 -190.0 -55.0 100.000 -0.1786 -195.0 -55.0 100.000 -0.1786 -200.0 -55.0 100.000 -0.0273 -205.0 -55.0 100.000 -0.0273 -210.0 -55.0 100.000 -0.0273 -215.0 -55.0 101.575 0.1219 -220.0 -55.0 101.575 0.1219 -225.0 -55.0 101.575 0.1219 -230.0 -55.0 104.595 0.2580 -235.0 -55.0 104.595 0.2580 -240.0 -55.0 104.595 0.2580 -245.0 -55.0 105.818 0.3711 -250.0 -55.0 105.818 0.3711 -255.0 -55.0 105.818 0.3711 -260.0 -55.0 105.156 0.4559 -265.0 -55.0 105.156 0.4559 -270.0 -55.0 105.156 0.4559 -275.0 -55.0 104.894 0.5072 -280.0 -55.0 104.894 0.5072 -285.0 -55.0 104.894 0.5072 -290.0 -55.0 104.738 0.5190 -295.0 -55.0 104.738 0.5190 -300.0 -55.0 104.738 0.5190 -305.0 -55.0 103.809 0.4998 -310.0 -55.0 103.809 0.4998 -315.0 -55.0 103.809 0.4998 -320.0 -55.0 102.466 0.5191 -325.0 -55.0 102.466 0.5191 -330.0 -55.0 102.466 0.5191 -335.0 -55.0 101.872 0.4978 -340.0 -55.0 101.872 0.4978 -345.0 -55.0 101.872 0.4978 -350.0 -55.0 104.082 0.5161 -355.0 -55.0 104.082 0.5161 -360.0 -55.0 104.082 0.5161 -0.0 -50.0 99.418 0.6050 -5.0 -50.0 103.377 0.6012 -10.0 -50.0 103.377 0.6012 -15.0 -50.0 105.795 0.5071 -20.0 -50.0 102.851 0.6067 -25.0 -50.0 102.851 0.6067 -30.0 -50.0 101.025 0.6032 -35.0 -50.0 101.025 0.6032 -40.0 -50.0 102.578 0.5090 -45.0 -50.0 102.315 0.6058 -50.0 -50.0 102.315 0.6058 -55.0 -50.0 102.735 0.6034 -60.0 -50.0 102.735 0.6034 -65.0 -50.0 102.735 0.6034 -70.0 -50.0 102.816 0.6029 -75.0 -50.0 102.816 0.6029 -80.0 -50.0 103.734 0.6029 -85.0 -50.0 103.734 0.6029 -90.0 -50.0 103.734 0.6029 -95.0 -50.0 103.616 0.5711 -100.0 -50.0 103.616 0.5711 -105.0 -50.0 103.853 0.4748 -110.0 -50.0 103.668 0.5072 -115.0 -50.0 103.668 0.5072 -120.0 -50.0 102.562 0.4144 -125.0 -50.0 102.562 0.4144 -130.0 -50.0 102.621 0.2924 -135.0 -50.0 101.935 0.2976 -140.0 -50.0 101.935 0.2976 -145.0 -50.0 100.638 0.1629 -150.0 -50.0 100.638 0.1629 -155.0 -50.0 100.638 0.1629 -160.0 -50.0 99.964 0.0175 -165.0 -50.0 99.964 0.0175 -170.0 -50.0 100.000 -0.1312 -175.0 -50.0 100.000 -0.1312 -180.0 -50.0 100.000 -0.1312 -185.0 -50.0 100.000 -0.2267 -190.0 -50.0 100.000 -0.2267 -195.0 -50.0 100.000 -0.1786 -200.0 -50.0 100.000 -0.0793 -205.0 -50.0 100.000 -0.0793 -210.0 -50.0 100.611 0.0694 -215.0 -50.0 100.611 0.0694 -220.0 -50.0 101.575 0.1219 -225.0 -50.0 102.973 0.2117 -230.0 -50.0 102.973 0.2117 -235.0 -50.0 106.501 0.3401 -240.0 -50.0 106.501 0.3401 -245.0 -50.0 106.501 0.3401 -250.0 -50.0 106.107 0.4478 -255.0 -50.0 106.107 0.4478 -260.0 -50.0 104.661 0.5312 -265.0 -50.0 104.661 0.5312 -270.0 -50.0 104.661 0.5312 -275.0 -50.0 103.437 0.5863 -280.0 -50.0 103.437 0.5863 -285.0 -50.0 104.894 0.5072 -290.0 -50.0 103.272 0.6089 -295.0 -50.0 103.272 0.6089 -300.0 -50.0 103.697 0.5975 -305.0 -50.0 103.697 0.5975 -310.0 -50.0 103.809 0.4998 -315.0 -50.0 102.283 0.5995 -320.0 -50.0 102.283 0.5995 -325.0 -50.0 98.303 0.6075 -330.0 -50.0 98.303 0.6075 -335.0 -50.0 98.303 0.6075 -340.0 -50.0 95.930 0.5816 -345.0 -50.0 95.930 0.5816 -350.0 -50.0 99.418 0.6050 -355.0 -50.0 99.418 0.6050 -360.0 -50.0 99.418 0.6050 -0.0 -45.0 99.418 0.6050 -5.0 -45.0 101.509 0.6830 -10.0 -45.0 103.377 0.6012 -15.0 -45.0 103.417 0.6806 -20.0 -45.0 102.851 0.6067 -25.0 -45.0 102.851 0.6067 -30.0 -45.0 101.394 0.6903 -35.0 -45.0 101.025 0.6032 -40.0 -45.0 100.712 0.6717 -45.0 -45.0 102.315 0.6058 -50.0 -45.0 102.315 0.6058 -55.0 -45.0 101.971 0.6893 -60.0 -45.0 102.735 0.6034 -65.0 -45.0 101.143 0.6770 -70.0 -45.0 102.816 0.6029 -75.0 -45.0 102.816 0.6029 -80.0 -45.0 103.734 0.6029 -85.0 -45.0 103.734 0.6029 -90.0 -45.0 103.734 0.6029 -95.0 -45.0 103.626 0.6552 -100.0 -45.0 103.616 0.5711 -105.0 -45.0 104.319 0.6022 -110.0 -45.0 103.668 0.5072 -115.0 -45.0 103.668 0.5072 -120.0 -45.0 103.062 0.5225 -125.0 -45.0 102.562 0.4144 -130.0 -45.0 101.653 0.4197 -135.0 -45.0 101.935 0.2976 -140.0 -45.0 101.935 0.2976 -145.0 -45.0 100.892 0.2981 -150.0 -45.0 100.638 0.1629 -155.0 -45.0 100.254 0.1631 -160.0 -45.0 99.964 0.0175 -165.0 -45.0 99.964 0.0175 -170.0 -45.0 100.000 -0.1312 -175.0 -45.0 100.000 -0.1312 -180.0 -45.0 100.000 -0.1312 -185.0 -45.0 100.000 -0.2655 -190.0 -45.0 100.000 -0.2267 -195.0 -45.0 100.000 -0.1280 -200.0 -45.0 100.000 -0.0793 -205.0 -45.0 100.000 -0.0793 -210.0 -45.0 99.997 0.0174 -215.0 -45.0 100.611 0.0694 -220.0 -45.0 101.333 0.1602 -225.0 -45.0 102.973 0.2117 -230.0 -45.0 102.973 0.2117 -235.0 -45.0 103.417 0.2942 -240.0 -45.0 106.501 0.3401 -245.0 -45.0 106.585 0.4137 -250.0 -45.0 106.107 0.4478 -255.0 -45.0 106.107 0.4478 -260.0 -45.0 104.661 0.5312 -265.0 -45.0 104.661 0.5312 -270.0 -45.0 104.661 0.5312 -275.0 -45.0 102.940 0.6540 -280.0 -45.0 103.437 0.5863 -285.0 -45.0 101.494 0.6856 -290.0 -45.0 103.272 0.6089 -295.0 -45.0 103.272 0.6089 -300.0 -45.0 102.120 0.6878 -305.0 -45.0 103.697 0.5975 -310.0 -45.0 103.247 0.6603 -315.0 -45.0 102.283 0.5995 -320.0 -45.0 102.283 0.5995 -325.0 -45.0 99.963 0.6859 -330.0 -45.0 98.303 0.6075 -335.0 -45.0 93.412 0.6837 -340.0 -45.0 95.930 0.5816 -345.0 -45.0 95.930 0.5816 -350.0 -45.0 99.418 0.6050 -355.0 -45.0 99.418 0.6050 -360.0 -45.0 99.418 0.6050 -0.0 -40.0 95.576 0.6801 -5.0 -40.0 101.509 0.6830 -10.0 -40.0 101.509 0.6830 -15.0 -40.0 103.417 0.6806 -20.0 -40.0 103.417 0.6806 -25.0 -40.0 101.394 0.6903 -30.0 -40.0 101.394 0.6903 -35.0 -40.0 100.712 0.6717 -40.0 -40.0 100.712 0.6717 -45.0 -40.0 100.712 0.6717 -50.0 -40.0 101.971 0.6893 -55.0 -40.0 101.971 0.6893 -60.0 -40.0 101.143 0.6770 -65.0 -40.0 101.143 0.6770 -70.0 -40.0 100.811 0.6796 -75.0 -40.0 100.811 0.6796 -80.0 -40.0 102.610 0.6796 -85.0 -40.0 102.610 0.6796 -90.0 -40.0 102.610 0.6796 -95.0 -40.0 103.626 0.6552 -100.0 -40.0 103.626 0.6552 -105.0 -40.0 104.319 0.6022 -110.0 -40.0 104.319 0.6022 -115.0 -40.0 103.062 0.5225 -120.0 -40.0 103.062 0.5225 -125.0 -40.0 101.653 0.4197 -130.0 -40.0 101.653 0.4197 -135.0 -40.0 101.653 0.4197 -140.0 -40.0 100.892 0.2981 -145.0 -40.0 100.892 0.2981 -150.0 -40.0 100.254 0.1631 -155.0 -40.0 100.254 0.1631 -160.0 -40.0 99.953 0.0205 -165.0 -40.0 99.953 0.0205 -170.0 -40.0 100.000 -0.1235 -175.0 -40.0 100.000 -0.1235 -180.0 -40.0 100.000 -0.1235 -185.0 -40.0 100.000 -0.2655 -190.0 -40.0 100.000 -0.2655 -195.0 -40.0 100.000 -0.1280 -200.0 -40.0 100.000 -0.1280 -205.0 -40.0 99.997 0.0174 -210.0 -40.0 99.997 0.0174 -215.0 -40.0 101.333 0.1602 -220.0 -40.0 101.333 0.1602 -225.0 -40.0 101.333 0.1602 -230.0 -40.0 103.417 0.2942 -235.0 -40.0 103.417 0.2942 -240.0 -40.0 106.585 0.4137 -245.0 -40.0 106.585 0.4137 -250.0 -40.0 105.716 0.5136 -255.0 -40.0 105.716 0.5136 -260.0 -40.0 104.256 0.5944 -265.0 -40.0 104.256 0.5944 -270.0 -40.0 104.256 0.5944 -275.0 -40.0 102.940 0.6540 -280.0 -40.0 102.940 0.6540 -285.0 -40.0 101.494 0.6856 -290.0 -40.0 101.494 0.6856 -295.0 -40.0 102.120 0.6878 -300.0 -40.0 102.120 0.6878 -305.0 -40.0 103.247 0.6603 -310.0 -40.0 103.247 0.6603 -315.0 -40.0 103.247 0.6603 -320.0 -40.0 99.963 0.6859 -325.0 -40.0 99.963 0.6859 -330.0 -40.0 93.412 0.6837 -335.0 -40.0 93.412 0.6837 -340.0 -40.0 91.020 0.6529 -345.0 -40.0 91.020 0.6529 -350.0 -40.0 95.576 0.6801 -355.0 -40.0 95.576 0.6801 -360.0 -40.0 95.576 0.6801 -0.0 -35.0 99.874 0.7629 -5.0 -35.0 99.874 0.7629 -10.0 -35.0 105.461 0.7464 -15.0 -35.0 105.461 0.7464 -20.0 -35.0 104.322 0.7616 -25.0 -35.0 104.322 0.7616 -30.0 -35.0 101.487 0.7553 -35.0 -35.0 101.487 0.7553 -40.0 -35.0 101.538 0.7562 -45.0 -35.0 101.538 0.7562 -50.0 -35.0 101.538 0.7562 -55.0 -35.0 101.682 0.7612 -60.0 -35.0 101.682 0.7612 -65.0 -35.0 100.458 0.7474 -70.0 -35.0 100.458 0.7474 -75.0 -35.0 101.195 0.7629 -80.0 -35.0 101.195 0.7629 -85.0 -35.0 103.709 0.7474 -90.0 -35.0 103.709 0.7474 -95.0 -35.0 103.709 0.7474 -100.0 -35.0 105.239 0.7015 -105.0 -35.0 105.239 0.7015 -110.0 -35.0 104.756 0.6268 -115.0 -35.0 104.756 0.6268 -120.0 -35.0 101.969 0.5264 -125.0 -35.0 101.969 0.5264 -130.0 -35.0 100.763 0.4040 -135.0 -35.0 100.763 0.4040 -140.0 -35.0 100.763 0.4040 -145.0 -35.0 100.309 0.2644 -150.0 -35.0 100.309 0.2644 -155.0 -35.0 100.076 0.1129 -160.0 -35.0 100.076 0.1129 -165.0 -35.0 100.000 -0.0447 -170.0 -35.0 100.000 -0.0447 -175.0 -35.0 100.000 -0.2022 -180.0 -35.0 100.000 -0.2022 -185.0 -35.0 100.000 -0.2022 -190.0 -35.0 100.000 -0.2069 -195.0 -35.0 100.000 -0.2069 -200.0 -35.0 100.000 -0.0495 -205.0 -35.0 100.000 -0.0495 -210.0 -35.0 100.364 0.1082 -215.0 -35.0 100.364 0.1082 -220.0 -35.0 101.319 0.2600 -225.0 -35.0 101.319 0.2600 -230.0 -35.0 101.319 0.2600 -235.0 -35.0 103.078 0.4000 -240.0 -35.0 103.078 0.4000 -245.0 -35.0 104.224 0.5230 -250.0 -35.0 104.224 0.5230 -255.0 -35.0 104.907 0.6242 -260.0 -35.0 104.907 0.6242 -265.0 -35.0 105.299 0.6996 -270.0 -35.0 105.299 0.6996 -275.0 -35.0 105.299 0.6996 -280.0 -35.0 102.709 0.7465 -285.0 -35.0 102.709 0.7465 -290.0 -35.0 100.929 0.7629 -295.0 -35.0 100.929 0.7629 -300.0 -35.0 103.071 0.7483 -305.0 -35.0 103.071 0.7483 -310.0 -35.0 103.182 0.7470 -315.0 -35.0 103.182 0.7470 -320.0 -35.0 103.182 0.7470 -325.0 -35.0 96.181 0.7629 -330.0 -35.0 96.181 0.7629 -335.0 -35.0 90.253 0.7478 -340.0 -35.0 90.253 0.7478 -345.0 -35.0 92.107 0.7485 -350.0 -35.0 92.107 0.7485 -355.0 -35.0 99.874 0.7629 -360.0 -35.0 99.874 0.7629 -0.0 -30.0 99.691 0.8203 -5.0 -30.0 106.546 0.8191 -10.0 -30.0 106.546 0.8191 -15.0 -30.0 108.098 0.8133 -20.0 -30.0 108.098 0.8133 -25.0 -30.0 104.071 0.8232 -30.0 -30.0 104.071 0.8232 -35.0 -30.0 101.674 0.8016 -40.0 -30.0 101.674 0.8016 -45.0 -30.0 101.674 0.8016 -50.0 -30.0 102.559 0.8235 -55.0 -30.0 102.559 0.8235 -60.0 -30.0 101.860 0.8122 -65.0 -30.0 101.860 0.8122 -70.0 -30.0 101.145 0.8197 -75.0 -30.0 101.145 0.8197 -80.0 -30.0 103.240 0.8197 -85.0 -30.0 103.240 0.8197 -90.0 -30.0 103.240 0.8197 -95.0 -30.0 105.738 0.7868 -100.0 -30.0 105.738 0.7868 -105.0 -30.0 105.704 0.7221 -110.0 -30.0 105.704 0.7221 -115.0 -30.0 102.926 0.6282 -120.0 -30.0 102.926 0.6282 -125.0 -30.0 100.780 0.5087 -130.0 -30.0 100.780 0.5087 -135.0 -30.0 100.780 0.5087 -140.0 -30.0 100.541 0.3681 -145.0 -30.0 100.541 0.3681 -150.0 -30.0 100.376 0.2120 -155.0 -30.0 100.376 0.2120 -160.0 -30.0 100.024 0.0462 -165.0 -30.0 100.024 0.0462 -170.0 -30.0 100.000 -0.1228 -175.0 -30.0 100.000 -0.1228 -180.0 -30.0 100.000 -0.1228 -185.0 -30.0 100.000 -0.2885 -190.0 -30.0 100.000 -0.2885 -195.0 -30.0 100.000 -0.1279 -200.0 -30.0 100.000 -0.1279 -205.0 -30.0 99.976 0.0411 -210.0 -30.0 99.976 0.0411 -215.0 -30.0 100.145 0.2071 -220.0 -30.0 100.145 0.2071 -225.0 -30.0 100.145 0.2071 -230.0 -30.0 100.129 0.3636 -235.0 -30.0 100.129 0.3636 -240.0 -30.0 100.829 0.5047 -245.0 -30.0 100.829 0.5047 -250.0 -30.0 102.398 0.6249 -255.0 -30.0 102.398 0.6249 -260.0 -30.0 105.704 0.7197 -265.0 -30.0 105.704 0.7197 -270.0 -30.0 105.704 0.7197 -275.0 -30.0 106.625 0.7853 -280.0 -30.0 106.625 0.7853 -285.0 -30.0 102.556 0.8192 -290.0 -30.0 102.556 0.8192 -295.0 -30.0 102.755 0.8202 -300.0 -30.0 102.755 0.8202 -305.0 -30.0 104.942 0.7882 -310.0 -30.0 104.942 0.7882 -315.0 -30.0 104.942 0.7882 -320.0 -30.0 100.626 0.8195 -325.0 -30.0 100.626 0.8195 -330.0 -30.0 93.803 0.8199 -335.0 -30.0 93.803 0.8199 -340.0 -30.0 93.421 0.7884 -345.0 -30.0 93.421 0.7884 -350.0 -30.0 99.691 0.8203 -355.0 -30.0 99.691 0.8203 -360.0 -30.0 99.691 0.8203 -0.0 -25.0 105.969 0.8737 -5.0 -25.0 105.969 0.8737 -10.0 -25.0 109.593 0.8551 -15.0 -25.0 109.593 0.8551 -20.0 -25.0 106.871 0.8722 -25.0 -25.0 106.871 0.8722 -30.0 -25.0 102.074 0.8651 -35.0 -25.0 102.074 0.8651 -40.0 -25.0 102.093 0.8661 -45.0 -25.0 102.093 0.8661 -50.0 -25.0 102.093 0.8661 -55.0 -25.0 103.740 0.8717 -60.0 -25.0 103.740 0.8717 -65.0 -25.0 102.363 0.8563 -70.0 -25.0 102.363 0.8563 -75.0 -25.0 102.080 0.8737 -80.0 -25.0 102.080 0.8737 -85.0 -25.0 104.472 0.8563 -90.0 -25.0 104.472 0.8563 -95.0 -25.0 104.472 0.8563 -100.0 -25.0 105.832 0.8048 -105.0 -25.0 105.832 0.8048 -110.0 -25.0 104.127 0.7211 -115.0 -25.0 104.127 0.7211 -120.0 -25.0 101.350 0.6085 -125.0 -25.0 101.350 0.6085 -130.0 -25.0 100.858 0.4712 -135.0 -25.0 100.858 0.4712 -140.0 -25.0 100.858 0.4712 -145.0 -25.0 101.004 0.3147 -150.0 -25.0 101.004 0.3147 -155.0 -25.0 100.542 0.1448 -160.0 -25.0 100.542 0.1448 -165.0 -25.0 100.000 -0.0319 -170.0 -25.0 100.000 -0.0319 -175.0 -25.0 100.000 -0.2086 -180.0 -25.0 100.000 -0.2086 -185.0 -25.0 100.000 -0.2086 -190.0 -25.0 100.000 -0.2138 -195.0 -25.0 100.000 -0.2138 -200.0 -25.0 100.000 -0.0372 -205.0 -25.0 100.000 -0.0372 -210.0 -25.0 100.026 0.1395 -215.0 -25.0 100.026 0.1395 -220.0 -25.0 99.445 0.3097 -225.0 -25.0 99.445 0.3097 -230.0 -25.0 99.445 0.3097 -235.0 -25.0 98.181 0.4668 -240.0 -25.0 98.181 0.4668 -245.0 -25.0 98.302 0.6047 -250.0 -25.0 98.302 0.6047 -255.0 -25.0 102.091 0.7181 -260.0 -25.0 102.091 0.7181 -265.0 -25.0 107.635 0.8027 -270.0 -25.0 107.635 0.8027 -275.0 -25.0 107.635 0.8027 -280.0 -25.0 105.832 0.8553 -285.0 -25.0 105.832 0.8553 -290.0 -25.0 103.654 0.8737 -295.0 -25.0 103.654 0.8737 -300.0 -25.0 106.033 0.8574 -305.0 -25.0 106.033 0.8574 -310.0 -25.0 103.973 0.8559 -315.0 -25.0 103.973 0.8559 -320.0 -25.0 103.973 0.8559 -325.0 -25.0 96.862 0.8737 -330.0 -25.0 96.862 0.8737 -335.0 -25.0 97.071 0.8568 -340.0 -25.0 97.071 0.8568 -345.0 -25.0 101.722 0.8575 -350.0 -25.0 101.722 0.8575 -355.0 -25.0 105.969 0.8737 -360.0 -25.0 105.969 0.8737 -0.0 -20.0 105.969 0.8737 -5.0 -20.0 106.683 0.9089 -10.0 -20.0 106.683 0.9089 -15.0 -20.0 107.628 0.9026 -20.0 -20.0 107.628 0.9026 -25.0 -20.0 103.202 0.9134 -30.0 -20.0 103.202 0.9134 -35.0 -20.0 102.074 0.8651 -40.0 -20.0 100.367 0.8898 -45.0 -20.0 102.093 0.8661 -50.0 -20.0 103.627 0.9136 -55.0 -20.0 103.627 0.9136 -60.0 -20.0 104.146 0.9014 -65.0 -20.0 104.146 0.9014 -70.0 -20.0 101.291 0.9096 -75.0 -20.0 101.291 0.9096 -80.0 -20.0 102.080 0.8737 -85.0 -20.0 100.904 0.9096 -90.0 -20.0 104.472 0.8563 -95.0 -20.0 103.387 0.8736 -100.0 -20.0 103.387 0.8736 -105.0 -20.0 104.199 0.8032 -110.0 -20.0 104.199 0.8032 -115.0 -20.0 102.442 0.7008 -120.0 -20.0 102.442 0.7008 -125.0 -20.0 101.350 0.6085 -130.0 -20.0 101.477 0.5706 -135.0 -20.0 100.858 0.4712 -140.0 -20.0 101.860 0.4174 -145.0 -20.0 101.860 0.4174 -150.0 -20.0 101.372 0.2473 -155.0 -20.0 101.372 0.2473 -160.0 -20.0 100.279 0.0666 -165.0 -20.0 100.279 0.0666 -170.0 -20.0 100.000 -0.0319 -175.0 -20.0 100.000 -0.1176 -180.0 -20.0 100.000 -0.2086 -185.0 -20.0 100.000 -0.2983 -190.0 -20.0 100.000 -0.2983 -195.0 -20.0 100.000 -0.1231 -200.0 -20.0 100.000 -0.1231 -205.0 -20.0 100.089 0.0611 -210.0 -20.0 100.089 0.0611 -215.0 -20.0 100.026 0.1395 -220.0 -20.0 100.185 0.2419 -225.0 -20.0 99.445 0.3097 -230.0 -20.0 98.637 0.4125 -235.0 -20.0 98.637 0.4125 -240.0 -20.0 96.433 0.5663 -245.0 -20.0 96.433 0.5663 -250.0 -20.0 97.370 0.6973 -255.0 -20.0 97.370 0.6973 -260.0 -20.0 102.091 0.7181 -265.0 -20.0 103.266 0.8005 -270.0 -20.0 107.635 0.8027 -275.0 -20.0 107.404 0.8720 -280.0 -20.0 107.404 0.8720 -285.0 -20.0 104.623 0.9090 -290.0 -20.0 104.623 0.9090 -295.0 -20.0 106.995 0.9101 -300.0 -20.0 106.995 0.9101 -305.0 -20.0 106.033 0.8574 -310.0 -20.0 106.815 0.8752 -315.0 -20.0 103.973 0.8559 -320.0 -20.0 99.502 0.9093 -325.0 -20.0 99.502 0.9093 -330.0 -20.0 98.228 0.9098 -335.0 -20.0 98.228 0.9098 -340.0 -20.0 104.818 0.8754 -345.0 -20.0 104.818 0.8754 -350.0 -20.0 101.722 0.8575 -355.0 -20.0 106.237 0.9102 -360.0 -20.0 105.969 0.8737 -0.0 -15.0 102.849 0.9460 -5.0 -15.0 106.683 0.9089 -10.0 -15.0 104.038 0.9263 -15.0 -15.0 104.038 0.9263 -20.0 -15.0 104.166 0.9444 -25.0 -15.0 104.166 0.9444 -30.0 -15.0 99.995 0.9369 -35.0 -15.0 99.995 0.9369 -40.0 -15.0 100.367 0.8898 -45.0 -15.0 100.938 0.9380 -50.0 -15.0 103.627 0.9136 -55.0 -15.0 105.128 0.9439 -60.0 -15.0 105.128 0.9439 -65.0 -15.0 102.015 0.9275 -70.0 -15.0 102.015 0.9275 -75.0 -15.0 97.059 0.9461 -80.0 -15.0 97.059 0.9461 -85.0 -15.0 100.904 0.9096 -90.0 -15.0 97.629 0.9275 -95.0 -15.0 103.387 0.8736 -100.0 -15.0 101.732 0.8726 -105.0 -15.0 101.732 0.8726 -110.0 -15.0 102.997 0.7834 -115.0 -15.0 102.997 0.7834 -120.0 -15.0 102.739 0.6634 -125.0 -15.0 102.739 0.6634 -130.0 -15.0 101.477 0.5706 -135.0 -15.0 102.434 0.5171 -140.0 -15.0 101.860 0.4174 -145.0 -15.0 102.077 0.3502 -150.0 -15.0 102.077 0.3502 -155.0 -15.0 101.032 0.1692 -160.0 -15.0 101.032 0.1692 -165.0 -15.0 100.000 -0.0191 -170.0 -15.0 100.000 -0.0191 -175.0 -15.0 100.000 -0.1176 -180.0 -15.0 100.000 -0.2074 -185.0 -15.0 100.000 -0.2983 -190.0 -15.0 100.000 -0.2130 -195.0 -15.0 100.000 -0.2130 -200.0 -15.0 100.000 -0.0248 -205.0 -15.0 100.000 -0.0248 -210.0 -15.0 100.770 0.1636 -215.0 -15.0 100.770 0.1636 -220.0 -15.0 100.185 0.2419 -225.0 -15.0 100.538 0.3450 -230.0 -15.0 98.637 0.4125 -235.0 -15.0 98.213 0.5123 -240.0 -15.0 98.213 0.5123 -245.0 -15.0 95.863 0.6593 -250.0 -15.0 95.863 0.6593 -255.0 -15.0 98.591 0.7802 -260.0 -15.0 98.591 0.7802 -265.0 -15.0 103.266 0.8005 -270.0 -15.0 105.467 0.8704 -275.0 -15.0 107.404 0.8720 -280.0 -15.0 104.828 0.9264 -285.0 -15.0 104.828 0.9264 -290.0 -15.0 105.246 0.9461 -295.0 -15.0 105.246 0.9461 -300.0 -15.0 108.708 0.9286 -305.0 -15.0 108.708 0.9286 -310.0 -15.0 106.815 0.8752 -315.0 -15.0 103.128 0.9270 -320.0 -15.0 99.502 0.9093 -325.0 -15.0 97.184 0.9461 -330.0 -15.0 97.184 0.9461 -335.0 -15.0 105.034 0.9280 -340.0 -15.0 105.034 0.9280 -345.0 -15.0 108.645 0.9288 -350.0 -15.0 108.645 0.9288 -355.0 -15.0 106.237 0.9102 -360.0 -15.0 102.849 0.9460 -0.0 -10.0 102.849 0.9460 -5.0 -10.0 97.862 0.9649 -10.0 -10.0 97.862 0.9649 -15.0 -10.0 102.904 0.9583 -20.0 -10.0 102.904 0.9583 -25.0 -10.0 102.337 0.9695 -30.0 -10.0 102.337 0.9695 -35.0 -10.0 99.995 0.9369 -40.0 -10.0 99.527 0.9449 -45.0 -10.0 100.938 0.9380 -50.0 -10.0 103.246 0.9698 -55.0 -10.0 103.246 0.9698 -60.0 -10.0 103.625 0.9570 -65.0 -10.0 103.625 0.9570 -70.0 -10.0 96.423 0.9656 -75.0 -10.0 96.423 0.9656 -80.0 -10.0 97.059 0.9461 -85.0 -10.0 91.276 0.9656 -90.0 -10.0 97.629 0.9275 -95.0 -10.0 95.380 0.9280 -100.0 -10.0 95.380 0.9280 -105.0 -10.0 101.814 0.8542 -110.0 -10.0 101.814 0.8542 -115.0 -10.0 103.738 0.7472 -120.0 -10.0 103.738 0.7472 -125.0 -10.0 102.739 0.6634 -130.0 -10.0 103.369 0.6109 -135.0 -10.0 102.434 0.5171 -140.0 -10.0 102.145 0.4507 -145.0 -10.0 102.145 0.4507 -150.0 -10.0 101.325 0.2726 -155.0 -10.0 101.325 0.2726 -160.0 -10.0 100.281 0.0836 -165.0 -10.0 100.281 0.0836 -170.0 -10.0 100.000 -0.0191 -175.0 -10.0 100.000 -0.1091 -180.0 -10.0 100.000 -0.2074 -185.0 -10.0 100.000 -0.2981 -190.0 -10.0 100.000 -0.2981 -195.0 -10.0 100.000 -0.1149 -200.0 -10.0 100.000 -0.1149 -205.0 -10.0 100.454 0.0778 -210.0 -10.0 100.454 0.0778 -215.0 -10.0 100.770 0.1636 -220.0 -10.0 101.629 0.2670 -225.0 -10.0 100.538 0.3450 -230.0 -10.0 100.859 0.4455 -235.0 -10.0 100.859 0.4455 -240.0 -10.0 98.190 0.6064 -245.0 -10.0 98.190 0.6064 -250.0 -10.0 97.352 0.7435 -255.0 -10.0 97.352 0.7435 -260.0 -10.0 98.591 0.7802 -265.0 -10.0 102.159 0.8515 -270.0 -10.0 105.467 0.8704 -275.0 -10.0 105.298 0.9263 -280.0 -10.0 105.298 0.9263 -285.0 -10.0 103.224 0.9650 -290.0 -10.0 103.224 0.9650 -295.0 -10.0 107.812 0.9661 -300.0 -10.0 107.812 0.9661 -305.0 -10.0 108.708 0.9286 -310.0 -10.0 107.074 0.9296 -315.0 -10.0 103.128 0.9270 -320.0 -10.0 98.662 0.9653 -325.0 -10.0 98.662 0.9653 -330.0 -10.0 101.275 0.9658 -335.0 -10.0 101.275 0.9658 -340.0 -10.0 110.192 0.9298 -345.0 -10.0 110.192 0.9298 -350.0 -10.0 108.645 0.9288 -355.0 -10.0 103.273 0.9662 -360.0 -10.0 102.849 0.9460 -0.0 -5.0 95.732 0.9872 -5.0 -5.0 97.862 0.9649 -10.0 -5.0 97.946 0.9668 -15.0 -5.0 97.946 0.9668 -20.0 -5.0 103.956 0.9855 -25.0 -5.0 103.956 0.9855 -30.0 -5.0 101.821 0.9778 -35.0 -5.0 101.821 0.9778 -40.0 -5.0 99.527 0.9449 -45.0 -5.0 101.247 0.9789 -50.0 -5.0 103.246 0.9698 -55.0 -5.0 104.300 0.9850 -60.0 -5.0 104.300 0.9850 -65.0 -5.0 99.276 0.9681 -70.0 -5.0 99.276 0.9681 -75.0 -5.0 89.534 0.9872 -80.0 -5.0 89.534 0.9872 -85.0 -5.0 91.276 0.9656 -90.0 -5.0 87.942 0.9681 -95.0 -5.0 95.380 0.9280 -100.0 -5.0 96.703 0.9116 -105.0 -5.0 96.703 0.9116 -110.0 -5.0 102.888 0.8198 -115.0 -5.0 102.888 0.8198 -120.0 -5.0 104.188 0.6962 -125.0 -5.0 104.188 0.6962 -130.0 -5.0 103.369 0.6109 -135.0 -5.0 102.070 0.5456 -140.0 -5.0 102.145 0.4507 -145.0 -5.0 100.541 0.3739 -150.0 -5.0 100.541 0.3739 -155.0 -5.0 100.154 0.1875 -160.0 -5.0 100.154 0.1875 -165.0 -5.0 100.000 -0.0064 -170.0 -5.0 100.000 -0.0064 -175.0 -5.0 100.000 -0.1091 -180.0 -5.0 100.000 -0.2002 -185.0 -5.0 100.000 -0.2981 -190.0 -5.0 100.000 -0.2060 -195.0 -5.0 100.000 -0.2060 -200.0 -5.0 100.000 -0.0123 -205.0 -5.0 100.000 -0.0123 -210.0 -5.0 101.223 0.1817 -215.0 -5.0 101.223 0.1817 -220.0 -5.0 101.629 0.2670 -225.0 -5.0 101.841 0.3684 -230.0 -5.0 100.859 0.4455 -235.0 -5.0 100.858 0.5407 -240.0 -5.0 100.858 0.5407 -245.0 -5.0 98.834 0.6920 -250.0 -5.0 98.834 0.6920 -255.0 -5.0 101.483 0.8165 -260.0 -5.0 101.483 0.8165 -265.0 -5.0 102.159 0.8515 -270.0 -5.0 106.292 0.9093 -275.0 -5.0 105.298 0.9263 -280.0 -5.0 104.273 0.9670 -285.0 -5.0 104.273 0.9670 -290.0 -5.0 103.641 0.9872 -295.0 -5.0 103.641 0.9872 -300.0 -5.0 107.650 0.9693 -305.0 -5.0 107.650 0.9693 -310.0 -5.0 107.074 0.9296 -315.0 -5.0 103.264 0.9676 -320.0 -5.0 98.662 0.9653 -325.0 -5.0 98.607 0.9872 -330.0 -5.0 98.607 0.9872 -335.0 -5.0 107.169 0.9686 -340.0 -5.0 107.169 0.9686 -345.0 -5.0 107.038 0.9694 -350.0 -5.0 107.038 0.9694 -355.0 -5.0 103.273 0.9662 -360.0 -5.0 95.732 0.9872 -0.0 0.0 95.732 0.9872 -5.0 0.0 94.225 0.9916 -10.0 0.0 94.225 0.9916 -15.0 0.0 101.050 0.9849 -20.0 0.0 101.050 0.9849 -25.0 0.0 104.097 0.9963 -30.0 0.0 104.097 0.9963 -35.0 0.0 101.821 0.9778 -40.0 0.0 101.967 0.9713 -45.0 0.0 101.247 0.9789 -50.0 0.0 102.781 0.9966 -55.0 0.0 102.781 0.9966 -60.0 0.0 102.172 0.9836 -65.0 0.0 102.172 0.9836 -70.0 0.0 93.811 0.9923 -75.0 0.0 93.811 0.9923 -80.0 0.0 89.534 0.9872 -85.0 0.0 85.365 0.9923 -90.0 0.0 87.942 0.9681 -95.0 0.0 89.703 0.9542 -100.0 0.0 89.703 0.9542 -105.0 0.0 99.677 0.8794 -110.0 0.0 99.677 0.8794 -115.0 0.0 103.256 0.7708 -120.0 0.0 103.256 0.7708 -125.0 0.0 104.188 0.6962 -130.0 0.0 101.888 0.6325 -135.0 0.0 102.070 0.5456 -140.0 0.0 98.827 0.4700 -145.0 0.0 98.827 0.4700 -150.0 0.0 98.826 0.2894 -155.0 0.0 98.826 0.2894 -160.0 0.0 99.566 0.0977 -165.0 0.0 99.566 0.0977 -170.0 0.0 100.000 -0.0064 -175.0 0.0 100.000 -0.0977 -180.0 0.0 100.000 -0.2002 -185.0 0.0 100.000 -0.2894 -190.0 0.0 100.000 -0.2894 -195.0 0.0 100.000 -0.1036 -200.0 0.0 100.000 -0.1036 -205.0 0.0 100.236 0.0919 -210.0 0.0 100.236 0.0919 -215.0 0.0 101.223 0.1817 -220.0 0.0 100.856 0.2838 -225.0 0.0 101.841 0.3684 -230.0 0.0 100.485 0.4648 -235.0 0.0 100.485 0.4648 -240.0 0.0 99.468 0.6280 -245.0 0.0 99.468 0.6280 -250.0 0.0 101.001 0.7670 -255.0 0.0 101.001 0.7670 -260.0 0.0 101.483 0.8165 -265.0 0.0 106.547 0.8766 -270.0 0.0 106.292 0.9093 -275.0 0.0 107.761 0.9524 -280.0 0.0 107.761 0.9524 -285.0 0.0 102.995 0.9917 -290.0 0.0 102.995 0.9917 -295.0 0.0 104.616 0.9929 -300.0 0.0 104.616 0.9929 -305.0 0.0 107.650 0.9693 -310.0 0.0 106.228 0.9559 -315.0 0.0 103.264 0.9676 -320.0 0.0 100.725 0.9920 -325.0 0.0 100.725 0.9920 -330.0 0.0 101.693 0.9925 -335.0 0.0 101.693 0.9925 -340.0 0.0 107.509 0.9561 -345.0 0.0 107.509 0.9561 -350.0 0.0 107.038 0.9694 -355.0 0.0 99.787 0.9929 -360.0 0.0 95.732 0.9872 -0.0 5.0 96.531 1.0000 -5.0 5.0 96.531 1.0000 -10.0 5.0 95.817 0.9796 -15.0 5.0 95.817 0.9796 -20.0 5.0 100.634 0.9983 -25.0 5.0 100.634 0.9983 -30.0 5.0 101.800 0.9906 -35.0 5.0 101.800 0.9906 -40.0 5.0 101.967 0.9713 -45.0 5.0 101.858 0.9916 -50.0 5.0 101.858 0.9916 -55.0 5.0 102.595 0.9978 -60.0 5.0 102.595 0.9978 -65.0 5.0 99.355 0.9809 -70.0 5.0 99.355 0.9809 -75.0 5.0 90.150 1.0000 -80.0 5.0 90.150 1.0000 -85.0 5.0 85.365 0.9923 -90.0 5.0 86.061 0.9809 -95.0 5.0 86.061 0.9809 -100.0 5.0 94.251 0.9243 -105.0 5.0 94.251 0.9243 -110.0 5.0 100.563 0.8325 -115.0 5.0 100.563 0.8325 -120.0 5.0 100.912 0.7090 -125.0 5.0 100.912 0.7090 -130.0 5.0 101.888 0.6325 -135.0 5.0 97.762 0.5584 -140.0 5.0 97.762 0.5584 -145.0 5.0 96.551 0.3866 -150.0 5.0 96.551 0.3866 -155.0 5.0 98.103 0.2002 -160.0 5.0 98.103 0.2002 -165.0 5.0 99.917 0.0064 -170.0 5.0 99.917 0.0064 -175.0 5.0 100.000 -0.0977 -180.0 5.0 100.000 -0.1875 -185.0 5.0 100.000 -0.1875 -190.0 5.0 100.000 -0.1932 -195.0 5.0 100.000 -0.1932 -200.0 5.0 99.933 0.0005 -205.0 5.0 99.933 0.0005 -210.0 5.0 99.336 0.1944 -215.0 5.0 99.336 0.1944 -220.0 5.0 100.856 0.2838 -225.0 5.0 98.195 0.3812 -230.0 5.0 98.195 0.3812 -235.0 5.0 97.072 0.5535 -240.0 5.0 97.072 0.5535 -245.0 5.0 97.638 0.7048 -250.0 5.0 97.638 0.7048 -255.0 5.0 103.603 0.8292 -260.0 5.0 103.603 0.8292 -265.0 5.0 106.547 0.8766 -270.0 5.0 108.330 0.9221 -275.0 5.0 108.330 0.9221 -280.0 5.0 106.087 0.9797 -285.0 5.0 106.087 0.9797 -290.0 5.0 101.438 1.0000 -295.0 5.0 101.438 1.0000 -300.0 5.0 104.305 0.9820 -305.0 5.0 104.305 0.9820 -310.0 5.0 106.228 0.9559 -315.0 5.0 104.447 0.9804 -320.0 5.0 104.447 0.9804 -325.0 5.0 99.643 1.0000 -330.0 5.0 99.643 1.0000 -335.0 5.0 102.171 0.9814 -340.0 5.0 102.171 0.9814 -345.0 5.0 103.144 0.9821 -350.0 5.0 103.144 0.9821 -355.0 5.0 99.787 0.9929 -360.0 5.0 96.531 1.0000 -0.0 10.0 99.297 0.9843 -5.0 10.0 95.278 0.9904 -10.0 10.0 95.278 0.9904 -15.0 10.0 92.078 0.9837 -20.0 10.0 92.078 0.9837 +10.0 -55.0 105.795 0.5006 +15.0 -55.0 105.795 0.4983 +20.0 -55.0 103.180 0.5059 +25.0 -55.0 103.180 0.5091 +30.0 -55.0 103.180 0.5080 +35.0 -55.0 102.578 0.5026 +40.0 -55.0 102.578 0.4950 +45.0 -55.0 102.578 0.5039 +50.0 -55.0 103.795 0.5086 +55.0 -55.0 103.795 0.5088 +60.0 -55.0 103.795 0.5048 +65.0 -55.0 104.523 0.4964 +70.0 -55.0 104.523 0.5020 +75.0 -55.0 104.523 0.5078 +80.0 -55.0 104.801 0.5092 +85.0 -55.0 104.801 0.5063 +90.0 -55.0 104.801 0.4990 +95.0 -55.0 103.852 0.4875 +100.0 -55.0 103.852 0.4717 +105.0 -55.0 103.852 0.4520 +110.0 -55.0 103.125 0.4282 +115.0 -55.0 103.125 0.4008 +120.0 -55.0 103.125 0.3698 +125.0 -55.0 102.620 0.3356 +130.0 -55.0 102.620 0.2983 +135.0 -55.0 102.620 0.2582 +140.0 -55.0 101.114 0.2158 +145.0 -55.0 101.114 0.1712 +150.0 -55.0 101.114 0.1248 +155.0 -55.0 99.969 0.0770 +160.0 -55.0 99.969 0.0281 +165.0 -55.0 100.000 -0.0214 +170.0 -55.0 100.000 -0.0713 +175.0 -55.0 100.000 -0.1211 +180.0 -55.0 100.000 -0.1705 +185.0 -55.0 100.000 -0.2190 +190.0 -55.0 100.000 -0.1934 +195.0 -55.0 100.000 -0.1444 +200.0 -55.0 100.000 -0.0948 +205.0 -55.0 100.000 -0.0449 +210.0 -55.0 99.942 0.0049 +215.0 -55.0 101.575 0.0541 +220.0 -55.0 101.575 0.1025 +225.0 -55.0 101.575 0.1496 +230.0 -55.0 104.594 0.1950 +235.0 -55.0 104.594 0.2386 +240.0 -55.0 104.594 0.2798 +245.0 -55.0 105.817 0.3184 +250.0 -55.0 105.817 0.3541 +255.0 -55.0 105.817 0.3867 +260.0 -55.0 105.155 0.4158 +265.0 -55.0 105.155 0.4413 +270.0 -55.0 105.155 0.4629 +275.0 -55.0 104.893 0.4806 +280.0 -55.0 104.893 0.4941 +285.0 -55.0 104.893 0.5034 +290.0 -55.0 104.737 0.5084 +295.0 -55.0 104.737 0.5090 +300.0 -55.0 104.737 0.5053 +305.0 -55.0 103.808 0.4972 +310.0 -55.0 103.808 0.4849 +315.0 -55.0 103.808 0.4972 +320.0 -55.0 102.465 0.5053 +325.0 -55.0 102.465 0.5090 +330.0 -55.0 102.465 0.5084 +335.0 -55.0 101.872 0.5034 +340.0 -55.0 101.872 0.4941 +345.0 -55.0 101.872 0.4898 +350.0 -55.0 104.081 0.5006 +355.0 -55.0 104.081 0.5071 +360.0 -55.0 104.081 0.5093 +0.0 -50.0 99.417 0.5823 +5.0 -50.0 103.377 0.5799 +10.0 -50.0 103.377 0.5726 +15.0 -50.0 105.795 0.5700 +20.0 -50.0 102.850 0.5785 +25.0 -50.0 102.850 0.5822 +30.0 -50.0 101.024 0.5809 +35.0 -50.0 101.024 0.5748 +40.0 -50.0 102.578 0.5664 +45.0 -50.0 102.314 0.5764 +50.0 -50.0 102.314 0.5816 +55.0 -50.0 102.735 0.5819 +60.0 -50.0 102.735 0.5773 +65.0 -50.0 102.735 0.5679 +70.0 -50.0 102.815 0.5742 +75.0 -50.0 102.815 0.5807 +80.0 -50.0 103.733 0.5823 +85.0 -50.0 103.733 0.5790 +90.0 -50.0 103.733 0.5708 +95.0 -50.0 103.615 0.5579 +100.0 -50.0 103.615 0.5403 +105.0 -50.0 103.852 0.5181 +110.0 -50.0 103.668 0.4915 +115.0 -50.0 103.668 0.4608 +120.0 -50.0 102.561 0.4261 +125.0 -50.0 102.561 0.3877 +130.0 -50.0 102.620 0.3459 +135.0 -50.0 101.935 0.3010 +140.0 -50.0 101.935 0.2534 +145.0 -50.0 100.638 0.2034 +150.0 -50.0 100.638 0.1515 +155.0 -50.0 100.638 0.0979 +160.0 -50.0 99.963 0.0431 +165.0 -50.0 100.000 -0.0124 +170.0 -50.0 100.000 -0.0683 +175.0 -50.0 100.000 -0.1241 +180.0 -50.0 100.000 -0.1794 +185.0 -50.0 100.000 -0.2338 +190.0 -50.0 100.000 -0.2051 +195.0 -50.0 100.000 -0.1502 +200.0 -50.0 100.000 -0.0946 +205.0 -50.0 100.000 -0.0387 +210.0 -50.0 100.611 0.0171 +215.0 -50.0 100.611 0.0723 +220.0 -50.0 101.575 0.1265 +225.0 -50.0 102.972 0.1792 +230.0 -50.0 102.972 0.2302 +235.0 -50.0 106.500 0.2790 +240.0 -50.0 106.500 0.3252 +245.0 -50.0 106.500 0.3684 +250.0 -50.0 106.106 0.4085 +255.0 -50.0 106.106 0.4449 +260.0 -50.0 104.660 0.4776 +265.0 -50.0 104.660 0.5062 +270.0 -50.0 104.660 0.5304 +275.0 -50.0 103.436 0.5502 +280.0 -50.0 103.436 0.5653 +285.0 -50.0 104.893 0.5757 +290.0 -50.0 103.271 0.5813 +295.0 -50.0 103.271 0.5820 +300.0 -50.0 103.697 0.5778 +305.0 -50.0 103.697 0.5688 +310.0 -50.0 103.808 0.5550 +315.0 -50.0 102.282 0.5688 +320.0 -50.0 102.282 0.5778 +325.0 -50.0 98.302 0.5820 +330.0 -50.0 98.302 0.5813 +335.0 -50.0 98.302 0.5757 +340.0 -50.0 95.929 0.5653 +345.0 -50.0 95.929 0.5605 +350.0 -50.0 99.417 0.5726 +355.0 -50.0 99.417 0.5799 +360.0 -50.0 99.417 0.5823 +0.0 -45.0 99.417 0.6510 +5.0 -45.0 101.508 0.6483 +10.0 -45.0 103.377 0.6403 +15.0 -45.0 103.417 0.6375 +20.0 -45.0 102.850 0.6468 +25.0 -45.0 102.850 0.6508 +30.0 -45.0 101.393 0.6494 +35.0 -45.0 101.024 0.6427 +40.0 -45.0 100.712 0.6334 +45.0 -45.0 102.314 0.6444 +50.0 -45.0 102.314 0.6501 +55.0 -45.0 101.970 0.6505 +60.0 -45.0 102.735 0.6454 +65.0 -45.0 101.142 0.6351 +70.0 -45.0 102.815 0.6420 +75.0 -45.0 102.815 0.6491 +80.0 -45.0 103.733 0.6509 +85.0 -45.0 103.733 0.6473 +90.0 -45.0 103.733 0.6383 +95.0 -45.0 103.625 0.6241 +100.0 -45.0 103.615 0.6047 +105.0 -45.0 104.318 0.5803 +110.0 -45.0 103.668 0.5511 +115.0 -45.0 103.668 0.5173 +120.0 -45.0 103.061 0.4791 +125.0 -45.0 102.561 0.4368 +130.0 -45.0 101.652 0.3909 +135.0 -45.0 101.935 0.3415 +140.0 -45.0 101.935 0.2891 +145.0 -45.0 100.891 0.2342 +150.0 -45.0 100.638 0.1770 +155.0 -45.0 100.254 0.1181 +160.0 -45.0 99.963 0.0578 +165.0 -45.0 100.000 -0.0033 +170.0 -45.0 100.000 -0.0648 +175.0 -45.0 100.000 -0.1262 +180.0 -45.0 100.000 -0.1870 +185.0 -45.0 100.000 -0.2469 +190.0 -45.0 100.000 -0.2153 +195.0 -45.0 100.000 -0.1549 +200.0 -45.0 100.000 -0.0937 +205.0 -45.0 100.000 -0.0322 +210.0 -45.0 99.996 0.0292 +215.0 -45.0 100.611 0.0899 +220.0 -45.0 101.332 0.1495 +225.0 -45.0 102.972 0.2075 +230.0 -45.0 102.972 0.2636 +235.0 -45.0 103.417 0.3172 +240.0 -45.0 106.500 0.3681 +245.0 -45.0 106.584 0.4157 +250.0 -45.0 106.106 0.4597 +255.0 -45.0 106.106 0.4998 +260.0 -45.0 104.660 0.5357 +265.0 -45.0 104.660 0.5672 +270.0 -45.0 104.660 0.5939 +275.0 -45.0 102.940 0.6156 +280.0 -45.0 103.436 0.6323 +285.0 -45.0 101.494 0.6437 +290.0 -45.0 103.271 0.6499 +295.0 -45.0 103.271 0.6506 +300.0 -45.0 102.120 0.6460 +305.0 -45.0 103.697 0.6361 +310.0 -45.0 103.247 0.6210 +315.0 -45.0 102.282 0.6361 +320.0 -45.0 102.282 0.6460 +325.0 -45.0 99.962 0.6506 +330.0 -45.0 98.302 0.6499 +335.0 -45.0 93.411 0.6437 +340.0 -45.0 95.929 0.6323 +345.0 -45.0 95.929 0.6269 +350.0 -45.0 99.417 0.6403 +355.0 -45.0 99.417 0.6483 +360.0 -45.0 99.417 0.6510 +0.0 -40.0 95.576 0.7147 +5.0 -40.0 101.508 0.7117 +10.0 -40.0 101.508 0.7030 +15.0 -40.0 103.417 0.7000 +20.0 -40.0 103.417 0.7101 +25.0 -40.0 101.393 0.7145 +30.0 -40.0 101.393 0.7130 +35.0 -40.0 100.712 0.7057 +40.0 -40.0 100.712 0.6956 +45.0 -40.0 100.712 0.7076 +50.0 -40.0 101.970 0.7137 +55.0 -40.0 101.970 0.7141 +60.0 -40.0 101.142 0.7087 +65.0 -40.0 101.142 0.6974 +70.0 -40.0 100.810 0.7050 +75.0 -40.0 100.810 0.7127 +80.0 -40.0 102.610 0.7146 +85.0 -40.0 102.610 0.7106 +90.0 -40.0 102.610 0.7009 +95.0 -40.0 103.625 0.6855 +100.0 -40.0 103.625 0.6645 +105.0 -40.0 104.318 0.6381 +110.0 -40.0 104.318 0.6065 +115.0 -40.0 103.061 0.5698 +120.0 -40.0 103.061 0.5284 +125.0 -40.0 101.652 0.4827 +130.0 -40.0 101.652 0.4329 +135.0 -40.0 101.652 0.3794 +140.0 -40.0 100.891 0.3227 +145.0 -40.0 100.891 0.2631 +150.0 -40.0 100.254 0.2012 +155.0 -40.0 100.254 0.1373 +160.0 -40.0 99.953 0.0721 +165.0 -40.0 99.953 0.0059 +170.0 -40.0 100.000 -0.0607 +175.0 -40.0 100.000 -0.1273 +180.0 -40.0 100.000 -0.1932 +185.0 -40.0 100.000 -0.2580 +190.0 -40.0 100.000 -0.2238 +195.0 -40.0 100.000 -0.1584 +200.0 -40.0 100.000 -0.0921 +205.0 -40.0 100.000 -0.0254 +210.0 -40.0 99.996 0.0410 +215.0 -40.0 101.332 0.1068 +220.0 -40.0 101.332 0.1714 +225.0 -40.0 101.332 0.2343 +230.0 -40.0 103.417 0.2950 +235.0 -40.0 103.417 0.3531 +240.0 -40.0 106.584 0.4082 +245.0 -40.0 106.584 0.4598 +250.0 -40.0 105.716 0.5075 +255.0 -40.0 105.716 0.5509 +260.0 -40.0 104.255 0.5898 +265.0 -40.0 104.255 0.6239 +270.0 -40.0 104.255 0.6528 +275.0 -40.0 102.940 0.6764 +280.0 -40.0 102.940 0.6944 +285.0 -40.0 101.494 0.7068 +290.0 -40.0 101.494 0.7134 +295.0 -40.0 102.120 0.7143 +300.0 -40.0 102.120 0.7093 +305.0 -40.0 103.247 0.6986 +310.0 -40.0 103.247 0.6821 +315.0 -40.0 103.247 0.6986 +320.0 -40.0 99.962 0.7093 +325.0 -40.0 99.962 0.7143 +330.0 -40.0 93.411 0.7134 +335.0 -40.0 93.411 0.7068 +340.0 -40.0 91.019 0.6944 +345.0 -40.0 91.019 0.6886 +350.0 -40.0 95.576 0.7030 +355.0 -40.0 95.576 0.7117 +360.0 -40.0 95.576 0.7147 +0.0 -35.0 99.874 0.7729 +5.0 -35.0 99.874 0.7698 +10.0 -35.0 105.461 0.7605 +15.0 -35.0 105.461 0.7572 +20.0 -35.0 104.321 0.7681 +25.0 -35.0 104.321 0.7727 +30.0 -35.0 101.486 0.7711 +35.0 -35.0 101.486 0.7634 +40.0 -35.0 101.537 0.7525 +45.0 -35.0 101.537 0.7653 +50.0 -35.0 101.537 0.7719 +55.0 -35.0 101.681 0.7723 +60.0 -35.0 101.681 0.7665 +65.0 -35.0 100.457 0.7545 +70.0 -35.0 100.457 0.7625 +75.0 -35.0 101.195 0.7708 +80.0 -35.0 101.195 0.7728 +85.0 -35.0 103.709 0.7686 +90.0 -35.0 103.709 0.7582 +95.0 -35.0 103.709 0.7418 +100.0 -35.0 105.238 0.7193 +105.0 -35.0 105.238 0.6910 +110.0 -35.0 104.755 0.6572 +115.0 -35.0 104.755 0.6180 +120.0 -35.0 101.968 0.5738 +125.0 -35.0 101.968 0.5248 +130.0 -35.0 100.762 0.4716 +135.0 -35.0 100.762 0.4144 +140.0 -35.0 100.762 0.3537 +145.0 -35.0 100.309 0.2900 +150.0 -35.0 100.309 0.2238 +155.0 -35.0 100.076 0.1555 +160.0 -35.0 100.076 0.0857 +165.0 -35.0 99.938 0.0150 +170.0 -35.0 100.000 -0.0563 +175.0 -35.0 100.000 -0.1274 +180.0 -35.0 100.000 -0.1979 +185.0 -35.0 100.000 -0.2672 +190.0 -35.0 100.000 -0.2306 +195.0 -35.0 100.000 -0.1606 +200.0 -35.0 100.000 -0.0897 +205.0 -35.0 100.000 -0.0185 +210.0 -35.0 100.363 0.0526 +215.0 -35.0 100.363 0.1229 +220.0 -35.0 101.319 0.1919 +225.0 -35.0 101.319 0.2592 +230.0 -35.0 101.319 0.3241 +235.0 -35.0 103.077 0.3863 +240.0 -35.0 103.077 0.4452 +245.0 -35.0 104.223 0.5003 +250.0 -35.0 104.223 0.5513 +255.0 -35.0 104.906 0.5978 +260.0 -35.0 104.906 0.6394 +265.0 -35.0 105.299 0.6758 +270.0 -35.0 105.299 0.7067 +275.0 -35.0 105.299 0.7319 +280.0 -35.0 102.708 0.7513 +285.0 -35.0 102.708 0.7645 +290.0 -35.0 100.929 0.7716 +295.0 -35.0 100.929 0.7725 +300.0 -35.0 103.071 0.7672 +305.0 -35.0 103.071 0.7557 +310.0 -35.0 103.181 0.7381 +315.0 -35.0 103.181 0.7557 +320.0 -35.0 103.181 0.7672 +325.0 -35.0 96.181 0.7725 +330.0 -35.0 96.181 0.7716 +335.0 -35.0 90.253 0.7645 +340.0 -35.0 90.253 0.7513 +345.0 -35.0 92.107 0.7451 +350.0 -35.0 92.107 0.7605 +355.0 -35.0 99.874 0.7698 +360.0 -35.0 99.874 0.7729 +0.0 -30.0 99.690 0.8253 +5.0 -30.0 106.546 0.8220 +10.0 -30.0 106.546 0.8121 +15.0 -30.0 108.097 0.8087 +20.0 -30.0 108.097 0.8201 +25.0 -30.0 104.070 0.8251 +30.0 -30.0 104.070 0.8234 +35.0 -30.0 101.674 0.8152 +40.0 -30.0 101.674 0.8037 +45.0 -30.0 101.674 0.8172 +50.0 -30.0 102.559 0.8242 +55.0 -30.0 102.559 0.8246 +60.0 -30.0 101.860 0.8185 +65.0 -30.0 101.860 0.8058 +70.0 -30.0 101.144 0.8143 +75.0 -30.0 101.144 0.8230 +80.0 -30.0 103.239 0.8252 +85.0 -30.0 103.239 0.8207 +90.0 -30.0 103.239 0.8098 +95.0 -30.0 105.737 0.7923 +100.0 -30.0 105.737 0.7686 +105.0 -30.0 105.703 0.7387 +110.0 -30.0 105.703 0.7029 +115.0 -30.0 102.925 0.6615 +120.0 -30.0 102.925 0.6147 +125.0 -30.0 100.779 0.5630 +130.0 -30.0 100.779 0.5067 +135.0 -30.0 100.779 0.4463 +140.0 -30.0 100.540 0.3821 +145.0 -30.0 100.540 0.3148 +150.0 -30.0 100.375 0.2448 +155.0 -30.0 100.375 0.1726 +160.0 -30.0 100.024 0.0988 +165.0 -30.0 100.024 0.0240 +170.0 -30.0 100.000 -0.0513 +175.0 -30.0 100.000 -0.1265 +180.0 -30.0 100.000 -0.2011 +185.0 -30.0 100.000 -0.2743 +190.0 -30.0 100.000 -0.2357 +195.0 -30.0 100.000 -0.1617 +200.0 -30.0 100.000 -0.0867 +205.0 -30.0 100.000 -0.0114 +210.0 -30.0 99.976 0.0637 +215.0 -30.0 100.144 0.1381 +220.0 -30.0 100.144 0.2111 +225.0 -30.0 100.144 0.2822 +230.0 -30.0 100.128 0.3508 +235.0 -30.0 100.128 0.4165 +240.0 -30.0 100.829 0.4788 +245.0 -30.0 100.829 0.5371 +250.0 -30.0 102.397 0.5910 +255.0 -30.0 102.397 0.6402 +260.0 -30.0 105.703 0.6841 +265.0 -30.0 105.703 0.7226 +270.0 -30.0 105.703 0.7553 +275.0 -30.0 106.625 0.7820 +280.0 -30.0 106.625 0.8024 +285.0 -30.0 102.556 0.8164 +290.0 -30.0 102.556 0.8239 +295.0 -30.0 102.754 0.8248 +300.0 -30.0 102.754 0.8192 +305.0 -30.0 104.942 0.8071 +310.0 -30.0 104.942 0.7885 +315.0 -30.0 104.942 0.8071 +320.0 -30.0 100.625 0.8192 +325.0 -30.0 100.625 0.8248 +330.0 -30.0 93.802 0.8239 +335.0 -30.0 93.802 0.8164 +340.0 -30.0 93.421 0.8024 +345.0 -30.0 93.421 0.7958 +350.0 -30.0 99.690 0.8121 +355.0 -30.0 99.690 0.8220 +360.0 -30.0 99.690 0.8253 +0.0 -25.0 105.969 0.8713 +5.0 -25.0 105.969 0.8679 +10.0 -25.0 109.592 0.8576 +15.0 -25.0 109.592 0.8540 +20.0 -25.0 106.870 0.8660 +25.0 -25.0 106.870 0.8711 +30.0 -25.0 102.073 0.8694 +35.0 -25.0 102.073 0.8608 +40.0 -25.0 102.093 0.8488 +45.0 -25.0 102.093 0.8629 +50.0 -25.0 102.093 0.8702 +55.0 -25.0 103.739 0.8707 +60.0 -25.0 103.739 0.8642 +65.0 -25.0 102.362 0.8510 +70.0 -25.0 102.362 0.8599 +75.0 -25.0 102.080 0.8690 +80.0 -25.0 102.080 0.8712 +85.0 -25.0 104.471 0.8666 +90.0 -25.0 104.471 0.8551 +95.0 -25.0 104.471 0.8369 +100.0 -25.0 105.831 0.8121 +105.0 -25.0 105.831 0.7808 +110.0 -25.0 104.127 0.7433 +115.0 -25.0 104.127 0.7000 +120.0 -25.0 101.349 0.6510 +125.0 -25.0 101.349 0.5969 +130.0 -25.0 100.857 0.5380 +135.0 -25.0 100.857 0.4747 +140.0 -25.0 100.857 0.4076 +145.0 -25.0 101.003 0.3371 +150.0 -25.0 101.003 0.2638 +155.0 -25.0 100.542 0.1883 +160.0 -25.0 100.542 0.1111 +165.0 -25.0 99.939 0.0328 +170.0 -25.0 100.000 -0.0460 +175.0 -25.0 100.000 -0.1247 +180.0 -25.0 100.000 -0.2027 +185.0 -25.0 100.000 -0.2794 +190.0 -25.0 100.000 -0.2390 +195.0 -25.0 100.000 -0.1615 +200.0 -25.0 100.000 -0.0831 +205.0 -25.0 100.000 -0.0042 +210.0 -25.0 100.026 0.0744 +215.0 -25.0 100.026 0.1522 +220.0 -25.0 99.444 0.2286 +225.0 -25.0 99.444 0.3030 +230.0 -25.0 99.444 0.3748 +235.0 -25.0 98.180 0.4436 +240.0 -25.0 98.180 0.5087 +245.0 -25.0 98.302 0.5698 +250.0 -25.0 98.302 0.6262 +255.0 -25.0 102.091 0.6776 +260.0 -25.0 102.091 0.7237 +265.0 -25.0 107.634 0.7639 +270.0 -25.0 107.634 0.7981 +275.0 -25.0 107.634 0.8260 +280.0 -25.0 105.832 0.8474 +285.0 -25.0 105.832 0.8621 +290.0 -25.0 103.654 0.8699 +295.0 -25.0 103.654 0.8709 +300.0 -25.0 106.032 0.8650 +305.0 -25.0 106.032 0.8523 +310.0 -25.0 103.972 0.8329 +315.0 -25.0 103.972 0.8523 +320.0 -25.0 103.972 0.8650 +325.0 -25.0 96.861 0.8709 +330.0 -25.0 96.861 0.8699 +335.0 -25.0 97.070 0.8621 +340.0 -25.0 97.070 0.8474 +345.0 -25.0 101.722 0.8405 +350.0 -25.0 101.722 0.8576 +355.0 -25.0 105.969 0.8679 +360.0 -25.0 105.969 0.8713 +0.0 -20.0 105.969 0.9108 +5.0 -20.0 106.682 0.9072 +10.0 -20.0 106.682 0.8966 +15.0 -20.0 107.628 0.8928 +20.0 -20.0 107.628 0.9052 +25.0 -20.0 103.201 0.9106 +30.0 -20.0 103.201 0.9088 +35.0 -20.0 102.073 0.8998 +40.0 -20.0 100.367 0.8874 +45.0 -20.0 102.093 0.9021 +50.0 -20.0 103.626 0.9097 +55.0 -20.0 103.626 0.9101 +60.0 -20.0 104.145 0.9034 +65.0 -20.0 104.145 0.8897 +70.0 -20.0 101.290 0.8989 +75.0 -20.0 101.290 0.9084 +80.0 -20.0 102.080 0.9107 +85.0 -20.0 100.903 0.9059 +90.0 -20.0 104.471 0.8940 +95.0 -20.0 103.387 0.8751 +100.0 -20.0 103.387 0.8493 +105.0 -20.0 104.199 0.8169 +110.0 -20.0 104.199 0.7781 +115.0 -20.0 102.442 0.7331 +120.0 -20.0 102.442 0.6824 +125.0 -20.0 101.349 0.6262 +130.0 -20.0 101.476 0.5651 +135.0 -20.0 100.857 0.4995 +140.0 -20.0 101.859 0.4300 +145.0 -20.0 101.859 0.3569 +150.0 -20.0 101.372 0.2809 +155.0 -20.0 101.372 0.2026 +160.0 -20.0 100.279 0.1225 +165.0 -20.0 100.279 0.0413 +170.0 -20.0 100.000 -0.0404 +175.0 -20.0 100.000 -0.1220 +180.0 -20.0 100.000 -0.2028 +185.0 -20.0 100.000 -0.2824 +190.0 -20.0 100.000 -0.2404 +195.0 -20.0 100.000 -0.1601 +200.0 -20.0 100.000 -0.0788 +205.0 -20.0 100.088 0.0030 +210.0 -20.0 100.088 0.0845 +215.0 -20.0 100.026 0.1651 +220.0 -20.0 100.185 0.2443 +225.0 -20.0 99.444 0.3215 +230.0 -20.0 98.637 0.3960 +235.0 -20.0 98.637 0.4673 +240.0 -20.0 96.433 0.5348 +245.0 -20.0 96.433 0.5981 +250.0 -20.0 97.369 0.6566 +255.0 -20.0 97.369 0.7099 +260.0 -20.0 102.091 0.7577 +265.0 -20.0 103.265 0.7994 +270.0 -20.0 107.634 0.8349 +275.0 -20.0 107.404 0.8638 +280.0 -20.0 107.404 0.8860 +285.0 -20.0 104.622 0.9012 +290.0 -20.0 104.622 0.9093 +295.0 -20.0 106.995 0.9103 +300.0 -20.0 106.995 0.9042 +305.0 -20.0 106.032 0.8911 +310.0 -20.0 106.815 0.8709 +315.0 -20.0 103.972 0.8911 +320.0 -20.0 99.502 0.9042 +325.0 -20.0 99.502 0.9103 +330.0 -20.0 98.228 0.9093 +335.0 -20.0 98.228 0.9012 +340.0 -20.0 104.817 0.8860 +345.0 -20.0 104.817 0.8789 +350.0 -20.0 101.722 0.8966 +355.0 -20.0 106.236 0.9072 +360.0 -20.0 105.969 0.9108 +0.0 -15.0 102.848 0.9433 +5.0 -15.0 106.682 0.9396 +10.0 -15.0 104.037 0.9287 +15.0 -15.0 104.037 0.9248 +20.0 -15.0 104.166 0.9376 +25.0 -15.0 104.166 0.9431 +30.0 -15.0 99.994 0.9412 +35.0 -15.0 99.994 0.9321 +40.0 -15.0 100.367 0.9193 +45.0 -15.0 100.937 0.9344 +50.0 -15.0 103.626 0.9421 +55.0 -15.0 105.128 0.9426 +60.0 -15.0 105.128 0.9357 +65.0 -15.0 102.014 0.9216 +70.0 -15.0 102.014 0.9311 +75.0 -15.0 97.059 0.9408 +80.0 -15.0 97.059 0.9432 +85.0 -15.0 100.903 0.9383 +90.0 -15.0 97.628 0.9260 +95.0 -15.0 103.387 0.9066 +100.0 -15.0 101.732 0.8801 +105.0 -15.0 101.732 0.8468 +110.0 -15.0 102.996 0.8069 +115.0 -15.0 102.996 0.7607 +120.0 -15.0 102.738 0.7085 +125.0 -15.0 102.738 0.6508 +130.0 -15.0 101.476 0.5880 +135.0 -15.0 102.433 0.5206 +140.0 -15.0 101.859 0.4490 +145.0 -15.0 102.077 0.3739 +150.0 -15.0 102.077 0.2958 +155.0 -15.0 101.032 0.2153 +160.0 -15.0 101.032 0.1330 +165.0 -15.0 99.939 0.0496 +170.0 -15.0 100.000 -0.0344 +175.0 -15.0 100.000 -0.1183 +180.0 -15.0 100.000 -0.2014 +185.0 -15.0 100.000 -0.2831 +190.0 -15.0 100.000 -0.2400 +195.0 -15.0 100.000 -0.1575 +200.0 -15.0 100.000 -0.0739 +205.0 -15.0 99.937 0.0101 +210.0 -15.0 100.770 0.0939 +215.0 -15.0 100.770 0.1768 +220.0 -15.0 100.185 0.2583 +225.0 -15.0 100.537 0.3376 +230.0 -15.0 98.637 0.4141 +235.0 -15.0 98.212 0.4874 +240.0 -15.0 98.212 0.5569 +245.0 -15.0 95.863 0.6219 +250.0 -15.0 95.863 0.6820 +255.0 -15.0 98.591 0.7369 +260.0 -15.0 98.591 0.7859 +265.0 -15.0 103.265 0.8288 +270.0 -15.0 105.466 0.8653 +275.0 -15.0 107.404 0.8950 +280.0 -15.0 104.827 0.9178 +285.0 -15.0 104.827 0.9334 +290.0 -15.0 105.245 0.9418 +295.0 -15.0 105.245 0.9428 +300.0 -15.0 108.708 0.9366 +305.0 -15.0 108.708 0.9230 +310.0 -15.0 106.815 0.9023 +315.0 -15.0 103.128 0.9230 +320.0 -15.0 99.502 0.9366 +325.0 -15.0 97.184 0.9428 +330.0 -15.0 97.184 0.9418 +335.0 -15.0 105.034 0.9334 +340.0 -15.0 105.034 0.9178 +345.0 -15.0 108.645 0.9105 +350.0 -15.0 108.645 0.9287 +355.0 -15.0 106.236 0.9396 +360.0 -15.0 102.848 0.9433 +0.0 -10.0 102.848 0.9686 +5.0 -10.0 97.861 0.9649 +10.0 -10.0 97.861 0.9537 +15.0 -10.0 102.903 0.9498 +20.0 -10.0 102.903 0.9628 +25.0 -10.0 102.337 0.9684 +30.0 -10.0 102.337 0.9665 +35.0 -10.0 99.994 0.9572 +40.0 -10.0 99.526 0.9442 +45.0 -10.0 100.937 0.9595 +50.0 -10.0 103.245 0.9675 +55.0 -10.0 103.245 0.9679 +60.0 -10.0 103.624 0.9609 +65.0 -10.0 103.624 0.9465 +70.0 -10.0 96.423 0.9562 +75.0 -10.0 96.423 0.9661 +80.0 -10.0 97.059 0.9685 +85.0 -10.0 91.275 0.9635 +90.0 -10.0 97.628 0.9510 +95.0 -10.0 95.379 0.9312 +100.0 -10.0 95.379 0.9042 +105.0 -10.0 101.813 0.8702 +110.0 -10.0 101.813 0.8295 +115.0 -10.0 103.737 0.7824 +120.0 -10.0 103.737 0.7293 +125.0 -10.0 102.738 0.6704 +130.0 -10.0 103.368 0.6064 +135.0 -10.0 102.433 0.5377 +140.0 -10.0 102.144 0.4647 +145.0 -10.0 102.144 0.3882 +150.0 -10.0 101.324 0.3085 +155.0 -10.0 101.324 0.2264 +160.0 -10.0 100.281 0.1425 +165.0 -10.0 100.281 0.0574 +170.0 -10.0 100.000 -0.0282 +175.0 -10.0 100.000 -0.1137 +180.0 -10.0 100.000 -0.1984 +185.0 -10.0 100.000 -0.2818 +190.0 -10.0 100.000 -0.2378 +195.0 -10.0 100.000 -0.1537 +200.0 -10.0 100.000 -0.0684 +205.0 -10.0 100.453 0.0172 +210.0 -10.0 100.453 0.1026 +215.0 -10.0 100.770 0.1872 +220.0 -10.0 101.629 0.2702 +225.0 -10.0 100.537 0.3511 +230.0 -10.0 100.859 0.4291 +235.0 -10.0 100.859 0.5039 +240.0 -10.0 98.189 0.5746 +245.0 -10.0 98.189 0.6410 +250.0 -10.0 97.351 0.7023 +255.0 -10.0 97.351 0.7582 +260.0 -10.0 98.591 0.8082 +265.0 -10.0 102.158 0.8519 +270.0 -10.0 105.466 0.8891 +275.0 -10.0 105.297 0.9194 +280.0 -10.0 105.297 0.9426 +285.0 -10.0 103.223 0.9586 +290.0 -10.0 103.223 0.9671 +295.0 -10.0 107.811 0.9682 +300.0 -10.0 107.811 0.9618 +305.0 -10.0 108.708 0.9480 +310.0 -10.0 107.073 0.9268 +315.0 -10.0 103.128 0.9480 +320.0 -10.0 98.661 0.9618 +325.0 -10.0 98.661 0.9682 +330.0 -10.0 101.275 0.9671 +335.0 -10.0 101.275 0.9586 +340.0 -10.0 110.191 0.9426 +345.0 -10.0 110.191 0.9352 +350.0 -10.0 108.645 0.9537 +355.0 -10.0 103.273 0.9649 +360.0 -10.0 102.848 0.9686 +0.0 -5.0 95.731 0.9866 +5.0 -5.0 97.861 0.9828 +10.0 -5.0 97.945 0.9715 +15.0 -5.0 97.945 0.9676 +20.0 -5.0 103.955 0.9807 +25.0 -5.0 103.955 0.9864 +30.0 -5.0 101.820 0.9845 +35.0 -5.0 101.820 0.9750 +40.0 -5.0 99.526 0.9619 +45.0 -5.0 101.246 0.9774 +50.0 -5.0 103.245 0.9854 +55.0 -5.0 104.299 0.9859 +60.0 -5.0 104.299 0.9788 +65.0 -5.0 99.276 0.9642 +70.0 -5.0 99.276 0.9740 +75.0 -5.0 89.533 0.9840 +80.0 -5.0 89.533 0.9865 +85.0 -5.0 91.275 0.9814 +90.0 -5.0 87.941 0.9688 +95.0 -5.0 95.379 0.9488 +100.0 -5.0 96.702 0.9214 +105.0 -5.0 96.702 0.8871 +110.0 -5.0 102.887 0.8459 +115.0 -5.0 102.887 0.7982 +120.0 -5.0 104.188 0.7445 +125.0 -5.0 104.188 0.6850 +130.0 -5.0 103.368 0.6202 +135.0 -5.0 102.069 0.5506 +140.0 -5.0 102.144 0.4769 +145.0 -5.0 100.541 0.3994 +150.0 -5.0 100.541 0.3189 +155.0 -5.0 100.153 0.2358 +160.0 -5.0 100.153 0.1510 +165.0 -5.0 99.936 0.0649 +170.0 -5.0 100.000 -0.0217 +175.0 -5.0 100.000 -0.1082 +180.0 -5.0 100.000 -0.1940 +185.0 -5.0 100.000 -0.2783 +190.0 -5.0 100.000 -0.2338 +195.0 -5.0 100.000 -0.1487 +200.0 -5.0 100.000 -0.0625 +205.0 -5.0 99.936 0.0242 +210.0 -5.0 101.223 0.1106 +215.0 -5.0 101.223 0.1961 +220.0 -5.0 101.629 0.2801 +225.0 -5.0 101.841 0.3619 +230.0 -5.0 100.859 0.4409 +235.0 -5.0 100.858 0.5165 +240.0 -5.0 100.858 0.5881 +245.0 -5.0 98.833 0.6551 +250.0 -5.0 98.833 0.7172 +255.0 -5.0 101.482 0.7737 +260.0 -5.0 101.482 0.8243 +265.0 -5.0 102.158 0.8686 +270.0 -5.0 106.291 0.9062 +275.0 -5.0 105.297 0.9368 +280.0 -5.0 104.272 0.9603 +285.0 -5.0 104.272 0.9764 +290.0 -5.0 103.640 0.9850 +295.0 -5.0 103.640 0.9861 +300.0 -5.0 107.650 0.9797 +305.0 -5.0 107.650 0.9657 +310.0 -5.0 107.073 0.9443 +315.0 -5.0 103.264 0.9657 +320.0 -5.0 98.661 0.9797 +325.0 -5.0 98.606 0.9861 +330.0 -5.0 98.606 0.9850 +335.0 -5.0 107.169 0.9764 +340.0 -5.0 107.169 0.9603 +345.0 -5.0 107.037 0.9528 +350.0 -5.0 107.037 0.9715 +355.0 -5.0 103.273 0.9828 +360.0 -5.0 95.731 0.9866 +0.0 0.0 95.731 0.9971 +5.0 0.0 94.224 0.9933 +10.0 0.0 94.224 0.9819 +15.0 0.0 101.050 0.9780 +20.0 0.0 101.050 0.9912 +25.0 0.0 104.096 0.9968 +30.0 0.0 104.096 0.9949 +35.0 0.0 101.820 0.9854 +40.0 0.0 101.967 0.9722 +45.0 0.0 101.246 0.9878 +50.0 0.0 102.781 0.9959 +55.0 0.0 102.781 0.9963 +60.0 0.0 102.171 0.9892 +65.0 0.0 102.171 0.9746 +70.0 0.0 93.810 0.9844 +75.0 0.0 93.810 0.9945 +80.0 0.0 89.533 0.9970 +85.0 0.0 85.365 0.9918 +90.0 0.0 87.941 0.9792 +95.0 0.0 89.702 0.9591 +100.0 0.0 89.702 0.9317 +105.0 0.0 99.676 0.8972 +110.0 0.0 99.676 0.8558 +115.0 0.0 103.256 0.8080 +120.0 0.0 103.256 0.7540 +125.0 0.0 104.188 0.6943 +130.0 0.0 101.888 0.6292 +135.0 0.0 102.069 0.5594 +140.0 0.0 98.827 0.4854 +145.0 0.0 98.827 0.4076 +150.0 0.0 98.826 0.3268 +155.0 0.0 98.826 0.2434 +160.0 0.0 99.565 0.1582 +165.0 0.0 99.565 0.0718 +170.0 0.0 100.000 -0.0151 +175.0 0.0 100.000 -0.1020 +180.0 0.0 100.000 -0.1880 +185.0 0.0 100.000 -0.2726 +190.0 0.0 100.000 -0.2280 +195.0 0.0 100.000 -0.1426 +200.0 0.0 100.000 -0.0560 +205.0 0.0 100.235 0.0310 +210.0 0.0 100.235 0.1177 +215.0 0.0 101.223 0.2036 +220.0 0.0 100.855 0.2879 +225.0 0.0 101.841 0.3700 +230.0 0.0 100.484 0.4492 +235.0 0.0 100.484 0.5251 +240.0 0.0 99.467 0.5970 +245.0 0.0 99.467 0.6643 +250.0 0.0 101.001 0.7266 +255.0 0.0 101.001 0.7833 +260.0 0.0 101.482 0.8341 +265.0 0.0 106.547 0.8786 +270.0 0.0 106.291 0.9163 +275.0 0.0 107.760 0.9471 +280.0 0.0 107.760 0.9706 +285.0 0.0 102.995 0.9868 +290.0 0.0 102.995 0.9955 +295.0 0.0 104.616 0.9966 +300.0 0.0 104.616 0.9901 +305.0 0.0 107.650 0.9761 +310.0 0.0 106.227 0.9546 +315.0 0.0 103.264 0.9761 +320.0 0.0 100.725 0.9901 +325.0 0.0 100.725 0.9966 +330.0 0.0 101.693 0.9955 +335.0 0.0 101.693 0.9868 +340.0 0.0 107.508 0.9706 +345.0 0.0 107.508 0.9631 +350.0 0.0 107.037 0.9819 +355.0 0.0 99.787 0.9933 +360.0 0.0 95.731 0.9971 +0.0 5.0 96.530 0.9999 +5.0 5.0 96.530 0.9962 +10.0 5.0 95.816 0.9849 +15.0 5.0 95.816 0.9809 +20.0 5.0 100.634 0.9941 +25.0 5.0 100.634 0.9997 +30.0 5.0 101.800 0.9978 +35.0 5.0 101.800 0.9883 +40.0 5.0 101.967 0.9752 +45.0 5.0 101.857 0.9907 +50.0 5.0 101.857 0.9987 +55.0 5.0 102.594 0.9992 +60.0 5.0 102.594 0.9921 +65.0 5.0 99.354 0.9776 +70.0 5.0 99.354 0.9874 +75.0 5.0 90.150 0.9974 +80.0 5.0 90.150 0.9998 +85.0 5.0 85.365 0.9947 +90.0 5.0 86.061 0.9821 +95.0 5.0 86.061 0.9621 +100.0 5.0 94.251 0.9348 +105.0 5.0 94.251 0.9004 +110.0 5.0 100.562 0.8592 +115.0 5.0 100.562 0.8116 +120.0 5.0 100.911 0.7578 +125.0 5.0 100.911 0.6983 +130.0 5.0 101.888 0.6335 +135.0 5.0 97.761 0.5640 +140.0 5.0 97.761 0.4902 +145.0 5.0 96.551 0.4127 +150.0 5.0 96.551 0.3322 +155.0 5.0 98.102 0.2492 +160.0 5.0 98.102 0.1643 +165.0 5.0 99.917 0.0782 +170.0 5.0 100.000 -0.0084 +175.0 5.0 100.000 -0.0949 +180.0 5.0 100.000 -0.1806 +185.0 5.0 100.000 -0.2649 +190.0 5.0 100.000 -0.2205 +195.0 5.0 100.000 -0.1353 +200.0 5.0 100.000 -0.0491 +205.0 5.0 99.932 0.0375 +210.0 5.0 99.335 0.1239 +215.0 5.0 99.335 0.2094 +220.0 5.0 100.855 0.2934 +225.0 5.0 98.195 0.3752 +230.0 5.0 98.195 0.4542 +235.0 5.0 97.071 0.5298 +240.0 5.0 97.071 0.6014 +245.0 5.0 97.637 0.6685 +250.0 5.0 97.637 0.7305 +255.0 5.0 103.602 0.7870 +260.0 5.0 103.602 0.8376 +265.0 5.0 106.547 0.8819 +270.0 5.0 108.329 0.9195 +275.0 5.0 108.329 0.9501 +280.0 5.0 106.086 0.9736 +285.0 5.0 106.086 0.9897 +290.0 5.0 101.437 0.9984 +295.0 5.0 101.437 0.9995 +300.0 5.0 104.305 0.9930 +305.0 5.0 104.305 0.9790 +310.0 5.0 106.227 0.9577 +315.0 5.0 104.446 0.9790 +320.0 5.0 104.446 0.9930 +325.0 5.0 99.643 0.9995 +330.0 5.0 99.643 0.9984 +335.0 5.0 102.170 0.9897 +340.0 5.0 102.170 0.9736 +345.0 5.0 103.143 0.9661 +350.0 5.0 103.143 0.9849 +355.0 5.0 99.787 0.9962 +360.0 5.0 96.530 0.9999 +0.0 10.0 99.296 0.9952 +5.0 10.0 95.277 0.9915 +10.0 10.0 95.277 0.9803 +15.0 10.0 92.078 0.9764 +20.0 10.0 92.078 0.9894 25.0 10.0 94.882 0.9950 -30.0 10.0 94.882 0.9950 -35.0 10.0 90.291 0.9752 -40.0 10.0 99.214 0.9704 -45.0 10.0 98.285 0.9762 -50.0 10.0 101.196 0.9953 -55.0 10.0 101.196 0.9953 -60.0 10.0 101.421 0.9825 -65.0 10.0 101.421 0.9825 -70.0 10.0 97.101 0.9911 -75.0 10.0 97.101 0.9911 -80.0 10.0 95.848 0.9843 -85.0 10.0 89.708 0.9911 -90.0 10.0 91.623 0.9658 -95.0 10.0 90.780 0.9535 -100.0 10.0 90.780 0.9535 -105.0 10.0 97.290 0.8797 -110.0 10.0 97.290 0.8797 -115.0 10.0 98.988 0.7726 -120.0 10.0 98.988 0.7726 -125.0 10.0 96.775 0.7016 -130.0 10.0 96.920 0.6364 -135.0 10.0 94.667 0.5554 -140.0 10.0 94.703 0.4761 -145.0 10.0 94.703 0.4761 -150.0 10.0 96.077 0.2981 -155.0 10.0 96.077 0.2981 -160.0 10.0 98.690 0.1091 -165.0 10.0 98.690 0.1091 -170.0 10.0 99.823 0.0191 -175.0 10.0 100.000 -0.0836 -180.0 10.0 100.000 -0.1692 -185.0 10.0 100.000 -0.2726 -190.0 10.0 100.000 -0.2726 -195.0 10.0 100.000 -0.0894 -200.0 10.0 100.000 -0.0894 -205.0 10.0 98.844 0.1033 -210.0 10.0 98.844 0.1033 -215.0 10.0 95.501 0.2018 -220.0 10.0 95.993 0.2925 -225.0 10.0 90.038 0.3832 -230.0 10.0 92.784 0.4710 -235.0 10.0 92.784 0.4710 -240.0 10.0 91.417 0.6319 -245.0 10.0 91.417 0.6319 -250.0 10.0 95.608 0.7689 -255.0 10.0 95.608 0.7689 -260.0 10.0 92.536 0.8185 -265.0 10.0 103.516 0.8770 -270.0 10.0 99.028 0.9086 -275.0 10.0 106.375 0.9518 -280.0 10.0 106.375 0.9518 -285.0 10.0 101.534 0.9905 -290.0 10.0 101.534 0.9905 -295.0 10.0 100.205 0.9916 -300.0 10.0 100.205 0.9916 -305.0 10.0 100.860 0.9669 -310.0 10.0 104.549 0.9551 -315.0 10.0 104.054 0.9653 -320.0 10.0 101.994 0.9908 -325.0 10.0 101.994 0.9908 -330.0 10.0 96.753 0.9913 -335.0 10.0 96.753 0.9913 -340.0 10.0 99.363 0.9553 -345.0 10.0 99.363 0.9553 -350.0 10.0 98.510 0.9670 -355.0 10.0 100.581 0.9917 -360.0 10.0 99.297 0.9843 -0.0 15.0 99.297 0.9843 -5.0 15.0 99.297 0.9843 -10.0 15.0 88.073 0.9645 -15.0 15.0 88.073 0.9645 -20.0 15.0 83.152 0.9827 +30.0 10.0 94.882 0.9931 +35.0 10.0 90.290 0.9837 +40.0 10.0 99.214 0.9707 +45.0 10.0 98.284 0.9861 +50.0 10.0 101.195 0.9940 +55.0 10.0 101.195 0.9945 +60.0 10.0 101.421 0.9875 +65.0 10.0 101.421 0.9731 +70.0 10.0 97.100 0.9828 +75.0 10.0 97.100 0.9927 +80.0 10.0 95.848 0.9951 +85.0 10.0 89.708 0.9901 +90.0 10.0 91.622 0.9776 +95.0 10.0 90.780 0.9578 +100.0 10.0 90.780 0.9308 +105.0 10.0 97.289 0.8968 +110.0 10.0 97.289 0.8561 +115.0 10.0 98.988 0.8090 +120.0 10.0 98.988 0.7558 +125.0 10.0 96.775 0.6970 +130.0 10.0 96.919 0.6330 +135.0 10.0 94.667 0.5642 +140.0 10.0 94.703 0.4913 +145.0 10.0 94.703 0.4147 +150.0 10.0 96.077 0.3351 +155.0 10.0 96.077 0.2530 +160.0 10.0 98.690 0.1691 +165.0 10.0 98.690 0.0840 +170.0 10.0 100.000 -0.0016 +175.0 10.0 100.000 -0.0871 +180.0 10.0 100.000 -0.1719 +185.0 10.0 100.000 -0.2552 +190.0 10.0 100.000 -0.2113 +195.0 10.0 100.000 -0.1271 +200.0 10.0 100.000 -0.0419 +205.0 10.0 98.844 0.0438 +210.0 10.0 98.844 0.1292 +215.0 10.0 95.501 0.2137 +220.0 10.0 95.993 0.2968 +225.0 10.0 90.038 0.3776 +230.0 10.0 92.784 0.4557 +235.0 10.0 92.784 0.5304 +240.0 10.0 91.416 0.6012 +245.0 10.0 91.416 0.6675 +250.0 10.0 95.608 0.7288 +255.0 10.0 95.608 0.7847 +260.0 10.0 92.536 0.8347 +265.0 10.0 103.516 0.8785 +270.0 10.0 99.027 0.9157 +275.0 10.0 106.374 0.9460 +280.0 10.0 106.374 0.9692 +285.0 10.0 101.533 0.9851 +290.0 10.0 101.533 0.9937 +295.0 10.0 100.205 0.9947 +300.0 10.0 100.205 0.9883 +305.0 10.0 100.859 0.9745 +310.0 10.0 104.548 0.9534 +315.0 10.0 104.053 0.9745 +320.0 10.0 101.993 0.9883 +325.0 10.0 101.993 0.9947 +330.0 10.0 96.753 0.9937 +335.0 10.0 96.753 0.9851 +340.0 10.0 99.362 0.9692 +345.0 10.0 99.362 0.9617 +350.0 10.0 98.509 0.9803 +355.0 10.0 100.580 0.9915 +360.0 10.0 99.296 0.9952 +0.0 15.0 99.296 0.9829 +5.0 15.0 99.296 0.9792 +10.0 15.0 88.072 0.9683 +15.0 15.0 88.072 0.9644 +20.0 15.0 83.152 0.9772 25.0 15.0 83.152 0.9827 -30.0 15.0 90.291 0.9752 -35.0 15.0 90.291 0.9752 -40.0 15.0 91.519 0.9408 -45.0 15.0 98.285 0.9762 -50.0 15.0 98.285 0.9762 +30.0 15.0 90.290 0.9808 +35.0 15.0 90.290 0.9716 +40.0 15.0 91.519 0.9589 +45.0 15.0 98.284 0.9739 +50.0 15.0 98.284 0.9817 55.0 15.0 100.304 0.9822 -60.0 15.0 100.304 0.9822 -65.0 15.0 100.206 0.9658 -70.0 15.0 100.206 0.9658 -75.0 15.0 95.848 0.9843 -80.0 15.0 95.848 0.9843 -85.0 15.0 95.319 0.9606 -90.0 15.0 91.623 0.9658 -95.0 15.0 91.623 0.9658 -100.0 15.0 94.950 0.9108 -105.0 15.0 94.950 0.9108 -110.0 15.0 97.728 0.8216 -115.0 15.0 97.728 0.8216 -120.0 15.0 96.775 0.7016 -125.0 15.0 96.775 0.7016 -130.0 15.0 96.289 0.6216 -135.0 15.0 94.667 0.5554 -140.0 15.0 94.667 0.5554 -145.0 15.0 94.806 0.3885 -150.0 15.0 94.806 0.3885 -155.0 15.0 97.199 0.2074 -160.0 15.0 97.199 0.2074 -165.0 15.0 99.823 0.0191 -170.0 15.0 99.823 0.0191 -175.0 15.0 100.000 -0.0666 -180.0 15.0 100.000 -0.1692 -185.0 15.0 100.000 -0.1692 -190.0 15.0 100.000 -0.1748 -195.0 15.0 100.000 -0.1748 -200.0 15.0 99.822 0.0134 -205.0 15.0 99.822 0.0134 -210.0 15.0 95.501 0.2018 -215.0 15.0 95.501 0.2018 -220.0 15.0 90.166 0.2929 -225.0 15.0 90.038 0.3832 -230.0 15.0 90.038 0.3832 -235.0 15.0 85.402 0.5506 -240.0 15.0 85.402 0.5506 -245.0 15.0 85.504 0.6976 -250.0 15.0 85.504 0.6976 -255.0 15.0 92.536 0.8185 -260.0 15.0 92.536 0.8185 -265.0 15.0 88.614 0.8515 -270.0 15.0 99.028 0.9086 -275.0 15.0 99.028 0.9086 -280.0 15.0 100.539 0.9646 -285.0 15.0 100.539 0.9646 -290.0 15.0 97.284 0.9843 -295.0 15.0 97.284 0.9843 -300.0 15.0 100.860 0.9669 -305.0 15.0 100.860 0.9669 -310.0 15.0 102.828 0.9262 -315.0 15.0 104.054 0.9653 -320.0 15.0 104.054 0.9653 -325.0 15.0 96.946 0.9843 -330.0 15.0 96.946 0.9843 -335.0 15.0 92.332 0.9663 -340.0 15.0 92.332 0.9663 -345.0 15.0 98.510 0.9670 -350.0 15.0 98.510 0.9670 -355.0 15.0 100.478 0.9612 -360.0 15.0 99.297 0.9843 -0.0 20.0 100.478 0.9612 -5.0 20.0 92.715 0.9599 -10.0 20.0 92.715 0.9599 -15.0 20.0 76.364 0.9536 -20.0 20.0 76.364 0.9536 -25.0 20.0 77.650 0.9644 -30.0 20.0 77.650 0.9644 -35.0 20.0 91.519 0.9408 -40.0 20.0 91.519 0.9408 -45.0 20.0 91.519 0.9408 -50.0 20.0 98.839 0.9646 -55.0 20.0 98.839 0.9646 -60.0 20.0 99.533 0.9524 -65.0 20.0 99.533 0.9524 -70.0 20.0 98.520 0.9606 -75.0 20.0 98.520 0.9606 -80.0 20.0 95.319 0.9606 -85.0 20.0 95.319 0.9606 -90.0 20.0 95.319 0.9606 -95.0 20.0 94.801 0.9246 -100.0 20.0 94.801 0.9246 -105.0 20.0 97.275 0.8542 -110.0 20.0 97.275 0.8542 -115.0 20.0 97.946 0.7518 -120.0 20.0 97.946 0.7518 -125.0 20.0 96.289 0.6216 -130.0 20.0 96.289 0.6216 -135.0 20.0 96.289 0.6216 -140.0 20.0 95.624 0.4684 -145.0 20.0 95.624 0.4684 -150.0 20.0 96.809 0.2983 -155.0 20.0 96.809 0.2983 -160.0 20.0 98.868 0.1176 -165.0 20.0 98.868 0.1176 -170.0 20.0 100.000 -0.0666 -175.0 20.0 100.000 -0.0666 -180.0 20.0 100.000 -0.0666 -185.0 20.0 100.000 -0.2473 -190.0 20.0 100.000 -0.2473 -195.0 20.0 100.000 -0.0721 -200.0 20.0 100.000 -0.0721 -205.0 20.0 96.991 0.1121 -210.0 20.0 96.991 0.1121 -215.0 20.0 90.166 0.2929 -220.0 20.0 90.166 0.2929 -225.0 20.0 90.166 0.2929 -230.0 20.0 82.746 0.4635 -235.0 20.0 82.746 0.4635 -240.0 20.0 78.318 0.6173 -245.0 20.0 78.318 0.6173 -250.0 20.0 80.962 0.7483 -255.0 20.0 80.962 0.7483 -260.0 20.0 88.614 0.8515 -265.0 20.0 88.614 0.8515 -270.0 20.0 88.614 0.8515 -275.0 20.0 94.640 0.9230 -280.0 20.0 94.640 0.9230 -285.0 20.0 95.129 0.9600 -290.0 20.0 95.129 0.9600 -295.0 20.0 96.717 0.9611 -300.0 20.0 96.717 0.9611 -305.0 20.0 102.828 0.9262 -310.0 20.0 102.828 0.9262 -315.0 20.0 102.828 0.9262 -320.0 20.0 101.157 0.9603 -325.0 20.0 101.157 0.9603 -330.0 20.0 90.674 0.9608 -335.0 20.0 90.674 0.9608 -340.0 20.0 91.765 0.9264 -345.0 20.0 91.765 0.9264 -350.0 20.0 100.478 0.9612 -355.0 20.0 100.478 0.9612 -360.0 20.0 100.478 0.9612 -0.0 25.0 99.273 0.9375 -5.0 25.0 99.273 0.9375 -10.0 25.0 82.234 0.9189 -15.0 25.0 82.234 0.9189 -20.0 25.0 71.777 0.9359 -25.0 25.0 71.777 0.9359 -30.0 25.0 83.023 0.9289 -35.0 25.0 83.023 0.9289 -40.0 25.0 96.800 0.9299 -45.0 25.0 96.800 0.9299 -50.0 25.0 96.800 0.9299 -55.0 25.0 99.075 0.9355 -60.0 25.0 99.075 0.9355 -65.0 25.0 97.982 0.9201 -70.0 25.0 97.982 0.9201 -75.0 25.0 96.569 0.9375 -80.0 25.0 96.569 0.9375 -85.0 25.0 95.473 0.9201 -90.0 25.0 95.473 0.9201 -95.0 25.0 95.473 0.9201 -100.0 25.0 97.044 0.8686 -105.0 25.0 97.044 0.8686 -110.0 25.0 99.311 0.7849 -115.0 25.0 99.311 0.7849 -120.0 25.0 99.252 0.6722 -125.0 25.0 99.252 0.6722 -130.0 25.0 98.364 0.5350 -135.0 25.0 98.364 0.5350 -140.0 25.0 98.364 0.5350 -145.0 25.0 98.404 0.3784 -150.0 25.0 98.404 0.3784 -155.0 25.0 99.033 0.2086 -160.0 25.0 99.033 0.2086 -165.0 25.0 99.865 0.0319 -170.0 25.0 99.865 0.0319 -175.0 25.0 100.000 -0.1448 -180.0 25.0 100.000 -0.1448 -185.0 25.0 100.000 -0.1448 -190.0 25.0 100.000 -0.1501 -195.0 25.0 100.000 -0.1501 -200.0 25.0 99.472 0.0265 -205.0 25.0 99.472 0.0265 -210.0 25.0 92.784 0.2033 -215.0 25.0 92.784 0.2033 -220.0 25.0 84.450 0.3735 -225.0 25.0 84.450 0.3735 -230.0 25.0 84.450 0.3735 -235.0 25.0 76.848 0.5305 -240.0 25.0 76.848 0.5305 -245.0 25.0 75.055 0.6684 -250.0 25.0 75.055 0.6684 -255.0 25.0 79.986 0.7819 -260.0 25.0 79.986 0.7819 -265.0 25.0 87.170 0.8665 -270.0 25.0 87.170 0.8665 -275.0 25.0 87.170 0.8665 -280.0 25.0 92.157 0.9190 -285.0 25.0 92.157 0.9190 -290.0 25.0 94.167 0.9375 -295.0 25.0 94.167 0.9375 -300.0 25.0 99.718 0.9211 -305.0 25.0 99.718 0.9211 -310.0 25.0 103.485 0.9196 -315.0 25.0 103.485 0.9196 -320.0 25.0 103.485 0.9196 -325.0 25.0 96.162 0.9375 -330.0 25.0 96.162 0.9375 -335.0 25.0 89.209 0.9205 -340.0 25.0 89.209 0.9205 -345.0 25.0 96.413 0.9212 -350.0 25.0 96.413 0.9212 -355.0 25.0 99.273 0.9375 -360.0 25.0 99.273 0.9375 -0.0 30.0 101.167 0.8968 -5.0 30.0 93.981 0.8957 -10.0 30.0 93.981 0.8957 -15.0 30.0 78.759 0.8899 -20.0 30.0 78.759 0.8899 -25.0 30.0 80.538 0.8998 -30.0 30.0 80.538 0.8998 -35.0 30.0 94.798 0.8781 -40.0 30.0 94.798 0.8781 -45.0 30.0 94.798 0.8781 -50.0 30.0 101.046 0.9000 -55.0 30.0 101.046 0.9000 -60.0 30.0 98.408 0.8888 -65.0 30.0 98.408 0.8888 -70.0 30.0 96.178 0.8963 -75.0 30.0 96.178 0.8963 -80.0 30.0 95.415 0.8963 -85.0 30.0 95.415 0.8963 -90.0 30.0 95.415 0.8963 -95.0 30.0 96.355 0.8633 -100.0 30.0 96.355 0.8633 -105.0 30.0 99.038 0.7986 -110.0 30.0 99.038 0.7986 -115.0 30.0 101.937 0.7047 -120.0 30.0 101.937 0.7047 -125.0 30.0 101.534 0.5852 -130.0 30.0 101.534 0.5852 -135.0 30.0 101.534 0.5852 -140.0 30.0 101.209 0.4447 -145.0 30.0 101.209 0.4447 -150.0 30.0 100.685 0.2885 -155.0 30.0 100.685 0.2885 -160.0 30.0 100.220 0.1228 -165.0 30.0 100.220 0.1228 -170.0 30.0 100.000 -0.0462 -175.0 30.0 100.000 -0.0462 -180.0 30.0 100.000 -0.0462 -185.0 30.0 100.000 -0.2120 -190.0 30.0 100.000 -0.2120 -195.0 30.0 100.000 -0.0513 -200.0 30.0 100.000 -0.0513 -205.0 30.0 96.377 0.1177 -210.0 30.0 96.377 0.1177 -215.0 30.0 89.043 0.2837 -220.0 30.0 89.043 0.2837 -225.0 30.0 89.043 0.2837 -230.0 30.0 80.965 0.4402 -235.0 30.0 80.965 0.4402 -240.0 30.0 76.601 0.5813 -245.0 30.0 76.601 0.5813 -250.0 30.0 78.455 0.7015 -255.0 30.0 78.455 0.7015 -260.0 30.0 84.812 0.7962 -265.0 30.0 84.812 0.7962 -270.0 30.0 84.812 0.7962 -275.0 30.0 90.827 0.8618 -280.0 30.0 90.827 0.8618 -285.0 30.0 93.882 0.8958 -290.0 30.0 93.882 0.8958 -295.0 30.0 97.270 0.8968 -300.0 30.0 97.270 0.8968 -305.0 30.0 102.700 0.8648 -310.0 30.0 102.700 0.8648 -315.0 30.0 102.700 0.8648 -320.0 30.0 102.645 0.8961 -325.0 30.0 102.645 0.8961 -330.0 30.0 94.490 0.8965 -335.0 30.0 94.490 0.8965 -340.0 30.0 94.359 0.8650 -345.0 30.0 94.359 0.8650 -350.0 30.0 101.167 0.8968 -355.0 30.0 101.167 0.8968 -360.0 30.0 101.167 0.8968 -0.0 35.0 101.240 0.8523 -5.0 35.0 101.240 0.8523 -10.0 35.0 91.928 0.8357 -15.0 35.0 91.928 0.8357 -20.0 35.0 87.441 0.8509 -25.0 35.0 87.441 0.8509 -30.0 35.0 95.694 0.8447 -35.0 35.0 95.694 0.8447 -40.0 35.0 103.511 0.8455 -45.0 35.0 103.511 0.8455 -50.0 35.0 103.511 0.8455 -55.0 35.0 101.426 0.8505 -60.0 35.0 101.426 0.8505 -65.0 35.0 97.572 0.8368 -70.0 35.0 97.572 0.8368 -75.0 35.0 95.672 0.8523 -80.0 35.0 95.672 0.8523 -85.0 35.0 95.960 0.8368 -90.0 35.0 95.960 0.8368 -95.0 35.0 95.960 0.8368 -100.0 35.0 97.588 0.7908 -105.0 35.0 97.588 0.7908 -110.0 35.0 100.970 0.7162 -115.0 35.0 100.970 0.7162 -120.0 35.0 102.926 0.6158 -125.0 35.0 102.926 0.6158 -130.0 35.0 103.066 0.4934 -135.0 35.0 103.066 0.4934 -140.0 35.0 103.066 0.4934 -145.0 35.0 102.626 0.3538 -150.0 35.0 102.626 0.3538 -155.0 35.0 101.408 0.2022 -160.0 35.0 101.408 0.2022 -165.0 35.0 100.159 0.0447 -170.0 35.0 100.159 0.0447 -175.0 35.0 100.000 -0.1129 -180.0 35.0 100.000 -0.1129 -185.0 35.0 100.000 -0.1129 -190.0 35.0 100.000 -0.1176 -195.0 35.0 100.000 -0.1176 -200.0 35.0 99.260 0.0399 -205.0 35.0 99.260 0.0399 -210.0 35.0 94.206 0.1976 -215.0 35.0 94.206 0.1976 -220.0 35.0 87.935 0.3493 -225.0 35.0 87.935 0.3493 -230.0 35.0 87.935 0.3493 -235.0 35.0 82.648 0.4894 -240.0 35.0 82.648 0.4894 -245.0 35.0 83.752 0.6124 -250.0 35.0 83.752 0.6124 -255.0 35.0 88.563 0.7135 -260.0 35.0 88.563 0.7135 -265.0 35.0 94.404 0.7890 -270.0 35.0 94.404 0.7890 -275.0 35.0 94.404 0.7890 -280.0 35.0 96.643 0.8359 -285.0 35.0 96.643 0.8359 -290.0 35.0 97.176 0.8523 -295.0 35.0 97.176 0.8523 -300.0 35.0 100.406 0.8377 -305.0 35.0 100.406 0.8377 -310.0 35.0 103.803 0.8364 -315.0 35.0 103.803 0.8364 -320.0 35.0 103.803 0.8364 -325.0 35.0 101.719 0.8523 -330.0 35.0 101.719 0.8523 -335.0 35.0 98.156 0.8372 -340.0 35.0 98.156 0.8372 -345.0 35.0 100.402 0.8378 -350.0 35.0 100.402 0.8378 -355.0 35.0 101.240 0.8523 -360.0 35.0 101.240 0.8523 -0.0 40.0 101.240 0.8523 -5.0 40.0 100.065 0.7854 -10.0 40.0 100.065 0.7854 -15.0 40.0 96.615 0.7826 -20.0 40.0 96.615 0.7826 -25.0 40.0 99.441 0.7922 -30.0 40.0 99.441 0.7922 -35.0 40.0 95.694 0.8447 -40.0 40.0 104.636 0.7736 -45.0 40.0 103.511 0.8455 -50.0 40.0 104.366 0.7913 -55.0 40.0 104.366 0.7913 -60.0 40.0 99.811 0.7795 -65.0 40.0 99.811 0.7795 -70.0 40.0 97.471 0.7827 -75.0 40.0 97.471 0.7827 -80.0 40.0 95.672 0.8523 -85.0 40.0 97.755 0.7827 -90.0 40.0 95.960 0.8368 -95.0 40.0 97.889 0.7577 -100.0 40.0 97.889 0.7577 -105.0 40.0 99.046 0.7042 -110.0 40.0 99.046 0.7042 -115.0 40.0 101.764 0.6244 -120.0 40.0 101.764 0.6244 -125.0 40.0 102.926 0.6158 -130.0 40.0 102.353 0.5215 -135.0 40.0 103.066 0.4934 -140.0 40.0 102.622 0.4002 -145.0 40.0 102.622 0.4002 -150.0 40.0 101.992 0.2655 -155.0 40.0 101.992 0.2655 -160.0 40.0 100.806 0.1235 -165.0 40.0 100.806 0.1235 -170.0 40.0 100.159 0.0447 -175.0 40.0 100.000 -0.0205 -180.0 40.0 100.000 -0.1129 -185.0 40.0 100.000 -0.1631 -190.0 40.0 100.000 -0.1631 -195.0 40.0 100.000 -0.0259 -200.0 40.0 100.000 -0.0259 -205.0 40.0 98.043 0.1193 -210.0 40.0 98.043 0.1193 -215.0 40.0 94.206 0.1976 -220.0 40.0 94.576 0.2620 -225.0 40.0 87.935 0.3493 -230.0 40.0 90.682 0.3963 -235.0 40.0 90.682 0.3963 -240.0 40.0 91.353 0.5162 -245.0 40.0 91.353 0.5162 -250.0 40.0 95.403 0.6167 -255.0 40.0 95.403 0.6167 -260.0 40.0 88.563 0.7135 -265.0 40.0 100.446 0.6974 -270.0 40.0 94.404 0.7890 -275.0 40.0 101.746 0.7564 -280.0 40.0 101.746 0.7564 -285.0 40.0 99.876 0.7877 -290.0 40.0 99.876 0.7877 -295.0 40.0 98.786 0.7896 -300.0 40.0 98.786 0.7896 -305.0 40.0 100.406 0.8377 -310.0 40.0 101.303 0.7621 -315.0 40.0 103.803 0.8364 -320.0 40.0 104.014 0.7879 -325.0 40.0 104.014 0.7879 -330.0 40.0 103.179 0.7861 -335.0 40.0 103.179 0.7861 -340.0 40.0 101.837 0.7560 -345.0 40.0 101.837 0.7560 -350.0 40.0 100.402 0.8378 -355.0 40.0 102.472 0.7831 -360.0 40.0 101.240 0.8523 -0.0 45.0 101.718 0.7187 -5.0 45.0 100.065 0.7854 -10.0 45.0 99.913 0.7148 -15.0 45.0 96.615 0.7826 -20.0 45.0 96.615 0.7826 -25.0 45.0 99.441 0.7922 -30.0 45.0 99.441 0.7922 -35.0 45.0 103.915 0.7166 -40.0 45.0 104.636 0.7736 -45.0 45.0 104.353 0.7192 -50.0 45.0 104.366 0.7913 -55.0 45.0 104.366 0.7913 -60.0 45.0 101.311 0.7169 -65.0 45.0 99.811 0.7795 -70.0 45.0 100.275 0.7166 -75.0 45.0 97.471 0.7827 -80.0 45.0 97.755 0.7827 -85.0 45.0 97.755 0.7827 -90.0 45.0 99.893 0.7166 -95.0 45.0 97.889 0.7577 -100.0 45.0 99.623 0.6846 -105.0 45.0 99.046 0.7042 -110.0 45.0 99.046 0.7042 -115.0 45.0 101.764 0.6244 -120.0 45.0 101.764 0.6244 -125.0 45.0 100.690 0.5278 -130.0 45.0 102.353 0.5215 -135.0 45.0 100.959 0.4110 -140.0 45.0 102.622 0.4002 -145.0 45.0 102.622 0.4002 -150.0 45.0 101.071 0.2765 -155.0 45.0 101.992 0.2655 -160.0 45.0 100.448 0.1312 -165.0 45.0 100.806 0.1235 -170.0 45.0 100.000 -0.0205 -175.0 45.0 100.000 -0.0205 -180.0 45.0 100.000 -0.0175 -185.0 45.0 100.000 -0.1631 -190.0 45.0 100.000 -0.1132 -195.0 45.0 100.000 -0.0259 -200.0 45.0 100.000 -0.0259 -205.0 45.0 98.043 0.1193 -210.0 45.0 98.043 0.1193 -215.0 45.0 98.407 0.1828 -220.0 45.0 94.576 0.2620 -225.0 45.0 96.472 0.3251 -230.0 45.0 90.682 0.3963 -235.0 45.0 90.682 0.3963 -240.0 45.0 97.223 0.4536 -245.0 45.0 91.353 0.5162 -250.0 45.0 101.447 0.5615 -255.0 45.0 95.403 0.6167 -260.0 45.0 100.446 0.6974 -265.0 45.0 100.446 0.6974 -270.0 45.0 105.292 0.6449 -275.0 45.0 101.746 0.7564 -280.0 45.0 103.435 0.6999 -285.0 45.0 99.876 0.7877 -290.0 45.0 99.876 0.7877 -295.0 45.0 98.786 0.7896 -300.0 45.0 98.786 0.7896 -305.0 45.0 98.325 0.7109 -310.0 45.0 101.303 0.7621 -315.0 45.0 101.718 0.7130 -320.0 45.0 104.014 0.7879 -325.0 45.0 104.014 0.7879 -330.0 45.0 104.118 0.7210 -335.0 45.0 103.179 0.7861 -340.0 45.0 102.729 0.6953 -345.0 45.0 101.837 0.7560 -350.0 45.0 102.472 0.7831 -355.0 45.0 102.472 0.7831 -360.0 45.0 101.718 0.7187 -0.0 50.0 101.718 0.7187 -5.0 50.0 99.913 0.7148 -10.0 50.0 99.913 0.7148 -15.0 50.0 100.796 0.7202 -20.0 50.0 100.796 0.7202 -25.0 50.0 100.796 0.7202 -30.0 50.0 103.915 0.7166 -35.0 50.0 103.915 0.7166 -40.0 50.0 103.915 0.7166 -45.0 50.0 104.353 0.7192 -50.0 50.0 104.353 0.7192 -55.0 50.0 101.311 0.7169 -60.0 50.0 101.311 0.7169 -65.0 50.0 101.311 0.7169 -70.0 50.0 100.275 0.7166 -75.0 50.0 100.275 0.7166 -80.0 50.0 99.893 0.7166 -85.0 50.0 99.893 0.7166 -90.0 50.0 99.893 0.7166 -95.0 50.0 99.623 0.6846 -100.0 50.0 99.623 0.6846 -105.0 50.0 99.745 0.6206 -110.0 50.0 99.745 0.6206 -115.0 50.0 99.745 0.6206 -120.0 50.0 100.690 0.5278 -125.0 50.0 100.690 0.5278 -130.0 50.0 100.690 0.5278 -135.0 50.0 100.959 0.4110 -140.0 50.0 100.959 0.4110 -145.0 50.0 101.071 0.2765 -150.0 50.0 101.071 0.2765 -155.0 50.0 101.071 0.2765 -160.0 50.0 100.448 0.1312 -165.0 50.0 100.448 0.1312 -170.0 50.0 100.000 -0.0175 -175.0 50.0 100.000 -0.0175 -180.0 50.0 100.000 -0.0175 -185.0 50.0 100.000 -0.1132 -190.0 50.0 100.000 -0.1132 -195.0 50.0 99.802 0.0341 -200.0 50.0 99.802 0.0341 -205.0 50.0 99.802 0.0341 -210.0 50.0 98.407 0.1828 -215.0 50.0 98.407 0.1828 -220.0 50.0 98.407 0.1828 -225.0 50.0 96.472 0.3251 -230.0 50.0 96.472 0.3251 -235.0 50.0 97.223 0.4536 -240.0 50.0 97.223 0.4536 -245.0 50.0 97.223 0.4536 -250.0 50.0 101.447 0.5615 -255.0 50.0 101.447 0.5615 -260.0 50.0 105.292 0.6449 -265.0 50.0 105.292 0.6449 -270.0 50.0 105.292 0.6449 -275.0 50.0 103.435 0.6999 -280.0 50.0 103.435 0.6999 -285.0 50.0 99.067 0.7223 -290.0 50.0 99.067 0.7223 -295.0 50.0 99.067 0.7223 -300.0 50.0 98.325 0.7109 -305.0 50.0 98.325 0.7109 -310.0 50.0 98.325 0.7109 -315.0 50.0 101.718 0.7130 -320.0 50.0 101.718 0.7130 -325.0 50.0 104.118 0.7210 -330.0 50.0 104.118 0.7210 -335.0 50.0 104.118 0.7210 -340.0 50.0 102.729 0.6953 -345.0 50.0 102.729 0.6953 -350.0 50.0 101.718 0.7187 -355.0 50.0 101.718 0.7187 -360.0 50.0 101.718 0.7187 -0.0 55.0 100.904 0.6402 -5.0 55.0 99.618 0.6310 -10.0 55.0 99.618 0.6310 -15.0 55.0 99.618 0.6310 -20.0 55.0 101.331 0.6438 -25.0 55.0 101.331 0.6438 -30.0 55.0 101.331 0.6438 -35.0 55.0 101.637 0.6327 -40.0 55.0 101.637 0.6327 -45.0 55.0 101.637 0.6327 -50.0 55.0 100.844 0.6416 -55.0 55.0 100.844 0.6416 -60.0 55.0 100.844 0.6416 -65.0 55.0 101.452 0.6362 -70.0 55.0 101.452 0.6362 -75.0 55.0 101.452 0.6362 -80.0 55.0 102.282 0.6362 -85.0 55.0 102.282 0.6362 -90.0 55.0 102.282 0.6362 -95.0 55.0 101.602 0.5987 -100.0 55.0 101.602 0.5987 -105.0 55.0 101.602 0.5987 -110.0 55.0 100.530 0.5235 -115.0 55.0 100.530 0.5235 -120.0 55.0 100.530 0.5235 -125.0 55.0 99.827 0.4161 -130.0 55.0 99.827 0.4161 -135.0 55.0 99.827 0.4161 -140.0 55.0 99.970 0.2843 -145.0 55.0 99.970 0.2843 -150.0 55.0 99.970 0.2843 -155.0 55.0 99.940 0.1376 -160.0 55.0 99.940 0.1376 -165.0 55.0 99.940 0.1376 -170.0 55.0 100.000 -0.0136 -175.0 55.0 100.000 -0.0136 -180.0 55.0 100.000 -0.0136 -185.0 55.0 100.000 -0.0548 -190.0 55.0 100.000 -0.0548 -195.0 55.0 100.000 -0.0548 -200.0 55.0 99.969 0.0965 -205.0 55.0 99.969 0.0965 -210.0 55.0 99.969 0.0965 -215.0 55.0 99.790 0.2457 -220.0 55.0 99.790 0.2457 -225.0 55.0 99.790 0.2457 -230.0 55.0 100.242 0.3818 -235.0 55.0 100.242 0.3818 -240.0 55.0 100.242 0.3818 -245.0 55.0 102.950 0.4952 -250.0 55.0 102.950 0.4952 -255.0 55.0 102.950 0.4952 -260.0 55.0 103.925 0.5799 -265.0 55.0 103.925 0.5799 -270.0 55.0 103.925 0.5799 -275.0 55.0 100.460 0.6311 -280.0 55.0 100.460 0.6311 -285.0 55.0 100.460 0.6311 -290.0 55.0 97.053 0.6427 -295.0 55.0 97.053 0.6427 -300.0 55.0 97.053 0.6427 -305.0 55.0 99.010 0.6236 -310.0 55.0 99.010 0.6236 -315.0 55.0 99.010 0.6236 -320.0 55.0 103.221 0.6429 -325.0 55.0 103.221 0.6429 -330.0 55.0 103.221 0.6429 -335.0 55.0 103.120 0.6218 -340.0 55.0 103.120 0.6218 -345.0 55.0 103.120 0.6218 -350.0 55.0 100.904 0.6402 -355.0 55.0 100.904 0.6402 -360.0 55.0 100.904 0.6402 -0.0 60.0 101.360 0.5553 -5.0 60.0 101.360 0.5553 -10.0 60.0 99.673 0.5504 -15.0 60.0 99.673 0.5504 -20.0 60.0 99.673 0.5504 -25.0 60.0 99.673 0.5504 -30.0 60.0 99.675 0.5542 -35.0 60.0 99.675 0.5542 -40.0 60.0 99.675 0.5542 -45.0 60.0 99.627 0.5580 -50.0 60.0 99.627 0.5580 -55.0 60.0 99.627 0.5580 -60.0 60.0 99.627 0.5580 -65.0 60.0 101.723 0.5495 -70.0 60.0 101.723 0.5495 -75.0 60.0 101.723 0.5495 -80.0 60.0 103.764 0.5495 -85.0 60.0 103.764 0.5495 -90.0 60.0 103.764 0.5495 -95.0 60.0 103.764 0.5495 -100.0 60.0 102.971 0.5044 -105.0 60.0 102.971 0.5044 -110.0 60.0 102.971 0.5044 -115.0 60.0 102.971 0.5044 -120.0 60.0 101.171 0.4146 -125.0 60.0 101.171 0.4146 -130.0 60.0 101.171 0.4146 -135.0 60.0 99.961 0.2895 -140.0 60.0 99.961 0.2895 -145.0 60.0 99.961 0.2895 -150.0 60.0 99.961 0.2895 -155.0 60.0 99.846 0.1429 -160.0 60.0 99.846 0.1429 -165.0 60.0 99.846 0.1429 -170.0 60.0 100.000 -0.0101 -175.0 60.0 100.000 -0.0101 -180.0 60.0 100.000 -0.0101 -185.0 60.0 100.000 -0.0101 -190.0 60.0 99.953 0.0056 -195.0 60.0 99.953 0.0056 -200.0 60.0 99.953 0.0056 -205.0 60.0 99.953 0.0056 -210.0 60.0 100.726 0.1595 -215.0 60.0 100.726 0.1595 -220.0 60.0 100.726 0.1595 -225.0 60.0 101.469 0.3040 -230.0 60.0 101.469 0.3040 -235.0 60.0 101.469 0.3040 -240.0 60.0 101.469 0.3040 -245.0 60.0 101.500 0.4236 -250.0 60.0 101.500 0.4236 -255.0 60.0 101.500 0.4236 -260.0 60.0 99.935 0.5094 -265.0 60.0 99.935 0.5094 -270.0 60.0 99.935 0.5094 -275.0 60.0 99.935 0.5094 -280.0 60.0 97.365 0.5543 -285.0 60.0 97.365 0.5543 -290.0 60.0 97.365 0.5543 -295.0 60.0 97.365 0.5543 -300.0 60.0 97.764 0.5500 -305.0 60.0 97.764 0.5500 -310.0 60.0 97.764 0.5500 -315.0 60.0 102.332 0.5564 -320.0 60.0 102.332 0.5564 -325.0 60.0 102.332 0.5564 -330.0 60.0 102.332 0.5564 -335.0 60.0 103.824 0.5423 -340.0 60.0 103.824 0.5423 -345.0 60.0 103.824 0.5423 -350.0 60.0 101.360 0.5553 -355.0 60.0 101.360 0.5553 -360.0 60.0 101.360 0.5553 -0.0 65.0 102.875 0.4648 -5.0 65.0 102.875 0.4648 -10.0 65.0 102.875 0.4648 -15.0 65.0 100.557 0.4677 -20.0 65.0 100.557 0.4677 -25.0 65.0 100.557 0.4677 -30.0 65.0 100.557 0.4677 -35.0 65.0 99.675 0.5542 -40.0 65.0 99.691 0.4650 -45.0 65.0 99.691 0.4650 -50.0 65.0 99.691 0.4650 -55.0 65.0 99.691 0.4650 -60.0 65.0 101.978 0.4572 -65.0 65.0 101.978 0.4572 -70.0 65.0 101.978 0.4572 -75.0 65.0 101.978 0.4572 -80.0 65.0 104.412 0.4572 -85.0 65.0 104.412 0.4572 -90.0 65.0 104.412 0.4572 -95.0 65.0 104.412 0.4572 -100.0 65.0 104.412 0.4572 -105.0 65.0 103.544 0.4012 -110.0 65.0 103.544 0.4012 -115.0 65.0 103.544 0.4012 -120.0 65.0 103.544 0.4012 -125.0 65.0 101.171 0.4146 -130.0 65.0 101.445 0.2913 -135.0 65.0 101.445 0.2913 -140.0 65.0 101.445 0.2913 -145.0 65.0 101.445 0.2913 -150.0 65.0 100.426 0.1470 -155.0 65.0 100.426 0.1470 -160.0 65.0 100.426 0.1470 -165.0 65.0 100.426 0.1470 -170.0 65.0 100.000 -0.0071 -175.0 65.0 100.000 -0.0071 -180.0 65.0 100.000 -0.0071 -185.0 65.0 100.000 -0.0071 -190.0 65.0 100.000 -0.0071 -195.0 65.0 100.391 0.0675 -200.0 65.0 100.391 0.0675 -205.0 65.0 100.391 0.0675 -210.0 65.0 100.391 0.0675 -215.0 65.0 100.726 0.1595 -220.0 65.0 101.884 0.2202 -225.0 65.0 101.884 0.2202 -230.0 65.0 101.884 0.2202 -235.0 65.0 101.884 0.2202 -240.0 65.0 99.993 0.3475 -245.0 65.0 99.993 0.3475 -250.0 65.0 99.993 0.3475 -255.0 65.0 99.993 0.3475 -260.0 65.0 97.435 0.4339 -265.0 65.0 97.435 0.4339 -270.0 65.0 97.435 0.4339 -275.0 65.0 97.435 0.4339 -280.0 65.0 97.435 0.4339 -285.0 65.0 97.696 0.4684 -290.0 65.0 97.696 0.4684 -295.0 65.0 97.696 0.4684 -300.0 65.0 97.696 0.4684 -305.0 65.0 97.764 0.5500 -310.0 65.0 102.103 0.4605 -315.0 65.0 102.103 0.4605 -320.0 65.0 102.103 0.4605 -325.0 65.0 102.103 0.4605 -330.0 65.0 104.897 0.4574 -335.0 65.0 104.897 0.4574 -340.0 65.0 104.897 0.4574 -345.0 65.0 104.897 0.4574 -350.0 65.0 102.875 0.4648 -355.0 65.0 102.875 0.4648 -360.0 65.0 102.875 0.4648 -0.0 70.0 104.249 0.3692 -5.0 70.0 104.249 0.3692 -10.0 70.0 104.249 0.3692 -15.0 70.0 104.249 0.3692 -20.0 70.0 100.557 0.4677 -25.0 70.0 100.557 0.4677 -30.0 70.0 101.925 0.3718 -35.0 70.0 101.925 0.3718 -40.0 70.0 101.925 0.3718 -45.0 70.0 99.691 0.4650 -50.0 70.0 99.691 0.4650 -55.0 70.0 102.499 0.3642 -60.0 70.0 102.499 0.3642 -65.0 70.0 102.499 0.3642 -70.0 70.0 102.499 0.3642 -75.0 70.0 101.978 0.4572 -80.0 70.0 104.412 0.4572 -85.0 70.0 104.412 0.4572 -90.0 70.0 104.428 0.3599 -95.0 70.0 104.428 0.3599 -100.0 70.0 104.428 0.3599 -105.0 70.0 104.428 0.3599 -110.0 70.0 103.544 0.4012 -115.0 70.0 103.544 0.4012 -120.0 70.0 103.207 0.2862 -125.0 70.0 103.207 0.2862 -130.0 70.0 103.207 0.2862 -135.0 70.0 101.445 0.2913 -140.0 70.0 101.445 0.2913 -145.0 70.0 101.413 0.1497 -150.0 70.0 101.413 0.1497 -155.0 70.0 101.413 0.1497 -160.0 70.0 101.413 0.1497 -165.0 70.0 100.426 0.1470 -170.0 70.0 100.000 -0.0071 -175.0 70.0 100.000 -0.0071 -180.0 70.0 100.000 -0.0042 -185.0 70.0 100.000 -0.0042 -190.0 70.0 100.000 -0.0042 -195.0 70.0 100.000 -0.0042 -200.0 70.0 100.391 0.0675 -205.0 70.0 100.391 0.0675 -210.0 70.0 101.274 0.1298 -215.0 70.0 101.274 0.1298 -220.0 70.0 101.274 0.1298 -225.0 70.0 101.884 0.2202 -230.0 70.0 101.884 0.2202 -235.0 70.0 99.800 0.2674 -240.0 70.0 99.800 0.2674 -245.0 70.0 99.800 0.2674 -250.0 70.0 99.800 0.2674 -255.0 70.0 99.993 0.3475 -260.0 70.0 97.435 0.4339 -265.0 70.0 97.435 0.4339 -270.0 70.0 97.871 0.3537 -275.0 70.0 97.871 0.3537 -280.0 70.0 97.871 0.3537 -285.0 70.0 97.871 0.3537 -290.0 70.0 97.696 0.4684 -295.0 70.0 97.696 0.4684 -300.0 70.0 101.517 0.3692 -305.0 70.0 101.517 0.3692 -310.0 70.0 101.517 0.3692 -315.0 70.0 102.103 0.4605 -320.0 70.0 102.103 0.4605 -325.0 70.0 105.382 0.3676 -330.0 70.0 105.382 0.3676 -335.0 70.0 105.382 0.3676 -340.0 70.0 105.382 0.3676 -345.0 70.0 104.897 0.4574 -350.0 70.0 102.875 0.4648 -355.0 70.0 102.875 0.4648 -360.0 70.0 104.249 0.3692 -0.0 75.0 104.249 0.3692 -5.0 75.0 104.249 0.3692 -10.0 75.0 104.249 0.3692 -15.0 75.0 104.476 0.2685 -20.0 75.0 104.476 0.2685 -25.0 75.0 101.925 0.3718 -30.0 75.0 101.925 0.3718 -35.0 75.0 101.925 0.3718 -40.0 75.0 101.925 0.3718 -45.0 75.0 101.925 0.3718 -50.0 75.0 103.193 0.2721 -55.0 75.0 102.499 0.3642 -60.0 75.0 102.499 0.3642 -65.0 75.0 102.499 0.3642 -70.0 75.0 102.499 0.3642 -75.0 75.0 102.499 0.3642 -80.0 75.0 104.428 0.3599 -85.0 75.0 104.428 0.3599 -90.0 75.0 104.428 0.3599 -95.0 75.0 104.428 0.3599 -100.0 75.0 104.428 0.3599 -105.0 75.0 103.758 0.2575 -110.0 75.0 103.758 0.2575 -115.0 75.0 103.207 0.2862 -120.0 75.0 103.207 0.2862 -125.0 75.0 103.207 0.2862 -130.0 75.0 103.207 0.2862 -135.0 75.0 103.207 0.2862 -140.0 75.0 101.925 0.1504 -145.0 75.0 101.413 0.1497 -150.0 75.0 101.413 0.1497 -155.0 75.0 101.413 0.1497 -160.0 75.0 101.413 0.1497 -165.0 75.0 101.413 0.1497 -170.0 75.0 100.000 -0.0042 -175.0 75.0 100.000 -0.0042 -180.0 75.0 100.000 -0.0042 -185.0 75.0 100.000 -0.0042 -190.0 75.0 100.000 -0.0042 -195.0 75.0 100.229 0.0349 -200.0 75.0 100.229 0.0349 -205.0 75.0 101.274 0.1298 -210.0 75.0 101.274 0.1298 -215.0 75.0 101.274 0.1298 -220.0 75.0 101.274 0.1298 -225.0 75.0 101.274 0.1298 -230.0 75.0 100.451 0.1836 -235.0 75.0 99.800 0.2674 -240.0 75.0 99.800 0.2674 -245.0 75.0 99.800 0.2674 -250.0 75.0 99.800 0.2674 -255.0 75.0 99.800 0.2674 -260.0 75.0 97.871 0.3537 -265.0 75.0 97.871 0.3537 -270.0 75.0 97.871 0.3537 -275.0 75.0 97.871 0.3537 -280.0 75.0 97.871 0.3537 -285.0 75.0 100.146 0.2685 -290.0 75.0 100.146 0.2685 -295.0 75.0 101.517 0.3692 -300.0 75.0 101.517 0.3692 -305.0 75.0 101.517 0.3692 -310.0 75.0 101.517 0.3692 -315.0 75.0 101.517 0.3692 -320.0 75.0 104.462 0.2725 -325.0 75.0 105.382 0.3676 -330.0 75.0 105.382 0.3676 -335.0 75.0 105.382 0.3676 -340.0 75.0 105.382 0.3676 -345.0 75.0 105.382 0.3676 -350.0 75.0 104.249 0.3692 -355.0 75.0 104.249 0.3692 -360.0 75.0 104.249 0.3692 -0.0 80.0 104.476 0.2685 -5.0 80.0 104.476 0.2685 -10.0 80.0 104.476 0.2685 -15.0 80.0 104.476 0.2685 -20.0 80.0 104.476 0.2685 -25.0 80.0 104.476 0.2685 -30.0 80.0 104.476 0.2685 -35.0 80.0 103.193 0.2721 -40.0 80.0 103.193 0.2721 -45.0 80.0 103.193 0.2721 -50.0 80.0 103.193 0.2721 -55.0 80.0 103.193 0.2721 -60.0 80.0 103.193 0.2721 -65.0 80.0 103.193 0.2721 -70.0 80.0 103.193 0.2721 -75.0 80.0 103.193 0.2721 -80.0 80.0 103.758 0.2575 -85.0 80.0 103.758 0.2575 -90.0 80.0 103.758 0.2575 -95.0 80.0 103.758 0.2575 -100.0 80.0 103.758 0.2575 -105.0 80.0 103.758 0.2575 -110.0 80.0 103.758 0.2575 -115.0 80.0 103.758 0.2575 -120.0 80.0 103.758 0.2575 -125.0 80.0 101.925 0.1504 -130.0 80.0 101.925 0.1504 -135.0 80.0 101.925 0.1504 -140.0 80.0 101.925 0.1504 -145.0 80.0 101.925 0.1504 -150.0 80.0 101.925 0.1504 -155.0 80.0 101.925 0.1504 -160.0 80.0 101.925 0.1504 -165.0 80.0 101.925 0.1504 -170.0 80.0 100.229 0.0349 -175.0 80.0 100.229 0.0349 -180.0 80.0 100.229 0.0349 -185.0 80.0 100.229 0.0349 -190.0 80.0 100.229 0.0349 -195.0 80.0 100.229 0.0349 -200.0 80.0 100.229 0.0349 -205.0 80.0 100.229 0.0349 -210.0 80.0 100.229 0.0349 -215.0 80.0 100.451 0.1836 -220.0 80.0 100.451 0.1836 -225.0 80.0 100.451 0.1836 -230.0 80.0 100.451 0.1836 -235.0 80.0 100.451 0.1836 -240.0 80.0 100.451 0.1836 -245.0 80.0 100.451 0.1836 -250.0 80.0 100.451 0.1836 -255.0 80.0 100.451 0.1836 -260.0 80.0 100.146 0.2685 -265.0 80.0 100.146 0.2685 -270.0 80.0 100.146 0.2685 -275.0 80.0 100.146 0.2685 -280.0 80.0 100.146 0.2685 -285.0 80.0 100.146 0.2685 -290.0 80.0 100.146 0.2685 -295.0 80.0 100.146 0.2685 -300.0 80.0 100.146 0.2685 -305.0 80.0 104.462 0.2725 -310.0 80.0 104.462 0.2725 -315.0 80.0 104.462 0.2725 -320.0 80.0 104.462 0.2725 -325.0 80.0 104.462 0.2725 -330.0 80.0 104.462 0.2725 -335.0 80.0 104.462 0.2725 -340.0 80.0 104.462 0.2725 -345.0 80.0 104.462 0.2725 -350.0 80.0 104.476 0.2685 -355.0 80.0 104.476 0.2685 -360.0 80.0 104.476 0.2685 -0.0 85.0 103.233 0.1766 -5.0 85.0 103.233 0.1766 -10.0 85.0 103.233 0.1766 -15.0 85.0 103.233 0.1766 -20.0 85.0 103.233 0.1766 -25.0 85.0 103.233 0.1766 -30.0 85.0 103.233 0.1766 -35.0 85.0 103.233 0.1766 -40.0 85.0 103.233 0.1766 -45.0 85.0 103.233 0.1766 -50.0 85.0 103.233 0.1766 -55.0 85.0 103.233 0.1766 -60.0 85.0 103.233 0.1766 -65.0 85.0 103.233 0.1766 -70.0 85.0 103.233 0.1766 -75.0 85.0 103.233 0.1766 -80.0 85.0 102.032 0.1478 -85.0 85.0 102.032 0.1478 -90.0 85.0 102.032 0.1478 -95.0 85.0 102.032 0.1478 -100.0 85.0 102.032 0.1478 -105.0 85.0 102.032 0.1478 -110.0 85.0 102.032 0.1478 -115.0 85.0 102.032 0.1478 -120.0 85.0 102.032 0.1478 -125.0 85.0 102.032 0.1478 -130.0 85.0 102.032 0.1478 -135.0 85.0 102.032 0.1478 -140.0 85.0 102.032 0.1478 -145.0 85.0 102.032 0.1478 -150.0 85.0 102.032 0.1478 -155.0 85.0 102.032 0.1478 -160.0 85.0 102.032 0.1478 -165.0 85.0 102.032 0.1478 -170.0 85.0 100.624 0.0951 -175.0 85.0 100.624 0.0951 -180.0 85.0 100.624 0.0951 -185.0 85.0 100.624 0.0951 -190.0 85.0 100.624 0.0951 -195.0 85.0 100.624 0.0951 -200.0 85.0 100.624 0.0951 -205.0 85.0 100.624 0.0951 -210.0 85.0 100.624 0.0951 -215.0 85.0 100.624 0.0951 -220.0 85.0 100.624 0.0951 -225.0 85.0 100.624 0.0951 -230.0 85.0 100.624 0.0951 -235.0 85.0 100.624 0.0951 -240.0 85.0 100.624 0.0951 -245.0 85.0 100.624 0.0951 -250.0 85.0 100.624 0.0951 -255.0 85.0 100.624 0.0951 -260.0 85.0 102.181 0.1757 -265.0 85.0 102.181 0.1757 -270.0 85.0 102.181 0.1757 -275.0 85.0 102.181 0.1757 -280.0 85.0 102.181 0.1757 -285.0 85.0 102.181 0.1757 -290.0 85.0 102.181 0.1757 -295.0 85.0 102.181 0.1757 -300.0 85.0 102.181 0.1757 -305.0 85.0 102.181 0.1757 -310.0 85.0 102.181 0.1757 -315.0 85.0 102.181 0.1757 -320.0 85.0 102.181 0.1757 -325.0 85.0 102.181 0.1757 -330.0 85.0 102.181 0.1757 -335.0 85.0 102.181 0.1757 -340.0 85.0 102.181 0.1757 -345.0 85.0 102.181 0.1757 -350.0 85.0 103.233 0.1766 -355.0 85.0 103.233 0.1766 -360.0 85.0 103.233 0.1766 -0.0 90.0 103.233 0.1766 -5.0 90.0 103.233 0.1766 -10.0 90.0 103.233 0.1766 -15.0 90.0 103.233 0.1766 -20.0 90.0 103.233 0.1766 -25.0 90.0 103.233 0.1766 -30.0 90.0 103.233 0.1766 -35.0 90.0 103.233 0.1766 -40.0 90.0 103.233 0.1766 -45.0 90.0 103.233 0.1766 -50.0 90.0 103.233 0.1766 -55.0 90.0 103.233 0.1766 -60.0 90.0 103.233 0.1766 -65.0 90.0 103.233 0.1766 -70.0 90.0 103.233 0.1766 -75.0 90.0 103.233 0.1766 -80.0 90.0 102.032 0.1478 -85.0 90.0 102.032 0.1478 -90.0 90.0 102.032 0.1478 -95.0 90.0 102.032 0.1478 -100.0 90.0 102.032 0.1478 -105.0 90.0 102.032 0.1478 -110.0 90.0 102.032 0.1478 -115.0 90.0 102.032 0.1478 -120.0 90.0 102.032 0.1478 -125.0 90.0 102.032 0.1478 -130.0 90.0 102.032 0.1478 -135.0 90.0 102.032 0.1478 -140.0 90.0 102.032 0.1478 -145.0 90.0 102.032 0.1478 -150.0 90.0 102.032 0.1478 -155.0 90.0 102.032 0.1478 -160.0 90.0 102.032 0.1478 -165.0 90.0 102.032 0.1478 -170.0 90.0 100.624 0.0951 -175.0 90.0 100.624 0.0951 -180.0 90.0 100.624 0.0951 -185.0 90.0 100.624 0.0951 -190.0 90.0 100.624 0.0951 -195.0 90.0 100.624 0.0951 -200.0 90.0 100.624 0.0951 -205.0 90.0 100.624 0.0951 -210.0 90.0 100.624 0.0951 -215.0 90.0 100.624 0.0951 -220.0 90.0 100.624 0.0951 -225.0 90.0 100.624 0.0951 -230.0 90.0 100.624 0.0951 -235.0 90.0 100.624 0.0951 -240.0 90.0 100.624 0.0951 -245.0 90.0 100.624 0.0951 -250.0 90.0 100.624 0.0951 -255.0 90.0 100.624 0.0951 -260.0 90.0 102.181 0.1757 -265.0 90.0 102.181 0.1757 -270.0 90.0 102.181 0.1757 -275.0 90.0 102.181 0.1757 -280.0 90.0 102.181 0.1757 -285.0 90.0 102.181 0.1757 -290.0 90.0 102.181 0.1757 -295.0 90.0 102.181 0.1757 -300.0 90.0 102.181 0.1757 -305.0 90.0 102.181 0.1757 -310.0 90.0 102.181 0.1757 -315.0 90.0 102.181 0.1757 -320.0 90.0 102.181 0.1757 -325.0 90.0 102.181 0.1757 -330.0 90.0 102.181 0.1757 -335.0 90.0 102.181 0.1757 -340.0 90.0 102.181 0.1757 -345.0 90.0 102.181 0.1757 -350.0 90.0 103.233 0.1766 -355.0 90.0 103.233 0.1766 -360.0 90.0 103.233 0.1766 +60.0 15.0 100.304 0.9753 +65.0 15.0 100.205 0.9612 +70.0 15.0 100.205 0.9707 +75.0 15.0 95.848 0.9804 +80.0 15.0 95.848 0.9828 +85.0 15.0 95.318 0.9778 +90.0 15.0 91.622 0.9656 +95.0 15.0 91.622 0.9462 +100.0 15.0 94.950 0.9197 +105.0 15.0 94.950 0.8864 +110.0 15.0 97.728 0.8465 +115.0 15.0 97.728 0.8002 +120.0 15.0 96.775 0.7481 +125.0 15.0 96.775 0.6904 +130.0 15.0 96.288 0.6276 +135.0 15.0 94.667 0.5602 +140.0 15.0 94.667 0.4886 +145.0 15.0 94.805 0.4135 +150.0 15.0 94.805 0.3354 +155.0 15.0 97.198 0.2549 +160.0 15.0 97.198 0.1726 +165.0 15.0 99.823 0.0892 +170.0 15.0 99.823 0.0052 +175.0 15.0 100.000 -0.0787 +180.0 15.0 100.000 -0.1618 +185.0 15.0 100.000 -0.2436 +190.0 15.0 100.000 -0.2005 +195.0 15.0 100.000 -0.1179 +200.0 15.0 100.000 -0.0343 +205.0 15.0 99.822 0.0497 +210.0 15.0 95.501 0.1335 +215.0 15.0 95.501 0.2164 +220.0 15.0 90.165 0.2978 +225.0 15.0 90.038 0.3771 +230.0 15.0 90.038 0.4537 +235.0 15.0 85.402 0.5270 +240.0 15.0 85.402 0.5964 +245.0 15.0 85.504 0.6615 +250.0 15.0 85.504 0.7216 +255.0 15.0 92.536 0.7764 +260.0 15.0 92.536 0.8255 +265.0 15.0 88.614 0.8684 +270.0 15.0 99.027 0.9049 +275.0 15.0 99.027 0.9346 +280.0 15.0 100.538 0.9574 +285.0 15.0 100.538 0.9730 +290.0 15.0 97.283 0.9814 +295.0 15.0 97.283 0.9824 +300.0 15.0 100.859 0.9762 +305.0 15.0 100.859 0.9626 +310.0 15.0 102.827 0.9419 +315.0 15.0 104.053 0.9626 +320.0 15.0 104.053 0.9762 +325.0 15.0 96.946 0.9824 +330.0 15.0 96.946 0.9814 +335.0 15.0 92.332 0.9730 +340.0 15.0 92.332 0.9574 +345.0 15.0 98.509 0.9501 +350.0 15.0 98.509 0.9683 +355.0 15.0 100.478 0.9792 +360.0 15.0 99.296 0.9829 +0.0 20.0 100.478 0.9631 +5.0 20.0 92.715 0.9595 +10.0 20.0 92.715 0.9489 +15.0 20.0 76.363 0.9451 +20.0 20.0 76.363 0.9576 +25.0 20.0 77.650 0.9629 +30.0 20.0 77.650 0.9611 +35.0 20.0 91.519 0.9522 +40.0 20.0 91.519 0.9398 +45.0 20.0 91.519 0.9544 +50.0 20.0 98.839 0.9620 +55.0 20.0 98.839 0.9624 +60.0 20.0 99.533 0.9557 +65.0 20.0 99.533 0.9420 +70.0 20.0 98.519 0.9512 +75.0 20.0 98.519 0.9607 +80.0 20.0 95.318 0.9630 +85.0 20.0 95.318 0.9582 +90.0 20.0 95.318 0.9463 +95.0 20.0 94.800 0.9274 +100.0 20.0 94.800 0.9016 +105.0 20.0 97.275 0.8692 +110.0 20.0 97.275 0.8304 +115.0 20.0 97.945 0.7854 +120.0 20.0 97.945 0.7347 +125.0 20.0 96.288 0.6785 +130.0 20.0 96.288 0.6174 +135.0 20.0 96.288 0.5519 +140.0 20.0 95.623 0.4823 +145.0 20.0 95.623 0.4092 +150.0 20.0 96.809 0.3332 +155.0 20.0 96.809 0.2549 +160.0 20.0 98.867 0.1748 +165.0 20.0 98.867 0.0936 +170.0 20.0 99.932 0.0119 +175.0 20.0 100.000 -0.0697 +180.0 20.0 100.000 -0.1505 +185.0 20.0 100.000 -0.2301 +190.0 20.0 100.000 -0.1881 +195.0 20.0 100.000 -0.1078 +200.0 20.0 100.000 -0.0265 +205.0 20.0 96.990 0.0553 +210.0 20.0 96.990 0.1368 +215.0 20.0 90.165 0.2174 +220.0 20.0 90.165 0.2966 +225.0 20.0 90.165 0.3738 +230.0 20.0 82.746 0.4483 +235.0 20.0 82.746 0.5196 +240.0 20.0 78.317 0.5871 +245.0 20.0 78.317 0.6504 +250.0 20.0 80.962 0.7089 +255.0 20.0 80.962 0.7623 +260.0 20.0 88.614 0.8100 +265.0 20.0 88.614 0.8517 +270.0 20.0 88.614 0.8872 +275.0 20.0 94.640 0.9161 +280.0 20.0 94.640 0.9383 +285.0 20.0 95.128 0.9535 +290.0 20.0 95.128 0.9616 +295.0 20.0 96.716 0.9626 +300.0 20.0 96.716 0.9565 +305.0 20.0 102.827 0.9434 +310.0 20.0 102.827 0.9232 +315.0 20.0 102.827 0.9434 +320.0 20.0 101.157 0.9565 +325.0 20.0 101.157 0.9626 +330.0 20.0 90.674 0.9616 +335.0 20.0 90.674 0.9535 +340.0 20.0 91.765 0.9383 +345.0 20.0 91.765 0.9312 +350.0 20.0 100.478 0.9489 +355.0 20.0 100.478 0.9595 +360.0 20.0 100.478 0.9631 +0.0 25.0 99.272 0.9360 +5.0 25.0 99.272 0.9325 +10.0 25.0 82.234 0.9222 +15.0 25.0 82.234 0.9186 +20.0 25.0 71.777 0.9306 +25.0 25.0 71.777 0.9358 +30.0 25.0 83.022 0.9340 +35.0 25.0 83.022 0.9254 +40.0 25.0 96.799 0.9135 +45.0 25.0 96.799 0.9276 +50.0 25.0 96.799 0.9349 +55.0 25.0 99.075 0.9353 +60.0 25.0 99.075 0.9289 +65.0 25.0 97.981 0.9156 +70.0 25.0 97.981 0.9245 +75.0 25.0 96.569 0.9336 +80.0 25.0 96.569 0.9359 +85.0 25.0 95.472 0.9312 +90.0 25.0 95.472 0.9198 +95.0 25.0 95.472 0.9015 +100.0 25.0 97.044 0.8767 +105.0 25.0 97.044 0.8454 +110.0 25.0 99.311 0.8080 +115.0 25.0 99.311 0.7646 +120.0 25.0 99.252 0.7157 +125.0 25.0 99.252 0.6615 +130.0 25.0 98.364 0.6026 +135.0 25.0 98.364 0.5393 +140.0 25.0 98.364 0.4722 +145.0 25.0 98.404 0.4017 +150.0 25.0 98.404 0.3285 +155.0 25.0 99.032 0.2529 +160.0 25.0 99.032 0.1757 +165.0 25.0 99.865 0.0974 +170.0 25.0 99.865 0.0186 +175.0 25.0 100.000 -0.0601 +180.0 25.0 100.000 -0.1381 +185.0 25.0 100.000 -0.2148 +190.0 25.0 100.000 -0.1743 +195.0 25.0 100.000 -0.0969 +200.0 25.0 100.000 -0.0184 +205.0 25.0 99.471 0.0604 +210.0 25.0 92.784 0.1390 +215.0 25.0 92.784 0.2168 +220.0 25.0 84.450 0.2932 +225.0 25.0 84.450 0.3676 +230.0 25.0 84.450 0.4395 +235.0 25.0 76.848 0.5082 +240.0 25.0 76.848 0.5734 +245.0 25.0 75.055 0.6344 +250.0 25.0 75.055 0.6908 +255.0 25.0 79.985 0.7423 +260.0 25.0 79.985 0.7883 +265.0 25.0 87.170 0.8286 +270.0 25.0 87.170 0.8628 +275.0 25.0 87.170 0.8907 +280.0 25.0 92.156 0.9120 +285.0 25.0 92.156 0.9267 +290.0 25.0 94.166 0.9345 +295.0 25.0 94.166 0.9355 +300.0 25.0 99.717 0.9296 +305.0 25.0 99.717 0.9169 +310.0 25.0 103.485 0.8975 +315.0 25.0 103.485 0.9169 +320.0 25.0 103.485 0.9297 +325.0 25.0 96.161 0.9355 +330.0 25.0 96.161 0.9345 +335.0 25.0 89.208 0.9267 +340.0 25.0 89.208 0.9120 +345.0 25.0 96.412 0.9052 +350.0 25.0 96.412 0.9222 +355.0 25.0 99.272 0.9325 +360.0 25.0 99.272 0.9360 +0.0 30.0 101.167 0.9017 +5.0 30.0 93.980 0.8984 +10.0 30.0 93.980 0.8886 +15.0 30.0 78.759 0.8852 +20.0 30.0 78.759 0.8966 +25.0 30.0 80.537 0.9015 +30.0 30.0 80.537 0.8999 +35.0 30.0 94.798 0.8916 +40.0 30.0 94.798 0.8802 +45.0 30.0 94.798 0.8937 +50.0 30.0 101.045 0.9007 +55.0 30.0 101.045 0.9011 +60.0 30.0 98.407 0.8949 +65.0 30.0 98.407 0.8823 +70.0 30.0 96.177 0.8908 +75.0 30.0 96.177 0.8995 +80.0 30.0 95.414 0.9016 +85.0 30.0 95.414 0.8972 +90.0 30.0 95.414 0.8862 +95.0 30.0 96.354 0.8688 +100.0 30.0 96.354 0.8451 +105.0 30.0 99.037 0.8152 +110.0 30.0 99.037 0.7794 +115.0 30.0 101.937 0.7380 +120.0 30.0 101.937 0.6912 +125.0 30.0 101.533 0.6395 +130.0 30.0 101.533 0.5832 +135.0 30.0 101.533 0.5227 +140.0 30.0 101.208 0.4586 +145.0 30.0 101.208 0.3912 +150.0 30.0 100.685 0.3212 +155.0 30.0 100.685 0.2490 +160.0 30.0 100.219 0.1753 +165.0 30.0 100.219 0.1004 +170.0 30.0 99.935 0.0251 +175.0 30.0 100.000 -0.0501 +180.0 30.0 100.000 -0.1246 +185.0 30.0 100.000 -0.1979 +190.0 30.0 100.000 -0.1592 +195.0 30.0 100.000 -0.0852 +200.0 30.0 100.000 -0.0103 +205.0 30.0 96.377 0.0651 +210.0 30.0 96.377 0.1402 +215.0 30.0 89.043 0.2145 +220.0 30.0 89.043 0.2875 +225.0 30.0 89.043 0.3586 +230.0 30.0 80.964 0.4273 +235.0 30.0 80.964 0.4930 +240.0 30.0 76.600 0.5552 +245.0 30.0 76.600 0.6136 +250.0 30.0 78.455 0.6675 +255.0 30.0 78.455 0.7166 +260.0 30.0 84.811 0.7606 +265.0 30.0 84.811 0.7991 +270.0 30.0 84.811 0.8318 +275.0 30.0 90.826 0.8584 +280.0 30.0 90.826 0.8788 +285.0 30.0 93.882 0.8929 +290.0 30.0 93.882 0.9004 +295.0 30.0 97.269 0.9013 +300.0 30.0 97.269 0.8957 +305.0 30.0 102.699 0.8835 +310.0 30.0 102.699 0.8650 +315.0 30.0 102.699 0.8835 +320.0 30.0 102.645 0.8957 +325.0 30.0 102.645 0.9013 +330.0 30.0 94.489 0.9004 +335.0 30.0 94.489 0.8928 +340.0 30.0 94.358 0.8788 +345.0 30.0 94.358 0.8723 +350.0 30.0 101.167 0.8886 +355.0 30.0 101.167 0.8984 +360.0 30.0 101.167 0.9017 +0.0 35.0 101.239 0.8606 +5.0 35.0 101.239 0.8575 +10.0 35.0 91.927 0.8482 +15.0 35.0 91.927 0.8450 +20.0 35.0 87.441 0.8558 +25.0 35.0 87.441 0.8604 +30.0 35.0 95.693 0.8588 +35.0 35.0 95.693 0.8511 +40.0 35.0 103.511 0.8403 +45.0 35.0 103.511 0.8530 +50.0 35.0 103.511 0.8596 +55.0 35.0 101.425 0.8600 +60.0 35.0 101.425 0.8542 +65.0 35.0 97.571 0.8422 +70.0 35.0 97.571 0.8503 +75.0 35.0 95.671 0.8585 +80.0 35.0 95.671 0.8605 +85.0 35.0 95.960 0.8563 +90.0 35.0 95.960 0.8460 +95.0 35.0 95.960 0.8295 +100.0 35.0 97.588 0.8070 +105.0 35.0 97.588 0.7788 +110.0 35.0 100.969 0.7449 +115.0 35.0 100.969 0.7057 +120.0 35.0 102.925 0.6615 +125.0 35.0 102.925 0.6126 +130.0 35.0 103.066 0.5593 +135.0 35.0 103.066 0.5021 +140.0 35.0 103.066 0.4415 +145.0 35.0 102.626 0.3778 +150.0 35.0 102.626 0.3115 +155.0 35.0 101.407 0.2433 +160.0 35.0 101.407 0.1735 +165.0 35.0 100.159 0.1027 +170.0 35.0 100.159 0.0315 +175.0 35.0 100.000 -0.0397 +180.0 35.0 100.000 -0.1102 +185.0 35.0 100.000 -0.1795 +190.0 35.0 100.000 -0.1429 +195.0 35.0 100.000 -0.0729 +200.0 35.0 100.000 -0.0020 +205.0 35.0 99.260 0.0692 +210.0 35.0 94.206 0.1403 +215.0 35.0 94.206 0.2106 +220.0 35.0 87.935 0.2797 +225.0 35.0 87.935 0.3469 +230.0 35.0 87.935 0.4119 +235.0 35.0 82.648 0.4740 +240.0 35.0 82.648 0.5329 +245.0 35.0 83.752 0.5880 +250.0 35.0 83.752 0.6391 +255.0 35.0 88.562 0.6855 +260.0 35.0 88.562 0.7271 +265.0 35.0 94.404 0.7635 +270.0 35.0 94.404 0.7945 +275.0 35.0 94.404 0.8197 +280.0 35.0 96.643 0.8390 +285.0 35.0 96.643 0.8522 +290.0 35.0 97.175 0.8593 +295.0 35.0 97.175 0.8602 +300.0 35.0 100.405 0.8549 +305.0 35.0 100.405 0.8434 +310.0 35.0 103.802 0.8258 +315.0 35.0 103.802 0.8434 +320.0 35.0 103.802 0.8549 +325.0 35.0 101.718 0.8602 +330.0 35.0 101.718 0.8593 +335.0 35.0 98.155 0.8522 +340.0 35.0 98.155 0.8390 +345.0 35.0 100.401 0.8328 +350.0 35.0 100.401 0.8482 +355.0 35.0 101.239 0.8575 +360.0 35.0 101.239 0.8606 +0.0 40.0 101.239 0.8130 +5.0 40.0 100.064 0.8100 +10.0 40.0 100.064 0.8013 +15.0 40.0 96.614 0.7983 +20.0 40.0 96.614 0.8084 +25.0 40.0 99.440 0.8128 +30.0 40.0 99.440 0.8113 +35.0 40.0 95.693 0.8040 +40.0 40.0 104.635 0.7939 +45.0 40.0 103.511 0.8059 +50.0 40.0 104.366 0.8120 +55.0 40.0 104.366 0.8124 +60.0 40.0 99.810 0.8070 +65.0 40.0 99.810 0.7957 +70.0 40.0 97.471 0.8033 +75.0 40.0 97.471 0.8110 +80.0 40.0 95.671 0.8129 +85.0 40.0 97.755 0.8089 +90.0 40.0 95.960 0.7992 +95.0 40.0 97.888 0.7838 +100.0 40.0 97.888 0.7628 +105.0 40.0 99.045 0.7364 +110.0 40.0 99.045 0.7048 +115.0 40.0 101.763 0.6681 +120.0 40.0 101.763 0.6267 +125.0 40.0 102.925 0.5810 +130.0 40.0 102.352 0.5312 +135.0 40.0 103.066 0.4777 +140.0 40.0 102.621 0.4210 +145.0 40.0 102.621 0.3614 +150.0 40.0 101.992 0.2995 +155.0 40.0 101.992 0.2356 +160.0 40.0 100.805 0.1704 +165.0 40.0 100.805 0.1042 +170.0 40.0 100.159 0.0376 +175.0 40.0 100.000 -0.0290 +180.0 40.0 100.000 -0.0949 +185.0 40.0 100.000 -0.1597 +190.0 40.0 100.000 -0.1255 +195.0 40.0 100.000 -0.0601 +200.0 40.0 99.932 0.0062 +205.0 40.0 98.042 0.0729 +210.0 40.0 98.042 0.1393 +215.0 40.0 94.206 0.2051 +220.0 40.0 94.576 0.2697 +225.0 40.0 87.935 0.3326 +230.0 40.0 90.681 0.3933 +235.0 40.0 90.681 0.4514 +240.0 40.0 91.353 0.5065 +245.0 40.0 91.353 0.5581 +250.0 40.0 95.403 0.6058 +255.0 40.0 95.403 0.6492 +260.0 40.0 88.562 0.6881 +265.0 40.0 100.445 0.7222 +270.0 40.0 94.404 0.7511 +275.0 40.0 101.745 0.7747 +280.0 40.0 101.745 0.7927 +285.0 40.0 99.875 0.8051 +290.0 40.0 99.875 0.8117 +295.0 40.0 98.786 0.8126 +300.0 40.0 98.786 0.8076 +305.0 40.0 100.405 0.7969 +310.0 40.0 101.302 0.7804 +315.0 40.0 103.802 0.7969 +320.0 40.0 104.013 0.8076 +325.0 40.0 104.013 0.8126 +330.0 40.0 103.178 0.8117 +335.0 40.0 103.178 0.8051 +340.0 40.0 101.837 0.7927 +345.0 40.0 101.837 0.7869 +350.0 40.0 100.401 0.8013 +355.0 40.0 102.472 0.8100 +360.0 40.0 101.239 0.8130 +0.0 45.0 101.717 0.7591 +5.0 45.0 100.064 0.7564 +10.0 45.0 99.913 0.7484 +15.0 45.0 96.614 0.7456 +20.0 45.0 96.614 0.7549 +25.0 45.0 99.440 0.7589 +30.0 45.0 99.440 0.7576 +35.0 45.0 103.914 0.7509 +40.0 45.0 104.635 0.7415 +45.0 45.0 104.353 0.7526 +50.0 45.0 104.366 0.7583 +55.0 45.0 104.366 0.7586 +60.0 45.0 101.311 0.7536 +65.0 45.0 99.810 0.7432 +70.0 45.0 100.274 0.7502 +75.0 45.0 97.471 0.7573 +80.0 45.0 97.755 0.7590 +85.0 45.0 97.755 0.7554 +90.0 45.0 99.892 0.7465 +95.0 45.0 97.888 0.7322 +100.0 45.0 99.622 0.7129 +105.0 45.0 99.045 0.6885 +110.0 45.0 99.045 0.6592 +115.0 45.0 101.763 0.6254 +120.0 45.0 101.763 0.5872 +125.0 45.0 100.690 0.5450 +130.0 45.0 102.352 0.4990 +135.0 45.0 100.958 0.4497 +140.0 45.0 102.621 0.3973 +145.0 45.0 102.621 0.3423 +150.0 45.0 101.070 0.2851 +155.0 45.0 101.992 0.2262 +160.0 45.0 100.447 0.1659 +165.0 45.0 100.805 0.1049 +170.0 45.0 99.937 0.0434 +175.0 45.0 100.000 -0.0180 +180.0 45.0 100.000 -0.0789 +185.0 45.0 100.000 -0.1387 +190.0 45.0 100.000 -0.1072 +195.0 45.0 100.000 -0.0467 +200.0 45.0 99.932 0.0145 +205.0 45.0 98.042 0.0760 +210.0 45.0 98.042 0.1373 +215.0 45.0 98.407 0.1980 +220.0 45.0 94.576 0.2576 +225.0 45.0 96.472 0.3157 +230.0 45.0 90.681 0.3717 +235.0 45.0 90.681 0.4254 +240.0 45.0 97.222 0.4762 +245.0 45.0 91.353 0.5238 +250.0 45.0 101.446 0.5678 +255.0 45.0 95.403 0.6080 +260.0 45.0 100.445 0.6439 +265.0 45.0 100.445 0.6753 +270.0 45.0 105.292 0.7020 +275.0 45.0 101.745 0.7238 +280.0 45.0 103.435 0.7404 +285.0 45.0 99.875 0.7519 +290.0 45.0 99.875 0.7580 +295.0 45.0 98.786 0.7588 +300.0 45.0 98.786 0.7542 +305.0 45.0 98.324 0.7443 +310.0 45.0 101.302 0.7291 +315.0 45.0 101.717 0.7443 +320.0 45.0 104.013 0.7542 +325.0 45.0 104.013 0.7588 +330.0 45.0 104.117 0.7580 +335.0 45.0 103.178 0.7519 +340.0 45.0 102.729 0.7404 +345.0 45.0 101.837 0.7351 +350.0 45.0 102.472 0.7484 +355.0 45.0 102.472 0.7564 +360.0 45.0 101.717 0.7591 +0.0 50.0 101.717 0.6995 +5.0 50.0 99.913 0.6970 +10.0 50.0 99.913 0.6897 +15.0 50.0 100.796 0.6872 +20.0 50.0 100.796 0.6957 +25.0 50.0 100.796 0.6993 +30.0 50.0 103.914 0.6981 +35.0 50.0 103.914 0.6920 +40.0 50.0 103.914 0.6835 +45.0 50.0 104.353 0.6935 +50.0 50.0 104.353 0.6987 +55.0 50.0 101.311 0.6990 +60.0 50.0 101.311 0.6944 +65.0 50.0 101.311 0.6850 +70.0 50.0 100.274 0.6914 +75.0 50.0 100.274 0.6978 +80.0 50.0 99.892 0.6994 +85.0 50.0 99.892 0.6961 +90.0 50.0 99.892 0.6880 +95.0 50.0 99.622 0.6751 +100.0 50.0 99.622 0.6574 +105.0 50.0 99.745 0.6353 +110.0 50.0 99.745 0.6087 +115.0 50.0 99.745 0.5779 +120.0 50.0 100.690 0.5432 +125.0 50.0 100.690 0.5048 +130.0 50.0 100.690 0.4630 +135.0 50.0 100.958 0.4182 +140.0 50.0 100.958 0.3706 +145.0 50.0 101.070 0.3206 +150.0 50.0 101.070 0.2686 +155.0 50.0 101.070 0.2150 +160.0 50.0 100.447 0.1603 +165.0 50.0 100.447 0.1047 +170.0 50.0 99.938 0.0488 +175.0 50.0 100.000 -0.0070 +180.0 50.0 100.000 -0.0623 +185.0 50.0 100.000 -0.1167 +190.0 50.0 100.000 -0.0880 +195.0 50.0 100.000 -0.0331 +200.0 50.0 99.802 0.0226 +205.0 50.0 99.802 0.0785 +210.0 50.0 98.407 0.1342 +215.0 50.0 98.407 0.1894 +220.0 50.0 98.407 0.2436 +225.0 50.0 96.472 0.2964 +230.0 50.0 96.472 0.3473 +235.0 50.0 97.222 0.3961 +240.0 50.0 97.222 0.4423 +245.0 50.0 97.222 0.4856 +250.0 50.0 101.446 0.5256 +255.0 50.0 101.446 0.5621 +260.0 50.0 105.292 0.5947 +265.0 50.0 105.292 0.6233 +270.0 50.0 105.292 0.6476 +275.0 50.0 103.435 0.6673 +280.0 50.0 103.435 0.6825 +285.0 50.0 99.066 0.6929 +290.0 50.0 99.066 0.6985 +295.0 50.0 99.066 0.6992 +300.0 50.0 98.324 0.6950 +305.0 50.0 98.324 0.6860 +310.0 50.0 98.324 0.6722 +315.0 50.0 101.717 0.6860 +320.0 50.0 101.717 0.6950 +325.0 50.0 104.117 0.6992 +330.0 50.0 104.117 0.6985 +335.0 50.0 104.117 0.6929 +340.0 50.0 102.729 0.6825 +345.0 50.0 102.729 0.6776 +350.0 50.0 101.717 0.6897 +355.0 50.0 101.717 0.6970 +360.0 50.0 101.717 0.6995 +0.0 55.0 100.903 0.6345 +5.0 55.0 99.617 0.6324 +10.0 55.0 99.617 0.6258 +15.0 55.0 99.617 0.6236 +20.0 55.0 101.330 0.6311 +25.0 55.0 101.330 0.6344 +30.0 55.0 101.330 0.6333 +35.0 55.0 101.636 0.6279 +40.0 55.0 101.636 0.6203 +45.0 55.0 101.636 0.6292 +50.0 55.0 100.844 0.6338 +55.0 55.0 100.844 0.6341 +60.0 55.0 100.844 0.6300 +65.0 55.0 101.451 0.6217 +70.0 55.0 101.451 0.6273 +75.0 55.0 101.451 0.6330 +80.0 55.0 102.282 0.6345 +85.0 55.0 102.282 0.6315 +90.0 55.0 102.282 0.6243 +95.0 55.0 101.602 0.6127 +100.0 55.0 101.602 0.5970 +105.0 55.0 101.602 0.5772 +110.0 55.0 100.529 0.5535 +115.0 55.0 100.529 0.5261 +120.0 55.0 100.529 0.4951 +125.0 55.0 99.827 0.4608 +130.0 55.0 99.827 0.4236 +135.0 55.0 99.827 0.3835 +140.0 55.0 99.970 0.3410 +145.0 55.0 99.970 0.2964 +150.0 55.0 99.970 0.2501 +155.0 55.0 99.939 0.2023 +160.0 55.0 99.939 0.1534 +165.0 55.0 99.939 0.1038 +170.0 55.0 99.938 0.0540 +175.0 55.0 99.938 0.0042 +180.0 55.0 100.000 -0.0452 +185.0 55.0 100.000 -0.0937 +190.0 55.0 100.000 -0.0682 +195.0 55.0 100.000 -0.0191 +200.0 55.0 99.968 0.0305 +205.0 55.0 99.968 0.0804 +210.0 55.0 99.968 0.1302 +215.0 55.0 99.789 0.1794 +220.0 55.0 99.789 0.2277 +225.0 55.0 99.789 0.2748 +230.0 55.0 100.241 0.3203 +235.0 55.0 100.241 0.3638 +240.0 55.0 100.241 0.4051 +245.0 55.0 102.950 0.4437 +250.0 55.0 102.950 0.4794 +255.0 55.0 102.950 0.5119 +260.0 55.0 103.924 0.5411 +265.0 55.0 103.924 0.5666 +270.0 55.0 103.924 0.5882 +275.0 55.0 100.460 0.6059 +280.0 55.0 100.460 0.6194 +285.0 55.0 100.460 0.6287 +290.0 55.0 97.052 0.6336 +295.0 55.0 97.052 0.6343 +300.0 55.0 97.052 0.6305 +305.0 55.0 99.010 0.6225 +310.0 55.0 99.010 0.6102 +315.0 55.0 99.010 0.6225 +320.0 55.0 103.221 0.6305 +325.0 55.0 103.221 0.6343 +330.0 55.0 103.221 0.6336 +335.0 55.0 103.119 0.6287 +340.0 55.0 103.119 0.6194 +345.0 55.0 103.119 0.6150 +350.0 55.0 100.903 0.6258 +355.0 55.0 100.903 0.6324 +360.0 55.0 100.903 0.6345 +0.0 60.0 101.360 0.5648 +5.0 60.0 101.360 0.5629 +10.0 60.0 99.672 0.5572 +15.0 60.0 99.672 0.5552 +20.0 60.0 99.672 0.5618 +25.0 60.0 99.672 0.5646 +30.0 60.0 99.674 0.5637 +35.0 60.0 99.674 0.5589 +40.0 60.0 99.674 0.5523 +45.0 60.0 99.626 0.5601 +50.0 60.0 99.626 0.5642 +55.0 60.0 99.626 0.5644 +60.0 60.0 99.626 0.5608 +65.0 60.0 101.723 0.5535 +70.0 60.0 101.723 0.5584 +75.0 60.0 101.723 0.5635 +80.0 60.0 103.763 0.5647 +85.0 60.0 103.763 0.5621 +90.0 60.0 103.763 0.5558 +95.0 60.0 103.763 0.5458 +100.0 60.0 102.971 0.5320 +105.0 60.0 102.971 0.5148 +110.0 60.0 102.971 0.4941 +115.0 60.0 102.971 0.4702 +120.0 60.0 101.170 0.4432 +125.0 60.0 101.170 0.4133 +130.0 60.0 101.170 0.3808 +135.0 60.0 99.961 0.3459 +140.0 60.0 99.961 0.3089 +145.0 60.0 99.961 0.2700 +150.0 60.0 99.961 0.2296 +155.0 60.0 99.845 0.1879 +160.0 60.0 99.845 0.1453 +165.0 60.0 99.845 0.1021 +170.0 60.0 99.941 0.0587 +175.0 60.0 99.941 0.0152 +180.0 60.0 100.000 -0.0278 +185.0 60.0 100.000 -0.0701 +190.0 60.0 100.000 -0.0478 +195.0 60.0 100.000 -0.0051 +200.0 60.0 99.952 0.0382 +205.0 60.0 99.952 0.0817 +210.0 60.0 100.726 0.1251 +215.0 60.0 100.726 0.1680 +220.0 60.0 100.726 0.2101 +225.0 60.0 101.469 0.2512 +230.0 60.0 101.469 0.2908 +235.0 60.0 101.469 0.3288 +240.0 60.0 101.469 0.3647 +245.0 60.0 101.500 0.3984 +250.0 60.0 101.500 0.4295 +255.0 60.0 101.500 0.4579 +260.0 60.0 99.934 0.4833 +265.0 60.0 99.934 0.5055 +270.0 60.0 99.934 0.5244 +275.0 60.0 99.934 0.5398 +280.0 60.0 97.365 0.5515 +285.0 60.0 97.365 0.5596 +290.0 60.0 97.365 0.5640 +295.0 60.0 97.365 0.5645 +300.0 60.0 97.763 0.5613 +305.0 60.0 97.763 0.5543 +310.0 60.0 97.763 0.5435 +315.0 60.0 102.331 0.5543 +320.0 60.0 102.331 0.5613 +325.0 60.0 102.331 0.5645 +330.0 60.0 102.331 0.5640 +335.0 60.0 103.824 0.5596 +340.0 60.0 103.824 0.5515 +345.0 60.0 103.824 0.5478 +350.0 60.0 101.360 0.5572 +355.0 60.0 101.360 0.5629 +360.0 60.0 101.360 0.5648 +0.0 65.0 102.874 0.4907 +5.0 65.0 102.874 0.4891 +10.0 65.0 102.874 0.4843 +15.0 65.0 100.556 0.4826 +20.0 65.0 100.556 0.4882 +25.0 65.0 100.556 0.4906 +30.0 65.0 100.556 0.4898 +35.0 65.0 99.674 0.4858 +40.0 65.0 99.690 0.4802 +45.0 65.0 99.690 0.4868 +50.0 65.0 99.690 0.4902 +55.0 65.0 99.690 0.4904 +60.0 65.0 101.978 0.4874 +65.0 65.0 101.978 0.4812 +70.0 65.0 101.978 0.4853 +75.0 65.0 101.978 0.4896 +80.0 65.0 104.412 0.4906 +85.0 65.0 104.412 0.4885 +90.0 65.0 104.412 0.4831 +95.0 65.0 104.412 0.4746 +100.0 65.0 104.412 0.4630 +105.0 65.0 103.544 0.4485 +110.0 65.0 103.544 0.4310 +115.0 65.0 103.544 0.4108 +120.0 65.0 103.544 0.3879 +125.0 65.0 101.170 0.3627 +130.0 65.0 101.445 0.3352 +135.0 65.0 101.445 0.3057 +140.0 65.0 101.445 0.2744 +145.0 65.0 101.445 0.2416 +150.0 65.0 100.425 0.2074 +155.0 65.0 100.425 0.1722 +160.0 65.0 100.425 0.1362 +165.0 65.0 100.425 0.0997 +170.0 65.0 99.943 0.0629 +175.0 65.0 99.943 0.0262 +180.0 65.0 100.000 -0.0102 +185.0 65.0 100.000 -0.0459 +190.0 65.0 100.000 -0.0271 +195.0 65.0 100.390 0.0091 +200.0 65.0 100.390 0.0456 +205.0 65.0 100.390 0.0824 +210.0 65.0 100.390 0.1190 +215.0 65.0 100.726 0.1553 +220.0 65.0 101.883 0.1910 +225.0 65.0 101.883 0.2257 +230.0 65.0 101.883 0.2592 +235.0 65.0 101.883 0.2912 +240.0 65.0 99.993 0.3216 +245.0 65.0 99.993 0.3501 +250.0 65.0 99.993 0.3764 +255.0 65.0 99.993 0.4004 +260.0 65.0 97.434 0.4218 +265.0 65.0 97.434 0.4406 +270.0 65.0 97.434 0.4565 +275.0 65.0 97.434 0.4696 +280.0 65.0 97.434 0.4795 +285.0 65.0 97.696 0.4864 +290.0 65.0 97.696 0.4900 +295.0 65.0 97.696 0.4905 +300.0 65.0 97.696 0.4877 +305.0 65.0 97.763 0.4818 +310.0 65.0 102.102 0.4727 +315.0 65.0 102.102 0.4818 +320.0 65.0 102.102 0.4877 +325.0 65.0 102.102 0.4905 +330.0 65.0 104.896 0.4900 +335.0 65.0 104.896 0.4864 +340.0 65.0 104.896 0.4795 +345.0 65.0 104.896 0.4763 +350.0 65.0 102.874 0.4843 +355.0 65.0 102.874 0.4891 +360.0 65.0 102.874 0.4907 +0.0 70.0 104.248 0.4129 +5.0 70.0 104.248 0.4116 +10.0 70.0 104.248 0.4077 +15.0 70.0 104.248 0.4063 +20.0 70.0 100.556 0.4109 +25.0 70.0 100.556 0.4128 +30.0 70.0 101.924 0.4121 +35.0 70.0 101.924 0.4089 +40.0 70.0 101.924 0.4044 +45.0 70.0 99.690 0.4097 +50.0 70.0 99.690 0.4125 +55.0 70.0 102.498 0.4126 +60.0 70.0 102.498 0.4102 +65.0 70.0 102.498 0.4052 +70.0 70.0 102.498 0.4085 +75.0 70.0 101.978 0.4120 +80.0 70.0 104.412 0.4128 +85.0 70.0 104.412 0.4111 +90.0 70.0 104.427 0.4068 +95.0 70.0 104.427 0.3999 +100.0 70.0 104.427 0.3905 +105.0 70.0 104.427 0.3787 +110.0 70.0 103.544 0.3646 +115.0 70.0 103.544 0.3482 +120.0 70.0 103.207 0.3297 +125.0 70.0 103.207 0.3093 +130.0 70.0 103.207 0.2871 +135.0 70.0 101.445 0.2632 +140.0 70.0 101.445 0.2379 +145.0 70.0 101.413 0.2113 +150.0 70.0 101.413 0.1836 +155.0 70.0 101.413 0.1551 +160.0 70.0 101.413 0.1260 +165.0 70.0 100.425 0.0964 +170.0 70.0 99.943 0.0667 +175.0 70.0 99.943 0.0370 +180.0 70.0 99.944 0.0075 +185.0 70.0 100.000 -0.0214 +190.0 70.0 100.000 -0.0061 +195.0 70.0 99.944 0.0231 +200.0 70.0 100.390 0.0527 +205.0 70.0 100.390 0.0824 +210.0 70.0 101.274 0.1121 +215.0 70.0 101.274 0.1415 +220.0 70.0 101.274 0.1703 +225.0 70.0 101.883 0.1984 +230.0 70.0 101.883 0.2255 +235.0 70.0 99.799 0.2515 +240.0 70.0 99.799 0.2760 +245.0 70.0 99.799 0.2991 +250.0 70.0 99.799 0.3204 +255.0 70.0 99.993 0.3398 +260.0 70.0 97.434 0.3571 +265.0 70.0 97.434 0.3723 +270.0 70.0 97.870 0.3852 +275.0 70.0 97.870 0.3958 +280.0 70.0 97.870 0.4038 +285.0 70.0 97.870 0.4094 +290.0 70.0 97.696 0.4123 +295.0 70.0 97.696 0.4127 +300.0 70.0 101.516 0.4105 +305.0 70.0 101.516 0.4057 +310.0 70.0 101.516 0.3984 +315.0 70.0 102.102 0.4057 +320.0 70.0 102.102 0.4105 +325.0 70.0 105.382 0.4127 +330.0 70.0 105.382 0.4123 +335.0 70.0 105.382 0.4094 +340.0 70.0 105.382 0.4038 +345.0 70.0 104.896 0.4013 +350.0 70.0 102.874 0.4077 +355.0 70.0 102.874 0.4116 +360.0 70.0 104.248 0.4129 +0.0 75.0 104.248 0.3319 +5.0 75.0 104.248 0.3309 +10.0 75.0 104.248 0.3280 +15.0 75.0 104.475 0.3270 +20.0 75.0 104.475 0.3304 +25.0 75.0 101.924 0.3319 +30.0 75.0 101.924 0.3314 +35.0 75.0 101.924 0.3289 +40.0 75.0 101.924 0.3255 +45.0 75.0 101.924 0.3295 +50.0 75.0 103.193 0.3316 +55.0 75.0 102.498 0.3317 +60.0 75.0 102.498 0.3299 +65.0 75.0 102.498 0.3261 +70.0 75.0 102.498 0.3286 +75.0 75.0 102.498 0.3312 +80.0 75.0 104.427 0.3319 +85.0 75.0 104.427 0.3306 +90.0 75.0 104.427 0.3273 +95.0 75.0 104.427 0.3221 +100.0 75.0 104.427 0.3150 +105.0 75.0 103.757 0.3061 +110.0 75.0 103.757 0.2954 +115.0 75.0 103.207 0.2830 +120.0 75.0 103.207 0.2690 +125.0 75.0 103.207 0.2535 +130.0 75.0 103.207 0.2367 +135.0 75.0 103.207 0.2187 +140.0 75.0 101.925 0.1995 +145.0 75.0 101.413 0.1794 +150.0 75.0 101.413 0.1584 +155.0 75.0 101.413 0.1369 +160.0 75.0 101.413 0.1148 +165.0 75.0 101.413 0.0924 +170.0 75.0 99.944 0.0699 +175.0 75.0 99.944 0.0475 +180.0 75.0 99.944 0.0252 +185.0 75.0 99.944 0.0033 +190.0 75.0 99.944 0.0148 +195.0 75.0 100.228 0.0370 +200.0 75.0 100.228 0.0594 +205.0 75.0 101.274 0.0819 +210.0 75.0 101.274 0.1043 +215.0 75.0 101.274 0.1265 +220.0 75.0 101.274 0.1484 +225.0 75.0 101.274 0.1696 +230.0 75.0 100.450 0.1901 +235.0 75.0 99.799 0.2098 +240.0 75.0 99.799 0.2284 +245.0 75.0 99.799 0.2458 +250.0 75.0 99.799 0.2619 +255.0 75.0 99.799 0.2766 +260.0 75.0 97.870 0.2897 +265.0 75.0 97.870 0.3012 +270.0 75.0 97.870 0.3110 +275.0 75.0 97.870 0.3190 +280.0 75.0 97.870 0.3251 +285.0 75.0 100.145 0.3293 +290.0 75.0 100.145 0.3315 +295.0 75.0 101.516 0.3318 +300.0 75.0 101.516 0.3301 +305.0 75.0 101.516 0.3265 +310.0 75.0 101.516 0.3209 +315.0 75.0 101.516 0.3265 +320.0 75.0 104.461 0.3301 +325.0 75.0 105.382 0.3318 +330.0 75.0 105.382 0.3315 +335.0 75.0 105.382 0.3293 +340.0 75.0 105.382 0.3251 +345.0 75.0 105.382 0.3231 +350.0 75.0 104.248 0.3280 +355.0 75.0 104.248 0.3309 +360.0 75.0 104.248 0.3319 +0.0 80.0 104.475 0.2484 +5.0 80.0 104.475 0.2478 +10.0 80.0 104.475 0.2458 +15.0 80.0 104.475 0.2451 +20.0 80.0 104.475 0.2474 +25.0 80.0 104.475 0.2484 +30.0 80.0 104.475 0.2481 +35.0 80.0 103.193 0.2464 +40.0 80.0 103.193 0.2441 +45.0 80.0 103.193 0.2468 +50.0 80.0 103.193 0.2482 +55.0 80.0 103.193 0.2483 +60.0 80.0 103.193 0.2471 +65.0 80.0 103.193 0.2445 +70.0 80.0 103.193 0.2462 +75.0 80.0 103.193 0.2480 +80.0 80.0 103.757 0.2484 +85.0 80.0 103.757 0.2475 +90.0 80.0 103.757 0.2453 +95.0 80.0 103.757 0.2418 +100.0 80.0 103.757 0.2371 +105.0 80.0 103.757 0.2311 +110.0 80.0 103.757 0.2239 +115.0 80.0 103.757 0.2156 +120.0 80.0 103.757 0.2062 +125.0 80.0 101.925 0.1959 +130.0 80.0 101.925 0.1846 +135.0 80.0 101.925 0.1724 +140.0 80.0 101.925 0.1596 +145.0 80.0 101.925 0.1461 +150.0 80.0 101.925 0.1320 +155.0 80.0 101.925 0.1176 +160.0 80.0 101.925 0.1028 +165.0 80.0 101.925 0.0878 +170.0 80.0 100.228 0.0727 +175.0 80.0 100.228 0.0576 +180.0 80.0 100.228 0.0427 +185.0 80.0 100.228 0.0280 +190.0 80.0 100.228 0.0357 +195.0 80.0 100.228 0.0505 +200.0 80.0 100.228 0.0656 +205.0 80.0 100.228 0.0807 +210.0 80.0 100.228 0.0957 +215.0 80.0 100.450 0.1106 +220.0 80.0 100.450 0.1253 +225.0 80.0 100.450 0.1395 +230.0 80.0 100.450 0.1533 +235.0 80.0 100.450 0.1665 +240.0 80.0 100.450 0.1790 +245.0 80.0 100.450 0.1907 +250.0 80.0 100.450 0.2015 +255.0 80.0 100.450 0.2113 +260.0 80.0 100.145 0.2201 +265.0 80.0 100.145 0.2279 +270.0 80.0 100.145 0.2344 +275.0 80.0 100.145 0.2398 +280.0 80.0 100.145 0.2439 +285.0 80.0 100.145 0.2467 +290.0 80.0 100.145 0.2482 +295.0 80.0 100.145 0.2484 +300.0 80.0 100.145 0.2472 +305.0 80.0 104.461 0.2448 +310.0 80.0 104.461 0.2411 +315.0 80.0 104.461 0.2448 +320.0 80.0 104.461 0.2472 +325.0 80.0 104.461 0.2484 +330.0 80.0 104.461 0.2482 +335.0 80.0 104.461 0.2467 +340.0 80.0 104.461 0.2439 +345.0 80.0 104.461 0.2425 +350.0 80.0 104.475 0.2458 +355.0 80.0 104.475 0.2478 +360.0 80.0 104.475 0.2484 +0.0 85.0 103.233 0.1631 +5.0 85.0 103.233 0.1627 +10.0 85.0 103.233 0.1618 +15.0 85.0 103.233 0.1614 +20.0 85.0 103.233 0.1626 +25.0 85.0 103.233 0.1631 +30.0 85.0 103.233 0.1629 +35.0 85.0 103.233 0.1621 +40.0 85.0 103.233 0.1609 +45.0 85.0 103.233 0.1623 +50.0 85.0 103.233 0.1630 +55.0 85.0 103.233 0.1630 +60.0 85.0 103.233 0.1624 +65.0 85.0 103.233 0.1611 +70.0 85.0 103.233 0.1620 +75.0 85.0 103.233 0.1628 +80.0 85.0 102.031 0.1631 +85.0 85.0 102.031 0.1626 +90.0 85.0 102.031 0.1615 +95.0 85.0 102.031 0.1598 +100.0 85.0 102.031 0.1574 +105.0 85.0 102.031 0.1544 +110.0 85.0 102.031 0.1508 +115.0 85.0 102.031 0.1466 +120.0 85.0 102.031 0.1419 +125.0 85.0 102.031 0.1367 +130.0 85.0 102.031 0.1310 +135.0 85.0 102.031 0.1249 +140.0 85.0 102.031 0.1185 +145.0 85.0 102.031 0.1117 +150.0 85.0 102.031 0.1047 +155.0 85.0 102.031 0.0974 +160.0 85.0 102.031 0.0900 +165.0 85.0 102.031 0.0824 +170.0 85.0 100.623 0.0749 +175.0 85.0 100.623 0.0673 +180.0 85.0 100.623 0.0598 +185.0 85.0 100.623 0.0524 +190.0 85.0 100.623 0.0563 +195.0 85.0 100.623 0.0637 +200.0 85.0 100.623 0.0713 +205.0 85.0 100.623 0.0789 +210.0 85.0 100.623 0.0864 +215.0 85.0 100.623 0.0939 +220.0 85.0 100.623 0.1013 +225.0 85.0 100.623 0.1084 +230.0 85.0 100.623 0.1153 +235.0 85.0 100.623 0.1219 +240.0 85.0 100.623 0.1282 +245.0 85.0 100.623 0.1341 +250.0 85.0 100.623 0.1395 +255.0 85.0 100.623 0.1444 +260.0 85.0 102.180 0.1489 +265.0 85.0 102.180 0.1527 +270.0 85.0 102.180 0.1560 +275.0 85.0 102.180 0.1587 +280.0 85.0 102.180 0.1608 +285.0 85.0 102.180 0.1622 +290.0 85.0 102.180 0.1629 +295.0 85.0 102.180 0.1630 +300.0 85.0 102.180 0.1625 +305.0 85.0 102.180 0.1612 +310.0 85.0 102.180 0.1594 +315.0 85.0 102.180 0.1612 +320.0 85.0 102.180 0.1625 +325.0 85.0 102.180 0.1630 +330.0 85.0 102.180 0.1629 +335.0 85.0 102.180 0.1622 +340.0 85.0 102.180 0.1608 +345.0 85.0 102.180 0.1601 +350.0 85.0 103.233 0.1618 +355.0 85.0 103.233 0.1627 +360.0 85.0 103.233 0.1631 +0.0 90.0 103.233 0.0765 +5.0 90.0 103.233 0.0765 +10.0 90.0 103.233 0.0765 +15.0 90.0 103.233 0.0765 +20.0 90.0 103.233 0.0765 +25.0 90.0 103.233 0.0765 +30.0 90.0 103.233 0.0765 +35.0 90.0 103.233 0.0765 +40.0 90.0 103.233 0.0765 +45.0 90.0 103.233 0.0765 +50.0 90.0 103.233 0.0765 +55.0 90.0 103.233 0.0765 +60.0 90.0 103.233 0.0765 +65.0 90.0 103.233 0.0765 +70.0 90.0 103.233 0.0765 +75.0 90.0 103.233 0.0765 +80.0 90.0 102.031 0.0765 +85.0 90.0 102.031 0.0765 +90.0 90.0 102.031 0.0765 +95.0 90.0 102.031 0.0765 +100.0 90.0 102.031 0.0765 +105.0 90.0 102.031 0.0765 +110.0 90.0 102.031 0.0765 +115.0 90.0 102.031 0.0765 +120.0 90.0 102.031 0.0765 +125.0 90.0 102.031 0.0765 +130.0 90.0 102.031 0.0765 +135.0 90.0 102.031 0.0765 +140.0 90.0 102.031 0.0765 +145.0 90.0 102.031 0.0765 +150.0 90.0 102.031 0.0765 +155.0 90.0 102.031 0.0765 +160.0 90.0 102.031 0.0765 +165.0 90.0 102.031 0.0765 +170.0 90.0 100.623 0.0765 +175.0 90.0 100.623 0.0765 +180.0 90.0 100.623 0.0765 +185.0 90.0 100.623 0.0765 +190.0 90.0 100.623 0.0765 +195.0 90.0 100.623 0.0765 +200.0 90.0 100.623 0.0765 +205.0 90.0 100.623 0.0765 +210.0 90.0 100.623 0.0765 +215.0 90.0 100.623 0.0765 +220.0 90.0 100.623 0.0765 +225.0 90.0 100.623 0.0765 +230.0 90.0 100.623 0.0765 +235.0 90.0 100.623 0.0765 +240.0 90.0 100.623 0.0765 +245.0 90.0 100.623 0.0765 +250.0 90.0 100.623 0.0765 +255.0 90.0 100.623 0.0765 +260.0 90.0 102.180 0.0765 +265.0 90.0 102.180 0.0765 +270.0 90.0 102.180 0.0765 +275.0 90.0 102.180 0.0765 +280.0 90.0 102.180 0.0765 +285.0 90.0 102.180 0.0765 +290.0 90.0 102.180 0.0765 +295.0 90.0 102.180 0.0765 +300.0 90.0 102.180 0.0765 +305.0 90.0 102.180 0.0765 +310.0 90.0 102.180 0.0765 +315.0 90.0 102.180 0.0765 +320.0 90.0 102.180 0.0765 +325.0 90.0 102.180 0.0765 +330.0 90.0 102.180 0.0765 +335.0 90.0 102.180 0.0765 +340.0 90.0 102.180 0.0765 +345.0 90.0 102.180 0.0765 +350.0 90.0 103.233 0.0765 +355.0 90.0 103.233 0.0765 +360.0 90.0 103.233 0.0765 From 164ac8be3793ee9f830d45b8422ee5eeb4149e71 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 00:43:06 -0300 Subject: [PATCH 04/10] feat(stars): credit a surface map's nights and code in the star's notice --- .../src/new-object/resolved/resolved-maps.mts | 7 +++++++ .../telescope-cli/src/new-object/resolved/resolved.mts | 5 +++-- .../src/new-object/resolved/resolved.test.mts | 5 ++++- src/objects/arcturus/README.md | 2 +- src/objects/udkadua/NOTICE.md | 2 ++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts index f2a27caef41..dcce6d8df21 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts @@ -139,6 +139,13 @@ export function withSurfaceReadme(readme: string, map: ResolvedSurfaceMap): stri return lines.join('\n').replace(/\n{3,}/gu, '\n\n'); } +const NOTICE_LEAD = 'Surface map: '; +/** The star's credits with one line for its surface map: whose nights, whose values and whose code. */ +export function withSurfaceNotice(notice: string, map: ResolvedSurfaceMap): string { + const line = `${NOTICE_LEAD}${map.data.credit}; the star's size, limb, axis and period from ${map.papers[0]!.citation}; fitted in this project with ${map.codes.join(' and ')} (GPL-3.0 and LGPL-3.0, run as tools, not redistributed). ${map.data.url}`; + return `${notice.split('\n').filter(one => !one.startsWith(NOTICE_LEAD)).join('\n').trimEnd()}\n\n${line}\n`.replace(/\n{3,}/gu, '\n\n'); +} + /** The star's investigation ledger with the surface map's entry and the measured axis in place of the convention's. */ export function withSurfaceLedger(ledger: unknown, map: ResolvedSurfaceMap): Json { const record = requireRecord(ledger, 'investigation ledger'); if (record.schema !== INVESTIGATION_LEDGER_SCHEMA) throw new TypeError('Not an investigation ledger.'); diff --git a/packages/telescope-cli/src/new-object/resolved/resolved.mts b/packages/telescope-cli/src/new-object/resolved/resolved.mts index 555de90fdaa..dc707c95e82 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved.mts @@ -7,7 +7,7 @@ import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path'; import { readJson, type MapRoute } from '../maps/route.mts'; import type { SurfaceMapChoice } from '../maps/surface-maps.mts'; -import { measuredAxisRotation, reducedSurface, RESOLVED_GENERATOR, RESOLVED_MAPS, resolvedSourceRecords, withSurfaceLedger, withSurfaceReadme, type ResolvedSurfaceMap } from './resolved-maps.mts'; +import { measuredAxisRotation, reducedSurface, RESOLVED_GENERATOR, RESOLVED_MAPS, resolvedSourceRecords, withSurfaceLedger, withSurfaceNotice, withSurfaceReadme, type ResolvedSurfaceMap } from './resolved-maps.mts'; const SEASONS = 'packages/telescope-cli/src/archives/interferometry/seasons'; const reduce = (season: string) => `node ${RESOLVED_GENERATOR} ${SEASONS}/${season} output/interferometry/${season}`; @@ -21,10 +21,11 @@ async function reduced(root: string, host: string, choice: SurfaceMapChoice): Pr return map; } -/** The star's README and investigation ledger, with its newest map. */ +/** The star's README, credits and investigation ledger, with its newest map. */ async function starRecords(root: string, host: string, maps: readonly ResolvedSurfaceMap[]): Promise> { const at = `src/objects/${host}`, newest = maps.at(-1)!; return new Map([[`${at}/README.md`, withSurfaceReadme(await readFile(resolve(root, at, 'README.md'), 'utf8'), newest)], + [`${at}/NOTICE.md`, withSurfaceNotice(await readFile(resolve(root, at, 'NOTICE.md'), 'utf8'), newest)], [`${at}/investigations.json`, `${JSON.stringify(withSurfaceLedger(await readJson(resolve(root, at, 'investigations.json'), `${host}: no investigation ledger`), newest), null, 2)}\n`]]); } diff --git a/packages/telescope-cli/src/new-object/resolved/resolved.test.mts b/packages/telescope-cli/src/new-object/resolved/resolved.test.mts index 19dfc8ef787..ed311025330 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved.test.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved.test.mts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import test from 'node:test'; import { isConventionOnly, surfaceMapFiles } from '../maps/surface-maps.mts'; -import { measuredAxisRotation, reducedSurface, RESOLVED_CONSUMER, RESOLVED_MAPS, resolvedSourceRecords, span, unseenDegrees, withSurfaceLedger, withSurfaceReadme } from './resolved-maps.mts'; +import { measuredAxisRotation, reducedSurface, RESOLVED_CONSUMER, RESOLVED_MAPS, resolvedSourceRecords, span, unseenDegrees, withSurfaceLedger, withSurfaceNotice, withSurfaceReadme } from './resolved-maps.mts'; const TABLE = 'TITLE = "test"\nVARIABLES = "Longitude [Deg]" "Latitude [Deg]" "Brightness [%]" "Facing"\nZONE I=73, J=37, K=1, ZONETYPE=Ordered\n'; const CHOICE = { program: 'star-mirc-2011-09', id: 'surface-2011-09', label: 'September 2011' }; @@ -66,4 +66,7 @@ test('a convention page takes the measured tilt and pole direction, and the reco assert.deepEqual(ledger.entries.map(entry => entry.id), ['placement', 'surface-star-mirc-2011-09', 'rotation-axis']); assert.match(ledger.entries[1]!.finding, /Spotless twins of 2\.80 mas do not fit on the 2\.742 mas sphere/u); assert.deepEqual(withSurfaceLedger(ledger, map), ledger); + const notice = withSurfaceNotice('# HD 1 credits\n\nColor: x.\n', map); + assert.match(notice, /^# HD 1 credits\n\nColor: x\.\n\nSurface map: CHARA Array\/MIRC, as calibrated by the authors; .*Author et al\. \(2021\), ApJ 1, 1; fitted in this project with ROTIR\.jl ad308759 and OITOOLS\.jl f42d2bea/u); + assert.equal(withSurfaceNotice(notice, map), notice); }); diff --git a/src/objects/arcturus/README.md b/src/objects/arcturus/README.md index e6ca10efd04..194ed4ef614 100644 --- a/src/objects/arcturus/README.md +++ b/src/objects/arcturus/README.md @@ -24,7 +24,7 @@ Run of 2026-09-21 (this version): ## Known problems -The cited paper images Arcturus’s limb darkening; this package shows a neutral sphere and does not cast that image. No mass is adopted. +The cited paper's images of Arcturus are a limb-darkened disc without features; this package draws the limb law that paper fitted and casts no image. No mass is adopted. - **Measured limb, other band.** The law was measured or fixed outside the visible band the color is drawn in; the visible limb is not measured. [Inputs](source/manifest.json) · [Preparation](source/preparation) · [Delivered files](inventory.json) · [Credits](NOTICE.md) diff --git a/src/objects/udkadua/NOTICE.md b/src/objects/udkadua/NOTICE.md index dbde959676e..a21c3bfe14c 100644 --- a/src/objects/udkadua/NOTICE.md +++ b/src/objects/udkadua/NOTICE.md @@ -7,3 +7,5 @@ Color: Kharitonov, Tereshchenko & Knyazeva (1988), Spectrophotometric Catalogue Placement: Gaia DR3 source 1939115478598580352: position, proper motion; distance: McDonald, Zijlstra & Watson (2017), MNRAS 471, 770, table 2, HIP 116584: distance 26.406 pc, the paper's parallax inverted (Gaia DR1's where it revised the star's, else the Hipparcos reduction of van Leeuwen 2007; section 2.3; fractional uncertainty 0.006), at which the luminosity and radius hold. This work has made use of data from the European Space Agency (ESA) mission Gaia, processed by the Gaia Data Processing and Analysis Consortium (DPAC). Identifiers: SIMBAD, CDS, Strasbourg. Limb darkening: Martinez et al. (2021), ApJ 916, 60. + +Surface map: CHARA Array/MIRC, September 2011, as calibrated by the authors of Parks et al. (2021) and Martinez et al. (2021) and shipped with ROTIR.jl (F. Baron); the star's size, limb, axis and period from Martinez et al. (2021), ApJ 916, 60; fitted in this project with ROTIR.jl ad308759 and OITOOLS.jl f42d2bea (GPL-3.0 and LGPL-3.0, run as tools, not redistributed). https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data From f1cf68feef1c939d549febde7a541b5007b2849f Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 00:51:17 -0300 Subject: [PATCH 05/10] feat(stars): bake lambda Andromedae's surface datasets and the two measured limbs --- .../src/new-object/resolved/resolved-maps.mts | 2 +- src/objects/arcturus/inventory.json | 28 ++--- src/objects/milky-way/inventory.json | 4 +- .../observable-universe/inventory.json | 8 +- src/objects/udkadua/inventory.json | 106 +++++++++++++----- src/objects/udkadua/object.json | 30 ++--- src/objects/udkadua/text.json | 2 +- 7 files changed, 117 insertions(+), 63 deletions(-) diff --git a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts index dcce6d8df21..f43e1d89001 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts @@ -96,7 +96,7 @@ export const RESOLVED_MAPS: MapKind = { description: `The star's color (${star.colorHex}, its Color dataset) over the surface map this project made from ${map.instrument} interferometry of ${when}: the map's scale, ${scale.minimum}% to ${scale.maximum}% of the mean surface, runs from a darker, richer tone of the same hue to the color itself. The map is of infrared light (${map.band}), where the darkest region gives ${less}% less light than the brightest; how much darker the spots are in visible light is not measured, and no color change is drawn. Longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}.${unseen > 0 ? ` The ${unseen}° of longitude that never faced the Earth on these nights hold the mean.` : ''} A reduction made in this project, not a published map.`, surfaceTitle: `${map.instrument} · the star in its color over its surface map · ${when}`, qualification: `The star's color, darker where ${map.instrument} saw its surface dimmer in the infrared · ${when}, mapped in this project`, notes: `${map.targetName} in its own color, darker where interferometry of ${when} shows its surface darker. The interferometer resolved the star's disc, so the places of the dark regions, in longitude and latitude, are measured, down to about ${resolved(map)}° of the surface. The map is of infrared light, where the darkest region gives ${less}% less light than the brightest; it is drawn as a much darker tone of the star's own hue, and the Surface map's scale has the measured values. How dark the spots are in visible light, and their color, are not measured. The star is drawn as it faced the Earth on ${day(map.referenceNight)}, at the tilt and pole direction ${map.papers[0]!.citation} measured.${unseen > 0 ? ` The ${unseen}° of longitude that faced the Earth on none of the nights are drawn at the mean.` : ''} Spots come and go within weeks or months: this is the star then. The darkening toward the edge is the Color dataset's limb law, drawn ${LIMB_STRENGTH} times as strong. A reduction made in this project with the authors' code and calibrated nights, not their published map.`, - text: { title: `Color + brightness, ${MONTHS[Number(map.referenceNight.slice(5, 7)) - 1]!.slice(0, 3)} ${map.referenceNight.slice(0, 4)}`, detail: `${map.instrument}, ${when}`, summary: 'The star in its own color, darker where interferometry resolved darker regions on its surface.' } }; }, + text: { title: `Color + brightness, ${MONTHS[Number(map.referenceNight.slice(5, 7)) - 1]!.slice(0, 3)} ${map.referenceNight.slice(0, 4)}`, detail: `${map.instrument}, ${map.choice.label}`, summary: 'The star in its own color, darker where interferometry resolved darker regions on its surface.' } }; }, report(maps, scale) { const count = maps.length; return `${count} surface ${count === 1 ? 'map' : 'maps'} on one scale of ${scale.minimum}% to ${scale.maximum}% (${maps.map(map => `${map.choice.label}: ${map.nights.length} nights, chi-squared ${fixed(map.fit.vis2)} and ${fixed(map.fit.closurePhase)}, spots ${fixed(map.spotRatio)} times a spotless star's, halves ${fixed(map.halves)}`).join('; ')})`; }, }; diff --git a/src/objects/arcturus/inventory.json b/src/objects/arcturus/inventory.json index 91f5ca0d2df..68355df4035 100644 --- a/src/objects/arcturus/inventory.json +++ b/src/objects/arcturus/inventory.json @@ -4,14 +4,14 @@ { "location": "public", "filename": "arcturus-arrival.webp", - "bytes": 29610, - "sha256": "287c9c1255751a7d85e5333e6824cae2eba85da533b2efab18b8383203ab9db7" + "bytes": 29574, + "sha256": "3943b519081d205b0eb629fb0c527d80bff7c839675550cf6206fbee070f8571" }, { "location": "public", "filename": "arcturus-billboard.webp", - "bytes": 5234, - "sha256": "d3e2c9c4fe3d99f8c71bf83d5f14cab446ffd4482227b3cb28ee12eeaa644b5a" + "bytes": 5324, + "sha256": "02dbb5008bc559c8a173d23862beb137a41c0fc00ba80a92d37781b41b7fd044" }, { "location": "public", @@ -22,8 +22,8 @@ { "location": "public", "filename": "arcturus-limb-color@2x.webp", - "bytes": 102886, - "sha256": "7b5d2a70fd4a6859841bdefeaa0ba643da047a3dd4d9cfbbbc605c1b2aa01876" + "bytes": 91978, + "sha256": "4441dc7f1ac1a87b1bc1ca0cc978b8644a2a872e3121bc147c4e13cff064522c" }, { "location": "public", @@ -46,14 +46,14 @@ { "location": "prepared", "filename": "assets.json", - "bytes": 1947, - "sha256": "f3170877ac6693ad8d6343e76d281b4d4d06a0e86c666cdf3483bf5dcf78bd96" + "bytes": 1680, + "sha256": "2f46fa68e0aad2aa1e9c5a62195c0f8cd412d78e0dbcb699d95a9fbaa65df13e" }, { "location": "prepared", "filename": "authored-preparation.json", - "bytes": 723, - "sha256": "6b6dc8250e0bd6385ca33fb7b11d82ad092b852ce16e0414495785c21c29e84f" + "bytes": 661, + "sha256": "6b65026b05071ff7c90319b1e91066eabb33447c9615bc5b9e801bdbd2731a49" }, { "location": "prepared", @@ -70,8 +70,8 @@ { "location": "prepared", "filename": "datasets.json", - "bytes": 1011, - "sha256": "51c211163566e0a6b9a63c705619d0d3cbf6d823a01c4450769f2ae237b6a92e" + "bytes": 1059, + "sha256": "338a9e968fa7e1d3ce0890c0b4ce56da15d9df98c8d3ac9ea3f6237d14c23dd5" }, { "location": "prepared", @@ -94,8 +94,8 @@ { "location": "prepared", "filename": "scene.json", - "bytes": 393339, - "sha256": "127f6a05550bcbc8de10945eb53850a347603b24901fc61cf8f91944320ccb1c" + "bytes": 393351, + "sha256": "d97f9140e9bd302fe14b9e724c788c786e9529cbaadd9aca949524da98a22886" }, { "location": "prepared", diff --git a/src/objects/milky-way/inventory.json b/src/objects/milky-way/inventory.json index db12227c7af..09a66e3bb53 100644 --- a/src/objects/milky-way/inventory.json +++ b/src/objects/milky-way/inventory.json @@ -28,8 +28,8 @@ { "location": "prepared", "filename": "members.json", - "bytes": 83414, - "sha256": "95ef7a3ccc0481d771da8099e4f821023957bd322b6be38f51e8b2eaa74d3792" + "bytes": 83580, + "sha256": "2a57cd043cd292ce9817e9ebf5cd04e535dbe70c76d3df1d2d58af0baa6a0f6d" }, { "location": "prepared", diff --git a/src/objects/observable-universe/inventory.json b/src/objects/observable-universe/inventory.json index a2f6617d767..e33a665af24 100644 --- a/src/objects/observable-universe/inventory.json +++ b/src/objects/observable-universe/inventory.json @@ -64,14 +64,14 @@ { "location": "prepared", "filename": "world-context.json", - "bytes": 58518253, - "sha256": "d02ae134135a116a0de34637e1aee4f42adbad7d4ace621a5153a5e443f698fd" + "bytes": 58518221, + "sha256": "fa73937fe0a1fdb79e5460e7258851360658e7d035c657ee64a7423efcb48421" }, { "location": "prepared", "filename": "world-index.json", - "bytes": 1414801, - "sha256": "a906c40d484f61c8ed08c66ccbaad3bb039adb1f2f19b52e271cab2968ed5201" + "bytes": 1414199, + "sha256": "7379b3189f43e10300116969f307b05cf64e09aefcdf817559cac9eb28fd8cff" }, { "location": "prepared", diff --git a/src/objects/udkadua/inventory.json b/src/objects/udkadua/inventory.json index 008ccfd938d..9e480c334a8 100644 --- a/src/objects/udkadua/inventory.json +++ b/src/objects/udkadua/inventory.json @@ -4,14 +4,20 @@ { "location": "public", "filename": "udkadua-arrival.webp", - "bytes": 29164, - "sha256": "d8dd7ca33396840d01dc053bbeab7b786fef736c6ee56f4bd2da2d299c0cce7c" + "bytes": 31740, + "sha256": "b171e58cf596fa6b30e81df67fdb9f2f2c66ed7b53c5a048caa204a16e5b060d" }, { "location": "public", "filename": "udkadua-billboard.webp", - "bytes": 5148, - "sha256": "7b9de2f4b811cfc579fe1707c8c4e31dc2ed370b3b98b48efbf1f365160e5d3f" + "bytes": 5832, + "sha256": "f29e407aa74a19d475d2f378dea595d9f3557855515cec781ed170e077b9787d" + }, + { + "location": "public", + "filename": "udkadua-dataset-color-surface.webp", + "bytes": 274, + "sha256": "97b272955cada82e4b81ef2085976b6689ed17ed90cb8f3fa58a6d249b188347" }, { "location": "public", @@ -19,11 +25,29 @@ "bytes": 44, "sha256": "1769544fc1cb5b50827a1d4f208b12757fdf258643c51bd8a03762ff06eff173" }, + { + "location": "public", + "filename": "udkadua-dataset-surface-2011-09.webp", + "bytes": 312, + "sha256": "75354bb0d778f4f82192da9f18516eb15efe927470b778dc87b1565d812ad1fe" + }, + { + "location": "public", + "filename": "udkadua-limb-color-surface@2x.webp", + "bytes": 108840, + "sha256": "73a85654a00b1d81e85a65d46cbec5b874bb9a8008ce701add342b35809f53b9" + }, { "location": "public", "filename": "udkadua-limb-color@2x.webp", - "bytes": 102398, - "sha256": "5661423c0aefb02d970489455a744abf832b54b65ac1fd915cb5203f052e95b8" + "bytes": 90960, + "sha256": "901247abbb39eacd506c9f87769e2fe56a31ff51cddb7ca2910619ea3795f21d" + }, + { + "location": "public", + "filename": "udkadua-poles-color-surface@2x.webp", + "bytes": 13402, + "sha256": "2289de5ff5688fbbfa13da4f5c518da4cebc64ac332df01e428a9c88872f4741" }, { "location": "public", @@ -31,23 +55,41 @@ "bytes": 1340, "sha256": "bd29b6577ad0a580ca425e6b300958e2e2d84fea589b6e3f984abf3c7681644c" }, + { + "location": "public", + "filename": "udkadua-poles-surface-2011-09@2x.webp", + "bytes": 16982, + "sha256": "b1ae353f2e7c495f1367a936e8ea2d77c5866c34de3ac2c6b6793bf709882d65" + }, + { + "location": "public", + "filename": "udkadua-surface-color-surface@2x.webp", + "bytes": 18264, + "sha256": "4e5566b9d3de27e4a2db08322bd9622b512f50a43fd5f5d5315029a0892aa515" + }, { "location": "public", "filename": "udkadua-surface-color@2x.webp", "bytes": 38, "sha256": "53cb97e6def9fbb335a33444095f5b14cf57f237543bb31ea92de6cfa6564a23" }, + { + "location": "public", + "filename": "udkadua-surface-surface-2011-09@2x.webp", + "bytes": 24392, + "sha256": "57c7607162c28af66483653f9505a027215faf07dc4f55c684b2f514d31b1667" + }, { "location": "prepared", "filename": "arrival-billboard.json", - "bytes": 379, - "sha256": "95bc90d743f4dbf618eb92dc46623acb53215bce94bb16d064b10399fd507378" + "bytes": 377, + "sha256": "eb0748f27e4c8c84387e93b8893bb54951d905654250009160176ac80308863f" }, { "location": "prepared", "filename": "assets.json", - "bytes": 1785, - "sha256": "e7f83f35da5ee62bb1b4a1873a048ee39df4be3b88141a5d3692243a298c93a1" + "bytes": 2227, + "sha256": "0cf87af49bfd3f00aff1677e057cfb1323de4cec41859156023bef1230a79da1" }, { "location": "prepared", @@ -64,20 +106,26 @@ { "location": "prepared", "filename": "controls.json", - "bytes": 364, - "sha256": "fac472776d82c7f0eda43e20fe0796e8a4a992c8194792f718131f4602539ba3" + "bytes": 2150, + "sha256": "fce934df8c62b88cb99167d5c5a7ebb2e11e4b298969712fdf00b17e80f970ea" }, { "location": "prepared", "filename": "datasets.json", - "bytes": 956, - "sha256": "15a64f4299250cea67ac08b965a89d64244898209939a1c61a9a58667107e947" + "bytes": 4114, + "sha256": "39741669bb1ea71342bd60404529312c2bab0e61ccfa15d8b8c70f43d324e3b2" }, { "location": "prepared", "filename": "minimaps.json", - "bytes": 101, - "sha256": "087c2291c1fc076eb71a6d0d7ff5d5b77074bd9ac9b4e63929c77733a8528617" + "bytes": 313, + "sha256": "d7503536a4da149cab88e4098834a9e884ebd95821fc5488b14539230b9af8dc" + }, + { + "location": "prepared", + "filename": "minimaps/color-surface.webp", + "bytes": 1434, + "sha256": "1c178f919e7fd3b4f4eff15432ab757e67518866625e86bf74ab3e7c5952cf3e" }, { "location": "prepared", @@ -85,23 +133,29 @@ "bytes": 444, "sha256": "285d75f47d62c4584b9c810806ab8da9bcb177a2879cda8e9b0e57aceeecd7d1" }, + { + "location": "prepared", + "filename": "minimaps/surface-2011-09.webp", + "bytes": 2806, + "sha256": "cdf97a3e657a2aff14fb635b3bf3975f036c7f928fd907eeb7cde84dffa52154" + }, { "location": "prepared", "filename": "runtime.json", - "bytes": 249453, - "sha256": "6be3008e7dd96dcd5ed610c11ab5d6a90a3549d66a426c0fad79d99e54d543c2" + "bytes": 253559, + "sha256": "7bca51d190bd0058807ef9c472d75b4dc6259d3de2f656d497680e4fc9de9eea" }, { "location": "prepared", "filename": "scene.json", - "bytes": 392890, - "sha256": "3e1b6506af1d503a61b2a594fd066fff99eb54341d606847c857605f9e3f1339" + "bytes": 392819, + "sha256": "e56639bb8aa21356e6d4fc0add4573e9fb1b51963b440678cc5cc1bf776ffe45" }, { "location": "prepared", "filename": "sky.json", - "bytes": 1205, - "sha256": "323bcc71693cb4b08a5ce861507dda1c6613af8f129a7a22ab43f86e20f563c2" + "bytes": 1199, + "sha256": "df7c9352e66c0a3194ed2f892e6f59be499304e547a1b66472e13102491c5cc5" }, { "location": "prepared", @@ -112,14 +166,14 @@ { "location": "prepared", "filename": "text.json", - "bytes": 1665, - "sha256": "6c8ef28129fd08462488bc49918dc28b9f57ff66cf1c2a2330c98a13baa061b0" + "bytes": 2083, + "sha256": "503020c19fff1f91e5a4988f0148fbf73ce785de63a950120bf9cf24dfdb8eb1" }, { "location": "prepared", "filename": "world-navigation.json", - "bytes": 1170, - "sha256": "097e364daafdccabe83c348d26069260cbca6a70be32e8736eacecfd8835cb34" + "bytes": 1117, + "sha256": "e357e657ee9345637cec225f3d7956f326021211128aee5b11253bb65752a7ac" } ] } diff --git a/src/objects/udkadua/object.json b/src/objects/udkadua/object.json index 041a4d027b4..9f7bcdb1b0d 100644 --- a/src/objects/udkadua/object.json +++ b/src/objects/udkadua/object.json @@ -126,25 +126,25 @@ "referenceFrame": "sun-icrf", "epochJdTt": 2461286.5, "originM": [ - 558653415282633900, - -54848033204116824, - 590599190042590700 + 558653415282634050, + -54848033204116850, + 590599190042590800 ], "presentationToReference": [ - 0.6856115018110364, - 0.7213796181710326, - -0.09771548020569995, - -0.06731265088751344, - -0.07083305822952247, - -0.9952143914214409, - 0.7248488639812517, - -0.6889079215318026, - 0.000005985035297034387 + 0.6375431445751888, + 0.6553748663670597, + -0.40499694238295014, + -0.02892214644756789, + -0.5049562608837745, + -0.8626602367323667, + 0.769871579063707, + -0.5616965009047467, + 0.30297655457364775 ], "orbitUpReference": [ - -0.7213796181710326, - 0.07083305822952247, - 0.6889079215318026 + -0.6553748663670597, + 0.5049562608837745, + 0.5616965009047467 ], "metersPerUnit": 16948149.677419353, "bodyRadiusM": 5253926400 diff --git a/src/objects/udkadua/text.json b/src/objects/udkadua/text.json index b3dfadfd997..c20a87cd29f 100644 --- a/src/objects/udkadua/text.json +++ b/src/objects/udkadua/text.json @@ -54,7 +54,7 @@ }, "color-surface": { "title": "Color + brightness, Sep 2011", - "detail": "CHARA/MIRC, 2 to 24 September 2011", + "detail": "CHARA/MIRC, September 2011", "summary": "The star in its own color, darker where interferometry resolved darker regions on its surface." } } From 03c2df1cfb38249147943c9d2bcf37be729de6d3 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 00:52:45 -0300 Subject: [PATCH 06/10] docs(stars): show lambda Andromedae's datasets in the interferometry note --- .../stellar-surface-map-lambda-andromedae.webp | Bin 0 -> 26576 bytes docs/interferometric-imaging.md | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 docs/images/stellar-surface-map-lambda-andromedae.webp diff --git a/docs/images/stellar-surface-map-lambda-andromedae.webp b/docs/images/stellar-surface-map-lambda-andromedae.webp new file mode 100644 index 0000000000000000000000000000000000000000..bba09848c893f0f2caf0648647e4b84bf6de6792 GIT binary patch literal 26576 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 TK=Axn0000000000000006A#i2 literal 0 HcmV?d00001 diff --git a/docs/interferometric-imaging.md b/docs/interferometric-imaging.md index a6f4e29aa41..8d5b2a2413c 100644 --- a/docs/interferometric-imaging.md +++ b/docs/interferometric-imaging.md @@ -172,6 +172,10 @@ A surface season (`cssearth-star-surface-season@1`) names the calibrated files a Verdict: cast. The map of the second row correlates 0.83 with the season's over the surface seen. +The page in the app, headless Chrome, on its three datasets, beside Arcturus with the limb Lacour et al. (2008) fitted. The app's Surface map correlates 0.83 with ROTIR's own sky image of 14 September 2011 once turned by the pole's 26° (the page draws the pole up); the mirrored picture and the other nights fit worse. + +![λ Andromedae on Color + brightness, Surface map and Color, and Arcturus on Color](images/stellar-surface-map-lambda-andromedae.webp) + What in this is not printed in a paper: 1. **The three conditions and their limits** are this repository's, as for every star above. From efb943ea04cce9adddf7f6756bf5b4d07c062647 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 00:57:44 -0300 Subject: [PATCH 07/10] docs(telescope): say how a star's surface map is reduced and cast --- packages/telescope-cli/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/telescope-cli/README.md b/packages/telescope-cli/README.md index 67cc4d10641..aa6292a1a45 100644 --- a/packages/telescope-cli/README.md +++ b/packages/telescope-cli/README.md @@ -99,6 +99,20 @@ target whose pixels the TESS Input Catalog gives too much of other stars' light not read. `telescope new-object --from-pixels all --out SPEC.json` then drafts every reduced star's maps as datasets of its page. +A star an interferometer resolved on several nights while it turned gets one surface fitted to all of them with ROTIR +(`src/archives/interferometry/surface-star.mts`), from a season record that pins the calibrated files, the star's published +size, limb, axis and period, and the settings. +[Interferometric imaging](../../docs/interferometric-imaging.md#a-star-that-turns-between-its-nights) gives the checks that +decide whether the map is cast and what in them is this repository's reading. + +```sh +node packages/telescope-cli/src/archives/interferometry/toolchain.mts install rotir +node packages/telescope-cli/src/archives/interferometry/surface-star.mts packages/telescope-cli/src/archives/interferometry/seasons/udkadua-mirc-2011-09 output/interferometry/udkadua-mirc-2011-09 +``` + +A spec's `resolvedMaps` (a host, and for each map the season's id, a dataset id and a label) then puts a cast map on the +star's page with `telescope new-object SPEC.json --bake`. + ## Supported v1 boundary | Current artifact | Supported next operation | Additional input | From 824fa3f4674a04f5e6d51145c79a4fa0eae00a50 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 01:14:00 -0300 Subject: [PATCH 08/10] chore(stars): keep the surface map's table out of git and restore it from the source cache --- .gitignore | 2 + docs/interferometric-imaging.md | 2 +- .../src/new-object/resolved/resolved-maps.mts | 4 +- .../src/new-object/resolved/resolved.test.mts | 7 +- src/objects/udkadua/source/manifest.json | 55 +- .../interferometry/udkadua-mirc-2011-09.dat | 2706 ----------------- 6 files changed, 37 insertions(+), 2739 deletions(-) delete mode 100644 src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat diff --git a/.gitignore b/.gitignore index fc666e3aeed..e59806046a1 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,8 @@ src/objects/*/source/science/tess/pdcsap/*.dat src/objects/*/source/science/k2/pdcsap/fine/*.dat src/objects/*/source/science/tess/pdcsap/fine/*.dat src/objects/*/source/science/kepler/kepseismic/fine/*.dat +# A star's surface map fitted to its interferometry of several nights (70 KB a map); built by packages/telescope-cli/src/archives/interferometry/surface-star.mts, restored from the source mirror. +src/objects/*/source/science/interferometry/*.dat # M1-67's model grid (17 MB); built by packages/bake/authoring/m1-67/shell-grid.mts, restored from the source mirror. src/objects/m1-67-layers/source/shell-grid.dat # The Crab's measured filaments (416,573 rows, 11.5 MB); built by packages/bake/authoring/m1/filament-speeds.mts, restored from the source mirror. diff --git a/docs/interferometric-imaging.md b/docs/interferometric-imaging.md index 8d5b2a2413c..b903498fbf5 100644 --- a/docs/interferometric-imaging.md +++ b/docs/interferometric-imaging.md @@ -184,7 +184,7 @@ What in this is not printed in a paper: 4. **The regularizer.** The paper printed a total-variation weight of 0.01 for its 2021 code. The pinned code states that its weights do not carry over between regularizers, and its authors' script for these files uses `sobel2` at 10 on HEALPix level 3: those settings are used. 5. **Longitude 0** is the meridian that faced the Earth on 14 September 2011, the night with the most data. The star has no defined prime meridian, and the page does not turn it. 6. **What was never seen.** 34° of longitude faced the Earth on none of the nights. ROTIR fills them from its regularizer; the table holds the mean there, and the dataset draws a black line along the edge (`outlineZeroOf` in `tecplot-lonlat-map.ts`). The authors' plots gray the same tiles. -7. **The table** samples ROTIR's 768 tiles at nodes 5° apart, in percent of the mean of the surface seen. +7. **The table** samples ROTIR's 768 tiles at nodes 5° apart, in percent of the mean of the surface seen. It is built by `surface-star.mts`, kept out of git and restored from the source cache, as the brightness maps' tables are. 8. **Color + brightness** draws the star's visible color darker where the infrared map is darker, with the look chosen for the brightness maps (`tinted`, `LIMB_STRENGTH`). The map is of the H band; how dark the spots are in visible light is not measured. ## Sphere maps on a dataset diff --git a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts index f43e1d89001..935b5965632 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved-maps.mts @@ -72,7 +72,7 @@ const checks = (map: ResolvedSurfaceMap) => `The fit leaves a reduced chi-square /** What is a resolved surface map's own in the records surface-maps.mts writes. */ export const RESOLVED_MAPS: MapKind = { - consumer: RESOLVED_CONSUMER, directory: RESOLVED_DIRECTORY, inputTag: 'interferometry-map', stepGroup: 'surface', variable: BRIGHTNESS_VARIABLE, units: '%', controlLabel: 'Surface map', legendTitle: 'Surface brightness, infrared', + consumer: RESOLVED_CONSUMER, directory: RESOLVED_DIRECTORY, inputTag: 'interferometry-map', generator: RESOLVED_GENERATOR, stepGroup: 'surface', variable: BRIGHTNESS_VARIABLE, units: '%', controlLabel: 'Surface map', legendTitle: 'Surface brightness, infrared', archiveUrl: ROTIR_URL, archiveOf: map => map.data.url, references: [], referencesOf: map => [{ catalogueId: map.data.record, role: 'material', evidence: map.data.url }, ...map.papers.map(paper => ({ catalogueId: paper.record, role: 'method', evidence: `https://doi.org/${paper.doi}` })), { catalogueId: ROTIR_RECORD, role: 'method', evidence: ROTIR_URL }], colors: COLORS, palette: PALETTE, outlineZeroOf: FACING_VARIABLE, outlines: () => false, @@ -83,7 +83,7 @@ export const RESOLVED_MAPS: MapKind = { inputTitle: `Surface map of ${map.targetName} from its ${map.instrument} visibilities of ${when}: infrared brightness on a longitude-latitude grid`, credit: `${map.data.credit}; the star's size, limb, axis and period from ${map.papers[0]!.citation}; map made in this project with ${map.codes.join(' and ')}`, displayCredit: `${map.instrument} · mapped here`, license: map.data.license, licenseEvidence: [map.data.url], - acquisition: `Built by ${RESOLVED_GENERATOR} from the season ${map.season}: the ${map.nights.length} calibrated files at ${map.data.url}, fitted with the pinned ROTIR (${map.recipe}). The receipt with the fit and its checks is written again by that command under output/interferometry and is not kept in git.`, + acquisition: `Built by ${RESOLVED_GENERATOR} from the season ${map.season}: the ${map.nights.length} calibrated files at ${map.data.url}, fitted with the pinned ROTIR (${map.recipe}). Restored from the source cache; not tracked. The receipt with the fit and its checks is written again by that command under output/interferometry and is not kept in git.`, redistribution: 'A table of fitted values made in this project; the calibrated files themselves are not redistributed.', description: `Brightness of ${map.targetName}'s surface in the ${map.band}, fitted with ROTIR to the ${map.vis2.toLocaleString('en-US')} squared visibilities and ${map.closurePhases.toLocaleString('en-US')} closure phases ${map.instrument} measured on ${map.nights.length} nights, ${when}: one surface on a sphere ${map.diameterMas} mas across that turns once in ${map.periodDays} d, tilted ${map.inclinationDegrees}° from the line of sight with its pole ${map.positionAngleDegrees}° east of north (${paperOf(map.inclinationSource)}). ${checks(map)}. Percent of the mean of the surface seen. Longitude 0 is the meridian that faced the Earth on ${day(map.referenceNight)}. Nothing smaller than about ${detail}° of the surface is resolved.${edge} The same nights were imaged by their authors (${cite(map)}); this is a reduction made in this project with their code, not their published map.`, surfaceTitle: `${map.instrument} · surface map made here · ${choice.label}`, qualification: `Mapped in this project · ${map.instrument}, ${choice.label.toLowerCase()}`, diff --git a/packages/telescope-cli/src/new-object/resolved/resolved.test.mts b/packages/telescope-cli/src/new-object/resolved/resolved.test.mts index ed311025330..694b0da594f 100644 --- a/packages/telescope-cli/src/new-object/resolved/resolved.test.mts +++ b/packages/telescope-cli/src/new-object/resolved/resolved.test.mts @@ -34,14 +34,15 @@ test('the page gains the star in its color over the map, the map with its scale, const map = reducedSurface(CHOICE, receipt(), TABLE), { files, opensOn } = surfaceMapFiles(RESOLVED_MAPS, { host: 'hd-1', maps: [CHOICE] }, { id: 'hd-1', name: 'HD 1', colorHex: '#ffddbb' }, [map], HOST()); const raster = JSON.parse(files.get('src/objects/hd-1/source/preparation/raster.json')!) as { surfaces: { id: string; science: Record }[] }; const content = JSON.parse(files.get('src/objects/hd-1/source/content/object.json')!) as { datasets: { defaultDataset: string; controls: { id: string; notes?: string; step?: unknown }[] } }; - const manifest = JSON.parse(files.get('src/objects/hd-1/source/manifest.json')!) as { inputs: { id: string; path: string; sourceBinding?: { references: { catalogueId: string }[] } }[] }; + const manifest = JSON.parse(files.get('src/objects/hd-1/source/manifest.json')!) as { inputs: { path: string }[]; generatedIntermediates: { id: string; path: string; generator?: string; sourceBinding?: { references: { catalogueId: string }[] } }[] }; assert.equal(opensOn, 'color-surface'); assert.deepEqual(content.datasets.controls.map(control => control.id), ['color-surface', 'surface-2011-09', 'color']); const drawn = raster.surfaces.find(surface => surface.id === 'surface-2011-09')!.science, natural = raster.surfaces.find(surface => surface.id === 'color-surface')!.science; assert.deepEqual([drawn.format, drawn.variable, drawn.outlineZeroOf, drawn.consumer, drawn.minimum, drawn.maximum], ['tecplot-lonlat-map', 'Brightness [%]', 'Facing', RESOLVED_CONSUMER, 70, 130]); assert.equal(drawn.outlineLatitudes, undefined); assert.equal(natural.outlineZeroOf, undefined); assert.equal(natural.limbOf, 'color'); - // One map has no steps; its table is tracked beside the star and bound to the nights, the paper and the code. + // One map has no steps; its table is built here, kept out of git and restored from the source cache, and is bound to the nights, the paper and the code. assert.equal(content.datasets.controls[1]!.step, undefined); - const input = manifest.inputs.find(one => one.path === 'science/interferometry/star-mirc-2011-09.dat')!; + const input = manifest.generatedIntermediates.find(one => one.path === 'science/interferometry/star-mirc-2011-09.dat')!; + assert.equal(input.generator, 'packages/telescope-cli/src/archives/interferometry/surface-star.mts'); assert.ok(!manifest.inputs.some(one => one.path === input.path)); assert.deepEqual(input.sourceBinding!.references.map(reference => reference.catalogueId), ['code-demos-hd-1', 'arxiv-2107-00001', 'rotir-jl']); assert.equal(files.get('src/objects/hd-1/source/science/interferometry/star-mirc-2011-09.dat'), TABLE); for (const control of content.datasets.controls.slice(0, 2)) assert.match(control.notes!, /not (?:a|their) published map|made in this project/u); diff --git a/src/objects/udkadua/source/manifest.json b/src/objects/udkadua/source/manifest.json index 2ab2d55a31f..9f92a3f25ff 100644 --- a/src/objects/udkadua/source/manifest.json +++ b/src/objects/udkadua/source/manifest.json @@ -204,6 +204,32 @@ "kind": "local", "reason": "Published limb-darkening law transcribed with its cells; repinned when edited." } + } + ], + "generatedIntermediates": [ + { + "id": "limb-darkened-disc-context-marker", + "path": "presentation/context.png", + "origin": "https://cdsarc.cds.unistra.fr/ftp/III/202/catalog.dat", + "credit": "The color dataset as a disc, dimmed toward the limb by its law; rendered by packages/telescope-cli/src/source-authoring/context-markers.mts", + "license": "Project-authored display derivative.", + "consumers": [ + "navigation" + ], + "recipe": { + "generator": "packages/telescope-cli/src/source-authoring/context-markers.mts", + "inputs": [ + "udkadua-stellar-color", + "udkadua-kharitonov", + "udkadua-preparation-raster", + "udkadua-martinez-2021-limb-darkening" + ] + }, + "generator": "packages/telescope-cli/src/source-authoring/context-markers.mts", + "sourceBinding": { + "kind": "local", + "reason": "The color dataset rendered as a disc; `context-markers.mts --check` recomputes it." + } }, { "id": "udkadua-interferometry-map-surface-2011-09", @@ -218,7 +244,8 @@ "licenseEvidence": [ "https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data" ], - "acquisition": "Built by packages/telescope-cli/src/archives/interferometry/surface-star.mts from the season udkadua-mirc-2011-09: the 6 calibrated files at https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data, fitted with the pinned ROTIR (HEALPix level 3, sobel2 at weight 10, 1000 iterations). The receipt with the fit and its checks is written again by that command under output/interferometry and is not kept in git.", + "acquisition": "Built by packages/telescope-cli/src/archives/interferometry/surface-star.mts from the season udkadua-mirc-2011-09: the 6 calibrated files at https://github.com/fabienbaron/ROTIR.jl/tree/ad308759b741b861b6c19fedd001c323a3a64479/demos/data, fitted with the pinned ROTIR (HEALPix level 3, sobel2 at weight 10, 1000 iterations). Restored from the source cache; not tracked. The receipt with the fit and its checks is written again by that command under output/interferometry and is not kept in git.", + "generator": "packages/telescope-cli/src/archives/interferometry/surface-star.mts", "redistribution": "A table of fitted values made in this project; the calibrated files themselves are not redistributed.", "consumers": [ "rotir-surface" @@ -250,32 +277,6 @@ } } ], - "generatedIntermediates": [ - { - "id": "limb-darkened-disc-context-marker", - "path": "presentation/context.png", - "origin": "https://cdsarc.cds.unistra.fr/ftp/III/202/catalog.dat", - "credit": "The color dataset as a disc, dimmed toward the limb by its law; rendered by packages/telescope-cli/src/source-authoring/context-markers.mts", - "license": "Project-authored display derivative.", - "consumers": [ - "navigation" - ], - "recipe": { - "generator": "packages/telescope-cli/src/source-authoring/context-markers.mts", - "inputs": [ - "udkadua-stellar-color", - "udkadua-kharitonov", - "udkadua-preparation-raster", - "udkadua-martinez-2021-limb-darkening" - ] - }, - "generator": "packages/telescope-cli/src/source-authoring/context-markers.mts", - "sourceBinding": { - "kind": "local", - "reason": "The color dataset rendered as a disc; `context-markers.mts --check` recomputes it." - } - } - ], "documents": [ { "path": "content/object.json", diff --git a/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat b/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat deleted file mode 100644 index 5db6ca8df5f..00000000000 --- a/src/objects/udkadua/source/science/interferometry/udkadua-mirc-2011-09.dat +++ /dev/null @@ -1,2706 +0,0 @@ -TITLE = "Surface brightness of λ Andromedae, CHARA/MIRC, six nights from 2 to 24 September 2011 (Parks et al. 2021; Martinez et al. 2021), ROTIR on 6 nights (season udkadua-mirc-2011-09)" -VARIABLES = "Longitude [Deg]" "Latitude [Deg]" "Brightness [%]" "Facing" -ZONE I=73, J=37, K=1, ZONETYPE=Ordered -DATAPACKING=POINT -DT=(SINGLE SINGLE SINGLE SINGLE) -0.0 -90.0 100.000 -0.0765 -5.0 -90.0 100.000 -0.0765 -10.0 -90.0 100.000 -0.0765 -15.0 -90.0 100.000 -0.0765 -20.0 -90.0 100.000 -0.0765 -25.0 -90.0 100.000 -0.0765 -30.0 -90.0 100.000 -0.0765 -35.0 -90.0 100.000 -0.0765 -40.0 -90.0 100.000 -0.0765 -45.0 -90.0 100.000 -0.0765 -50.0 -90.0 100.000 -0.0765 -55.0 -90.0 100.000 -0.0765 -60.0 -90.0 100.000 -0.0765 -65.0 -90.0 100.000 -0.0765 -70.0 -90.0 100.000 -0.0765 -75.0 -90.0 100.000 -0.0765 -80.0 -90.0 100.000 -0.0765 -85.0 -90.0 100.000 -0.0765 -90.0 -90.0 100.000 -0.0765 -95.0 -90.0 100.000 -0.0765 -100.0 -90.0 100.000 -0.0765 -105.0 -90.0 100.000 -0.0765 -110.0 -90.0 100.000 -0.0765 -115.0 -90.0 100.000 -0.0765 -120.0 -90.0 100.000 -0.0765 -125.0 -90.0 100.000 -0.0765 -130.0 -90.0 100.000 -0.0765 -135.0 -90.0 100.000 -0.0765 -140.0 -90.0 100.000 -0.0765 -145.0 -90.0 100.000 -0.0765 -150.0 -90.0 100.000 -0.0765 -155.0 -90.0 100.000 -0.0765 -160.0 -90.0 100.000 -0.0765 -165.0 -90.0 100.000 -0.0765 -170.0 -90.0 100.000 -0.0765 -175.0 -90.0 100.000 -0.0765 -180.0 -90.0 100.000 -0.0765 -185.0 -90.0 100.000 -0.0765 -190.0 -90.0 100.000 -0.0765 -195.0 -90.0 100.000 -0.0765 -200.0 -90.0 100.000 -0.0765 -205.0 -90.0 100.000 -0.0765 -210.0 -90.0 100.000 -0.0765 -215.0 -90.0 100.000 -0.0765 -220.0 -90.0 100.000 -0.0765 -225.0 -90.0 100.000 -0.0765 -230.0 -90.0 100.000 -0.0765 -235.0 -90.0 100.000 -0.0765 -240.0 -90.0 100.000 -0.0765 -245.0 -90.0 100.000 -0.0765 -250.0 -90.0 100.000 -0.0765 -255.0 -90.0 100.000 -0.0765 -260.0 -90.0 100.000 -0.0765 -265.0 -90.0 100.000 -0.0765 -270.0 -90.0 100.000 -0.0765 -275.0 -90.0 100.000 -0.0765 -280.0 -90.0 100.000 -0.0765 -285.0 -90.0 100.000 -0.0765 -290.0 -90.0 100.000 -0.0765 -295.0 -90.0 100.000 -0.0765 -300.0 -90.0 100.000 -0.0765 -305.0 -90.0 100.000 -0.0765 -310.0 -90.0 100.000 -0.0765 -315.0 -90.0 100.000 -0.0765 -320.0 -90.0 100.000 -0.0765 -325.0 -90.0 100.000 -0.0765 -330.0 -90.0 100.000 -0.0765 -335.0 -90.0 100.000 -0.0765 -340.0 -90.0 100.000 -0.0765 -345.0 -90.0 100.000 -0.0765 -350.0 -90.0 100.000 -0.0765 -355.0 -90.0 100.000 -0.0765 -360.0 -90.0 100.000 -0.0765 -0.0 -85.0 99.884 0.0107 -5.0 -85.0 99.884 0.0104 -10.0 -85.0 99.884 0.0094 -15.0 -85.0 99.884 0.0091 -20.0 -85.0 99.884 0.0102 -25.0 -85.0 99.884 0.0107 -30.0 -85.0 99.884 0.0105 -35.0 -85.0 99.884 0.0097 -40.0 -85.0 99.884 0.0086 -45.0 -85.0 99.884 0.0099 -50.0 -85.0 99.884 0.0106 -55.0 -85.0 99.884 0.0107 -60.0 -85.0 99.884 0.0100 -65.0 -85.0 99.884 0.0088 -70.0 -85.0 99.884 0.0096 -75.0 -85.0 99.884 0.0105 -80.0 -85.0 99.945 0.0107 -85.0 -85.0 99.945 0.0103 -90.0 -85.0 99.945 0.0092 -95.0 -85.0 99.945 0.0074 -100.0 -85.0 99.945 0.0050 -105.0 -85.0 99.945 0.0020 -110.0 -85.0 100.000 -0.0016 -115.0 -85.0 100.000 -0.0058 -120.0 -85.0 100.000 -0.0105 -125.0 -85.0 100.000 -0.0157 -130.0 -85.0 100.000 -0.0213 -135.0 -85.0 100.000 -0.0274 -140.0 -85.0 100.000 -0.0339 -145.0 -85.0 100.000 -0.0406 -150.0 -85.0 100.000 -0.0477 -155.0 -85.0 100.000 -0.0550 -160.0 -85.0 100.000 -0.0624 -165.0 -85.0 100.000 -0.0699 -170.0 -85.0 100.000 -0.0775 -175.0 -85.0 100.000 -0.0851 -180.0 -85.0 100.000 -0.0926 -185.0 -85.0 100.000 -0.0999 -190.0 -85.0 100.000 -0.0960 -195.0 -85.0 100.000 -0.0886 -200.0 -85.0 100.000 -0.0811 -205.0 -85.0 100.000 -0.0735 -210.0 -85.0 100.000 -0.0659 -215.0 -85.0 100.000 -0.0584 -220.0 -85.0 100.000 -0.0511 -225.0 -85.0 100.000 -0.0439 -230.0 -85.0 100.000 -0.0370 -235.0 -85.0 100.000 -0.0304 -240.0 -85.0 100.000 -0.0241 -245.0 -85.0 100.000 -0.0183 -250.0 -85.0 100.000 -0.0128 -255.0 -85.0 100.000 -0.0079 -260.0 -85.0 100.000 -0.0035 -265.0 -85.0 100.039 0.0004 -270.0 -85.0 100.039 0.0037 -275.0 -85.0 100.039 0.0064 -280.0 -85.0 100.039 0.0084 -285.0 -85.0 100.039 0.0098 -290.0 -85.0 100.039 0.0106 -295.0 -85.0 100.039 0.0107 -300.0 -85.0 100.039 0.0101 -305.0 -85.0 100.039 0.0089 -310.0 -85.0 100.039 0.0070 -315.0 -85.0 100.039 0.0089 -320.0 -85.0 100.039 0.0101 -325.0 -85.0 100.039 0.0107 -330.0 -85.0 100.039 0.0106 -335.0 -85.0 100.039 0.0098 -340.0 -85.0 100.039 0.0084 -345.0 -85.0 100.039 0.0078 -350.0 -85.0 99.884 0.0094 -355.0 -85.0 99.884 0.0104 -360.0 -85.0 99.884 0.0107 -0.0 -80.0 102.212 0.0978 -5.0 -80.0 102.212 0.0972 -10.0 -80.0 102.212 0.0952 -15.0 -80.0 102.212 0.0945 -20.0 -80.0 102.212 0.0968 -25.0 -80.0 102.212 0.0978 -30.0 -80.0 102.212 0.0975 -35.0 -80.0 99.884 0.0958 -40.0 -80.0 101.130 0.0935 -45.0 -80.0 101.130 0.0962 -50.0 -80.0 101.130 0.0976 -55.0 -80.0 101.130 0.0977 -60.0 -80.0 101.130 0.0965 -65.0 -80.0 101.130 0.0939 -70.0 -80.0 101.130 0.0956 -75.0 -80.0 101.130 0.0974 -80.0 -80.0 101.702 0.0978 -85.0 -80.0 101.702 0.0969 -90.0 -80.0 101.702 0.0947 -95.0 -80.0 101.702 0.0912 -100.0 -80.0 101.702 0.0865 -105.0 -80.0 101.702 0.0805 -110.0 -80.0 101.702 0.0733 -115.0 -80.0 101.702 0.0650 -120.0 -80.0 101.702 0.0556 -125.0 -80.0 99.945 0.0453 -130.0 -80.0 99.942 0.0340 -135.0 -80.0 99.942 0.0218 -140.0 -80.0 99.942 0.0090 -145.0 -80.0 100.000 -0.0045 -150.0 -80.0 100.000 -0.0186 -155.0 -80.0 100.000 -0.0330 -160.0 -80.0 100.000 -0.0478 -165.0 -80.0 100.000 -0.0628 -170.0 -80.0 100.000 -0.0779 -175.0 -80.0 100.000 -0.0930 -180.0 -80.0 100.000 -0.1080 -185.0 -80.0 100.000 -0.1226 -190.0 -80.0 100.000 -0.1149 -195.0 -80.0 100.000 -0.1001 -200.0 -80.0 100.000 -0.0850 -205.0 -80.0 100.000 -0.0699 -210.0 -80.0 100.000 -0.0549 -215.0 -80.0 100.000 -0.0400 -220.0 -80.0 100.000 -0.0253 -225.0 -80.0 100.000 -0.0111 -230.0 -80.0 99.958 0.0027 -235.0 -80.0 99.958 0.0159 -240.0 -80.0 99.958 0.0284 -245.0 -80.0 99.958 0.0401 -250.0 -80.0 99.958 0.0509 -255.0 -80.0 99.958 0.0607 -260.0 -80.0 100.651 0.0695 -265.0 -80.0 100.651 0.0773 -270.0 -80.0 100.651 0.0838 -275.0 -80.0 100.651 0.0892 -280.0 -80.0 100.651 0.0932 -285.0 -80.0 100.651 0.0961 -290.0 -80.0 100.651 0.0976 -295.0 -80.0 100.651 0.0978 -300.0 -80.0 100.651 0.0966 -305.0 -80.0 100.039 0.0942 -310.0 -80.0 102.871 0.0905 -315.0 -80.0 102.871 0.0942 -320.0 -80.0 102.871 0.0966 -325.0 -80.0 102.871 0.0978 -330.0 -80.0 102.871 0.0976 -335.0 -80.0 102.871 0.0961 -340.0 -80.0 102.871 0.0932 -345.0 -80.0 102.871 0.0919 -350.0 -80.0 102.212 0.0952 -355.0 -80.0 102.212 0.0972 -360.0 -80.0 102.212 0.0978 -0.0 -75.0 106.231 0.1842 -5.0 -75.0 106.231 0.1832 -10.0 -75.0 102.212 0.1803 -15.0 -75.0 102.212 0.1793 -20.0 -75.0 102.212 0.1827 -25.0 -75.0 102.737 0.1841 -30.0 -75.0 102.737 0.1836 -35.0 -75.0 102.737 0.1812 -40.0 -75.0 102.737 0.1778 -45.0 -75.0 101.130 0.1818 -50.0 -75.0 101.130 0.1839 -55.0 -75.0 101.130 0.1840 -60.0 -75.0 102.690 0.1822 -65.0 -75.0 102.690 0.1784 -70.0 -75.0 102.690 0.1809 -75.0 -75.0 102.690 0.1835 -80.0 -75.0 103.220 0.1842 -85.0 -75.0 103.220 0.1829 -90.0 -75.0 103.220 0.1796 -95.0 -75.0 103.220 0.1744 -100.0 -75.0 101.702 0.1673 -105.0 -75.0 101.702 0.1583 -110.0 -75.0 101.702 0.1476 -115.0 -75.0 102.235 0.1353 -120.0 -75.0 102.235 0.1213 -125.0 -75.0 102.235 0.1058 -130.0 -75.0 102.235 0.0890 -135.0 -75.0 99.942 0.0709 -140.0 -75.0 99.942 0.0518 -145.0 -75.0 99.942 0.0316 -150.0 -75.0 99.954 0.0107 -155.0 -75.0 100.000 -0.0109 -160.0 -75.0 100.000 -0.0329 -165.0 -75.0 100.000 -0.0553 -170.0 -75.0 100.000 -0.0778 -175.0 -75.0 100.000 -0.1002 -180.0 -75.0 100.000 -0.1225 -185.0 -75.0 100.000 -0.1444 -190.0 -75.0 100.000 -0.1329 -195.0 -75.0 100.000 -0.1108 -200.0 -75.0 100.000 -0.0884 -205.0 -75.0 100.000 -0.0658 -210.0 -75.0 100.000 -0.0434 -215.0 -75.0 100.000 -0.0212 -220.0 -75.0 99.941 0.0006 -225.0 -75.0 99.958 0.0219 -230.0 -75.0 99.958 0.0424 -235.0 -75.0 99.958 0.0621 -240.0 -75.0 100.527 0.0807 -245.0 -75.0 100.527 0.0981 -250.0 -75.0 100.527 0.1142 -255.0 -75.0 100.527 0.1289 -260.0 -75.0 102.228 0.1420 -265.0 -75.0 102.228 0.1535 -270.0 -75.0 102.228 0.1633 -275.0 -75.0 102.228 0.1713 -280.0 -75.0 100.651 0.1774 -285.0 -75.0 100.651 0.1816 -290.0 -75.0 100.651 0.1838 -295.0 -75.0 103.393 0.1841 -300.0 -75.0 103.393 0.1824 -305.0 -75.0 103.393 0.1788 -310.0 -75.0 103.393 0.1732 -315.0 -75.0 102.871 0.1788 -320.0 -75.0 102.871 0.1824 -325.0 -75.0 102.871 0.1841 -330.0 -75.0 105.899 0.1838 -335.0 -75.0 105.899 0.1816 -340.0 -75.0 105.899 0.1774 -345.0 -75.0 105.899 0.1754 -350.0 -75.0 106.231 0.1803 -355.0 -75.0 106.231 0.1832 -360.0 -75.0 106.231 0.1842 -0.0 -70.0 106.231 0.2692 -5.0 -70.0 106.231 0.2679 -10.0 -70.0 106.231 0.2640 -15.0 -70.0 106.231 0.2626 -20.0 -70.0 105.429 0.2671 -25.0 -70.0 102.737 0.2691 -30.0 -70.0 102.737 0.2684 -35.0 -70.0 102.737 0.2652 -40.0 -70.0 102.737 0.2607 -45.0 -70.0 103.353 0.2660 -50.0 -70.0 103.353 0.2688 -55.0 -70.0 102.690 0.2689 -60.0 -70.0 102.690 0.2665 -65.0 -70.0 102.690 0.2615 -70.0 -70.0 102.690 0.2648 -75.0 -70.0 102.690 0.2683 -80.0 -70.0 103.220 0.2691 -85.0 -70.0 103.220 0.2674 -90.0 -70.0 103.220 0.2630 -95.0 -70.0 103.220 0.2562 -100.0 -70.0 103.220 0.2468 -105.0 -70.0 103.220 0.2350 -110.0 -70.0 103.305 0.2209 -115.0 -70.0 102.235 0.2045 -120.0 -70.0 102.235 0.1860 -125.0 -70.0 102.235 0.1656 -130.0 -70.0 102.235 0.1434 -135.0 -70.0 102.064 0.1195 -140.0 -70.0 102.064 0.0942 -145.0 -70.0 99.954 0.0676 -150.0 -70.0 99.954 0.0399 -155.0 -70.0 99.954 0.0114 -160.0 -70.0 100.000 -0.0177 -165.0 -70.0 100.000 -0.0473 -170.0 -70.0 100.000 -0.0770 -175.0 -70.0 100.000 -0.1067 -180.0 -70.0 100.000 -0.1362 -185.0 -70.0 100.000 -0.1651 -190.0 -70.0 100.000 -0.1498 -195.0 -70.0 100.000 -0.1206 -200.0 -70.0 100.000 -0.0910 -205.0 -70.0 100.000 -0.0613 -210.0 -70.0 100.000 -0.0316 -215.0 -70.0 100.000 -0.0022 -220.0 -70.0 99.941 0.0266 -225.0 -70.0 100.731 0.0547 -230.0 -70.0 100.731 0.0818 -235.0 -70.0 100.527 0.1077 -240.0 -70.0 100.527 0.1323 -245.0 -70.0 100.527 0.1554 -250.0 -70.0 100.527 0.1767 -255.0 -70.0 100.527 0.1961 -260.0 -70.0 102.228 0.2134 -265.0 -70.0 102.228 0.2286 -270.0 -70.0 102.228 0.2415 -275.0 -70.0 102.228 0.2521 -280.0 -70.0 102.228 0.2601 -285.0 -70.0 102.228 0.2657 -290.0 -70.0 104.635 0.2686 -295.0 -70.0 103.393 0.2690 -300.0 -70.0 103.393 0.2668 -305.0 -70.0 103.393 0.2620 -310.0 -70.0 103.393 0.2546 -315.0 -70.0 104.612 0.2620 -320.0 -70.0 104.612 0.2668 -325.0 -70.0 105.899 0.2690 -330.0 -70.0 105.899 0.2686 -335.0 -70.0 105.899 0.2657 -340.0 -70.0 105.899 0.2601 -345.0 -70.0 105.899 0.2575 -350.0 -70.0 106.231 0.2640 -355.0 -70.0 106.231 0.2679 -360.0 -70.0 106.231 0.2692 -0.0 -65.0 107.787 0.3521 -5.0 -65.0 107.787 0.3505 -10.0 -65.0 107.787 0.3457 -15.0 -65.0 105.429 0.3440 -20.0 -65.0 105.429 0.3496 -25.0 -65.0 105.429 0.3520 -30.0 -65.0 105.429 0.3512 -35.0 -65.0 103.353 0.3472 -40.0 -65.0 103.353 0.3416 -45.0 -65.0 103.353 0.3482 -50.0 -65.0 103.353 0.3516 -55.0 -65.0 103.353 0.3518 -60.0 -65.0 104.131 0.3488 -65.0 -65.0 104.131 0.3426 -70.0 -65.0 104.131 0.3467 -75.0 -65.0 104.131 0.3510 -80.0 -65.0 104.381 0.3520 -85.0 -65.0 104.381 0.3499 -90.0 -65.0 104.381 0.3445 -95.0 -65.0 104.381 0.3360 -100.0 -65.0 104.381 0.3244 -105.0 -65.0 103.305 0.3099 -110.0 -65.0 103.305 0.2924 -115.0 -65.0 103.305 0.2722 -120.0 -65.0 103.305 0.2494 -125.0 -65.0 102.064 0.2241 -130.0 -65.0 102.064 0.1966 -135.0 -65.0 102.064 0.1671 -140.0 -65.0 102.064 0.1358 -145.0 -65.0 102.064 0.1030 -150.0 -65.0 99.963 0.0688 -155.0 -65.0 99.963 0.0336 -160.0 -65.0 100.000 -0.0024 -165.0 -65.0 100.000 -0.0389 -170.0 -65.0 100.000 -0.0757 -175.0 -65.0 100.000 -0.1124 -180.0 -65.0 100.000 -0.1488 -185.0 -65.0 100.000 -0.1845 -190.0 -65.0 100.000 -0.1657 -195.0 -65.0 100.000 -0.1295 -200.0 -65.0 100.000 -0.0930 -205.0 -65.0 100.000 -0.0562 -210.0 -65.0 100.000 -0.0196 -215.0 -65.0 100.731 0.0167 -220.0 -65.0 100.731 0.0524 -225.0 -65.0 100.731 0.0871 -230.0 -65.0 100.731 0.1206 -235.0 -65.0 100.731 0.1526 -240.0 -65.0 102.145 0.1830 -245.0 -65.0 102.145 0.2115 -250.0 -65.0 102.145 0.2378 -255.0 -65.0 102.145 0.2618 -260.0 -65.0 103.986 0.2832 -265.0 -65.0 103.986 0.3020 -270.0 -65.0 103.986 0.3179 -275.0 -65.0 103.986 0.3310 -280.0 -65.0 103.986 0.3409 -285.0 -65.0 104.635 0.3478 -290.0 -65.0 104.635 0.3514 -295.0 -65.0 104.635 0.3519 -300.0 -65.0 104.635 0.3491 -305.0 -65.0 104.612 0.3432 -310.0 -65.0 104.612 0.3341 -315.0 -65.0 104.612 0.3432 -320.0 -65.0 104.612 0.3491 -325.0 -65.0 104.612 0.3519 -330.0 -65.0 107.390 0.3514 -335.0 -65.0 107.390 0.3478 -340.0 -65.0 107.390 0.3409 -345.0 -65.0 107.390 0.3377 -350.0 -65.0 107.787 0.3457 -355.0 -65.0 107.787 0.3505 -360.0 -65.0 107.787 0.3521 -0.0 -60.0 107.193 0.4323 -5.0 -60.0 107.193 0.4304 -10.0 -60.0 106.955 0.4247 -15.0 -60.0 106.955 0.4228 -20.0 -60.0 106.955 0.4294 -25.0 -60.0 106.955 0.4322 -30.0 -60.0 103.556 0.4312 -35.0 -60.0 103.556 0.4265 -40.0 -60.0 103.556 0.4199 -45.0 -60.0 103.922 0.4277 -50.0 -60.0 103.922 0.4317 -55.0 -60.0 103.922 0.4320 -60.0 -60.0 103.922 0.4284 -65.0 -60.0 104.961 0.4211 -70.0 -60.0 104.961 0.4260 -75.0 -60.0 104.961 0.4310 -80.0 -60.0 105.049 0.4323 -85.0 -60.0 105.049 0.4297 -90.0 -60.0 105.049 0.4234 -95.0 -60.0 105.049 0.4133 -100.0 -60.0 103.766 0.3996 -105.0 -60.0 103.766 0.3824 -110.0 -60.0 103.766 0.3617 -115.0 -60.0 103.766 0.3378 -120.0 -60.0 102.975 0.3108 -125.0 -60.0 102.975 0.2809 -130.0 -60.0 102.975 0.2484 -135.0 -60.0 101.603 0.2135 -140.0 -60.0 101.603 0.1765 -145.0 -60.0 101.603 0.1376 -150.0 -60.0 101.603 0.0972 -155.0 -60.0 99.968 0.0555 -160.0 -60.0 99.968 0.0129 -165.0 -60.0 100.000 -0.0303 -170.0 -60.0 100.000 -0.0738 -175.0 -60.0 100.000 -0.1172 -180.0 -60.0 100.000 -0.1602 -185.0 -60.0 100.000 -0.2025 -190.0 -60.0 100.000 -0.1802 -195.0 -60.0 100.000 -0.1375 -200.0 -60.0 100.000 -0.0942 -205.0 -60.0 100.000 -0.0507 -210.0 -60.0 100.000 -0.0074 -215.0 -60.0 100.139 0.0356 -220.0 -60.0 100.139 0.0777 -225.0 -60.0 102.440 0.1188 -230.0 -60.0 102.440 0.1584 -235.0 -60.0 102.440 0.1963 -240.0 -60.0 102.440 0.2323 -245.0 -60.0 104.420 0.2659 -250.0 -60.0 104.420 0.2971 -255.0 -60.0 104.420 0.3255 -260.0 -60.0 105.104 0.3508 -265.0 -60.0 105.104 0.3731 -270.0 -60.0 105.104 0.3919 -275.0 -60.0 105.104 0.4073 -280.0 -60.0 105.477 0.4191 -285.0 -60.0 105.477 0.4272 -290.0 -60.0 105.477 0.4315 -295.0 -60.0 105.477 0.4321 -300.0 -60.0 104.513 0.4288 -305.0 -60.0 104.513 0.4218 -310.0 -60.0 104.513 0.4111 -315.0 -60.0 104.635 0.4218 -320.0 -60.0 104.635 0.4288 -325.0 -60.0 104.635 0.4321 -330.0 -60.0 104.635 0.4315 -335.0 -60.0 106.061 0.4272 -340.0 -60.0 106.061 0.4191 -345.0 -60.0 106.061 0.4153 -350.0 -60.0 107.193 0.4247 -355.0 -60.0 107.193 0.4304 -360.0 -60.0 107.193 0.4323 -0.0 -55.0 104.081 0.5093 -5.0 -55.0 105.795 0.5071 -10.0 -55.0 105.795 0.5006 -15.0 -55.0 105.795 0.4983 -20.0 -55.0 103.180 0.5059 -25.0 -55.0 103.180 0.5091 -30.0 -55.0 103.180 0.5080 -35.0 -55.0 102.578 0.5026 -40.0 -55.0 102.578 0.4950 -45.0 -55.0 102.578 0.5039 -50.0 -55.0 103.795 0.5086 -55.0 -55.0 103.795 0.5088 -60.0 -55.0 103.795 0.5048 -65.0 -55.0 104.523 0.4964 -70.0 -55.0 104.523 0.5020 -75.0 -55.0 104.523 0.5078 -80.0 -55.0 104.801 0.5092 -85.0 -55.0 104.801 0.5063 -90.0 -55.0 104.801 0.4990 -95.0 -55.0 103.852 0.4875 -100.0 -55.0 103.852 0.4717 -105.0 -55.0 103.852 0.4520 -110.0 -55.0 103.125 0.4282 -115.0 -55.0 103.125 0.4008 -120.0 -55.0 103.125 0.3698 -125.0 -55.0 102.620 0.3356 -130.0 -55.0 102.620 0.2983 -135.0 -55.0 102.620 0.2582 -140.0 -55.0 101.114 0.2158 -145.0 -55.0 101.114 0.1712 -150.0 -55.0 101.114 0.1248 -155.0 -55.0 99.969 0.0770 -160.0 -55.0 99.969 0.0281 -165.0 -55.0 100.000 -0.0214 -170.0 -55.0 100.000 -0.0713 -175.0 -55.0 100.000 -0.1211 -180.0 -55.0 100.000 -0.1705 -185.0 -55.0 100.000 -0.2190 -190.0 -55.0 100.000 -0.1934 -195.0 -55.0 100.000 -0.1444 -200.0 -55.0 100.000 -0.0948 -205.0 -55.0 100.000 -0.0449 -210.0 -55.0 99.942 0.0049 -215.0 -55.0 101.575 0.0541 -220.0 -55.0 101.575 0.1025 -225.0 -55.0 101.575 0.1496 -230.0 -55.0 104.594 0.1950 -235.0 -55.0 104.594 0.2386 -240.0 -55.0 104.594 0.2798 -245.0 -55.0 105.817 0.3184 -250.0 -55.0 105.817 0.3541 -255.0 -55.0 105.817 0.3867 -260.0 -55.0 105.155 0.4158 -265.0 -55.0 105.155 0.4413 -270.0 -55.0 105.155 0.4629 -275.0 -55.0 104.893 0.4806 -280.0 -55.0 104.893 0.4941 -285.0 -55.0 104.893 0.5034 -290.0 -55.0 104.737 0.5084 -295.0 -55.0 104.737 0.5090 -300.0 -55.0 104.737 0.5053 -305.0 -55.0 103.808 0.4972 -310.0 -55.0 103.808 0.4849 -315.0 -55.0 103.808 0.4972 -320.0 -55.0 102.465 0.5053 -325.0 -55.0 102.465 0.5090 -330.0 -55.0 102.465 0.5084 -335.0 -55.0 101.872 0.5034 -340.0 -55.0 101.872 0.4941 -345.0 -55.0 101.872 0.4898 -350.0 -55.0 104.081 0.5006 -355.0 -55.0 104.081 0.5071 -360.0 -55.0 104.081 0.5093 -0.0 -50.0 99.417 0.5823 -5.0 -50.0 103.377 0.5799 -10.0 -50.0 103.377 0.5726 -15.0 -50.0 105.795 0.5700 -20.0 -50.0 102.850 0.5785 -25.0 -50.0 102.850 0.5822 -30.0 -50.0 101.024 0.5809 -35.0 -50.0 101.024 0.5748 -40.0 -50.0 102.578 0.5664 -45.0 -50.0 102.314 0.5764 -50.0 -50.0 102.314 0.5816 -55.0 -50.0 102.735 0.5819 -60.0 -50.0 102.735 0.5773 -65.0 -50.0 102.735 0.5679 -70.0 -50.0 102.815 0.5742 -75.0 -50.0 102.815 0.5807 -80.0 -50.0 103.733 0.5823 -85.0 -50.0 103.733 0.5790 -90.0 -50.0 103.733 0.5708 -95.0 -50.0 103.615 0.5579 -100.0 -50.0 103.615 0.5403 -105.0 -50.0 103.852 0.5181 -110.0 -50.0 103.668 0.4915 -115.0 -50.0 103.668 0.4608 -120.0 -50.0 102.561 0.4261 -125.0 -50.0 102.561 0.3877 -130.0 -50.0 102.620 0.3459 -135.0 -50.0 101.935 0.3010 -140.0 -50.0 101.935 0.2534 -145.0 -50.0 100.638 0.2034 -150.0 -50.0 100.638 0.1515 -155.0 -50.0 100.638 0.0979 -160.0 -50.0 99.963 0.0431 -165.0 -50.0 100.000 -0.0124 -170.0 -50.0 100.000 -0.0683 -175.0 -50.0 100.000 -0.1241 -180.0 -50.0 100.000 -0.1794 -185.0 -50.0 100.000 -0.2338 -190.0 -50.0 100.000 -0.2051 -195.0 -50.0 100.000 -0.1502 -200.0 -50.0 100.000 -0.0946 -205.0 -50.0 100.000 -0.0387 -210.0 -50.0 100.611 0.0171 -215.0 -50.0 100.611 0.0723 -220.0 -50.0 101.575 0.1265 -225.0 -50.0 102.972 0.1792 -230.0 -50.0 102.972 0.2302 -235.0 -50.0 106.500 0.2790 -240.0 -50.0 106.500 0.3252 -245.0 -50.0 106.500 0.3684 -250.0 -50.0 106.106 0.4085 -255.0 -50.0 106.106 0.4449 -260.0 -50.0 104.660 0.4776 -265.0 -50.0 104.660 0.5062 -270.0 -50.0 104.660 0.5304 -275.0 -50.0 103.436 0.5502 -280.0 -50.0 103.436 0.5653 -285.0 -50.0 104.893 0.5757 -290.0 -50.0 103.271 0.5813 -295.0 -50.0 103.271 0.5820 -300.0 -50.0 103.697 0.5778 -305.0 -50.0 103.697 0.5688 -310.0 -50.0 103.808 0.5550 -315.0 -50.0 102.282 0.5688 -320.0 -50.0 102.282 0.5778 -325.0 -50.0 98.302 0.5820 -330.0 -50.0 98.302 0.5813 -335.0 -50.0 98.302 0.5757 -340.0 -50.0 95.929 0.5653 -345.0 -50.0 95.929 0.5605 -350.0 -50.0 99.417 0.5726 -355.0 -50.0 99.417 0.5799 -360.0 -50.0 99.417 0.5823 -0.0 -45.0 99.417 0.6510 -5.0 -45.0 101.508 0.6483 -10.0 -45.0 103.377 0.6403 -15.0 -45.0 103.417 0.6375 -20.0 -45.0 102.850 0.6468 -25.0 -45.0 102.850 0.6508 -30.0 -45.0 101.393 0.6494 -35.0 -45.0 101.024 0.6427 -40.0 -45.0 100.712 0.6334 -45.0 -45.0 102.314 0.6444 -50.0 -45.0 102.314 0.6501 -55.0 -45.0 101.970 0.6505 -60.0 -45.0 102.735 0.6454 -65.0 -45.0 101.142 0.6351 -70.0 -45.0 102.815 0.6420 -75.0 -45.0 102.815 0.6491 -80.0 -45.0 103.733 0.6509 -85.0 -45.0 103.733 0.6473 -90.0 -45.0 103.733 0.6383 -95.0 -45.0 103.625 0.6241 -100.0 -45.0 103.615 0.6047 -105.0 -45.0 104.318 0.5803 -110.0 -45.0 103.668 0.5511 -115.0 -45.0 103.668 0.5173 -120.0 -45.0 103.061 0.4791 -125.0 -45.0 102.561 0.4368 -130.0 -45.0 101.652 0.3909 -135.0 -45.0 101.935 0.3415 -140.0 -45.0 101.935 0.2891 -145.0 -45.0 100.891 0.2342 -150.0 -45.0 100.638 0.1770 -155.0 -45.0 100.254 0.1181 -160.0 -45.0 99.963 0.0578 -165.0 -45.0 100.000 -0.0033 -170.0 -45.0 100.000 -0.0648 -175.0 -45.0 100.000 -0.1262 -180.0 -45.0 100.000 -0.1870 -185.0 -45.0 100.000 -0.2469 -190.0 -45.0 100.000 -0.2153 -195.0 -45.0 100.000 -0.1549 -200.0 -45.0 100.000 -0.0937 -205.0 -45.0 100.000 -0.0322 -210.0 -45.0 99.996 0.0292 -215.0 -45.0 100.611 0.0899 -220.0 -45.0 101.332 0.1495 -225.0 -45.0 102.972 0.2075 -230.0 -45.0 102.972 0.2636 -235.0 -45.0 103.417 0.3172 -240.0 -45.0 106.500 0.3681 -245.0 -45.0 106.584 0.4157 -250.0 -45.0 106.106 0.4597 -255.0 -45.0 106.106 0.4998 -260.0 -45.0 104.660 0.5357 -265.0 -45.0 104.660 0.5672 -270.0 -45.0 104.660 0.5939 -275.0 -45.0 102.940 0.6156 -280.0 -45.0 103.436 0.6323 -285.0 -45.0 101.494 0.6437 -290.0 -45.0 103.271 0.6499 -295.0 -45.0 103.271 0.6506 -300.0 -45.0 102.120 0.6460 -305.0 -45.0 103.697 0.6361 -310.0 -45.0 103.247 0.6210 -315.0 -45.0 102.282 0.6361 -320.0 -45.0 102.282 0.6460 -325.0 -45.0 99.962 0.6506 -330.0 -45.0 98.302 0.6499 -335.0 -45.0 93.411 0.6437 -340.0 -45.0 95.929 0.6323 -345.0 -45.0 95.929 0.6269 -350.0 -45.0 99.417 0.6403 -355.0 -45.0 99.417 0.6483 -360.0 -45.0 99.417 0.6510 -0.0 -40.0 95.576 0.7147 -5.0 -40.0 101.508 0.7117 -10.0 -40.0 101.508 0.7030 -15.0 -40.0 103.417 0.7000 -20.0 -40.0 103.417 0.7101 -25.0 -40.0 101.393 0.7145 -30.0 -40.0 101.393 0.7130 -35.0 -40.0 100.712 0.7057 -40.0 -40.0 100.712 0.6956 -45.0 -40.0 100.712 0.7076 -50.0 -40.0 101.970 0.7137 -55.0 -40.0 101.970 0.7141 -60.0 -40.0 101.142 0.7087 -65.0 -40.0 101.142 0.6974 -70.0 -40.0 100.810 0.7050 -75.0 -40.0 100.810 0.7127 -80.0 -40.0 102.610 0.7146 -85.0 -40.0 102.610 0.7106 -90.0 -40.0 102.610 0.7009 -95.0 -40.0 103.625 0.6855 -100.0 -40.0 103.625 0.6645 -105.0 -40.0 104.318 0.6381 -110.0 -40.0 104.318 0.6065 -115.0 -40.0 103.061 0.5698 -120.0 -40.0 103.061 0.5284 -125.0 -40.0 101.652 0.4827 -130.0 -40.0 101.652 0.4329 -135.0 -40.0 101.652 0.3794 -140.0 -40.0 100.891 0.3227 -145.0 -40.0 100.891 0.2631 -150.0 -40.0 100.254 0.2012 -155.0 -40.0 100.254 0.1373 -160.0 -40.0 99.953 0.0721 -165.0 -40.0 99.953 0.0059 -170.0 -40.0 100.000 -0.0607 -175.0 -40.0 100.000 -0.1273 -180.0 -40.0 100.000 -0.1932 -185.0 -40.0 100.000 -0.2580 -190.0 -40.0 100.000 -0.2238 -195.0 -40.0 100.000 -0.1584 -200.0 -40.0 100.000 -0.0921 -205.0 -40.0 100.000 -0.0254 -210.0 -40.0 99.996 0.0410 -215.0 -40.0 101.332 0.1068 -220.0 -40.0 101.332 0.1714 -225.0 -40.0 101.332 0.2343 -230.0 -40.0 103.417 0.2950 -235.0 -40.0 103.417 0.3531 -240.0 -40.0 106.584 0.4082 -245.0 -40.0 106.584 0.4598 -250.0 -40.0 105.716 0.5075 -255.0 -40.0 105.716 0.5509 -260.0 -40.0 104.255 0.5898 -265.0 -40.0 104.255 0.6239 -270.0 -40.0 104.255 0.6528 -275.0 -40.0 102.940 0.6764 -280.0 -40.0 102.940 0.6944 -285.0 -40.0 101.494 0.7068 -290.0 -40.0 101.494 0.7134 -295.0 -40.0 102.120 0.7143 -300.0 -40.0 102.120 0.7093 -305.0 -40.0 103.247 0.6986 -310.0 -40.0 103.247 0.6821 -315.0 -40.0 103.247 0.6986 -320.0 -40.0 99.962 0.7093 -325.0 -40.0 99.962 0.7143 -330.0 -40.0 93.411 0.7134 -335.0 -40.0 93.411 0.7068 -340.0 -40.0 91.019 0.6944 -345.0 -40.0 91.019 0.6886 -350.0 -40.0 95.576 0.7030 -355.0 -40.0 95.576 0.7117 -360.0 -40.0 95.576 0.7147 -0.0 -35.0 99.874 0.7729 -5.0 -35.0 99.874 0.7698 -10.0 -35.0 105.461 0.7605 -15.0 -35.0 105.461 0.7572 -20.0 -35.0 104.321 0.7681 -25.0 -35.0 104.321 0.7727 -30.0 -35.0 101.486 0.7711 -35.0 -35.0 101.486 0.7634 -40.0 -35.0 101.537 0.7525 -45.0 -35.0 101.537 0.7653 -50.0 -35.0 101.537 0.7719 -55.0 -35.0 101.681 0.7723 -60.0 -35.0 101.681 0.7665 -65.0 -35.0 100.457 0.7545 -70.0 -35.0 100.457 0.7625 -75.0 -35.0 101.195 0.7708 -80.0 -35.0 101.195 0.7728 -85.0 -35.0 103.709 0.7686 -90.0 -35.0 103.709 0.7582 -95.0 -35.0 103.709 0.7418 -100.0 -35.0 105.238 0.7193 -105.0 -35.0 105.238 0.6910 -110.0 -35.0 104.755 0.6572 -115.0 -35.0 104.755 0.6180 -120.0 -35.0 101.968 0.5738 -125.0 -35.0 101.968 0.5248 -130.0 -35.0 100.762 0.4716 -135.0 -35.0 100.762 0.4144 -140.0 -35.0 100.762 0.3537 -145.0 -35.0 100.309 0.2900 -150.0 -35.0 100.309 0.2238 -155.0 -35.0 100.076 0.1555 -160.0 -35.0 100.076 0.0857 -165.0 -35.0 99.938 0.0150 -170.0 -35.0 100.000 -0.0563 -175.0 -35.0 100.000 -0.1274 -180.0 -35.0 100.000 -0.1979 -185.0 -35.0 100.000 -0.2672 -190.0 -35.0 100.000 -0.2306 -195.0 -35.0 100.000 -0.1606 -200.0 -35.0 100.000 -0.0897 -205.0 -35.0 100.000 -0.0185 -210.0 -35.0 100.363 0.0526 -215.0 -35.0 100.363 0.1229 -220.0 -35.0 101.319 0.1919 -225.0 -35.0 101.319 0.2592 -230.0 -35.0 101.319 0.3241 -235.0 -35.0 103.077 0.3863 -240.0 -35.0 103.077 0.4452 -245.0 -35.0 104.223 0.5003 -250.0 -35.0 104.223 0.5513 -255.0 -35.0 104.906 0.5978 -260.0 -35.0 104.906 0.6394 -265.0 -35.0 105.299 0.6758 -270.0 -35.0 105.299 0.7067 -275.0 -35.0 105.299 0.7319 -280.0 -35.0 102.708 0.7513 -285.0 -35.0 102.708 0.7645 -290.0 -35.0 100.929 0.7716 -295.0 -35.0 100.929 0.7725 -300.0 -35.0 103.071 0.7672 -305.0 -35.0 103.071 0.7557 -310.0 -35.0 103.181 0.7381 -315.0 -35.0 103.181 0.7557 -320.0 -35.0 103.181 0.7672 -325.0 -35.0 96.181 0.7725 -330.0 -35.0 96.181 0.7716 -335.0 -35.0 90.253 0.7645 -340.0 -35.0 90.253 0.7513 -345.0 -35.0 92.107 0.7451 -350.0 -35.0 92.107 0.7605 -355.0 -35.0 99.874 0.7698 -360.0 -35.0 99.874 0.7729 -0.0 -30.0 99.690 0.8253 -5.0 -30.0 106.546 0.8220 -10.0 -30.0 106.546 0.8121 -15.0 -30.0 108.097 0.8087 -20.0 -30.0 108.097 0.8201 -25.0 -30.0 104.070 0.8251 -30.0 -30.0 104.070 0.8234 -35.0 -30.0 101.674 0.8152 -40.0 -30.0 101.674 0.8037 -45.0 -30.0 101.674 0.8172 -50.0 -30.0 102.559 0.8242 -55.0 -30.0 102.559 0.8246 -60.0 -30.0 101.860 0.8185 -65.0 -30.0 101.860 0.8058 -70.0 -30.0 101.144 0.8143 -75.0 -30.0 101.144 0.8230 -80.0 -30.0 103.239 0.8252 -85.0 -30.0 103.239 0.8207 -90.0 -30.0 103.239 0.8098 -95.0 -30.0 105.737 0.7923 -100.0 -30.0 105.737 0.7686 -105.0 -30.0 105.703 0.7387 -110.0 -30.0 105.703 0.7029 -115.0 -30.0 102.925 0.6615 -120.0 -30.0 102.925 0.6147 -125.0 -30.0 100.779 0.5630 -130.0 -30.0 100.779 0.5067 -135.0 -30.0 100.779 0.4463 -140.0 -30.0 100.540 0.3821 -145.0 -30.0 100.540 0.3148 -150.0 -30.0 100.375 0.2448 -155.0 -30.0 100.375 0.1726 -160.0 -30.0 100.024 0.0988 -165.0 -30.0 100.024 0.0240 -170.0 -30.0 100.000 -0.0513 -175.0 -30.0 100.000 -0.1265 -180.0 -30.0 100.000 -0.2011 -185.0 -30.0 100.000 -0.2743 -190.0 -30.0 100.000 -0.2357 -195.0 -30.0 100.000 -0.1617 -200.0 -30.0 100.000 -0.0867 -205.0 -30.0 100.000 -0.0114 -210.0 -30.0 99.976 0.0637 -215.0 -30.0 100.144 0.1381 -220.0 -30.0 100.144 0.2111 -225.0 -30.0 100.144 0.2822 -230.0 -30.0 100.128 0.3508 -235.0 -30.0 100.128 0.4165 -240.0 -30.0 100.829 0.4788 -245.0 -30.0 100.829 0.5371 -250.0 -30.0 102.397 0.5910 -255.0 -30.0 102.397 0.6402 -260.0 -30.0 105.703 0.6841 -265.0 -30.0 105.703 0.7226 -270.0 -30.0 105.703 0.7553 -275.0 -30.0 106.625 0.7820 -280.0 -30.0 106.625 0.8024 -285.0 -30.0 102.556 0.8164 -290.0 -30.0 102.556 0.8239 -295.0 -30.0 102.754 0.8248 -300.0 -30.0 102.754 0.8192 -305.0 -30.0 104.942 0.8071 -310.0 -30.0 104.942 0.7885 -315.0 -30.0 104.942 0.8071 -320.0 -30.0 100.625 0.8192 -325.0 -30.0 100.625 0.8248 -330.0 -30.0 93.802 0.8239 -335.0 -30.0 93.802 0.8164 -340.0 -30.0 93.421 0.8024 -345.0 -30.0 93.421 0.7958 -350.0 -30.0 99.690 0.8121 -355.0 -30.0 99.690 0.8220 -360.0 -30.0 99.690 0.8253 -0.0 -25.0 105.969 0.8713 -5.0 -25.0 105.969 0.8679 -10.0 -25.0 109.592 0.8576 -15.0 -25.0 109.592 0.8540 -20.0 -25.0 106.870 0.8660 -25.0 -25.0 106.870 0.8711 -30.0 -25.0 102.073 0.8694 -35.0 -25.0 102.073 0.8608 -40.0 -25.0 102.093 0.8488 -45.0 -25.0 102.093 0.8629 -50.0 -25.0 102.093 0.8702 -55.0 -25.0 103.739 0.8707 -60.0 -25.0 103.739 0.8642 -65.0 -25.0 102.362 0.8510 -70.0 -25.0 102.362 0.8599 -75.0 -25.0 102.080 0.8690 -80.0 -25.0 102.080 0.8712 -85.0 -25.0 104.471 0.8666 -90.0 -25.0 104.471 0.8551 -95.0 -25.0 104.471 0.8369 -100.0 -25.0 105.831 0.8121 -105.0 -25.0 105.831 0.7808 -110.0 -25.0 104.127 0.7433 -115.0 -25.0 104.127 0.7000 -120.0 -25.0 101.349 0.6510 -125.0 -25.0 101.349 0.5969 -130.0 -25.0 100.857 0.5380 -135.0 -25.0 100.857 0.4747 -140.0 -25.0 100.857 0.4076 -145.0 -25.0 101.003 0.3371 -150.0 -25.0 101.003 0.2638 -155.0 -25.0 100.542 0.1883 -160.0 -25.0 100.542 0.1111 -165.0 -25.0 99.939 0.0328 -170.0 -25.0 100.000 -0.0460 -175.0 -25.0 100.000 -0.1247 -180.0 -25.0 100.000 -0.2027 -185.0 -25.0 100.000 -0.2794 -190.0 -25.0 100.000 -0.2390 -195.0 -25.0 100.000 -0.1615 -200.0 -25.0 100.000 -0.0831 -205.0 -25.0 100.000 -0.0042 -210.0 -25.0 100.026 0.0744 -215.0 -25.0 100.026 0.1522 -220.0 -25.0 99.444 0.2286 -225.0 -25.0 99.444 0.3030 -230.0 -25.0 99.444 0.3748 -235.0 -25.0 98.180 0.4436 -240.0 -25.0 98.180 0.5087 -245.0 -25.0 98.302 0.5698 -250.0 -25.0 98.302 0.6262 -255.0 -25.0 102.091 0.6776 -260.0 -25.0 102.091 0.7237 -265.0 -25.0 107.634 0.7639 -270.0 -25.0 107.634 0.7981 -275.0 -25.0 107.634 0.8260 -280.0 -25.0 105.832 0.8474 -285.0 -25.0 105.832 0.8621 -290.0 -25.0 103.654 0.8699 -295.0 -25.0 103.654 0.8709 -300.0 -25.0 106.032 0.8650 -305.0 -25.0 106.032 0.8523 -310.0 -25.0 103.972 0.8329 -315.0 -25.0 103.972 0.8523 -320.0 -25.0 103.972 0.8650 -325.0 -25.0 96.861 0.8709 -330.0 -25.0 96.861 0.8699 -335.0 -25.0 97.070 0.8621 -340.0 -25.0 97.070 0.8474 -345.0 -25.0 101.722 0.8405 -350.0 -25.0 101.722 0.8576 -355.0 -25.0 105.969 0.8679 -360.0 -25.0 105.969 0.8713 -0.0 -20.0 105.969 0.9108 -5.0 -20.0 106.682 0.9072 -10.0 -20.0 106.682 0.8966 -15.0 -20.0 107.628 0.8928 -20.0 -20.0 107.628 0.9052 -25.0 -20.0 103.201 0.9106 -30.0 -20.0 103.201 0.9088 -35.0 -20.0 102.073 0.8998 -40.0 -20.0 100.367 0.8874 -45.0 -20.0 102.093 0.9021 -50.0 -20.0 103.626 0.9097 -55.0 -20.0 103.626 0.9101 -60.0 -20.0 104.145 0.9034 -65.0 -20.0 104.145 0.8897 -70.0 -20.0 101.290 0.8989 -75.0 -20.0 101.290 0.9084 -80.0 -20.0 102.080 0.9107 -85.0 -20.0 100.903 0.9059 -90.0 -20.0 104.471 0.8940 -95.0 -20.0 103.387 0.8751 -100.0 -20.0 103.387 0.8493 -105.0 -20.0 104.199 0.8169 -110.0 -20.0 104.199 0.7781 -115.0 -20.0 102.442 0.7331 -120.0 -20.0 102.442 0.6824 -125.0 -20.0 101.349 0.6262 -130.0 -20.0 101.476 0.5651 -135.0 -20.0 100.857 0.4995 -140.0 -20.0 101.859 0.4300 -145.0 -20.0 101.859 0.3569 -150.0 -20.0 101.372 0.2809 -155.0 -20.0 101.372 0.2026 -160.0 -20.0 100.279 0.1225 -165.0 -20.0 100.279 0.0413 -170.0 -20.0 100.000 -0.0404 -175.0 -20.0 100.000 -0.1220 -180.0 -20.0 100.000 -0.2028 -185.0 -20.0 100.000 -0.2824 -190.0 -20.0 100.000 -0.2404 -195.0 -20.0 100.000 -0.1601 -200.0 -20.0 100.000 -0.0788 -205.0 -20.0 100.088 0.0030 -210.0 -20.0 100.088 0.0845 -215.0 -20.0 100.026 0.1651 -220.0 -20.0 100.185 0.2443 -225.0 -20.0 99.444 0.3215 -230.0 -20.0 98.637 0.3960 -235.0 -20.0 98.637 0.4673 -240.0 -20.0 96.433 0.5348 -245.0 -20.0 96.433 0.5981 -250.0 -20.0 97.369 0.6566 -255.0 -20.0 97.369 0.7099 -260.0 -20.0 102.091 0.7577 -265.0 -20.0 103.265 0.7994 -270.0 -20.0 107.634 0.8349 -275.0 -20.0 107.404 0.8638 -280.0 -20.0 107.404 0.8860 -285.0 -20.0 104.622 0.9012 -290.0 -20.0 104.622 0.9093 -295.0 -20.0 106.995 0.9103 -300.0 -20.0 106.995 0.9042 -305.0 -20.0 106.032 0.8911 -310.0 -20.0 106.815 0.8709 -315.0 -20.0 103.972 0.8911 -320.0 -20.0 99.502 0.9042 -325.0 -20.0 99.502 0.9103 -330.0 -20.0 98.228 0.9093 -335.0 -20.0 98.228 0.9012 -340.0 -20.0 104.817 0.8860 -345.0 -20.0 104.817 0.8789 -350.0 -20.0 101.722 0.8966 -355.0 -20.0 106.236 0.9072 -360.0 -20.0 105.969 0.9108 -0.0 -15.0 102.848 0.9433 -5.0 -15.0 106.682 0.9396 -10.0 -15.0 104.037 0.9287 -15.0 -15.0 104.037 0.9248 -20.0 -15.0 104.166 0.9376 -25.0 -15.0 104.166 0.9431 -30.0 -15.0 99.994 0.9412 -35.0 -15.0 99.994 0.9321 -40.0 -15.0 100.367 0.9193 -45.0 -15.0 100.937 0.9344 -50.0 -15.0 103.626 0.9421 -55.0 -15.0 105.128 0.9426 -60.0 -15.0 105.128 0.9357 -65.0 -15.0 102.014 0.9216 -70.0 -15.0 102.014 0.9311 -75.0 -15.0 97.059 0.9408 -80.0 -15.0 97.059 0.9432 -85.0 -15.0 100.903 0.9383 -90.0 -15.0 97.628 0.9260 -95.0 -15.0 103.387 0.9066 -100.0 -15.0 101.732 0.8801 -105.0 -15.0 101.732 0.8468 -110.0 -15.0 102.996 0.8069 -115.0 -15.0 102.996 0.7607 -120.0 -15.0 102.738 0.7085 -125.0 -15.0 102.738 0.6508 -130.0 -15.0 101.476 0.5880 -135.0 -15.0 102.433 0.5206 -140.0 -15.0 101.859 0.4490 -145.0 -15.0 102.077 0.3739 -150.0 -15.0 102.077 0.2958 -155.0 -15.0 101.032 0.2153 -160.0 -15.0 101.032 0.1330 -165.0 -15.0 99.939 0.0496 -170.0 -15.0 100.000 -0.0344 -175.0 -15.0 100.000 -0.1183 -180.0 -15.0 100.000 -0.2014 -185.0 -15.0 100.000 -0.2831 -190.0 -15.0 100.000 -0.2400 -195.0 -15.0 100.000 -0.1575 -200.0 -15.0 100.000 -0.0739 -205.0 -15.0 99.937 0.0101 -210.0 -15.0 100.770 0.0939 -215.0 -15.0 100.770 0.1768 -220.0 -15.0 100.185 0.2583 -225.0 -15.0 100.537 0.3376 -230.0 -15.0 98.637 0.4141 -235.0 -15.0 98.212 0.4874 -240.0 -15.0 98.212 0.5569 -245.0 -15.0 95.863 0.6219 -250.0 -15.0 95.863 0.6820 -255.0 -15.0 98.591 0.7369 -260.0 -15.0 98.591 0.7859 -265.0 -15.0 103.265 0.8288 -270.0 -15.0 105.466 0.8653 -275.0 -15.0 107.404 0.8950 -280.0 -15.0 104.827 0.9178 -285.0 -15.0 104.827 0.9334 -290.0 -15.0 105.245 0.9418 -295.0 -15.0 105.245 0.9428 -300.0 -15.0 108.708 0.9366 -305.0 -15.0 108.708 0.9230 -310.0 -15.0 106.815 0.9023 -315.0 -15.0 103.128 0.9230 -320.0 -15.0 99.502 0.9366 -325.0 -15.0 97.184 0.9428 -330.0 -15.0 97.184 0.9418 -335.0 -15.0 105.034 0.9334 -340.0 -15.0 105.034 0.9178 -345.0 -15.0 108.645 0.9105 -350.0 -15.0 108.645 0.9287 -355.0 -15.0 106.236 0.9396 -360.0 -15.0 102.848 0.9433 -0.0 -10.0 102.848 0.9686 -5.0 -10.0 97.861 0.9649 -10.0 -10.0 97.861 0.9537 -15.0 -10.0 102.903 0.9498 -20.0 -10.0 102.903 0.9628 -25.0 -10.0 102.337 0.9684 -30.0 -10.0 102.337 0.9665 -35.0 -10.0 99.994 0.9572 -40.0 -10.0 99.526 0.9442 -45.0 -10.0 100.937 0.9595 -50.0 -10.0 103.245 0.9675 -55.0 -10.0 103.245 0.9679 -60.0 -10.0 103.624 0.9609 -65.0 -10.0 103.624 0.9465 -70.0 -10.0 96.423 0.9562 -75.0 -10.0 96.423 0.9661 -80.0 -10.0 97.059 0.9685 -85.0 -10.0 91.275 0.9635 -90.0 -10.0 97.628 0.9510 -95.0 -10.0 95.379 0.9312 -100.0 -10.0 95.379 0.9042 -105.0 -10.0 101.813 0.8702 -110.0 -10.0 101.813 0.8295 -115.0 -10.0 103.737 0.7824 -120.0 -10.0 103.737 0.7293 -125.0 -10.0 102.738 0.6704 -130.0 -10.0 103.368 0.6064 -135.0 -10.0 102.433 0.5377 -140.0 -10.0 102.144 0.4647 -145.0 -10.0 102.144 0.3882 -150.0 -10.0 101.324 0.3085 -155.0 -10.0 101.324 0.2264 -160.0 -10.0 100.281 0.1425 -165.0 -10.0 100.281 0.0574 -170.0 -10.0 100.000 -0.0282 -175.0 -10.0 100.000 -0.1137 -180.0 -10.0 100.000 -0.1984 -185.0 -10.0 100.000 -0.2818 -190.0 -10.0 100.000 -0.2378 -195.0 -10.0 100.000 -0.1537 -200.0 -10.0 100.000 -0.0684 -205.0 -10.0 100.453 0.0172 -210.0 -10.0 100.453 0.1026 -215.0 -10.0 100.770 0.1872 -220.0 -10.0 101.629 0.2702 -225.0 -10.0 100.537 0.3511 -230.0 -10.0 100.859 0.4291 -235.0 -10.0 100.859 0.5039 -240.0 -10.0 98.189 0.5746 -245.0 -10.0 98.189 0.6410 -250.0 -10.0 97.351 0.7023 -255.0 -10.0 97.351 0.7582 -260.0 -10.0 98.591 0.8082 -265.0 -10.0 102.158 0.8519 -270.0 -10.0 105.466 0.8891 -275.0 -10.0 105.297 0.9194 -280.0 -10.0 105.297 0.9426 -285.0 -10.0 103.223 0.9586 -290.0 -10.0 103.223 0.9671 -295.0 -10.0 107.811 0.9682 -300.0 -10.0 107.811 0.9618 -305.0 -10.0 108.708 0.9480 -310.0 -10.0 107.073 0.9268 -315.0 -10.0 103.128 0.9480 -320.0 -10.0 98.661 0.9618 -325.0 -10.0 98.661 0.9682 -330.0 -10.0 101.275 0.9671 -335.0 -10.0 101.275 0.9586 -340.0 -10.0 110.191 0.9426 -345.0 -10.0 110.191 0.9352 -350.0 -10.0 108.645 0.9537 -355.0 -10.0 103.273 0.9649 -360.0 -10.0 102.848 0.9686 -0.0 -5.0 95.731 0.9866 -5.0 -5.0 97.861 0.9828 -10.0 -5.0 97.945 0.9715 -15.0 -5.0 97.945 0.9676 -20.0 -5.0 103.955 0.9807 -25.0 -5.0 103.955 0.9864 -30.0 -5.0 101.820 0.9845 -35.0 -5.0 101.820 0.9750 -40.0 -5.0 99.526 0.9619 -45.0 -5.0 101.246 0.9774 -50.0 -5.0 103.245 0.9854 -55.0 -5.0 104.299 0.9859 -60.0 -5.0 104.299 0.9788 -65.0 -5.0 99.276 0.9642 -70.0 -5.0 99.276 0.9740 -75.0 -5.0 89.533 0.9840 -80.0 -5.0 89.533 0.9865 -85.0 -5.0 91.275 0.9814 -90.0 -5.0 87.941 0.9688 -95.0 -5.0 95.379 0.9488 -100.0 -5.0 96.702 0.9214 -105.0 -5.0 96.702 0.8871 -110.0 -5.0 102.887 0.8459 -115.0 -5.0 102.887 0.7982 -120.0 -5.0 104.188 0.7445 -125.0 -5.0 104.188 0.6850 -130.0 -5.0 103.368 0.6202 -135.0 -5.0 102.069 0.5506 -140.0 -5.0 102.144 0.4769 -145.0 -5.0 100.541 0.3994 -150.0 -5.0 100.541 0.3189 -155.0 -5.0 100.153 0.2358 -160.0 -5.0 100.153 0.1510 -165.0 -5.0 99.936 0.0649 -170.0 -5.0 100.000 -0.0217 -175.0 -5.0 100.000 -0.1082 -180.0 -5.0 100.000 -0.1940 -185.0 -5.0 100.000 -0.2783 -190.0 -5.0 100.000 -0.2338 -195.0 -5.0 100.000 -0.1487 -200.0 -5.0 100.000 -0.0625 -205.0 -5.0 99.936 0.0242 -210.0 -5.0 101.223 0.1106 -215.0 -5.0 101.223 0.1961 -220.0 -5.0 101.629 0.2801 -225.0 -5.0 101.841 0.3619 -230.0 -5.0 100.859 0.4409 -235.0 -5.0 100.858 0.5165 -240.0 -5.0 100.858 0.5881 -245.0 -5.0 98.833 0.6551 -250.0 -5.0 98.833 0.7172 -255.0 -5.0 101.482 0.7737 -260.0 -5.0 101.482 0.8243 -265.0 -5.0 102.158 0.8686 -270.0 -5.0 106.291 0.9062 -275.0 -5.0 105.297 0.9368 -280.0 -5.0 104.272 0.9603 -285.0 -5.0 104.272 0.9764 -290.0 -5.0 103.640 0.9850 -295.0 -5.0 103.640 0.9861 -300.0 -5.0 107.650 0.9797 -305.0 -5.0 107.650 0.9657 -310.0 -5.0 107.073 0.9443 -315.0 -5.0 103.264 0.9657 -320.0 -5.0 98.661 0.9797 -325.0 -5.0 98.606 0.9861 -330.0 -5.0 98.606 0.9850 -335.0 -5.0 107.169 0.9764 -340.0 -5.0 107.169 0.9603 -345.0 -5.0 107.037 0.9528 -350.0 -5.0 107.037 0.9715 -355.0 -5.0 103.273 0.9828 -360.0 -5.0 95.731 0.9866 -0.0 0.0 95.731 0.9971 -5.0 0.0 94.224 0.9933 -10.0 0.0 94.224 0.9819 -15.0 0.0 101.050 0.9780 -20.0 0.0 101.050 0.9912 -25.0 0.0 104.096 0.9968 -30.0 0.0 104.096 0.9949 -35.0 0.0 101.820 0.9854 -40.0 0.0 101.967 0.9722 -45.0 0.0 101.246 0.9878 -50.0 0.0 102.781 0.9959 -55.0 0.0 102.781 0.9963 -60.0 0.0 102.171 0.9892 -65.0 0.0 102.171 0.9746 -70.0 0.0 93.810 0.9844 -75.0 0.0 93.810 0.9945 -80.0 0.0 89.533 0.9970 -85.0 0.0 85.365 0.9918 -90.0 0.0 87.941 0.9792 -95.0 0.0 89.702 0.9591 -100.0 0.0 89.702 0.9317 -105.0 0.0 99.676 0.8972 -110.0 0.0 99.676 0.8558 -115.0 0.0 103.256 0.8080 -120.0 0.0 103.256 0.7540 -125.0 0.0 104.188 0.6943 -130.0 0.0 101.888 0.6292 -135.0 0.0 102.069 0.5594 -140.0 0.0 98.827 0.4854 -145.0 0.0 98.827 0.4076 -150.0 0.0 98.826 0.3268 -155.0 0.0 98.826 0.2434 -160.0 0.0 99.565 0.1582 -165.0 0.0 99.565 0.0718 -170.0 0.0 100.000 -0.0151 -175.0 0.0 100.000 -0.1020 -180.0 0.0 100.000 -0.1880 -185.0 0.0 100.000 -0.2726 -190.0 0.0 100.000 -0.2280 -195.0 0.0 100.000 -0.1426 -200.0 0.0 100.000 -0.0560 -205.0 0.0 100.235 0.0310 -210.0 0.0 100.235 0.1177 -215.0 0.0 101.223 0.2036 -220.0 0.0 100.855 0.2879 -225.0 0.0 101.841 0.3700 -230.0 0.0 100.484 0.4492 -235.0 0.0 100.484 0.5251 -240.0 0.0 99.467 0.5970 -245.0 0.0 99.467 0.6643 -250.0 0.0 101.001 0.7266 -255.0 0.0 101.001 0.7833 -260.0 0.0 101.482 0.8341 -265.0 0.0 106.547 0.8786 -270.0 0.0 106.291 0.9163 -275.0 0.0 107.760 0.9471 -280.0 0.0 107.760 0.9706 -285.0 0.0 102.995 0.9868 -290.0 0.0 102.995 0.9955 -295.0 0.0 104.616 0.9966 -300.0 0.0 104.616 0.9901 -305.0 0.0 107.650 0.9761 -310.0 0.0 106.227 0.9546 -315.0 0.0 103.264 0.9761 -320.0 0.0 100.725 0.9901 -325.0 0.0 100.725 0.9966 -330.0 0.0 101.693 0.9955 -335.0 0.0 101.693 0.9868 -340.0 0.0 107.508 0.9706 -345.0 0.0 107.508 0.9631 -350.0 0.0 107.037 0.9819 -355.0 0.0 99.787 0.9933 -360.0 0.0 95.731 0.9971 -0.0 5.0 96.530 0.9999 -5.0 5.0 96.530 0.9962 -10.0 5.0 95.816 0.9849 -15.0 5.0 95.816 0.9809 -20.0 5.0 100.634 0.9941 -25.0 5.0 100.634 0.9997 -30.0 5.0 101.800 0.9978 -35.0 5.0 101.800 0.9883 -40.0 5.0 101.967 0.9752 -45.0 5.0 101.857 0.9907 -50.0 5.0 101.857 0.9987 -55.0 5.0 102.594 0.9992 -60.0 5.0 102.594 0.9921 -65.0 5.0 99.354 0.9776 -70.0 5.0 99.354 0.9874 -75.0 5.0 90.150 0.9974 -80.0 5.0 90.150 0.9998 -85.0 5.0 85.365 0.9947 -90.0 5.0 86.061 0.9821 -95.0 5.0 86.061 0.9621 -100.0 5.0 94.251 0.9348 -105.0 5.0 94.251 0.9004 -110.0 5.0 100.562 0.8592 -115.0 5.0 100.562 0.8116 -120.0 5.0 100.911 0.7578 -125.0 5.0 100.911 0.6983 -130.0 5.0 101.888 0.6335 -135.0 5.0 97.761 0.5640 -140.0 5.0 97.761 0.4902 -145.0 5.0 96.551 0.4127 -150.0 5.0 96.551 0.3322 -155.0 5.0 98.102 0.2492 -160.0 5.0 98.102 0.1643 -165.0 5.0 99.917 0.0782 -170.0 5.0 100.000 -0.0084 -175.0 5.0 100.000 -0.0949 -180.0 5.0 100.000 -0.1806 -185.0 5.0 100.000 -0.2649 -190.0 5.0 100.000 -0.2205 -195.0 5.0 100.000 -0.1353 -200.0 5.0 100.000 -0.0491 -205.0 5.0 99.932 0.0375 -210.0 5.0 99.335 0.1239 -215.0 5.0 99.335 0.2094 -220.0 5.0 100.855 0.2934 -225.0 5.0 98.195 0.3752 -230.0 5.0 98.195 0.4542 -235.0 5.0 97.071 0.5298 -240.0 5.0 97.071 0.6014 -245.0 5.0 97.637 0.6685 -250.0 5.0 97.637 0.7305 -255.0 5.0 103.602 0.7870 -260.0 5.0 103.602 0.8376 -265.0 5.0 106.547 0.8819 -270.0 5.0 108.329 0.9195 -275.0 5.0 108.329 0.9501 -280.0 5.0 106.086 0.9736 -285.0 5.0 106.086 0.9897 -290.0 5.0 101.437 0.9984 -295.0 5.0 101.437 0.9995 -300.0 5.0 104.305 0.9930 -305.0 5.0 104.305 0.9790 -310.0 5.0 106.227 0.9577 -315.0 5.0 104.446 0.9790 -320.0 5.0 104.446 0.9930 -325.0 5.0 99.643 0.9995 -330.0 5.0 99.643 0.9984 -335.0 5.0 102.170 0.9897 -340.0 5.0 102.170 0.9736 -345.0 5.0 103.143 0.9661 -350.0 5.0 103.143 0.9849 -355.0 5.0 99.787 0.9962 -360.0 5.0 96.530 0.9999 -0.0 10.0 99.296 0.9952 -5.0 10.0 95.277 0.9915 -10.0 10.0 95.277 0.9803 -15.0 10.0 92.078 0.9764 -20.0 10.0 92.078 0.9894 -25.0 10.0 94.882 0.9950 -30.0 10.0 94.882 0.9931 -35.0 10.0 90.290 0.9837 -40.0 10.0 99.214 0.9707 -45.0 10.0 98.284 0.9861 -50.0 10.0 101.195 0.9940 -55.0 10.0 101.195 0.9945 -60.0 10.0 101.421 0.9875 -65.0 10.0 101.421 0.9731 -70.0 10.0 97.100 0.9828 -75.0 10.0 97.100 0.9927 -80.0 10.0 95.848 0.9951 -85.0 10.0 89.708 0.9901 -90.0 10.0 91.622 0.9776 -95.0 10.0 90.780 0.9578 -100.0 10.0 90.780 0.9308 -105.0 10.0 97.289 0.8968 -110.0 10.0 97.289 0.8561 -115.0 10.0 98.988 0.8090 -120.0 10.0 98.988 0.7558 -125.0 10.0 96.775 0.6970 -130.0 10.0 96.919 0.6330 -135.0 10.0 94.667 0.5642 -140.0 10.0 94.703 0.4913 -145.0 10.0 94.703 0.4147 -150.0 10.0 96.077 0.3351 -155.0 10.0 96.077 0.2530 -160.0 10.0 98.690 0.1691 -165.0 10.0 98.690 0.0840 -170.0 10.0 100.000 -0.0016 -175.0 10.0 100.000 -0.0871 -180.0 10.0 100.000 -0.1719 -185.0 10.0 100.000 -0.2552 -190.0 10.0 100.000 -0.2113 -195.0 10.0 100.000 -0.1271 -200.0 10.0 100.000 -0.0419 -205.0 10.0 98.844 0.0438 -210.0 10.0 98.844 0.1292 -215.0 10.0 95.501 0.2137 -220.0 10.0 95.993 0.2968 -225.0 10.0 90.038 0.3776 -230.0 10.0 92.784 0.4557 -235.0 10.0 92.784 0.5304 -240.0 10.0 91.416 0.6012 -245.0 10.0 91.416 0.6675 -250.0 10.0 95.608 0.7288 -255.0 10.0 95.608 0.7847 -260.0 10.0 92.536 0.8347 -265.0 10.0 103.516 0.8785 -270.0 10.0 99.027 0.9157 -275.0 10.0 106.374 0.9460 -280.0 10.0 106.374 0.9692 -285.0 10.0 101.533 0.9851 -290.0 10.0 101.533 0.9937 -295.0 10.0 100.205 0.9947 -300.0 10.0 100.205 0.9883 -305.0 10.0 100.859 0.9745 -310.0 10.0 104.548 0.9534 -315.0 10.0 104.053 0.9745 -320.0 10.0 101.993 0.9883 -325.0 10.0 101.993 0.9947 -330.0 10.0 96.753 0.9937 -335.0 10.0 96.753 0.9851 -340.0 10.0 99.362 0.9692 -345.0 10.0 99.362 0.9617 -350.0 10.0 98.509 0.9803 -355.0 10.0 100.580 0.9915 -360.0 10.0 99.296 0.9952 -0.0 15.0 99.296 0.9829 -5.0 15.0 99.296 0.9792 -10.0 15.0 88.072 0.9683 -15.0 15.0 88.072 0.9644 -20.0 15.0 83.152 0.9772 -25.0 15.0 83.152 0.9827 -30.0 15.0 90.290 0.9808 -35.0 15.0 90.290 0.9716 -40.0 15.0 91.519 0.9589 -45.0 15.0 98.284 0.9739 -50.0 15.0 98.284 0.9817 -55.0 15.0 100.304 0.9822 -60.0 15.0 100.304 0.9753 -65.0 15.0 100.205 0.9612 -70.0 15.0 100.205 0.9707 -75.0 15.0 95.848 0.9804 -80.0 15.0 95.848 0.9828 -85.0 15.0 95.318 0.9778 -90.0 15.0 91.622 0.9656 -95.0 15.0 91.622 0.9462 -100.0 15.0 94.950 0.9197 -105.0 15.0 94.950 0.8864 -110.0 15.0 97.728 0.8465 -115.0 15.0 97.728 0.8002 -120.0 15.0 96.775 0.7481 -125.0 15.0 96.775 0.6904 -130.0 15.0 96.288 0.6276 -135.0 15.0 94.667 0.5602 -140.0 15.0 94.667 0.4886 -145.0 15.0 94.805 0.4135 -150.0 15.0 94.805 0.3354 -155.0 15.0 97.198 0.2549 -160.0 15.0 97.198 0.1726 -165.0 15.0 99.823 0.0892 -170.0 15.0 99.823 0.0052 -175.0 15.0 100.000 -0.0787 -180.0 15.0 100.000 -0.1618 -185.0 15.0 100.000 -0.2436 -190.0 15.0 100.000 -0.2005 -195.0 15.0 100.000 -0.1179 -200.0 15.0 100.000 -0.0343 -205.0 15.0 99.822 0.0497 -210.0 15.0 95.501 0.1335 -215.0 15.0 95.501 0.2164 -220.0 15.0 90.165 0.2978 -225.0 15.0 90.038 0.3771 -230.0 15.0 90.038 0.4537 -235.0 15.0 85.402 0.5270 -240.0 15.0 85.402 0.5964 -245.0 15.0 85.504 0.6615 -250.0 15.0 85.504 0.7216 -255.0 15.0 92.536 0.7764 -260.0 15.0 92.536 0.8255 -265.0 15.0 88.614 0.8684 -270.0 15.0 99.027 0.9049 -275.0 15.0 99.027 0.9346 -280.0 15.0 100.538 0.9574 -285.0 15.0 100.538 0.9730 -290.0 15.0 97.283 0.9814 -295.0 15.0 97.283 0.9824 -300.0 15.0 100.859 0.9762 -305.0 15.0 100.859 0.9626 -310.0 15.0 102.827 0.9419 -315.0 15.0 104.053 0.9626 -320.0 15.0 104.053 0.9762 -325.0 15.0 96.946 0.9824 -330.0 15.0 96.946 0.9814 -335.0 15.0 92.332 0.9730 -340.0 15.0 92.332 0.9574 -345.0 15.0 98.509 0.9501 -350.0 15.0 98.509 0.9683 -355.0 15.0 100.478 0.9792 -360.0 15.0 99.296 0.9829 -0.0 20.0 100.478 0.9631 -5.0 20.0 92.715 0.9595 -10.0 20.0 92.715 0.9489 -15.0 20.0 76.363 0.9451 -20.0 20.0 76.363 0.9576 -25.0 20.0 77.650 0.9629 -30.0 20.0 77.650 0.9611 -35.0 20.0 91.519 0.9522 -40.0 20.0 91.519 0.9398 -45.0 20.0 91.519 0.9544 -50.0 20.0 98.839 0.9620 -55.0 20.0 98.839 0.9624 -60.0 20.0 99.533 0.9557 -65.0 20.0 99.533 0.9420 -70.0 20.0 98.519 0.9512 -75.0 20.0 98.519 0.9607 -80.0 20.0 95.318 0.9630 -85.0 20.0 95.318 0.9582 -90.0 20.0 95.318 0.9463 -95.0 20.0 94.800 0.9274 -100.0 20.0 94.800 0.9016 -105.0 20.0 97.275 0.8692 -110.0 20.0 97.275 0.8304 -115.0 20.0 97.945 0.7854 -120.0 20.0 97.945 0.7347 -125.0 20.0 96.288 0.6785 -130.0 20.0 96.288 0.6174 -135.0 20.0 96.288 0.5519 -140.0 20.0 95.623 0.4823 -145.0 20.0 95.623 0.4092 -150.0 20.0 96.809 0.3332 -155.0 20.0 96.809 0.2549 -160.0 20.0 98.867 0.1748 -165.0 20.0 98.867 0.0936 -170.0 20.0 99.932 0.0119 -175.0 20.0 100.000 -0.0697 -180.0 20.0 100.000 -0.1505 -185.0 20.0 100.000 -0.2301 -190.0 20.0 100.000 -0.1881 -195.0 20.0 100.000 -0.1078 -200.0 20.0 100.000 -0.0265 -205.0 20.0 96.990 0.0553 -210.0 20.0 96.990 0.1368 -215.0 20.0 90.165 0.2174 -220.0 20.0 90.165 0.2966 -225.0 20.0 90.165 0.3738 -230.0 20.0 82.746 0.4483 -235.0 20.0 82.746 0.5196 -240.0 20.0 78.317 0.5871 -245.0 20.0 78.317 0.6504 -250.0 20.0 80.962 0.7089 -255.0 20.0 80.962 0.7623 -260.0 20.0 88.614 0.8100 -265.0 20.0 88.614 0.8517 -270.0 20.0 88.614 0.8872 -275.0 20.0 94.640 0.9161 -280.0 20.0 94.640 0.9383 -285.0 20.0 95.128 0.9535 -290.0 20.0 95.128 0.9616 -295.0 20.0 96.716 0.9626 -300.0 20.0 96.716 0.9565 -305.0 20.0 102.827 0.9434 -310.0 20.0 102.827 0.9232 -315.0 20.0 102.827 0.9434 -320.0 20.0 101.157 0.9565 -325.0 20.0 101.157 0.9626 -330.0 20.0 90.674 0.9616 -335.0 20.0 90.674 0.9535 -340.0 20.0 91.765 0.9383 -345.0 20.0 91.765 0.9312 -350.0 20.0 100.478 0.9489 -355.0 20.0 100.478 0.9595 -360.0 20.0 100.478 0.9631 -0.0 25.0 99.272 0.9360 -5.0 25.0 99.272 0.9325 -10.0 25.0 82.234 0.9222 -15.0 25.0 82.234 0.9186 -20.0 25.0 71.777 0.9306 -25.0 25.0 71.777 0.9358 -30.0 25.0 83.022 0.9340 -35.0 25.0 83.022 0.9254 -40.0 25.0 96.799 0.9135 -45.0 25.0 96.799 0.9276 -50.0 25.0 96.799 0.9349 -55.0 25.0 99.075 0.9353 -60.0 25.0 99.075 0.9289 -65.0 25.0 97.981 0.9156 -70.0 25.0 97.981 0.9245 -75.0 25.0 96.569 0.9336 -80.0 25.0 96.569 0.9359 -85.0 25.0 95.472 0.9312 -90.0 25.0 95.472 0.9198 -95.0 25.0 95.472 0.9015 -100.0 25.0 97.044 0.8767 -105.0 25.0 97.044 0.8454 -110.0 25.0 99.311 0.8080 -115.0 25.0 99.311 0.7646 -120.0 25.0 99.252 0.7157 -125.0 25.0 99.252 0.6615 -130.0 25.0 98.364 0.6026 -135.0 25.0 98.364 0.5393 -140.0 25.0 98.364 0.4722 -145.0 25.0 98.404 0.4017 -150.0 25.0 98.404 0.3285 -155.0 25.0 99.032 0.2529 -160.0 25.0 99.032 0.1757 -165.0 25.0 99.865 0.0974 -170.0 25.0 99.865 0.0186 -175.0 25.0 100.000 -0.0601 -180.0 25.0 100.000 -0.1381 -185.0 25.0 100.000 -0.2148 -190.0 25.0 100.000 -0.1743 -195.0 25.0 100.000 -0.0969 -200.0 25.0 100.000 -0.0184 -205.0 25.0 99.471 0.0604 -210.0 25.0 92.784 0.1390 -215.0 25.0 92.784 0.2168 -220.0 25.0 84.450 0.2932 -225.0 25.0 84.450 0.3676 -230.0 25.0 84.450 0.4395 -235.0 25.0 76.848 0.5082 -240.0 25.0 76.848 0.5734 -245.0 25.0 75.055 0.6344 -250.0 25.0 75.055 0.6908 -255.0 25.0 79.985 0.7423 -260.0 25.0 79.985 0.7883 -265.0 25.0 87.170 0.8286 -270.0 25.0 87.170 0.8628 -275.0 25.0 87.170 0.8907 -280.0 25.0 92.156 0.9120 -285.0 25.0 92.156 0.9267 -290.0 25.0 94.166 0.9345 -295.0 25.0 94.166 0.9355 -300.0 25.0 99.717 0.9296 -305.0 25.0 99.717 0.9169 -310.0 25.0 103.485 0.8975 -315.0 25.0 103.485 0.9169 -320.0 25.0 103.485 0.9297 -325.0 25.0 96.161 0.9355 -330.0 25.0 96.161 0.9345 -335.0 25.0 89.208 0.9267 -340.0 25.0 89.208 0.9120 -345.0 25.0 96.412 0.9052 -350.0 25.0 96.412 0.9222 -355.0 25.0 99.272 0.9325 -360.0 25.0 99.272 0.9360 -0.0 30.0 101.167 0.9017 -5.0 30.0 93.980 0.8984 -10.0 30.0 93.980 0.8886 -15.0 30.0 78.759 0.8852 -20.0 30.0 78.759 0.8966 -25.0 30.0 80.537 0.9015 -30.0 30.0 80.537 0.8999 -35.0 30.0 94.798 0.8916 -40.0 30.0 94.798 0.8802 -45.0 30.0 94.798 0.8937 -50.0 30.0 101.045 0.9007 -55.0 30.0 101.045 0.9011 -60.0 30.0 98.407 0.8949 -65.0 30.0 98.407 0.8823 -70.0 30.0 96.177 0.8908 -75.0 30.0 96.177 0.8995 -80.0 30.0 95.414 0.9016 -85.0 30.0 95.414 0.8972 -90.0 30.0 95.414 0.8862 -95.0 30.0 96.354 0.8688 -100.0 30.0 96.354 0.8451 -105.0 30.0 99.037 0.8152 -110.0 30.0 99.037 0.7794 -115.0 30.0 101.937 0.7380 -120.0 30.0 101.937 0.6912 -125.0 30.0 101.533 0.6395 -130.0 30.0 101.533 0.5832 -135.0 30.0 101.533 0.5227 -140.0 30.0 101.208 0.4586 -145.0 30.0 101.208 0.3912 -150.0 30.0 100.685 0.3212 -155.0 30.0 100.685 0.2490 -160.0 30.0 100.219 0.1753 -165.0 30.0 100.219 0.1004 -170.0 30.0 99.935 0.0251 -175.0 30.0 100.000 -0.0501 -180.0 30.0 100.000 -0.1246 -185.0 30.0 100.000 -0.1979 -190.0 30.0 100.000 -0.1592 -195.0 30.0 100.000 -0.0852 -200.0 30.0 100.000 -0.0103 -205.0 30.0 96.377 0.0651 -210.0 30.0 96.377 0.1402 -215.0 30.0 89.043 0.2145 -220.0 30.0 89.043 0.2875 -225.0 30.0 89.043 0.3586 -230.0 30.0 80.964 0.4273 -235.0 30.0 80.964 0.4930 -240.0 30.0 76.600 0.5552 -245.0 30.0 76.600 0.6136 -250.0 30.0 78.455 0.6675 -255.0 30.0 78.455 0.7166 -260.0 30.0 84.811 0.7606 -265.0 30.0 84.811 0.7991 -270.0 30.0 84.811 0.8318 -275.0 30.0 90.826 0.8584 -280.0 30.0 90.826 0.8788 -285.0 30.0 93.882 0.8929 -290.0 30.0 93.882 0.9004 -295.0 30.0 97.269 0.9013 -300.0 30.0 97.269 0.8957 -305.0 30.0 102.699 0.8835 -310.0 30.0 102.699 0.8650 -315.0 30.0 102.699 0.8835 -320.0 30.0 102.645 0.8957 -325.0 30.0 102.645 0.9013 -330.0 30.0 94.489 0.9004 -335.0 30.0 94.489 0.8928 -340.0 30.0 94.358 0.8788 -345.0 30.0 94.358 0.8723 -350.0 30.0 101.167 0.8886 -355.0 30.0 101.167 0.8984 -360.0 30.0 101.167 0.9017 -0.0 35.0 101.239 0.8606 -5.0 35.0 101.239 0.8575 -10.0 35.0 91.927 0.8482 -15.0 35.0 91.927 0.8450 -20.0 35.0 87.441 0.8558 -25.0 35.0 87.441 0.8604 -30.0 35.0 95.693 0.8588 -35.0 35.0 95.693 0.8511 -40.0 35.0 103.511 0.8403 -45.0 35.0 103.511 0.8530 -50.0 35.0 103.511 0.8596 -55.0 35.0 101.425 0.8600 -60.0 35.0 101.425 0.8542 -65.0 35.0 97.571 0.8422 -70.0 35.0 97.571 0.8503 -75.0 35.0 95.671 0.8585 -80.0 35.0 95.671 0.8605 -85.0 35.0 95.960 0.8563 -90.0 35.0 95.960 0.8460 -95.0 35.0 95.960 0.8295 -100.0 35.0 97.588 0.8070 -105.0 35.0 97.588 0.7788 -110.0 35.0 100.969 0.7449 -115.0 35.0 100.969 0.7057 -120.0 35.0 102.925 0.6615 -125.0 35.0 102.925 0.6126 -130.0 35.0 103.066 0.5593 -135.0 35.0 103.066 0.5021 -140.0 35.0 103.066 0.4415 -145.0 35.0 102.626 0.3778 -150.0 35.0 102.626 0.3115 -155.0 35.0 101.407 0.2433 -160.0 35.0 101.407 0.1735 -165.0 35.0 100.159 0.1027 -170.0 35.0 100.159 0.0315 -175.0 35.0 100.000 -0.0397 -180.0 35.0 100.000 -0.1102 -185.0 35.0 100.000 -0.1795 -190.0 35.0 100.000 -0.1429 -195.0 35.0 100.000 -0.0729 -200.0 35.0 100.000 -0.0020 -205.0 35.0 99.260 0.0692 -210.0 35.0 94.206 0.1403 -215.0 35.0 94.206 0.2106 -220.0 35.0 87.935 0.2797 -225.0 35.0 87.935 0.3469 -230.0 35.0 87.935 0.4119 -235.0 35.0 82.648 0.4740 -240.0 35.0 82.648 0.5329 -245.0 35.0 83.752 0.5880 -250.0 35.0 83.752 0.6391 -255.0 35.0 88.562 0.6855 -260.0 35.0 88.562 0.7271 -265.0 35.0 94.404 0.7635 -270.0 35.0 94.404 0.7945 -275.0 35.0 94.404 0.8197 -280.0 35.0 96.643 0.8390 -285.0 35.0 96.643 0.8522 -290.0 35.0 97.175 0.8593 -295.0 35.0 97.175 0.8602 -300.0 35.0 100.405 0.8549 -305.0 35.0 100.405 0.8434 -310.0 35.0 103.802 0.8258 -315.0 35.0 103.802 0.8434 -320.0 35.0 103.802 0.8549 -325.0 35.0 101.718 0.8602 -330.0 35.0 101.718 0.8593 -335.0 35.0 98.155 0.8522 -340.0 35.0 98.155 0.8390 -345.0 35.0 100.401 0.8328 -350.0 35.0 100.401 0.8482 -355.0 35.0 101.239 0.8575 -360.0 35.0 101.239 0.8606 -0.0 40.0 101.239 0.8130 -5.0 40.0 100.064 0.8100 -10.0 40.0 100.064 0.8013 -15.0 40.0 96.614 0.7983 -20.0 40.0 96.614 0.8084 -25.0 40.0 99.440 0.8128 -30.0 40.0 99.440 0.8113 -35.0 40.0 95.693 0.8040 -40.0 40.0 104.635 0.7939 -45.0 40.0 103.511 0.8059 -50.0 40.0 104.366 0.8120 -55.0 40.0 104.366 0.8124 -60.0 40.0 99.810 0.8070 -65.0 40.0 99.810 0.7957 -70.0 40.0 97.471 0.8033 -75.0 40.0 97.471 0.8110 -80.0 40.0 95.671 0.8129 -85.0 40.0 97.755 0.8089 -90.0 40.0 95.960 0.7992 -95.0 40.0 97.888 0.7838 -100.0 40.0 97.888 0.7628 -105.0 40.0 99.045 0.7364 -110.0 40.0 99.045 0.7048 -115.0 40.0 101.763 0.6681 -120.0 40.0 101.763 0.6267 -125.0 40.0 102.925 0.5810 -130.0 40.0 102.352 0.5312 -135.0 40.0 103.066 0.4777 -140.0 40.0 102.621 0.4210 -145.0 40.0 102.621 0.3614 -150.0 40.0 101.992 0.2995 -155.0 40.0 101.992 0.2356 -160.0 40.0 100.805 0.1704 -165.0 40.0 100.805 0.1042 -170.0 40.0 100.159 0.0376 -175.0 40.0 100.000 -0.0290 -180.0 40.0 100.000 -0.0949 -185.0 40.0 100.000 -0.1597 -190.0 40.0 100.000 -0.1255 -195.0 40.0 100.000 -0.0601 -200.0 40.0 99.932 0.0062 -205.0 40.0 98.042 0.0729 -210.0 40.0 98.042 0.1393 -215.0 40.0 94.206 0.2051 -220.0 40.0 94.576 0.2697 -225.0 40.0 87.935 0.3326 -230.0 40.0 90.681 0.3933 -235.0 40.0 90.681 0.4514 -240.0 40.0 91.353 0.5065 -245.0 40.0 91.353 0.5581 -250.0 40.0 95.403 0.6058 -255.0 40.0 95.403 0.6492 -260.0 40.0 88.562 0.6881 -265.0 40.0 100.445 0.7222 -270.0 40.0 94.404 0.7511 -275.0 40.0 101.745 0.7747 -280.0 40.0 101.745 0.7927 -285.0 40.0 99.875 0.8051 -290.0 40.0 99.875 0.8117 -295.0 40.0 98.786 0.8126 -300.0 40.0 98.786 0.8076 -305.0 40.0 100.405 0.7969 -310.0 40.0 101.302 0.7804 -315.0 40.0 103.802 0.7969 -320.0 40.0 104.013 0.8076 -325.0 40.0 104.013 0.8126 -330.0 40.0 103.178 0.8117 -335.0 40.0 103.178 0.8051 -340.0 40.0 101.837 0.7927 -345.0 40.0 101.837 0.7869 -350.0 40.0 100.401 0.8013 -355.0 40.0 102.472 0.8100 -360.0 40.0 101.239 0.8130 -0.0 45.0 101.717 0.7591 -5.0 45.0 100.064 0.7564 -10.0 45.0 99.913 0.7484 -15.0 45.0 96.614 0.7456 -20.0 45.0 96.614 0.7549 -25.0 45.0 99.440 0.7589 -30.0 45.0 99.440 0.7576 -35.0 45.0 103.914 0.7509 -40.0 45.0 104.635 0.7415 -45.0 45.0 104.353 0.7526 -50.0 45.0 104.366 0.7583 -55.0 45.0 104.366 0.7586 -60.0 45.0 101.311 0.7536 -65.0 45.0 99.810 0.7432 -70.0 45.0 100.274 0.7502 -75.0 45.0 97.471 0.7573 -80.0 45.0 97.755 0.7590 -85.0 45.0 97.755 0.7554 -90.0 45.0 99.892 0.7465 -95.0 45.0 97.888 0.7322 -100.0 45.0 99.622 0.7129 -105.0 45.0 99.045 0.6885 -110.0 45.0 99.045 0.6592 -115.0 45.0 101.763 0.6254 -120.0 45.0 101.763 0.5872 -125.0 45.0 100.690 0.5450 -130.0 45.0 102.352 0.4990 -135.0 45.0 100.958 0.4497 -140.0 45.0 102.621 0.3973 -145.0 45.0 102.621 0.3423 -150.0 45.0 101.070 0.2851 -155.0 45.0 101.992 0.2262 -160.0 45.0 100.447 0.1659 -165.0 45.0 100.805 0.1049 -170.0 45.0 99.937 0.0434 -175.0 45.0 100.000 -0.0180 -180.0 45.0 100.000 -0.0789 -185.0 45.0 100.000 -0.1387 -190.0 45.0 100.000 -0.1072 -195.0 45.0 100.000 -0.0467 -200.0 45.0 99.932 0.0145 -205.0 45.0 98.042 0.0760 -210.0 45.0 98.042 0.1373 -215.0 45.0 98.407 0.1980 -220.0 45.0 94.576 0.2576 -225.0 45.0 96.472 0.3157 -230.0 45.0 90.681 0.3717 -235.0 45.0 90.681 0.4254 -240.0 45.0 97.222 0.4762 -245.0 45.0 91.353 0.5238 -250.0 45.0 101.446 0.5678 -255.0 45.0 95.403 0.6080 -260.0 45.0 100.445 0.6439 -265.0 45.0 100.445 0.6753 -270.0 45.0 105.292 0.7020 -275.0 45.0 101.745 0.7238 -280.0 45.0 103.435 0.7404 -285.0 45.0 99.875 0.7519 -290.0 45.0 99.875 0.7580 -295.0 45.0 98.786 0.7588 -300.0 45.0 98.786 0.7542 -305.0 45.0 98.324 0.7443 -310.0 45.0 101.302 0.7291 -315.0 45.0 101.717 0.7443 -320.0 45.0 104.013 0.7542 -325.0 45.0 104.013 0.7588 -330.0 45.0 104.117 0.7580 -335.0 45.0 103.178 0.7519 -340.0 45.0 102.729 0.7404 -345.0 45.0 101.837 0.7351 -350.0 45.0 102.472 0.7484 -355.0 45.0 102.472 0.7564 -360.0 45.0 101.717 0.7591 -0.0 50.0 101.717 0.6995 -5.0 50.0 99.913 0.6970 -10.0 50.0 99.913 0.6897 -15.0 50.0 100.796 0.6872 -20.0 50.0 100.796 0.6957 -25.0 50.0 100.796 0.6993 -30.0 50.0 103.914 0.6981 -35.0 50.0 103.914 0.6920 -40.0 50.0 103.914 0.6835 -45.0 50.0 104.353 0.6935 -50.0 50.0 104.353 0.6987 -55.0 50.0 101.311 0.6990 -60.0 50.0 101.311 0.6944 -65.0 50.0 101.311 0.6850 -70.0 50.0 100.274 0.6914 -75.0 50.0 100.274 0.6978 -80.0 50.0 99.892 0.6994 -85.0 50.0 99.892 0.6961 -90.0 50.0 99.892 0.6880 -95.0 50.0 99.622 0.6751 -100.0 50.0 99.622 0.6574 -105.0 50.0 99.745 0.6353 -110.0 50.0 99.745 0.6087 -115.0 50.0 99.745 0.5779 -120.0 50.0 100.690 0.5432 -125.0 50.0 100.690 0.5048 -130.0 50.0 100.690 0.4630 -135.0 50.0 100.958 0.4182 -140.0 50.0 100.958 0.3706 -145.0 50.0 101.070 0.3206 -150.0 50.0 101.070 0.2686 -155.0 50.0 101.070 0.2150 -160.0 50.0 100.447 0.1603 -165.0 50.0 100.447 0.1047 -170.0 50.0 99.938 0.0488 -175.0 50.0 100.000 -0.0070 -180.0 50.0 100.000 -0.0623 -185.0 50.0 100.000 -0.1167 -190.0 50.0 100.000 -0.0880 -195.0 50.0 100.000 -0.0331 -200.0 50.0 99.802 0.0226 -205.0 50.0 99.802 0.0785 -210.0 50.0 98.407 0.1342 -215.0 50.0 98.407 0.1894 -220.0 50.0 98.407 0.2436 -225.0 50.0 96.472 0.2964 -230.0 50.0 96.472 0.3473 -235.0 50.0 97.222 0.3961 -240.0 50.0 97.222 0.4423 -245.0 50.0 97.222 0.4856 -250.0 50.0 101.446 0.5256 -255.0 50.0 101.446 0.5621 -260.0 50.0 105.292 0.5947 -265.0 50.0 105.292 0.6233 -270.0 50.0 105.292 0.6476 -275.0 50.0 103.435 0.6673 -280.0 50.0 103.435 0.6825 -285.0 50.0 99.066 0.6929 -290.0 50.0 99.066 0.6985 -295.0 50.0 99.066 0.6992 -300.0 50.0 98.324 0.6950 -305.0 50.0 98.324 0.6860 -310.0 50.0 98.324 0.6722 -315.0 50.0 101.717 0.6860 -320.0 50.0 101.717 0.6950 -325.0 50.0 104.117 0.6992 -330.0 50.0 104.117 0.6985 -335.0 50.0 104.117 0.6929 -340.0 50.0 102.729 0.6825 -345.0 50.0 102.729 0.6776 -350.0 50.0 101.717 0.6897 -355.0 50.0 101.717 0.6970 -360.0 50.0 101.717 0.6995 -0.0 55.0 100.903 0.6345 -5.0 55.0 99.617 0.6324 -10.0 55.0 99.617 0.6258 -15.0 55.0 99.617 0.6236 -20.0 55.0 101.330 0.6311 -25.0 55.0 101.330 0.6344 -30.0 55.0 101.330 0.6333 -35.0 55.0 101.636 0.6279 -40.0 55.0 101.636 0.6203 -45.0 55.0 101.636 0.6292 -50.0 55.0 100.844 0.6338 -55.0 55.0 100.844 0.6341 -60.0 55.0 100.844 0.6300 -65.0 55.0 101.451 0.6217 -70.0 55.0 101.451 0.6273 -75.0 55.0 101.451 0.6330 -80.0 55.0 102.282 0.6345 -85.0 55.0 102.282 0.6315 -90.0 55.0 102.282 0.6243 -95.0 55.0 101.602 0.6127 -100.0 55.0 101.602 0.5970 -105.0 55.0 101.602 0.5772 -110.0 55.0 100.529 0.5535 -115.0 55.0 100.529 0.5261 -120.0 55.0 100.529 0.4951 -125.0 55.0 99.827 0.4608 -130.0 55.0 99.827 0.4236 -135.0 55.0 99.827 0.3835 -140.0 55.0 99.970 0.3410 -145.0 55.0 99.970 0.2964 -150.0 55.0 99.970 0.2501 -155.0 55.0 99.939 0.2023 -160.0 55.0 99.939 0.1534 -165.0 55.0 99.939 0.1038 -170.0 55.0 99.938 0.0540 -175.0 55.0 99.938 0.0042 -180.0 55.0 100.000 -0.0452 -185.0 55.0 100.000 -0.0937 -190.0 55.0 100.000 -0.0682 -195.0 55.0 100.000 -0.0191 -200.0 55.0 99.968 0.0305 -205.0 55.0 99.968 0.0804 -210.0 55.0 99.968 0.1302 -215.0 55.0 99.789 0.1794 -220.0 55.0 99.789 0.2277 -225.0 55.0 99.789 0.2748 -230.0 55.0 100.241 0.3203 -235.0 55.0 100.241 0.3638 -240.0 55.0 100.241 0.4051 -245.0 55.0 102.950 0.4437 -250.0 55.0 102.950 0.4794 -255.0 55.0 102.950 0.5119 -260.0 55.0 103.924 0.5411 -265.0 55.0 103.924 0.5666 -270.0 55.0 103.924 0.5882 -275.0 55.0 100.460 0.6059 -280.0 55.0 100.460 0.6194 -285.0 55.0 100.460 0.6287 -290.0 55.0 97.052 0.6336 -295.0 55.0 97.052 0.6343 -300.0 55.0 97.052 0.6305 -305.0 55.0 99.010 0.6225 -310.0 55.0 99.010 0.6102 -315.0 55.0 99.010 0.6225 -320.0 55.0 103.221 0.6305 -325.0 55.0 103.221 0.6343 -330.0 55.0 103.221 0.6336 -335.0 55.0 103.119 0.6287 -340.0 55.0 103.119 0.6194 -345.0 55.0 103.119 0.6150 -350.0 55.0 100.903 0.6258 -355.0 55.0 100.903 0.6324 -360.0 55.0 100.903 0.6345 -0.0 60.0 101.360 0.5648 -5.0 60.0 101.360 0.5629 -10.0 60.0 99.672 0.5572 -15.0 60.0 99.672 0.5552 -20.0 60.0 99.672 0.5618 -25.0 60.0 99.672 0.5646 -30.0 60.0 99.674 0.5637 -35.0 60.0 99.674 0.5589 -40.0 60.0 99.674 0.5523 -45.0 60.0 99.626 0.5601 -50.0 60.0 99.626 0.5642 -55.0 60.0 99.626 0.5644 -60.0 60.0 99.626 0.5608 -65.0 60.0 101.723 0.5535 -70.0 60.0 101.723 0.5584 -75.0 60.0 101.723 0.5635 -80.0 60.0 103.763 0.5647 -85.0 60.0 103.763 0.5621 -90.0 60.0 103.763 0.5558 -95.0 60.0 103.763 0.5458 -100.0 60.0 102.971 0.5320 -105.0 60.0 102.971 0.5148 -110.0 60.0 102.971 0.4941 -115.0 60.0 102.971 0.4702 -120.0 60.0 101.170 0.4432 -125.0 60.0 101.170 0.4133 -130.0 60.0 101.170 0.3808 -135.0 60.0 99.961 0.3459 -140.0 60.0 99.961 0.3089 -145.0 60.0 99.961 0.2700 -150.0 60.0 99.961 0.2296 -155.0 60.0 99.845 0.1879 -160.0 60.0 99.845 0.1453 -165.0 60.0 99.845 0.1021 -170.0 60.0 99.941 0.0587 -175.0 60.0 99.941 0.0152 -180.0 60.0 100.000 -0.0278 -185.0 60.0 100.000 -0.0701 -190.0 60.0 100.000 -0.0478 -195.0 60.0 100.000 -0.0051 -200.0 60.0 99.952 0.0382 -205.0 60.0 99.952 0.0817 -210.0 60.0 100.726 0.1251 -215.0 60.0 100.726 0.1680 -220.0 60.0 100.726 0.2101 -225.0 60.0 101.469 0.2512 -230.0 60.0 101.469 0.2908 -235.0 60.0 101.469 0.3288 -240.0 60.0 101.469 0.3647 -245.0 60.0 101.500 0.3984 -250.0 60.0 101.500 0.4295 -255.0 60.0 101.500 0.4579 -260.0 60.0 99.934 0.4833 -265.0 60.0 99.934 0.5055 -270.0 60.0 99.934 0.5244 -275.0 60.0 99.934 0.5398 -280.0 60.0 97.365 0.5515 -285.0 60.0 97.365 0.5596 -290.0 60.0 97.365 0.5640 -295.0 60.0 97.365 0.5645 -300.0 60.0 97.763 0.5613 -305.0 60.0 97.763 0.5543 -310.0 60.0 97.763 0.5435 -315.0 60.0 102.331 0.5543 -320.0 60.0 102.331 0.5613 -325.0 60.0 102.331 0.5645 -330.0 60.0 102.331 0.5640 -335.0 60.0 103.824 0.5596 -340.0 60.0 103.824 0.5515 -345.0 60.0 103.824 0.5478 -350.0 60.0 101.360 0.5572 -355.0 60.0 101.360 0.5629 -360.0 60.0 101.360 0.5648 -0.0 65.0 102.874 0.4907 -5.0 65.0 102.874 0.4891 -10.0 65.0 102.874 0.4843 -15.0 65.0 100.556 0.4826 -20.0 65.0 100.556 0.4882 -25.0 65.0 100.556 0.4906 -30.0 65.0 100.556 0.4898 -35.0 65.0 99.674 0.4858 -40.0 65.0 99.690 0.4802 -45.0 65.0 99.690 0.4868 -50.0 65.0 99.690 0.4902 -55.0 65.0 99.690 0.4904 -60.0 65.0 101.978 0.4874 -65.0 65.0 101.978 0.4812 -70.0 65.0 101.978 0.4853 -75.0 65.0 101.978 0.4896 -80.0 65.0 104.412 0.4906 -85.0 65.0 104.412 0.4885 -90.0 65.0 104.412 0.4831 -95.0 65.0 104.412 0.4746 -100.0 65.0 104.412 0.4630 -105.0 65.0 103.544 0.4485 -110.0 65.0 103.544 0.4310 -115.0 65.0 103.544 0.4108 -120.0 65.0 103.544 0.3879 -125.0 65.0 101.170 0.3627 -130.0 65.0 101.445 0.3352 -135.0 65.0 101.445 0.3057 -140.0 65.0 101.445 0.2744 -145.0 65.0 101.445 0.2416 -150.0 65.0 100.425 0.2074 -155.0 65.0 100.425 0.1722 -160.0 65.0 100.425 0.1362 -165.0 65.0 100.425 0.0997 -170.0 65.0 99.943 0.0629 -175.0 65.0 99.943 0.0262 -180.0 65.0 100.000 -0.0102 -185.0 65.0 100.000 -0.0459 -190.0 65.0 100.000 -0.0271 -195.0 65.0 100.390 0.0091 -200.0 65.0 100.390 0.0456 -205.0 65.0 100.390 0.0824 -210.0 65.0 100.390 0.1190 -215.0 65.0 100.726 0.1553 -220.0 65.0 101.883 0.1910 -225.0 65.0 101.883 0.2257 -230.0 65.0 101.883 0.2592 -235.0 65.0 101.883 0.2912 -240.0 65.0 99.993 0.3216 -245.0 65.0 99.993 0.3501 -250.0 65.0 99.993 0.3764 -255.0 65.0 99.993 0.4004 -260.0 65.0 97.434 0.4218 -265.0 65.0 97.434 0.4406 -270.0 65.0 97.434 0.4565 -275.0 65.0 97.434 0.4696 -280.0 65.0 97.434 0.4795 -285.0 65.0 97.696 0.4864 -290.0 65.0 97.696 0.4900 -295.0 65.0 97.696 0.4905 -300.0 65.0 97.696 0.4877 -305.0 65.0 97.763 0.4818 -310.0 65.0 102.102 0.4727 -315.0 65.0 102.102 0.4818 -320.0 65.0 102.102 0.4877 -325.0 65.0 102.102 0.4905 -330.0 65.0 104.896 0.4900 -335.0 65.0 104.896 0.4864 -340.0 65.0 104.896 0.4795 -345.0 65.0 104.896 0.4763 -350.0 65.0 102.874 0.4843 -355.0 65.0 102.874 0.4891 -360.0 65.0 102.874 0.4907 -0.0 70.0 104.248 0.4129 -5.0 70.0 104.248 0.4116 -10.0 70.0 104.248 0.4077 -15.0 70.0 104.248 0.4063 -20.0 70.0 100.556 0.4109 -25.0 70.0 100.556 0.4128 -30.0 70.0 101.924 0.4121 -35.0 70.0 101.924 0.4089 -40.0 70.0 101.924 0.4044 -45.0 70.0 99.690 0.4097 -50.0 70.0 99.690 0.4125 -55.0 70.0 102.498 0.4126 -60.0 70.0 102.498 0.4102 -65.0 70.0 102.498 0.4052 -70.0 70.0 102.498 0.4085 -75.0 70.0 101.978 0.4120 -80.0 70.0 104.412 0.4128 -85.0 70.0 104.412 0.4111 -90.0 70.0 104.427 0.4068 -95.0 70.0 104.427 0.3999 -100.0 70.0 104.427 0.3905 -105.0 70.0 104.427 0.3787 -110.0 70.0 103.544 0.3646 -115.0 70.0 103.544 0.3482 -120.0 70.0 103.207 0.3297 -125.0 70.0 103.207 0.3093 -130.0 70.0 103.207 0.2871 -135.0 70.0 101.445 0.2632 -140.0 70.0 101.445 0.2379 -145.0 70.0 101.413 0.2113 -150.0 70.0 101.413 0.1836 -155.0 70.0 101.413 0.1551 -160.0 70.0 101.413 0.1260 -165.0 70.0 100.425 0.0964 -170.0 70.0 99.943 0.0667 -175.0 70.0 99.943 0.0370 -180.0 70.0 99.944 0.0075 -185.0 70.0 100.000 -0.0214 -190.0 70.0 100.000 -0.0061 -195.0 70.0 99.944 0.0231 -200.0 70.0 100.390 0.0527 -205.0 70.0 100.390 0.0824 -210.0 70.0 101.274 0.1121 -215.0 70.0 101.274 0.1415 -220.0 70.0 101.274 0.1703 -225.0 70.0 101.883 0.1984 -230.0 70.0 101.883 0.2255 -235.0 70.0 99.799 0.2515 -240.0 70.0 99.799 0.2760 -245.0 70.0 99.799 0.2991 -250.0 70.0 99.799 0.3204 -255.0 70.0 99.993 0.3398 -260.0 70.0 97.434 0.3571 -265.0 70.0 97.434 0.3723 -270.0 70.0 97.870 0.3852 -275.0 70.0 97.870 0.3958 -280.0 70.0 97.870 0.4038 -285.0 70.0 97.870 0.4094 -290.0 70.0 97.696 0.4123 -295.0 70.0 97.696 0.4127 -300.0 70.0 101.516 0.4105 -305.0 70.0 101.516 0.4057 -310.0 70.0 101.516 0.3984 -315.0 70.0 102.102 0.4057 -320.0 70.0 102.102 0.4105 -325.0 70.0 105.382 0.4127 -330.0 70.0 105.382 0.4123 -335.0 70.0 105.382 0.4094 -340.0 70.0 105.382 0.4038 -345.0 70.0 104.896 0.4013 -350.0 70.0 102.874 0.4077 -355.0 70.0 102.874 0.4116 -360.0 70.0 104.248 0.4129 -0.0 75.0 104.248 0.3319 -5.0 75.0 104.248 0.3309 -10.0 75.0 104.248 0.3280 -15.0 75.0 104.475 0.3270 -20.0 75.0 104.475 0.3304 -25.0 75.0 101.924 0.3319 -30.0 75.0 101.924 0.3314 -35.0 75.0 101.924 0.3289 -40.0 75.0 101.924 0.3255 -45.0 75.0 101.924 0.3295 -50.0 75.0 103.193 0.3316 -55.0 75.0 102.498 0.3317 -60.0 75.0 102.498 0.3299 -65.0 75.0 102.498 0.3261 -70.0 75.0 102.498 0.3286 -75.0 75.0 102.498 0.3312 -80.0 75.0 104.427 0.3319 -85.0 75.0 104.427 0.3306 -90.0 75.0 104.427 0.3273 -95.0 75.0 104.427 0.3221 -100.0 75.0 104.427 0.3150 -105.0 75.0 103.757 0.3061 -110.0 75.0 103.757 0.2954 -115.0 75.0 103.207 0.2830 -120.0 75.0 103.207 0.2690 -125.0 75.0 103.207 0.2535 -130.0 75.0 103.207 0.2367 -135.0 75.0 103.207 0.2187 -140.0 75.0 101.925 0.1995 -145.0 75.0 101.413 0.1794 -150.0 75.0 101.413 0.1584 -155.0 75.0 101.413 0.1369 -160.0 75.0 101.413 0.1148 -165.0 75.0 101.413 0.0924 -170.0 75.0 99.944 0.0699 -175.0 75.0 99.944 0.0475 -180.0 75.0 99.944 0.0252 -185.0 75.0 99.944 0.0033 -190.0 75.0 99.944 0.0148 -195.0 75.0 100.228 0.0370 -200.0 75.0 100.228 0.0594 -205.0 75.0 101.274 0.0819 -210.0 75.0 101.274 0.1043 -215.0 75.0 101.274 0.1265 -220.0 75.0 101.274 0.1484 -225.0 75.0 101.274 0.1696 -230.0 75.0 100.450 0.1901 -235.0 75.0 99.799 0.2098 -240.0 75.0 99.799 0.2284 -245.0 75.0 99.799 0.2458 -250.0 75.0 99.799 0.2619 -255.0 75.0 99.799 0.2766 -260.0 75.0 97.870 0.2897 -265.0 75.0 97.870 0.3012 -270.0 75.0 97.870 0.3110 -275.0 75.0 97.870 0.3190 -280.0 75.0 97.870 0.3251 -285.0 75.0 100.145 0.3293 -290.0 75.0 100.145 0.3315 -295.0 75.0 101.516 0.3318 -300.0 75.0 101.516 0.3301 -305.0 75.0 101.516 0.3265 -310.0 75.0 101.516 0.3209 -315.0 75.0 101.516 0.3265 -320.0 75.0 104.461 0.3301 -325.0 75.0 105.382 0.3318 -330.0 75.0 105.382 0.3315 -335.0 75.0 105.382 0.3293 -340.0 75.0 105.382 0.3251 -345.0 75.0 105.382 0.3231 -350.0 75.0 104.248 0.3280 -355.0 75.0 104.248 0.3309 -360.0 75.0 104.248 0.3319 -0.0 80.0 104.475 0.2484 -5.0 80.0 104.475 0.2478 -10.0 80.0 104.475 0.2458 -15.0 80.0 104.475 0.2451 -20.0 80.0 104.475 0.2474 -25.0 80.0 104.475 0.2484 -30.0 80.0 104.475 0.2481 -35.0 80.0 103.193 0.2464 -40.0 80.0 103.193 0.2441 -45.0 80.0 103.193 0.2468 -50.0 80.0 103.193 0.2482 -55.0 80.0 103.193 0.2483 -60.0 80.0 103.193 0.2471 -65.0 80.0 103.193 0.2445 -70.0 80.0 103.193 0.2462 -75.0 80.0 103.193 0.2480 -80.0 80.0 103.757 0.2484 -85.0 80.0 103.757 0.2475 -90.0 80.0 103.757 0.2453 -95.0 80.0 103.757 0.2418 -100.0 80.0 103.757 0.2371 -105.0 80.0 103.757 0.2311 -110.0 80.0 103.757 0.2239 -115.0 80.0 103.757 0.2156 -120.0 80.0 103.757 0.2062 -125.0 80.0 101.925 0.1959 -130.0 80.0 101.925 0.1846 -135.0 80.0 101.925 0.1724 -140.0 80.0 101.925 0.1596 -145.0 80.0 101.925 0.1461 -150.0 80.0 101.925 0.1320 -155.0 80.0 101.925 0.1176 -160.0 80.0 101.925 0.1028 -165.0 80.0 101.925 0.0878 -170.0 80.0 100.228 0.0727 -175.0 80.0 100.228 0.0576 -180.0 80.0 100.228 0.0427 -185.0 80.0 100.228 0.0280 -190.0 80.0 100.228 0.0357 -195.0 80.0 100.228 0.0505 -200.0 80.0 100.228 0.0656 -205.0 80.0 100.228 0.0807 -210.0 80.0 100.228 0.0957 -215.0 80.0 100.450 0.1106 -220.0 80.0 100.450 0.1253 -225.0 80.0 100.450 0.1395 -230.0 80.0 100.450 0.1533 -235.0 80.0 100.450 0.1665 -240.0 80.0 100.450 0.1790 -245.0 80.0 100.450 0.1907 -250.0 80.0 100.450 0.2015 -255.0 80.0 100.450 0.2113 -260.0 80.0 100.145 0.2201 -265.0 80.0 100.145 0.2279 -270.0 80.0 100.145 0.2344 -275.0 80.0 100.145 0.2398 -280.0 80.0 100.145 0.2439 -285.0 80.0 100.145 0.2467 -290.0 80.0 100.145 0.2482 -295.0 80.0 100.145 0.2484 -300.0 80.0 100.145 0.2472 -305.0 80.0 104.461 0.2448 -310.0 80.0 104.461 0.2411 -315.0 80.0 104.461 0.2448 -320.0 80.0 104.461 0.2472 -325.0 80.0 104.461 0.2484 -330.0 80.0 104.461 0.2482 -335.0 80.0 104.461 0.2467 -340.0 80.0 104.461 0.2439 -345.0 80.0 104.461 0.2425 -350.0 80.0 104.475 0.2458 -355.0 80.0 104.475 0.2478 -360.0 80.0 104.475 0.2484 -0.0 85.0 103.233 0.1631 -5.0 85.0 103.233 0.1627 -10.0 85.0 103.233 0.1618 -15.0 85.0 103.233 0.1614 -20.0 85.0 103.233 0.1626 -25.0 85.0 103.233 0.1631 -30.0 85.0 103.233 0.1629 -35.0 85.0 103.233 0.1621 -40.0 85.0 103.233 0.1609 -45.0 85.0 103.233 0.1623 -50.0 85.0 103.233 0.1630 -55.0 85.0 103.233 0.1630 -60.0 85.0 103.233 0.1624 -65.0 85.0 103.233 0.1611 -70.0 85.0 103.233 0.1620 -75.0 85.0 103.233 0.1628 -80.0 85.0 102.031 0.1631 -85.0 85.0 102.031 0.1626 -90.0 85.0 102.031 0.1615 -95.0 85.0 102.031 0.1598 -100.0 85.0 102.031 0.1574 -105.0 85.0 102.031 0.1544 -110.0 85.0 102.031 0.1508 -115.0 85.0 102.031 0.1466 -120.0 85.0 102.031 0.1419 -125.0 85.0 102.031 0.1367 -130.0 85.0 102.031 0.1310 -135.0 85.0 102.031 0.1249 -140.0 85.0 102.031 0.1185 -145.0 85.0 102.031 0.1117 -150.0 85.0 102.031 0.1047 -155.0 85.0 102.031 0.0974 -160.0 85.0 102.031 0.0900 -165.0 85.0 102.031 0.0824 -170.0 85.0 100.623 0.0749 -175.0 85.0 100.623 0.0673 -180.0 85.0 100.623 0.0598 -185.0 85.0 100.623 0.0524 -190.0 85.0 100.623 0.0563 -195.0 85.0 100.623 0.0637 -200.0 85.0 100.623 0.0713 -205.0 85.0 100.623 0.0789 -210.0 85.0 100.623 0.0864 -215.0 85.0 100.623 0.0939 -220.0 85.0 100.623 0.1013 -225.0 85.0 100.623 0.1084 -230.0 85.0 100.623 0.1153 -235.0 85.0 100.623 0.1219 -240.0 85.0 100.623 0.1282 -245.0 85.0 100.623 0.1341 -250.0 85.0 100.623 0.1395 -255.0 85.0 100.623 0.1444 -260.0 85.0 102.180 0.1489 -265.0 85.0 102.180 0.1527 -270.0 85.0 102.180 0.1560 -275.0 85.0 102.180 0.1587 -280.0 85.0 102.180 0.1608 -285.0 85.0 102.180 0.1622 -290.0 85.0 102.180 0.1629 -295.0 85.0 102.180 0.1630 -300.0 85.0 102.180 0.1625 -305.0 85.0 102.180 0.1612 -310.0 85.0 102.180 0.1594 -315.0 85.0 102.180 0.1612 -320.0 85.0 102.180 0.1625 -325.0 85.0 102.180 0.1630 -330.0 85.0 102.180 0.1629 -335.0 85.0 102.180 0.1622 -340.0 85.0 102.180 0.1608 -345.0 85.0 102.180 0.1601 -350.0 85.0 103.233 0.1618 -355.0 85.0 103.233 0.1627 -360.0 85.0 103.233 0.1631 -0.0 90.0 103.233 0.0765 -5.0 90.0 103.233 0.0765 -10.0 90.0 103.233 0.0765 -15.0 90.0 103.233 0.0765 -20.0 90.0 103.233 0.0765 -25.0 90.0 103.233 0.0765 -30.0 90.0 103.233 0.0765 -35.0 90.0 103.233 0.0765 -40.0 90.0 103.233 0.0765 -45.0 90.0 103.233 0.0765 -50.0 90.0 103.233 0.0765 -55.0 90.0 103.233 0.0765 -60.0 90.0 103.233 0.0765 -65.0 90.0 103.233 0.0765 -70.0 90.0 103.233 0.0765 -75.0 90.0 103.233 0.0765 -80.0 90.0 102.031 0.0765 -85.0 90.0 102.031 0.0765 -90.0 90.0 102.031 0.0765 -95.0 90.0 102.031 0.0765 -100.0 90.0 102.031 0.0765 -105.0 90.0 102.031 0.0765 -110.0 90.0 102.031 0.0765 -115.0 90.0 102.031 0.0765 -120.0 90.0 102.031 0.0765 -125.0 90.0 102.031 0.0765 -130.0 90.0 102.031 0.0765 -135.0 90.0 102.031 0.0765 -140.0 90.0 102.031 0.0765 -145.0 90.0 102.031 0.0765 -150.0 90.0 102.031 0.0765 -155.0 90.0 102.031 0.0765 -160.0 90.0 102.031 0.0765 -165.0 90.0 102.031 0.0765 -170.0 90.0 100.623 0.0765 -175.0 90.0 100.623 0.0765 -180.0 90.0 100.623 0.0765 -185.0 90.0 100.623 0.0765 -190.0 90.0 100.623 0.0765 -195.0 90.0 100.623 0.0765 -200.0 90.0 100.623 0.0765 -205.0 90.0 100.623 0.0765 -210.0 90.0 100.623 0.0765 -215.0 90.0 100.623 0.0765 -220.0 90.0 100.623 0.0765 -225.0 90.0 100.623 0.0765 -230.0 90.0 100.623 0.0765 -235.0 90.0 100.623 0.0765 -240.0 90.0 100.623 0.0765 -245.0 90.0 100.623 0.0765 -250.0 90.0 100.623 0.0765 -255.0 90.0 100.623 0.0765 -260.0 90.0 102.180 0.0765 -265.0 90.0 102.180 0.0765 -270.0 90.0 102.180 0.0765 -275.0 90.0 102.180 0.0765 -280.0 90.0 102.180 0.0765 -285.0 90.0 102.180 0.0765 -290.0 90.0 102.180 0.0765 -295.0 90.0 102.180 0.0765 -300.0 90.0 102.180 0.0765 -305.0 90.0 102.180 0.0765 -310.0 90.0 102.180 0.0765 -315.0 90.0 102.180 0.0765 -320.0 90.0 102.180 0.0765 -325.0 90.0 102.180 0.0765 -330.0 90.0 102.180 0.0765 -335.0 90.0 102.180 0.0765 -340.0 90.0 102.180 0.0765 -345.0 90.0 102.180 0.0765 -350.0 90.0 103.233 0.0765 -355.0 90.0 103.233 0.0765 -360.0 90.0 103.233 0.0765 From 3232aaa0e10aa67eb23facde6b92cb72cde84d92 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 07:32:23 -0300 Subject: [PATCH 09/10] chore(world): place the world again after merging main --- src/objects/hd-95086-system/inventory.json | 4 ++-- src/objects/lmc/inventory.json | 8 ++++---- src/objects/m31/inventory.json | 8 ++++---- src/objects/m33/inventory.json | 8 ++++---- src/objects/milky-way/inventory.json | 4 ++-- src/objects/observable-universe/inventory.json | 8 ++++---- src/objects/smc/inventory.json | 8 ++++---- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/objects/hd-95086-system/inventory.json b/src/objects/hd-95086-system/inventory.json index 49e3827ccf4..23a894a2779 100644 --- a/src/objects/hd-95086-system/inventory.json +++ b/src/objects/hd-95086-system/inventory.json @@ -4,8 +4,8 @@ { "location": "prepared", "filename": "members.json", - "bytes": 1091, - "sha256": "7a82cea03a86e3ca69a24154307ed8732c25fd103a82f43083104b5f431db96d" + "bytes": 1120, + "sha256": "868c3a494f84a5f2547727d5fb6585fa5a3fe744dc301d5233cdb21b7f4811a8" }, { "location": "prepared", diff --git a/src/objects/lmc/inventory.json b/src/objects/lmc/inventory.json index 745b6a2afc8..ced783ae41b 100644 --- a/src/objects/lmc/inventory.json +++ b/src/objects/lmc/inventory.json @@ -40,8 +40,8 @@ { "location": "prepared", "filename": "members.json", - "bytes": 948, - "sha256": "33f466e18f2e7a15d2a3687bc233e53336c5a8c48af1b16e1bad5ffd0d12796f" + "bytes": 6357, + "sha256": "db6b200d11cdcc7651eef9452c36636a2f34bed414630c97ba04d9c450befe36" }, { "location": "prepared", @@ -52,8 +52,8 @@ { "location": "prepared", "filename": "plain-stars.bin", - "bytes": 1516, - "sha256": "af730a3a90067f134b9b30057a142afb77ced0132c52d8f38481cdde16ae12ca" + "bytes": 999, + "sha256": "7961967d97a11d24a0b89944c8c9537ebade740c2488251d8e4093118a9883de" }, { "location": "prepared", diff --git a/src/objects/m31/inventory.json b/src/objects/m31/inventory.json index 93635c3cfa8..d6c495191e6 100644 --- a/src/objects/m31/inventory.json +++ b/src/objects/m31/inventory.json @@ -28,8 +28,8 @@ { "location": "prepared", "filename": "members.json", - "bytes": 1411, - "sha256": "a5be57d8ce024ca1980e795c70049c64ad3d8a7727ba2853ce6d59984d86046a" + "bytes": 2126, + "sha256": "a313832223f67e1729712a95a012f06965056acdbf2900a40cc3bc7d67ebcce2" }, { "location": "prepared", @@ -40,8 +40,8 @@ { "location": "prepared", "filename": "plain-stars.bin", - "bytes": 1804, - "sha256": "0cfc42e3624a1355d84a0899bd261abf43b3dbb83d153380eddfea7777e9b467" + "bytes": 1771, + "sha256": "bc81647f793dd955a43e622a353f5d18c6288dd5d5e4a31064884e852354aa95" }, { "location": "prepared", diff --git a/src/objects/m33/inventory.json b/src/objects/m33/inventory.json index ac696396795..1f5e50cd4ad 100644 --- a/src/objects/m33/inventory.json +++ b/src/objects/m33/inventory.json @@ -28,14 +28,14 @@ { "location": "prepared", "filename": "members.json", - "bytes": 595, - "sha256": "a0a2e7782a90d4c2b2b9f957b734196b6449f65aac8d007d24e4c53cbc92915e" + "bytes": 7310, + "sha256": "ee3f449cc6e55c17bae808ddcfc1d55b13b8802cfa7df17dd4c34898e6b5ad5c" }, { "location": "prepared", "filename": "plain-stars.bin", - "bytes": 2998, - "sha256": "4898db7f2d0f6cb4fd530ae8aecb5b9c931f449aeb40ad2a3ca8b38cadabe711" + "bytes": 2513, + "sha256": "8205d08a33e21ac50a2a60b1a378c5a5b9aea2d48a26f037063dd3e7dfdcca1e" }, { "location": "prepared", diff --git a/src/objects/milky-way/inventory.json b/src/objects/milky-way/inventory.json index c7ba6aa2378..fee460938ab 100644 --- a/src/objects/milky-way/inventory.json +++ b/src/objects/milky-way/inventory.json @@ -28,8 +28,8 @@ { "location": "prepared", "filename": "members.json", - "bytes": 83414, - "sha256": "d338510a3e0d9475dccf0828958afe6dbbdcc8c659f3112ade0d82075b7b5c65" + "bytes": 91985, + "sha256": "2c13a8a0319e4a9281d6a90bd08958e76dd9b9ff81860c03968800eae7493111" }, { "location": "prepared", diff --git a/src/objects/observable-universe/inventory.json b/src/objects/observable-universe/inventory.json index 224f87055f7..3ec48e34659 100644 --- a/src/objects/observable-universe/inventory.json +++ b/src/objects/observable-universe/inventory.json @@ -64,14 +64,14 @@ { "location": "prepared", "filename": "world-context.json", - "bytes": 58518246, - "sha256": "9613d725c27af4398ac558d6510f6a9dcb63f35a71142830cebfbb6977a4b537" + "bytes": 58513815, + "sha256": "1cca0741e8d6105b7a94b12ae02b1fc014d8f75a80f153dc0eb6991eaa8464ac" }, { "location": "prepared", "filename": "world-index.json", - "bytes": 1414801, - "sha256": "462342002d9efa90783b5aa24dceea322bc8c122a7fc102ab6fb911961dd9ba3" + "bytes": 1339029, + "sha256": "094c2ee393ead027e78fd0508ddf48e2563371e4297786dae67ae0cea9b86ea4" }, { "location": "prepared", diff --git a/src/objects/smc/inventory.json b/src/objects/smc/inventory.json index 07a913d32e4..a1b90fd5426 100644 --- a/src/objects/smc/inventory.json +++ b/src/objects/smc/inventory.json @@ -52,8 +52,8 @@ { "location": "prepared", "filename": "members.json", - "bytes": 776, - "sha256": "604b8008cd4e1d374d9069a913e15a3ce168bd2f187e483c8fa5c0b36908d73a" + "bytes": 1490, + "sha256": "b2a606fdad744a5a291d443828740e7f297887120a798078cdf32b5501e66ab3" }, { "location": "prepared", @@ -64,8 +64,8 @@ { "location": "prepared", "filename": "plain-stars.bin", - "bytes": 1052, - "sha256": "9b8ed310defab92374f287b5d46fe2dfb947a9082627b45486bf6dba67386c13" + "bytes": 949, + "sha256": "e975ac998e7632708221c3e280a394b2ba154203c25543f799bf04ebd0b2b1a5" }, { "location": "prepared", From 171dd2ceeee32954292c863855dd612f58872529 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 8 Oct 2026 07:44:10 -0300 Subject: [PATCH 10/10] =?UTF-8?q?fix(stars):=20regenerate=20the=20galaxy's?= =?UTF-8?q?=20star=20dot=20table=20so=20the=20125=20Cepheids=20and=20?= =?UTF-8?q?=CE=BB=20Andromedae=20are=20not=20also=20galaxy=20dots?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/objects/milky-way-volume/README.md | 2 +- .../source/packaged-stars/positions.csv.gz | Bin 38742 -> 37803 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objects/milky-way-volume/README.md b/src/objects/milky-way-volume/README.md index c52aadde2bb..4d4706b6cbc 100644 --- a/src/objects/milky-way-volume/README.md +++ b/src/objects/milky-way-volume/README.md @@ -39,7 +39,7 @@ Add `--acquire-source .local/volume-source-cache` to `prepare:volume` to reacqui **Sky.** Six 1536 × 1536 WebP cube faces sample the NASA map with a fixed exposure of 4.5, the sRGB curve and a final gain of 0.12. A shadow factor removes faint grain below display luminance 0.04. The NASA image omits bright Hipparcos/Tycho stars and none are added: the stars are the catalogue dots. One rule picks the picture by zoom: nearer the viewed body than the thin disc's 300 pc scale height (Bland-Hawthorn & Gerhard 2016; `discHalfHeightM` in the Sun's `source/navigation/universe.json`) the NASA map is the sky; from twice that the volume, the backing and the galaxies beyond show instead, so orbiting at one distance never switches them. -**Dots.** [`prepare-catalogue-points.mts`](../../../packages/bake/cli/prepare-catalogue-points.mts) has Astropy convert each row to Sun-centred ICRS; rows without a distance are left out. An arm-tracer layer is kept when its arm score in the [merge recipe](source/tracers/merge.json) is 0.5 or more. Kinematic distances with uncertainty over 1 kpc are dropped (532 sources). Each layer keeps its catalogue color, mixed halfway to white; tone follows absolute magnitude where the catalogue measures it. [`merge-catalogue-points.mts`](../../../packages/bake/cli/merge-catalogue-points.mts) thins the galaxy-wide, 3 kpc and 800 pc levels to the thin disc's density law, exponential with a 2.6 kpc scale length (Bland-Hawthorn & Gerhard 2016). The 100 pc and 20 pc levels are not thinned: inside the galaxy the nearby-star census is drawn as measured, except that the 100 pc census fades out from 50 pc to its 100 pc reach, so it does not end in a ball of dense stars (`fadePcFromSun`). [`stack-catalogue-points.mts`](../../../packages/bake/cli/stack-catalogue-points.mts) joins them into [one bank](source/dots/stack.json) of 33,820 dots, revealed level by level as you zoom in: each level fills in as the view narrows from three times its radius, so its tapered ball of stars arrives as you approach it. At most 4,000 of the bank's dots show at once from outside (`screenBudget`); past that an even share, the same dots every frame, is drawn. Inside the galaxy the budget rises to 6,000 as the 100 pc level appears, above the 2,800 to 5,810 the unthinned levels put on screen along a zoom path from 1 to 1,000 ly, so none of them is thinned. Near the Sun the galaxy-wide and 3 kpc levels dim to half (`nearOpacity`), since from there those distant stars would look faint. The star packages of this repository that the map does not name are dots of this bank too ([`packaged-stars`](source/packaged-stars/points.json), 2,174 on 2026-10-07): each sits in the level of its own distance from the Sun, is never thinned by a density cap and takes no other dot's room, and a catalogue row within 0.2 pc of one is the same star and is left out (93 rows). Every other dot is the one the bank drew before, in the same order and color. +**Dots.** [`prepare-catalogue-points.mts`](../../../packages/bake/cli/prepare-catalogue-points.mts) has Astropy convert each row to Sun-centred ICRS; rows without a distance are left out. An arm-tracer layer is kept when its arm score in the [merge recipe](source/tracers/merge.json) is 0.5 or more. Kinematic distances with uncertainty over 1 kpc are dropped (532 sources). Each layer keeps its catalogue color, mixed halfway to white; tone follows absolute magnitude where the catalogue measures it. [`merge-catalogue-points.mts`](../../../packages/bake/cli/merge-catalogue-points.mts) thins the galaxy-wide, 3 kpc and 800 pc levels to the thin disc's density law, exponential with a 2.6 kpc scale length (Bland-Hawthorn & Gerhard 2016). The 100 pc and 20 pc levels are not thinned: inside the galaxy the nearby-star census is drawn as measured, except that the 100 pc census fades out from 50 pc to its 100 pc reach, so it does not end in a ball of dense stars (`fadePcFromSun`). [`stack-catalogue-points.mts`](../../../packages/bake/cli/stack-catalogue-points.mts) joins them into [one bank](source/dots/stack.json) of 33,820 dots, revealed level by level as you zoom in: each level fills in as the view narrows from three times its radius, so its tapered ball of stars arrives as you approach it. At most 4,000 of the bank's dots show at once from outside (`screenBudget`); past that an even share, the same dots every frame, is drawn. Inside the galaxy the budget rises to 6,000 as the 100 pc level appears, above the 2,800 to 5,810 the unthinned levels put on screen along a zoom path from 1 to 1,000 ly, so none of them is thinned. Near the Sun the galaxy-wide and 3 kpc levels dim to half (`nearOpacity`), since from there those distant stars would look faint. The star packages of this repository that the map does not name are dots of this bank too ([`packaged-stars`](source/packaged-stars/points.json), 2,124 on 2026-10-08): each sits in the level of its own distance from the Sun, is never thinned by a density cap and takes no other dot's room, and a catalogue row within 0.2 pc of one is the same star and is left out (93 rows). Every other dot is the one the bank drew before, in the same order and color. **Old stars.** The bulge's height comes from a second bank, [the old stars](source/old-star-dots/stack.json): the RR Lyrae stars within 3 kpc of the centre from OGLE (Prudil et al. 2025), and beyond it Gaia DR3's (Li et al. 2023), each at its measured distance, one in 8 ([merge](source/old-stars/merge.json)). [`gaia-rr-lyrae-sample.mts`](../../../packages/bake/authoring/milky-way/gaia-rr-lyrae-sample.mts) leaves out the Magellanic Clouds' and the Sagittarius dwarf's own stars, and keeps a Gaia star with a chance falling exponentially past 3 kpc on the disc's 2.6 kpc scale length, so the bulge thins into the disc; farther out Gaia finds these stars mostly near the Sun, through the disc's dust, which would draw a bubble around the Sun, not a structure. The bank's 8,793 dots are whole within 100 kpc of the Sun, at most 3,500 on screen, and fade out as the view narrows from 9 to 3 kpc across at the Sun (`fadeOutUnits`): from outside they give the flat disc its bulge, from within they would cover the view. These are presentation choices. diff --git a/src/objects/milky-way-volume/source/packaged-stars/positions.csv.gz b/src/objects/milky-way-volume/source/packaged-stars/positions.csv.gz index 6649aa8b1ccdc1fde39a5c4a976c53bcb79971df..5646f8c595c3d89fe8ca92a0b06e93f99f1b88fc 100644 GIT binary patch delta 35395 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 DvvyYv delta 36426 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